
プロジェクトフォルダ
SB C&S後藤です。
前回まででアプリケーションをパッケージ化する基本的な流れをお伝えしました。 今回から出来上がったパッケージの詳細についてお伝えしていきます。
プロジェクトフォルダとは

ThinApp Setup Capture でのキャプチャ作業が完了すると作成されるのが「プロジェクトフォルダ」です。アプリのキャプチャ結果などが保存されています。
プロジェクトフォルダは \Program Files (x86)\Omnissa\Omnissa ThinApp\Captures\ 以下に、アプリごとにフォルダが作成されて保存されています。
Setup Capture の途中で別の場所を指定することもできます。また、キャプチャ後に別の場所に移動・コピーしても問題ありません。
プロジェクトフォルダは非常に重要です。仮想アプリが稼働したあとも、このフォルダを 必ず全て残しておく必要があります。
- Windows のアップデートに伴う ThinApp のアップデートへの対応
- 仮想化したアプリに不具合が出た際の調整
- ファイル差し替えによるアプリのアップデート
こういった状況の際に仮想アプリの再ビルドが必要となります。このときにプロジェクトフォルダが残っていない場合、アプリのキャプチャからやり直しとなってしまいます。
完全に該当アプリを使用しなくなるまでは、プロジェクトフォルダの中身を丸ごと残しておく必要があります。
プロジェクトフォルダのデフォルトの場所は書き込みに管理者権限がいる場所です。設定を編集する際は別の場所に移動してから作業すると便利です。
プロジェクトフォルダの中身
プロジェクトフォルダの中は以下の内容で構成されています。
- キャプチャしたアプリのファイル
- キャプチャしたアプリのレジストリのデータ
- build.bat
- package.ini
- binフォルダ
順に内容を見ていきましょう。
キャプチャされたファイル

プロジェクトフォルダ内で前後に「%」がつけられたフォルダはキャプチャ結果のファイルが格納されているフォルダです。それぞれ、Windows 上の特定のフォルダに対応しています。
たとえば、%Desktop% はデスクトップフォルダ、%drive_C% はCドライブ直下に対応しています。
この % で囲まれた名前はフォルダマクロと呼ばれるものです。キャプチャ環境とは別のWindows・PC上で動作させる際に、フォルダ名の差異を吸収してアプリを動作させるための仕組みです。
フォルダマクロの一覧は公式サイトに記載されています。(「標準的な場所」のパスが少々古いので注意してください)
それぞれのフォルダの中身も見てみましょう。

Notepad++のプロジェクトフォルダであれば、%ProgramFilesDir(x64)% の中には Notepad++ というフォルダがあり、その中には notepad++.exe など Notepad++ をインストールした際に保存されたアプリのデータが入っています。
%が付いたフォルダの中を確認すると ##Attributes.ini というファイルがどのフォルダにも存在していることに気づいた方もいるかもしれません。
これは ThinApp が自動的に追加している分離モード(Isolation Mode)に関するファイルです。テキストエディタなどで開くと設定が記述されています。
レジストリのデータ

HKEY から始まるファイル名のテキストファイルはレジストリのデータが格納されています。ファイルはこの3つです。
- HKEYCURRENTUSER.txt
- HKEYLOCALMACHINE.txt
- HKEY_USERS.txt
それぞれのファイル名がレジストリキー名の頭の部分を表しています。
たとえば HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome というキーであればHKEY_LOCAL_MACHINE.txt に保存されています。
もう少し細かく見てみましょう。

HKEY_LOCAL_MACHINE.txt 内にこのような記述があるとします。

HKEY_LOCAL_MACHINE.txt 内にこのような記述があるとします。
isolation_full HKEY_LOCAL_MACHINE\Software\Wow6432Node\Notepad++
Value=InstallerLanguage
REG_SZ~1041#2300
冒頭の isolation_full はレジストリ分離モードの指定です。ここではFullモードが指定されています。その後の HKEY_LOCAL_MACHINE\Software\Wow6432Node\Notepad++ はキー名です。
次の行 Value=InstallerLanguage は名前が InstallerLanguage であることを示します。
最後の行は種類とデータです。種類が REG_SZ で、データは 1401 です。
通常はこのファイルの内容を確認したり編集する必要はありませんが、仮想アプリがうまく動かない際にはレジストリの内容を確認することもあります。
build.bat
プロジェクトフォルダの内容から仮想アプリパッケージをビルドするためのスクリプトファイルです。ThinApp がインストールされている環境でダブルクリックするとビルドが実行されます。
ビルド結果は bin フォルダに保存されます。先にファイルが存在している場合は置き換えられます。
「VMware ThinApp」時代に作成したプロジェクトフォルダを「Omnissa ThinApp」でビルドする場合、この build.bat ファイルを差し替えるか編集する必要があるので注意してください。
binフォルダ
ビルドした仮想アプリが保存されるフォルダです。一つ、または複数のファイルが作成されますが、仮想アプリを実行するにはここにある全てのファイルが必要です。
.exe ファイルはエントリーポイント、.dat ファイルはプライマリデータコンテナです。データコンテナをエントリーポイントと統合した場合は .dat ファイルは存在しません。
.alt ファイルは 64bit アプリをサポートするためのファイルです。プライマリデータコンテナのファイル名に拡張子 .alt が付いたファイル名になっています。
bin フォルダに出力される内容の例を見てみましょう。

左は Notepad++ で、プライマリデータコンテナをエントリーポイントに統合している上に、エントリーポイントが一つだけなのでとてもシンプルです。
右は OpenOffice を仮想化したもので、OpenOffice の複数のアプリをエントリーポイントに設定しているのが分かるかと思います。プライマリデータコンテナは .dat ファイルに分割されています。
以上がプロジェクトフォルダの内容です。仮想アプリパッケージの構成元となるファイルが保存されていることがご理解いただけたでしょうか。
繰り返しになりますが、仮想アプリを使用している間は必ずプロジェクトフォルダを残しておいてください。
執筆協力
Nagisaworks 伊藤さま
ThinApp技術指南
著者紹介
SB C&S株式会社
ICT事業本部 技術本部
ソリューション技術統括部 技術推進室
後藤 正幸
