9

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 が発生しています。

なぜこれがうまくいかないのですか?さて、「プログラム ファイル フォルダ」に書き込むには、延期されたカスタム アクションが必要です。権利が必要なため、遅延カスタム アクションが必要であり、遅延カスタム アクションの前に実行される即時カスタム アクションは、プロパティの処理に役立ちます。それは可能ですか?

私の問題が何であるかを理解していただき、私を助けていただけることを願っています.

4

1 に答える 1