WiX无法检查使用CustomAction设置的属性
我想根据某些值在安装中包括不同的dll。因此,我尝试根据使用自定义操作设置的属性加载组件 在wxs文件中:WiX无法检查使用CustomAction设置的属性,wix,custom-action,Wix,Custom Action,我想根据某些值在安装中包括不同的dll。因此,我尝试根据使用自定义操作设置的属性加载组件 在wxs文件中: ... <Property Id="PropDllVersion" Value="0" /> ... <CustomAction Id="CheckPropDllVersion" BinaryKey="CustomAction1.dll" DllEntry="GetPropVersion" Return="ignore" Execute="immediate"/>
...
<Property Id="PropDllVersion" Value="0" />
...
<CustomAction Id="CheckPropDllVersion" BinaryKey="CustomAction1.dll" DllEntry="GetPropVersion" Return="ignore" Execute="immediate"/>
...
<InstallExecuteSequence>
<Custom Action="CheckPropDllVersion" After="ValidateProductID" />
</InstallExecuteSequence>
...
<Component Id="Test"
Guid="B81F832D-2D96-4169-9BD0-8D77098FEC60">
<Condition><![CDATA[PropDllVersion = "19"]]></Condition>
<File Id="File15"
Name="xyz.dll"
Vital="yes"
KeyPath="yes"
AssemblyManifest="File5"
AssemblyApplication="File5"
Assembly=".net"
DiskId="1"
/>
</Component>
...
我可以在msi日志文件中看到,此属性已更改为19,但是安装中不包括xyz.dll。看起来PropdlVersion没有设置在条件级别,或者我做错了什么。。。我试着在其他很多地方对它进行排序,但它仍然不起作用
如果我在条件中使用全局属性而不是我的属性,它会工作 您还尝试在其他什么地方对自定义操作排序?您需要在CostInitialize操作之前对其排序 另外,在CostInitialize之后调用FileCost操作,然后调用CostFinalize操作 您可以在此处查看CostInitialize操作的文档:
请注意(其名称包含小写字母)在InstallExecuteSequence中使用其默认值。因此,您应该使用一个,例如PROP_DLL_版本。不确定为什么我对这个问题的评分为负面。并不是说我没有尝试过这里介绍的所有其他解决方案。我很感激你对这个问题的负面评价…我昨天试过了,但没有用,可能忘记了编译自定义操作。现在尝试,它的工作!
[CustomAction]
public static ActionResult GetPropVersion(Session session)
{
session["PropDllVersion"] = "19";
}