为什么 CostFinalize 在一个安装中修改了我的自定义 属性 而在另一个安装中没有?

Why is CostFinalize modifying my custom property in one install and not the other?

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

<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 在那个安装程序中被替换为产品名称)但它没有修改这个 属性 并且正确地复制了这个文件。为什么它在这里不起作用?

我认为你的问题没有提供足够的信息来肯定地回答这个问题,但我的 psychic powers tell me that MYCONFIGPATH is in the Directory table in one package but not in the other. Thus the directory resolution phase of CostFinalize 对这两个包的影响不同。

C:\Installs\ConfigBOR.xml 不存在。我想 WIX 意识到了这一点,并没有抛出错误,而是决定检查是否存在具有该名称的目录。