2014年12月3日水曜日

ThinAppパッケージング方法(解説付き)

これまで、さんざん他のHorizon製品とThinAppを連携させる方法を紹介させて頂きましたが、肝心のThinAppのパッケージング方法を紹介していないのは如何なものかと。

Horizon ViewやWorkspace Portalと連携してアプリを配信するためには、『ThinApp化』する必要がありますし、前の投稿でMirageのアプリレイヤの作成方法を紹介しましたが、互換性という面では、ThinAppと組み合わせるのがオススメです。

別の視点からでは、2015年7月にサポートが切れてしまうWindows Server 2003のXenAppやターミナルサービス上で動作しているアプリをWindows Server 2012上でも動作させるためにThinAppを使う、といった需要もこれから増えてくるようにも思います。

いずれにしても、『ThinApp化』出来ないことには始まらないので、そのきっかけに
なればと思いまして、パッケージング方法を(私なりの)解説付きで紹介します。

パッケージング方法の大まかな流れは以下となります。

1. クリーンなOS環境の準備
2. インストール作業の準備
3. Setup Captureの起動
4. PreScanの実施
5. アプリケーションのインストール
6. PostScanの実施
7. パッケージの設定
8. ビルド

ThinApp 5.1はまだ英語版しかありませんが、VMwareさんのドキュメントも参考下さい。
http://pubs.vmware.com/thinapp-51/index.jsp#com.vmware.thinapp51.userguide.doc/thinapp_Preface.html

それでは、ThinAppパッケージング方法(解説付き)、スタートはじめます!


1. クリーンなOS環境の準備
ここがかなり重要です。
上記のパッケージング方法の流れを見て頂ければお分かりの通り、ThinAppはインストール前後の差分情報をパッケージ情報として抽出します。

そのため、いかにインストール処理をロスなく行えるか、という点が成功への条件となります。

Javaが必要なアプリをパッケージングするのに、すでにJavaがインストールされていると、インストール処理がスキップされて差分が発生せず、Javaの情報が抽出されない、といった残念な結果になってしまいます。

ThinApp以外が何もインストールされていない環境(仮想マシン推奨)を準備します。
# VMware Toolsのインストールは必要に応じて。

2. インストール作業の準備
ここもかなり重要です。
ThinAppは差分情報を抽出するために、実際にアプリをインストールする必要があります。

そのため、インストール媒体が存在すること、入力すべきライセンスキーが分かっていること、そもそもインストール作業手順を理解していることなど、インストール作業を間違うことなく
華麗にこなせるか、という点がポイントになります。

また、差分情報を抽出するという仕様上、インストール前の状態をスキャンしてから、インストール媒体をコピーしてしまうとインストーラがパッケージ内に格納されてしまったり、インストール作業を途中で間違えてインストールし直したり、作業に抜けがあったりなど、個人の感覚ですが、失敗する要因の3割くらいが、「ちゃんとインストール出来ていない」問題だと思います。

以下のように、インストール媒体は予め用意しておきましょう。
# インストール手順を間違えないための「手順書」なんかがあると尚良ですね。

ここまで準備が出来れば、いよいよパッケージ作業のスタートです。
ウィザードに沿って進めるだけなので、作業自体はそれほど難しいものではありません。

3. Setup Captureの起動
[スタート]-[すべてのプログラム]-[VMware]-[ThinApp Setup Capture]の順にクリックし、『ThinApp Setup Cature』を起動します。

[Next]ボタンをクリックして先に進めます。

4. PreScanの実施
[PreScan>]ボタンをクリックし、インストール前の状態をスキャンします。

※解説※
[Advanced Scan Locations...]ボタンをクリックすると、スキャン対象の設定が可能です。

スキャン対象のドライブとレジストリの定義がありますが、デフォルトだと「Cドライブ」のみが
対象となっているので、アプリを「Dドライブ」にインストール・実行するような環境だと、
こちらのオプションでDドライブをスキャン対象に含めて下さい。

PreScanが行われますので、しばらく待ちます。
# 環境によって様々ですが、OSのみの状態なので、数分もあれば完了すると思います。

5. アプリケーションのインストール
PreScanが完了したら、以下の画面で止まりますので、アプリのインストールを行います。

予め用意しておいたインストーラよりアプリをインストールします。
# 今回はFirefoxで試しています。

※解説※
アプリの初期設定などが必要であれば、インストール後にアプリを起動し、そのまま設定作業を実施すれば、設定情報も仮想アプリに含めることが可能です。

また、アプリ独自で「自動更新」機能があるものは無効化しておくことをオススメします。

理由は、出来上がった仮想アプリそのものは、アップデートを行っても更新されず、更新情報が「差分ディレクトリ」(Sandbox)に保管されます。

仮想アプリ本体+Sandboxで正しく新しいバージョンとして動くケースもありますが、うまく動作しないケースの方が多いように感じますし、何よりSandboxが肥大化する、削除されてしまうと元のバージョンに戻ってしまう、などのデメリットの方が多いからです。

仮想アプリをバージョンアップする場合は、管理者さんがバージョンアップしてあげてください。

[Internet Explorer]ボタンが気になる方がいらっしゃるかと思いますが、これはその名の通り、「IE」を仮想化するためのボタンです。

デフォルトだと一番上の「IEを含めない」が選択されています。

真ん中は、IE本体は仮想化せずに、このパッケージで構成される「仮想ファイルシステム」内で物理OS側にインストールされているIEを動作させることが出来る「ショートカット」(後で解説しているエントリーポイント)を作るオプションとなります。

このオプションの何が嬉しいかというと、物理IEに手を加えずに、例えばホームページの設定だけが異なるIEや、JavaやFlashといったプラグインが有効になったIEを「仮想的」に作り出すことが可能になります。
システムごとに要件が異なるWeb系のアプリをひとつのIEを使って実現出来ます。

一番下は、IE6本体そのものを仮想化する場合の専用オプションです。WindowsXP+IE6の環境でパッケージングした場合にのみ選択可能です。

6. PostScanの実施
インストール作業が完了したら、[PostScan]ボタンをクリックします。

PostScanは実行前に再確認されますので、問題なければ[OK]ボタンをクリックします。

PostScanが開始されますので、しばらく待ちます。
# 環境によって様々ですが、アプリのサイズによってはかなり時間が掛かります。。
  気長に待ちましょう。無用な操作は禁物です。

7. パッケージの設定
PostScan後はパッケージの設定を行います。
ThinAppにチャレンジして一番最初に悩むのがこちらの画面だと思います。

「エントリーポイント」を選択し、[Next>]ボタンをクリックします。

※解説※
「エントリーポイント」という言葉がよくわからない方もいらっしゃるかもしれませんが、簡単に
言ってしまえば、「ユーザーさんが実行するアプリケーションのショートカット」だと考えてもらえればOKだと思います。

今回の例だと、単体アプリである「Firefox」なので、「Mozilla Firefox.exe」を選択しています。
Officeのようなスイート製品だと複数のアプリケーションがありますし、ユーザーさんが使いたいアプリケーションを選択出来る必要があるので、「Word」「Excel」「PowerPoint」のように複数選択する必要があります。
スイート製品でなくとも、複数のアプリケーションがひとつのパッケージに含まれていて、ユーザーさんがそれぞれを個別に起動出来る必要があるものは選択しておきましょう。
# 後で変更することも可能ですので、身構えずに次に進んで下さい。

"Show entry points used for debugging"を有効にすると、「cmd.exe」と「regedit.exe」がエントリーポイントとして登場します。
これは仮想アプリの動作確認を行う際などに仮想ファイルシステムと仮想レジストリを参照することが出来る優れモノです。
# 動作検証時は有効にしておくことをオススメします。

[Select All]はすべてのエントリーポイントにチェックを入れてくれる、[Select None]はすべてのチェックを外してくれます。
インストーラによってショートカットが作成されたものやプログラムメニューに追加されたものが自動で選択されていますので、最初に[Select None]をクリックし、必要なエントリーポイントのみ有効にする、といった使い方が出来るくらいですかね。お好みでどうぞ。

次の画面は、VMware Workspaceとの連携設定です。

連携する場合はチェックを入れ、連携しない場合はそのまま[Next>]ボタンをクリックします。

※解説※
チェックを入れてしまうと、Workspaceと連携させないと動かなくなるのでご注意を。
こちらのオプションについては、Workspace PortalのTipsとして改めて紹介したいと思います。

次の画面は、グループ設定です。

ADのグループを紐付けることで、当グループに所属しているユーザーのみに仮想アプリの
実行を許可する、といった制御が可能になります。
デフォルトでは"Everyone"ということで、誰でも実行出来る仮想アプリが出来上がります。

※解説※
グループを設定する場合、パッケージング環境のOSをドメインに参加させる必要があります。
SIDレベルでチェックしているので、同じ名前でローカルグループを設定してもダメです。

"Access denied message"は、グループに所属していないユーザーが仮想アプリを起動した
場合に表示されるメッセージです。グループを設定した場合にのみ設定可能です。

次の画面は、アイソレーション設定です。

詳しく解説するとなると日付が変わるくらい深いので、、改めて紹介出来ればと思いますが、
ポイントとしては、まずは"デフォルトでOK"です。

※解説※
デフォルトパラメータである「Merged」の方が互換性が高いです。

アイソレーションは、仮想アプリに対して、仮想ファイルシステム/レジストリと、物理ファイルシステム/レジストリを「どのように使わせるのか」を定義するモードとなります。

"Merged isolation mode"は「マージ」ということで、仮想と物理を意識せずに両方へアクセス出来るようにしてあげるモードなので互換性が高く、"WriteCopy isolation mode"は「書き換えコピー」ということで、物理側に影響を及ぼさずに、差分ディレクトリを使ってあたかも変更されたかのように見せかけることが可能です。

ずばり、アイソレーションを「使いこなす」ことが腕の見せ所です。

次の画面は、Sandbox設定です。

Sandboxは「5」でも少し触れましたが、仮想アプリが出来上がった後で発生した差分情報を
保管するディレクトリとなります。

※解説※
デフォルトだと、ユーザープロファイル内に保管されるように設定されています。

真ん中に設定すればexeファイルと同じディレクトリに保管され、一番下に設定すれば指定のディレクトリに保管されます。
検証時などは真ん中の設定にしておくと仮想アプリの初期化が簡単なのでオススメですが、本番運用時はユーザープロファイル内で保管されるケースが圧倒的に多いです。

次の画面は、VMwareさんにどのくらい貢献するかの設定です。(笑

Windowsでもエラーが発生した際にMicrosoftに情報を送りますか?と聞かれることがあるかと思いますが、同じようにパッケージ情報をVMwareさんに提供するか否かを設定します。

10日おきにVMware社にOS情報やアプリケーション名やバージョンが送られます。
こちらも検証時のみ有効にし、本番運用時は無効化しておいた方がよいかなと思います。

次の画面は、ブラウザ連携設定です。
# いわゆるブラウザタイプのアプリを仮想化した場合にのみ表示されます。

※解説※
ブラウザ連携とは、物理側のIEもしくはFirefoxに「ThinDirect」というアドインをインストールすることで、物理側のブラウザで所定のURLにアクセスがあると、仮想化されたブラウザにリダイレクトをするという機能です。

どんな時に使うのかというと、IE6でしか動作しないWebアプリなどがありIE6を仮想化したけど、パブリックなWebサイトにアクセスする時はきちんとセキュリティの担保された最新版の
ブラウザを使わせたい、といった要件を実現することが可能になります。

ただ、切り替わる際に以下の「リダイレクト画面」が表示されるので、結構不評です。。(泣

次の画面は、パッケージの名前を設定します。

"Inventory name"にパッケージ名を入力します。予めインストーラから名称を自動入力してくれていますが、たまに意図しない名前になることがありますので、必要に応じて修正します。

※解説※
ここで設定した値が「プロジェクトフォルダ」「Sandbox」の名前になります。

これらは仮想化されたアプリごとにフォルダで管理されるので、同じアプリを複数バージョン
配信するような環境だと、バージョン番号までをパッケージ名に含めることをオススメします。

次の画面で設定は最後です。
パッケージの構造、MSIオプション、圧縮の設定を行い、[Save>]ボタンをクリックします。

パッケージの構造は、アプリケーションの「サイズ」によって自動的に選択されており、MSIと
圧縮はデフォルトでは無効になっています。

※解説※
数百MBを超えるようなアプリケーションは「.dat」というファイルが出来上がり、アプリの本体はこちらに格納され、アプリケーションへのショートカット(エントリーポイント)のみが「.exe」として生成されます。

MSIファイルは、「.exe」ファイルだけだとショートカットの作成やファイルタイプの関連付け(.docファイルをダブルクリックすればWordが起動する機能)を行ってくれるツールです。
Horizon Viewと連携してThinAppアプリを配信する場合はMSIファイルが必須です。

最後の圧縮設定は、その名の通り、パッケージを圧縮してくれます。
うまく行くとおおよそ半分くらいまでパッケージサイズを小さくしてくれます。

8. ビルド
ここまでの作業にて、必要なデータと設定が揃いましたので、[Build>]ボタンをクリックします。

※解説※
[Edit Package.ini]ボタンは、これまでに設定した内容+αの内容が定義ファイル(Package.ini)をテキストエディタで編集出来る機能です。
作成するエントリーポイントやショートカットの作成場所、パッケージ名などを修正したい場合にはこちらのボタンを押します。
※Package.iniは、ビルド後にも変更することも可能です。
※但し、Package.iniの変更を反映するには、再度ビルドが必要です。

[Open Project Folder]ボタンは、パッケージの中身を構成するファイルシステム、レジストリが保管されているフォルダを参照する機能です。

不要なインストーラファイルの削除や、ファイルを個別に入れ替えたい場合など、に便利です。
※プロジェクトフォルダは、ビルド後にも変更することが可能です。
※但し、プロジェクトフォルダの変更を反映するには、再ビルドが必要です。

"Skip the build process"は、ビルドを行わず、ここで終了するオプションです。

パッケージング作業はインストールが必要なので、アプリがインストール出来る環境(例えばWindowsXPなど)で実施しなければいけませんが、ビルド自体はThinAppがインストールされていれば「どこでも」実施可能なので、ハイスペックなPC上で実施することで、ビルド時間を
短縮するといった用途で利用するくらいかなと思います。ま、ほとんど使ったことありません。

ビルドが開始されますので、しばらく待ちます。
# MSIオプション、圧縮オプションを有効にするとその分、少し時間がかかります。

"Build complete"と表示されれば、ビルド完了です。

デフォルトでは"Open folder~"にチェックが入っているので、[Finish]ボタンをクリックすると、生成された「.exe」ファイルが格納されているフォルダが表示されます。
# 今回はデバッグ用の「cmd.exe」「regedit.exe」やMSIオプションを有効にしたので、ファイル
  がたくさんありますが、仮想アプリそのものは「Mozille Firefox.exe」です。

「.exe」ファイルを実行し、仮想アプリが起動出来れば、パッケージング作業は完了です。

以上が、パッケージング方法となります。

どんなアプリをThinApp化する場合でもパッケージング方法そのものは変わりませんので、
色々なアプリの仮想化にチャレンジ頂けるとうれしいです。

ここまでご覧頂けた方、有難う御座いました! # お疲れ様でした!

参考までに、以下の「ThinApp Recipe」コミュニティーには、様々なアプリのパッケージングに関する情報が投稿されています。(ほとんど海外のものですが…。)
ご覧になられても面白いと思いますし、チャレンジされた方は投稿してみては如何でしょうか。
https://communities.vmware.com/thinap.jspa

うまく行かないこともあると思いますが、、諦めずに何度もチャレンジしてみて下さい!

0 件のコメント:

コメントを投稿