我们正在安装一个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。
答案 0 :(得分:1)
可能并不明显,但该更改是自定义操作,它也会在修补程序安装期间运行。你需要这样的东西:
CA上有条件。在您的情况下,在补丁期间设置条件PATCH,因此您可以使用NOT PATCH作为条件。
否则,使用WiX'记住属性“模式,属性值将被保留并恢复。