Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WiX无法检查使用CustomAction设置的属性_Wix_Custom Action - Fatal编程技术网

WiX无法检查使用CustomAction设置的属性

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"/>

我想根据某些值在安装中包括不同的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>
...
我可以在msi日志文件中看到,此属性已更改为19,但是安装中不包括xyz.dll。看起来PropdlVersion没有设置在条件级别,或者我做错了什么。。。我试着在其他很多地方对它进行排序,但它仍然不起作用


如果我在条件中使用全局属性而不是我的属性,它会工作

您还尝试在其他什么地方对自定义操作排序?您需要在CostInitialize操作之前对其排序

另外,在CostInitialize之后调用FileCost操作,然后调用CostFinalize操作

您可以在此处查看CostInitialize操作的文档:

请注意(其名称包含小写字母)在InstallExecuteSequence中使用其默认值。因此,您应该使用一个,例如PROP_DLL_版本。

不确定为什么我对这个问题的评分为负面。并不是说我没有尝试过这里介绍的所有其他解决方案。我很感激你对这个问题的负面评价…我昨天试过了,但没有用,可能忘记了编译自定义操作。现在尝试,它的工作!
[CustomAction]
        public static ActionResult GetPropVersion(Session session)
        {
    session["PropDllVersion"] = "19";
        }