我又一次陷入了一个问题,那可能很容易解决。
我想扩展一个用wix创建的安装程序,以更改已安装程序的配置文件。为此,我创建了一个customaction。为了能够更改配置文件,我需要知道它在customaction中的(安装)位置。因此,我尝试将installlocation和文件名传递给我的customaction。问题在于:customActionData属性始终为空,安装程序抛出异常。
我的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
我再次非常感谢你的帮助或暗示,我做错了什么。

最佳答案

PropertyDemoDatum.SetProperty属性值应等于延迟操作的Id属性值。因此,要么将属性名更改为DemoDatum,要么将延迟操作的Id更改为DatumEintragen

10-06 00:35