繁体   English   中英

Wix重大升级

[英]Wix major upgrade

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

我希望文件在初次安装时安装,在卸载时删除,并且在“主要升级”中保持不变。

谢谢

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

我个人最喜欢的是将配置像“用户数据”一样对待,而根本不用installtouch。 您随应用程序一起提供了默认值,但是任何更改都由用户在其私人用户配置文件中进行。 使您摆脱各种在安装过程中无法很好解决的讨厌的迁移问题。

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

例如

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

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

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

我确实同意Rob的观点,因为配置是用户数据,存储在其AppData文件夹中,并且从未由MSI创建。 而是将其设置为执行默认值(我们将其作为默认配置存储在程序文件中),并由应用程序本身复制过来。 但是,如果用户要卸载我们的产品,我们不想让这些事情变得混乱。因此,我们制作了一个CleanUpFiles来搜索HD留下的任何垃圾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM