【发布时间】:2012-04-30 14:13:18
【问题描述】:
我想根据某些值在安装中包含不同的 dll。因此,我正在尝试根据使用自定义操作设置的属性加载组件。
在 wxs 文件中:
...
<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>
...
然后在自定义动作文件中:
[CustomAction]
public static ActionResult GetPropVersion(Session session)
{
session["PropDllVersion"] = "19";
}
我可以在 msi 日志文件中看到此属性已更改为 19,但是 xyz.dll 未包含在安装中。看起来 PropDllVersion 没有在条件级别设置,或者我做错了什么...我尝试在许多其他地方对其进行排序仍然无法正常工作...
如果我在条件中使用全局属性而不是我的属性,它会起作用!
【问题讨论】:
-
不知道为什么我对这个问题有负面评价。并不是说我没有尝试过这里介绍的所有其他解决方案。不胜感激这个问题的负面评价的原因......
标签: wix custom-action