我想在 msi 安装程序进行重大升级时保留配置文件。对于配置文件,我在安装时进行了更改。代码如下:
<Component Id="MODIFYCONFIG" Guid="6A1D7762-B707-4084-A01F-6F936CC159CE" Win64="yes">
<File Id="Application.config" Name="Application.config" Vital="yes" KeyPath="yes" Source="Resource\Application.config"></File>
<util:XmlFile Id="SetValueIP" Action="setValue" Permanent="yes" File="[#Application.config]"
ElementPath="/configuration/applicationSettings/Application.Properties.Settings/setting[\[]@name='IpAddress'[\]]/value" Value="[IPADDRESS]" Sequence="1"/>
<util:XmlFile Id="SetValuePort" Action="setValue" Permanent="yes" File="[#Application.config]"
ElementPath="/configuration/applicationSettings/Application.Properties.Settings/setting[\[]@name='IpPort'[\]]/value" Value="[PORT]" Sequence="2"/>
<Condition>Not Installed</Condition>
</Component>
<Component Id="KEEPCONFIG" Guid="F7F173AA-C2FD-4017-BFBC-B81852A671E7" Win64="yes">
<RemoveFile Id="ApplicationConfig" Name="Application.config" On="uninstall"/>
<Condition>(REMOVE=ALL) AND (NOT UPGRADINGPRODUCTCODE)</Condition>
</Component>
但是,当发生重大升级时,该文件不会保留。如何保留修改后的文件?
这为我解决了这个问题...配置文件通过次要/主要升级保留,并在卸载时完全删除。
Ref: Aaron Stebner:如何在 Windows Installer 主要升级期间保留用户自定义文件 https://learn.microsoft.com/en-us/archive/blogs/astebner/mailbag-how-to-retain-user-customized-files-during-a-windows-installer-major-upgrade
编辑:链接页面的摘要信息...
-
每个配置文件应有其自己的组件,其中配置文件被标记为组件的密钥路径。Windows Installer 将使用无版本控制的文件替换逻辑。
-
在“InstallFiles”操作之后添加“RemoveExistingProducts”操作。在删除旧 MSI 之前,将安装所有组件的新版本。当按此顺序完成时,组件的引用计数将增加到 2,但配置文件不会被替换,除非它们未经修改(因为未版本化的文件替换逻辑)。当旧的 MSI 被删除时,引用计数将减回 1,但文件不会被删除,因为引用计数不为 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)