WiX:如何进行升级,忽略未标记为NeverOverwrite的过时组件?

时间:2013-05-26 21:38:18

标签: wix

所以,我发的这个产品有一个像

这样的组件
<Component Id="Rates2012" Guid="{some-guid}">
    <File Id="Rates2012" Name="2012-rates.dbf" KeyPath="yes"/>
</Component>

更新即将发布,我们拥有该文件的2013版本。这是一个不同的组件,具有不同的文件名和guid。它取代了2012版本。

我想要的只是在升级时将2012文件单独保留(不删除)。但我不想仅仅为了将其标记为NeverOverwrite而将其包含在安装程序中。

也就是说,我不介意为此目的包含有关2012组件的元数据,但我不想包含实际文件,因为它很大且已经过时。

可能我应该第一次将它标记为NeverOverwrite,但我没有。并且应该在卸载时删除该文件。

2 个答案:

答案 0 :(得分:1)

不确定它会起作用,但这是你可以尝试的。 有一个自定义操作,将现有文件复制到临时位置。然后在升级安装中包含一个虚拟小文件。并安装另一个自定义操作以从临时位置复制到原始位置。 一个hacky,但应该根据你的需要工作。

答案 1 :(得分:0)

不幸的是,Windows Installer并不真正支持这一点。如果您包含有关文件的元数据,那么您将需要在修复MSI并且需要实际放回文件的情况下使实际位可用。

这是您希望在发运产品之前确定test your upgrade scenarios的情况之一。