WiX CustomActionData在名为CustomAction的中为空
本文关键字:CustomAction WiX CustomActionData | 更新日期: 2023-09-27 18:26:36
我再一次陷入了一个问题,这个问题可能很容易解决
我想扩展一个使用WiX创建的设置,以更改已安装程序的配置文件。为了做到这一点,我创建了一个自定义操作。为了能够更改配置文件,我需要知道它在CustomAction中的(install-)位置。因此,我尝试将INSTALLLOCATION和Filename传递给我的CustomAction。问题就在这里:CustomActionData-属性总是空的,并且安装程序抛出异常。
我的CustomAction是一个C#DLL文件:DemoDatumErzeugen.CA.dll
。它包含一个修改配置文件的方法DatumEintragen
。我正试图通过以下方式访问数据:
string path = session.CustomActionData["LOCATION"];
这就是抛出异常的地方。我只收到了德语错误消息,但它大致说明了一些内容:The supplied key was not found in the dictionary
(Der 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"/>
中的值After。CustomActionData始终为零
我用session.CustomActionData.Count
检查再一次,我非常感谢任何帮助或暗示我做错了什么。
DemoDatum.SetProperty
的Property
属性值应等于延迟操作的Id
属性值。因此,要么将属性名称更改为DemoDatum
,要么将延迟操作的Id
更改为DatumEintragen
。