如何确保仅在卸载时删除文件,而不是在重新安装,修复或升级期间删除?

时间:2017-01-12 11:14:10

标签: windows wix windows-installer

我使用WIX对我的安装程序进行编码。正在安装的应用程序有一个数据库文件,只有在卸载时才需要删除,在修复,重新安装或升级时不会被触及。

我将其编码为:

        <Component Id='CompIDRemDataFile' Guid='{---gui--}'>
          <RemoveFile Id="idRemDataFile" Name="program_database.db" On="uninstall" Property="MyDataFolderPath" />
          <RegistryValue Id="RegRemDataFile" Root="HKCU" Key="Software\My Company\App name"
                         Name="11352" Value="1" Type="integer" KeyPath="yes" />

但我刚刚了解到,如果我从旧版本升级到更高版本,此文件也会被删除。我应该改变什么以防止这种情况?

1 个答案:

答案 0 :(得分:1)

文件覆盖规则包括一个表示永远不会覆盖更新数据文件的规则:

Neither file has a version

这意味着在InstallExecute之后排序的补丁,修复和主要升级不会替换可能已更新的数据库。 Windows Installer中没有“重新安装”,因为相同的MSI无法安装两次 - 产品将进入维护模式。

WiX主要升级在这里:

Majorupgrade element

How to implement major upgrade