
仮想アプリの変更・更新
こんにちわ。 SB C&S の後藤です。
運用に関する設計情報の続きを解説していきます。
Setup Captureでアプリをキャプチャしてプロジェクトフォルダーを作成した後でも、アプリを変更する必要が出てくる場合があります。
例として、
- アプリのアップデートが必要になった
- 異なる設定を行ったアプリを配布したい
などが考えられます。
対処方法としては大きく分けて次の2つがあります。
- Setup Captureをやり直す
- プロジェクトフォルダーのファイルを変更して再ビルドする
これらの方法について解説します。中でも、プロジェクトフォルダーを変更する sbmerge.exe というツールの解説が今回のメインです。
キャプチャをやり直す場合
新しいインストール資材を用いて、Setup Captureを最初からやり直します。
クリーンなWindowsにThinAppがインストールされた状態のスナップショットがあれば、そこからすぐにキャプチャ作業を開始できます。
キャプチャ中のターゲットアプリのインストールが完了したタイミングでスナップショットを作成しておくと、さらに作業を省略できます。スナップショットの管理に余裕があれば検討してください。
アプリのアップデートで変更されるファイルがわからない場合や、多数のファイル・レジストリが変更される場合は、この方法が最も確実です。
プロジェクトフォルダーを手動修正する場合
プロジェクトフォルダーのファイルを直接変更します。追加・変更すべきファイルが把握できている場合に適した方法です。

設定ファイルのみを変更したい場合、パッチ適用に必要なファイルだけを差し替えたい場合などに有効です。
プロジェクトフォルダー内の配置場所は、ThinAppのフォルダマクロを参照してください:
https://docs.omnissa.com/ja-JP/bundle/ThinAppUserGuideV2503/page/ListofThinAppMacros.html
レジストリの変更も可能ですが、複雑な作業になるため、対応するテキストファイルをよく確認して編集してください。
変更が完了したら、build.batを実行して再ビルドします。動作確認を念入りに行ってください。
sbmerge.exeでサンドボックスとプロジェクトフォルダーを統合する
ビルド済みの仮想アプリを操作して、その結果をプロジェクトフォルダーに適用できる方法が sbmerge.exe を使用する方法です。特に設定を変更した仮想アプリを配布したいときに役立ちます。
sbmerge.exeとは
sbmerge.exeは、サンドボックスに保存された変更をプロジェクトフォルダーに統合するためのコマンドラインツールです。ThinAppのインストールフォルダーに保存されています。
パス(デフォルト):
\Program Files (x86)\Omnissa\Omnissa ThinApp\sbmerge.exe
sbmerge.exeを使用する手順
手順を整理すると次のとおりです:
- Setup Captureでプロジェクトフォルダー作成&ビルド
- ビルドした仮想アプリで設定操作を行う
- sbmerge.exeを実行してプロジェクトフォルダーを更新
- 再ビルド
キャプチャ時にインストールしたアプリではなく、仮想アプリ を使用して操作する点に注意してください。
sbmerge.exeの使い方
sbmerge.exeには Print と Apply の2つの機能があります。
Print(変更の表示のみ)
sbmerge.exe Print [OptionalParameters]
Apply(変更を統合)
sbmerge.exe Apply [OptionalParameters]
Apply を実行すると、対象サンドボックスは削除されます。
オプション一覧
-ProjectDir PathToProject
プロジェクトフォルダーのパスを指定(未指定時はカレントディレクトリ)。-SandboxDir PathToSandbox
サンドボックスのパスを指定(未指定時は所定の順序で検索)。-Quiet
進捗表示を非表示にする。-Exclude ExcludeFile.ini
除外ルールを指定する。デフォルトはsnapshot.ini。
sbmerge.exeには公式ドキュメントがほぼありません。ダブルクリックするとcmd.exe上でヘルプが表示されます。
実行例
Notepad++を例に手順を実践します。
プロジェクトフォルダーがすでに作成されている前提で、作業しやすい場所にコピーしてください。
binフォルダー以下に Thinstall フォルダーを作成します。

このフォルダーがサンドボックスとして扱われます(サンドボックスの確認が容易になるため)。
次に、仮想化したNotepad++で外観テーマを変更します。

テーマを変更し、「保存して閉じる」をクリックしてアプリを終了します。
Printで変更を確認
cd \path\to\ProjectFolder
"\Program Files (x86)\Omnissa\Omnissa ThinApp\sbmerge.exe" Print

サンドボックス内に %AppData% やレジストリのファイルが追加されていることが確認できます。
Applyで統合
"\Program Files (x86)\Omnissa\Omnissa ThinApp\sbmerge.exe" Apply
変更内容が表示され、統合が完了します。サンドボックスは空になります。
最後に build.bat を実行して再ビルドし、テーマが反映されていることを確認します。
更新パッケージ配布時の注意
仮想アプリパッケージ内のファイルより、サンドボックス内のファイルが優先されます。
ユーザーが独自にテーマなどを変更している場合、更新済みアプリを配布しても サンドボックスが優先され変更が反映されない ことがあります。
この場合、ユーザー側で サンドボックスを削除 する必要があります。
デフォルトのサンドボックス場所:
\Users\<USER>\AppData\Roaming\Thinstall\
今回紹介した内容は少し発展的です。難しいと感じた場合はSetup Captureをやり直す方法をお勧めします。
キャプチャを効率化するためにも、クリーン環境を仮想マシンで作成しスナップショット管理することが重要です。
執筆協力
Nagisaworks 伊藤さま
ThinApp技術指南
著者紹介
SB C&S株式会社
ICT事業本部 技術本部
ソリューション技術統括部 技術推進室
後藤 正幸
