为什么即使文件在wix中没有其他更改,xmlfile操作也会发生?

时间:2015-03-04 10:26:07

标签: wix wix3.8

我们正在安装一个web.config文件作为MSI的一部分。

<Component Id="Alert" Guid="Some valid GUID">
        <File Id="Web.config" Source="..\..\..\..\<Somevalidpath>\Web.config" KeyPath="yes" />
        <File Id="Global.asax" Source="..\..\..\..\<Somevalidpath>\Global.asax" KeyPath="no" Name="Global.asax" />
        <util:XmlFile Id="SetKey_ServiceURL"
                Action="setValue"
                ElementPath="//appSettings/add[\[]@key='URL'[\]]/@value"
                Value="[SERVICEURL]"
                File="[#Web.config]"
                SelectionLanguage="XPath"
                Sequence="1" />
</Component>

在该web.config文件中,我们正在升级一个URL,该URL通过参数名称SERVICEURL作为参数传递给Msi。

我们发布产品后,由于问题我们不得不进行小幅升级。我们决定选择Msp而不是Msi。现在虽然Web.config文件没有更改,但如果我们没有传递参数SERVICEURL,它会更改Web值为空值的Web.config文件。

我们被迫在安装Msp时再次传递SERVICEURL,尽管该文件没有任何变化。

有可能避免这种情况吗?除非没有变化,否则我们不想更新URL。

1 个答案:

答案 0 :(得分:1)

可能并不明显,但该更改是自定义操作,它也会在修补程序安装期间运行。你需要这样的东西:

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/util-XmlFile-conditionally-set-value-td3900952.html

CA上有条件。在您的情况下,在补丁期间设置条件PATCH,因此您可以使用NOT PATCH作为条件。

否则,使用WiX'记住属性“模式,属性值将被保留并恢复。