WiX インストーラーが遅延/即時カスタム アクションと接触して問題を抱えています。私の英語を許してください。
ユーザーが入力したいくつかのプロパティを、延期されたカスタム アクションに引き渡したいと思います。そのためには、すぐにカスタム アクションと「CustomActionData」が必要であることはわかっています。この方法で実装しました。
バイナリ:
<Binary Id='myAction' SourceFile='.\TemplateGeneration.CA.dll'/>
即時のカスタム アクション:
<CustomAction Id='Datenuebergabe' Property='DoSomething' Value='InstalllocVar=[INSTALLLOCATION]'/>
延期されたカスタム アクション:
<CustomAction Id='TemplateGenerationInstallKey' BinaryKey ='myAction' DllEntry='DoSomething' Impersonate='no' Execute='deferred' Return='check' HideTarget='yes'/>
インストール実行シーケンス
<InstallExecuteSequence>
<Custom Action="Datenuebergabe" Sequence="1399"/>
<Custom Action="TemplateGenerationInstallKey" Before="InstallFinalize"/>
</InstallExecuteSequence>
遅延カスタム アクションでプロパティを呼び出す:
string somedata = session.CustomActionData["InstalllocVar"];
TemplateEngineCall(somedata+"templates", "install_key_cmd", somedata+"scripts", "install_key.cmd");
私の問題: プログラムをインストールしようとすると、壊れてしまいます。このコードでは、1 つのプロパティしか放棄できませんが、複数のプロパティをコミットする必要があります。
情報: ログ ファイルを見ると、カスタム アクションの呼び出し中に System.Collections.Generic.KeyNotFoundException が発生しています。
なぜこれがうまくいかないのですか?さて、「プログラム ファイル フォルダ」に書き込むには、延期されたカスタム アクションが必要です。権利が必要なため、遅延カスタム アクションが必要であり、遅延カスタム アクションの前に実行される即時カスタム アクションは、プロパティの処理に役立ちます。それは可能ですか?
私の問題が何であるかを理解していただき、私を助けていただけることを願っています.