2012-03-05 15 views
12

もう一度私は問題に悩まされています。それはおそらく解決しやすいでしょう。
インストールしたプログラムの設定ファイルを変更するために、WiXで作成された設定を拡張したいと考えています。これを行うために、CustomActionを作成しました。設定ファイルを変更できるようにするには、私はCustomActionの中でその(インストール)場所を知る必要があります。したがって、INSTALLLOCATIONとファイル名をCustomActionに渡してみます。ここに問題があります。CustomActionData -Attributeは常に空で、セットアップによって例外がスローされます。WiX CustomActionDataが呼び出されたCustomActionで空です

私のCustomActionはC#DLLファイルです:DemoDatumErzeugen.CA.dllです。このファイルには、コンフィグレーションファイルを変更するメソッドDatumEintragenが含まれています。私はこの方法でデータにアクセスしようとしています。

string path = session.CustomActionData["LOCATION"]; 

これは例外がスローされる場所です。私はドイツ語のエラーメッセージしか持っていませんが、それは行に沿って何かを言う:The supplied key was not found in the dictionaryDer angegebene Schlüssel war nicht im Wörterbuch angegeben.)。

これは私が私のカスタムアクションに私のセットアップ・スクリプトからプロパティを渡してみてください方法です:

<Binary Id="DemoDatumEinrichtenCA" SourceFile="DemoDatumErzeugen.CA.dll"/> 

<CustomAction Id="DemoDatum.SetProperty" Return="check" Property="DatumEintragen" Value="LOCATION=[INSTALLLOCATION];NAME=StrategieplanConfig.xml;"/> 
<CustomAction Id="DemoDatum" BinaryKey="DemoDatumEinrichtenCA" DllEntry="DatumEintragen" Execute="deferred" Return="check" HideTarget="no"/> 

<InstallExecuteSequence> 
    <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/> 
    <Custom Action="DemoDatum" After="DemoDatum.SetProperty"/> 
</InstallExecuteSequence> 

私はそれは同じ方法または少なくとも非常に類似したに行われた多くの例を見てきました。私は多くのことを試しましたが、何も値を変更するのに役立たないようです。<Custom Action="DemoDatum.SetProperty" After="InstallFiles"/>の後。 CustomActionDataは常にゼロです。
私はそれをチェックします:session.CustomActionData.Count
もう一度私は何か間違ったやり方をした助けやヒントについてはかなり感謝しています。

答えて

17

Propertyの属性値DemoDatum.SetPropertyは、延期アクションの属性値のIdと等しくなければなりません。したがって、プロパティ名をDemoDatumに変更するか、延期アクションのIdDatumEintragenに変更してください。

+0

実際に!それはそれだった。大いに感謝する。見落とすのは簡単です。 – Skalli

+0

@Yan Sklyarenko私はbootstraperアプリケーションを使用して作成した私の.exeのインストール中に問題に直面しています。あなたはこれを調べて、助けてくださいhttp://stackoverflow.com/questions/27151665/error-0x80070643-fatal-error -during-installation-wix – user2725407

関連する問題