WiX CustomActionData在名为CustomAction的位置为空

时间:2012-03-05 09:12:27

标签: c# wix wix3.5 custom-action

再一次,我遇到了问题,这可能很容易解决 我想扩展一个使用WiX创建的设置,以便对已安装程序的配置文件进行更改。为了做到这一点,我创建了一个 CustomAction 。为了能够更改配置文件,我需要知道它在 CustomAction 中的(安装)位置。因此,我尝试将 INSTALLLOCATION 和文件名传递给我的 CustomAction 。问题在于: CustomActionData -Attribute始终为空,并且安装程序会抛出异常。

我的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.)。

这是我尝试将属性从setup-script传递到自定义操作的方法:

<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
再一次,我非常感谢任何有关我做错事的帮助或提示。

1 个答案:

答案 0 :(得分:17)

Property的{​​{1}}属性值应等于延迟操作的DemoDatum.SetProperty属性值。因此,要么将属性名称更改为Id,要么将延迟操作的DemoDatum更改为Id