概要
InstallShield には組み込み関数がいくつか用意されていますが、基本的な機能しか提供されていないため少し高度なことを実現しようとすると外部のモジュールやコマンドなどに頼る必要が出てきます。
しかし、InstallShield のアプリケーションデータに呼び出したいモジュールを配置してしまうとインストール処理だけで必要なモジュールを呼び出すことはできますが、インストール先に余分なモジュールとして含まれてしまいます。さらに、インストールの後処理で余分なモジュールを削除する処理も必要になってしまいます。
ここでは InstallShield でインストール処理だけで使うモジュールを呼び出す方法について記載します。
対応方法
InstallShield に関する情報があまり出回っていないので今まで知りませんでしたが、 動作とロジック にある サポートファイル/ビルボード にインストール処理だけでつかうモジュールを配置することで対応できます。
ここでは アドバンスファイル の Disk1 へ任意のモジュールを配置します。
ここへ配置したモジュールはインストール時に C:/Users/(ユーザー名)/AppData/Local/Temp/(GUID) 以下に一時ファイルとして配置されます。あとは、InstallScript から SRCDIR 変数を使用することで該当のモジュールのパスを得られるため、フルパス指定で任意のモジュールを呼び出すことができます。
LaunchAppAndWait(SRCDIR ^ "module.exe", "", LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
上記のコードではサポートファイルとして配置した module.exe がインストール処理だけで使用するモジュールとして呼び出されます。