3

カスタム MSI パッケージを作成し、Advanced Installer を使用して、何らかのコマンド ライン引数 ("flag"トリガー可能なもの) を追加しようとしています。そのフラグがトリガーされると、一連のイベントがインストーラーで発生します (特定のファイルの削除、フォルダーの移動、zip ファイルの抽出など) 。

言い換えればexe、高度なインストーラーから生成された という名前があるとしましょうinstaller.exe

installer.exe --triggerEventsインストーラー自体内で一連のカスタム イベントをトリガーするコマンド ライン呼び出しから実行したい..

少し調査した後、私の質問に関連するこの非常に優れた記事に出くわしました。

コマンド ライン引数を MSI インストーラ カスタム アクションに渡す方法

しかし、著者は Advanced Installer ではなく MSI に厳密に焦点を合わせているようです。私はむしろ、私が使用しているこのアプリケーションを利用したいと考えています。

必要な引数を渡してインストーラーを呼び出し、セッションを使用してカスタムアクションで取得することは可能でしょうか? それともAIでこれを行う方法はありますか?

4

1 に答える 1

4

AdvancedInstaller (Install Parameters ページ、Properties) を使用して、MSI 内にパブリック プロパティを作成できるはずです。パブリック プロパティはALL_CAPSにする必要がありますが、プライベート プロパティには小文字を含めることができます。

カスタム アクションでパブリック プロパティを参照して、実行時にプロパティの値を取得します。

コマンド ラインから msi を呼び出す場合、次のようにパブリック プロパティの値を設定できます。

msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"

あなたの説明から、MSI を bootstrapper にコンパイルしているようです。私の理解では、ブートストラップ exe は、パブリック プロパティの引数をユーザーに代わって MSI に渡します。

C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"

カスタム アクションでパブリック プロパティのコンテンツを参照し、希望どおりに機能させるには、かなりの試行錯誤が必要であることがわかりましたが、これはおそらく、私がオーサリングが得意ではないためです。 MSIの。私の場合、概念実証として小さなテスト インストーラーをビルドすると、多かれ少なかれ自分がやろうとしていることをデバッグするのに役立つことがわかりました。正しく理解できたら、作業中の実際の AIP ファイルにその部分を追加し、そこでもテストします。すすぎ、必要に応じて繰り返します。

于 2013-01-29T01:33:33.957 に答える