为什么CostFinalize在一次安装中修改我的自定义属性而不是另一次?

时间:2015-09-09 19:11:27

标签: wix copy wix3.7

我有两个安装,几乎完全相同的代码。我设置了这样的自定义属性:

<SetProperty Id="MYCONFIGPATH" Value="[CONFIGPATH]" Before="CostInitialize"/>

然后在组件中引用该属性:

<Component Id="CopyConfigFromConfigPath" Guid="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" MultiInstance="yes">
    <Condition>CONFIGPATH</Condition>
    <CopyFile SourceProperty="MYCONFIGPATH" DestinationDirectory="ConfigBOR" DestinationName="ConfigBOR.xml" Id="CopyConfigBOR" />
</Component>

我不确定这是导致无法复制此文件的原因,但我怀疑它是:

MSI (s) (64:6C) [14:03:42:383]: PROPERTY CHANGE: Modifying MYCONFIGPATH property. Its current value is 'C:\Installs\ConfigBOR.xml'. Its new value: 'C:\Installs\ConfigBOR.xml\'.

注意尾随反斜杠。这在开始CostFinalize后不久发生。在该日志条目上方是一些可疑的查看条目,但我无法弄清楚它们的含义,因此我不确定它们是否相关:

MSI (s) (64:6C) [14:03:42:380]: Doing action: CostFinalize
MSI (s) (64:6C) [14:03:42:380]: Note: 1: 2205 2:  3: ActionText 

MSI (s) (64:6C) [14:03:42:382]: Note: 1: 2205 2:  3: Patch 
MSI (s) (64:6C) [14:03:42:383]: Note: 1: 2205 2:  3: Condition

我在另一个安装程序中有相同的代码(BOR被替换为该中的产品名称),但它不会修改此属性并正确复制此文件。为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

我认为您的问题没有提供足够的信息来回答这个问题,但我的psychic powers告诉我MYCONFIGPATHDirectory table的一个包中但不在另一个。因此CostFinalize的目录解析阶段对两个包的影响不同。

答案 1 :(得分:0)

C:\Installs\ConfigBOR.xml不存在。我猜WIX接受了这个,而不是抛出错误,决定检查是否存在具有该名称的目录。