Wix主要升级

时间:2009-01-28 17:46:49

标签: installer wix windows-installer

如何在“重大升级”期间使用WIX防止覆盖配置文件?

我希望在初始安装时安装该文件,在卸载时删除该文件,并在“重大升级”中保持不变。

由于

3 个答案:

答案 0 :(得分:17)

最直接的方法是在InstallExecute或InstallFinalize之后安排RemoveExistingProducts。这样,配置文件不会被删除,然后再次安装(就像你在InstallInitialize之前安排一样)。当然,如此延迟安排RemoveExistingProduct意味着您需要非常小心组件规则。

我个人最喜欢的是对待“用户数据”之类的配置,而根本没有安装它。您使用应用程序发送默认值,但用户在其私有用户配置文件中进行任何更改。让您摆脱各种令人讨厌的迁移问题,这些问题在设置过程中无法很好地解决。

答案 1 :(得分:4)

你想要覆盖它吗?如果不是这种情况,我将配置文件分配给他们自己的组件并将其标记为从不覆盖。这样升级不会覆盖文件,但卸载会将其删除。

e.g。

<Component Id="myComp" Guid="myguid" NeverOverwrite="yes">

答案 2 :(得分:0)

您可以使用UPGRADINGPRODUCTCODE属性来检查您是否正在升级。我们使用它来确定是否应该运行“清理”自定义操作:

<Custom Action="" After="CleanUpFiles">
  <![CDATA[REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE]]>
</Custom>

我同意Rob的意见,因为配置是用户数据,存储在他们的AppData文件夹中,而且从不由MSI创建。相反,它设置为默认值(我们将其存储为程序文件中的默认配置),并由应用程序本身复制。但是如果他们想卸载我们的产品,我们不想让这些东西弄乱用户的机器,所以我们制作了一个CleanUpFiles,可以在HD中搜索任何遗留下来的垃圾。