ThinAppによるパッケージング
ThinAppでアプリケーションをパッケージするためには次の準備が必要です。
ThinAppはWindows NT以降のOS、及び、32bitのアプリケーションをサポートしています。詳細情報については製品ドキュメントを確認してください。またパッケージに含められないものとしてプリンタードライバーやフィルタドライバー等のデバイスドライバーがあります。
製品ドキュメント
http://www.vmware.com/jp/support/support-resources/pubs/thinapp_pubs/
準備事項
- ThinAppソフトウェアのバイナリ
- パッケージするアプリケーションのバイナリとインストール手順の入手
- アプリケーションをインストールするPCの準備(物理でも仮想でも可)
*ThinAppにはパッケージ作業を効率化するためにVMware Workstationが同梱されています。Workstation上にクリーンなゲストOSを準備してパッケージ作業を行うと、すでにインストールされている他のアプリケーションの影響を最小化できるため、パッケージの精度が向上します。加えてスナップショット機能によりパッケージ作業のやり直しが効率的に実施できるようになります。
ThinAppソフトウェアの導入
最初にダウンロードしたThinAppソフトウェアをパッケージ作業をするPCにインストールします。インストール手順はウィザードに従い進めるだけで完了します。導入されたThinApp Setup Captureを起動してパッケージ作業を行います。
パッケージのコツ
ここではThinApp4.6.xにデフォルトで組み込まれているIE6のパッケージ手順を紹介します。パッケージの流れは、プリスキャン→パッケージするソフトウェアのインストール→ポストスキャン→パッケージの構成→ビルド という流れになります。
-
- プリスキャンにより現在のOSのファイルシステム構成、レジストリ状態を調査します。アプリケーションがCドライブ以外にもアクセスする場合は、Advanced Scan Locationsボタンをクリックして他のフォルダもスキャン対象に含めます。
- プリスキャン終了後、パッケージしたソフトウェアを通常通りインストールします。IE6をパッケージ化する場合は、Internet Explorerボタンをクリックして「Include an entry point for a fully virtualized Internet Explorer」を選択します。
- ポストスキャンを実行すると、プリスキャン時と比較して変更があった箇所を抽出していきます。
- Entry Pointsではアプリケーションの実行ファイルがリストされます。IE6の場合、すでにVierIE6.exeがチェックされておりますが、ほかのアプリケーションをインストールした場合は複数のEXEファイルがリストされてくるはずです。単一の代表的なEXEファイルだけを選択し、それ以外は選択しないようにします。「Show Entry Points used for debugging 」をチェックするとcmd.exeとregedit.exeがリストされます。これらをチェックすることで、パッケージ内の仮想ファイルシステム及び仮想レジストリへアクセスすることが出来るようになるため、トラブルシューティングのために役立ちます。
- パッケージのアクセスコントロール
Groupでは、ADのセキュリティグループを指定することが可能です。ユーザIDは指定することが出来ません。ADのグループが指定されたパッケージは、そのグループに属するユーザIDから実行された場合は開くことが可能ですが、その他のユーザIDから実行された場合はアプリケーションを起動することが出来ません。このセキュリティコントロールはThinAppパッケージの配布数を制限するために有効です。 例えば、AD上に「ThinApp_アプリ名」というような任意のセキュリティグループを作成し、配布したいユーザ数分のユーザIDを追加します。これによりライセンス数の超過を心配する必要はなくなります。 - SandBox の指定
SandBoxはThinApp化したアプリケーションが書き込みをする領域です。デフォルトではユーザプロファイルの中に作成されます。 - URLの指定
IE6のパッケージの場合、IE6で開かせたいサイト及びWebアプリケーションのURLを指定するThinDirectという設定が可能です。ここでリストしたサイトをOS上で開くとThinApp化したIE6が別ウィンドウで開き当該サイトを表示します。それ以外のサイトはOS自身にインストールされている、例えばIE8等のブラウザーを利用します。この機能を利用する際にはIE6をMSIでパッケージして配信すると実装が容易になります。 - Project Settingsでは、パッケージの名称を決めます。ここで決めたアプリケーション名(Inventory Name) がプログラムの追加と削除で表示されます。(MSIで配信の場合)
- Packaging Settingsでは、必要に応じてGenerate MSI PackageとCompress Virtual Packageを有効にします。パッケージを圧縮することで実行ファイルサイズを小さくすることが可能ですので配布時の時間短縮や、OSイメージの最小化に寄与します。
- Ready to Buildでは、ビルド前の最終確認をします。最初にOpen Project Folderを開き、ビルド時に含めるファイルの内容を確認します。特にインストーラーの一時解凍したテンポラリファイル等、もし不要なファイルを発見したら削除することでパッケージサイズの最適化をします。加えて、もしホストOS側のファイルにアクセスさせたいファイル(仮想ファイルシステム内ではなく外だししたいファイル)がある場合は、当該ファイルをプロジェクトフォルダ内から省きます。その場合、プロジェクトフォルダ内の該当ファイルが存在するディレクトリにあるAttribute.iniファイルを開き、以下の記述になっていることを確認してください。
[Isolation]
DirectoryIsolationMode=Merged
次にEdit Package.iniを開きます。iniファイルにはパッケージのパラメータが記載されています。AppSync機能は、パッケージの更新に役立つ機能です。最新のパッケージファイルを配置するリポジトリ(Webサイトやファイルサーバー)を指定することでパラメータで指定された間隔に従いリポジトリへアクセスし、最新パッケージが存在した場合はダウンロードして入れ替えます。パッケージ配布後の管理を容易にするでしょう。 パラメータを必要に応じて確認・追記したら、Buildを実行してパッケージを作成します。 - ビルド完了後、プロジェクトフォルダのBinフォルダを開き、EXE形式の実行ファイルが作成されていることを確認します。
- パッケージの動作確認は、次のプロセスで進めると切り分けがしやすいでしょう。
- パッケージ作業をしたOSで実行
- アプリケーションがインストールされていない同一バージョンのOSで実行
- 他のバージョンのOS(Windows XP →Windows7)へコピーして実行
- もし他OS上では正常に起動できない場合は、パッケージ設計を見直す必要があります。つまり、パッケージ内に必要なファイルが全て取り込まれているかどうかの確認や、逆に仮想ファイルシステムからDLL等を取り除いてホストOS側のDLLを利用するなどの考慮が必要になります。パッケージが起動失敗する際は、ThinApp Log Monitorを活用してデバッグを行い、何が原因で起動失敗しているか調査が必要となる場合があります。
異なるOSでの「見た目」の問題
例えばWindows XP とWindows Vista、Windows7では、フォント等が変更されているため、レガシーアプリケーションの表示に課題が生じる可能性があります。例えば、ボタン内に文字が収まらない、印刷が枠内に微妙に収まらない、などの問題です。特にプログラム内部でフォントが指定されているケースなどにこの問題が発生します。ThinApp化したアプリケーションは、ディスプレイ関連の環境設定や、印刷時のプリンタードライバーはアプリケーションを実行するOS環境に依存します。