如何使升级忽略未标记为NeverOverwrite的过时组件?



所以,我发布了这个产品它有一个类似

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

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

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

也就是说,出于这个目的,我不介意包含关于2012组件的元数据,但是我不想包含实际文件,因为它太大而且过时了。

也许我应该第一次把它标记为NeverOverwrite,但是我没有。并且该文件应该在卸载时删除。

不确定它是否有效,但这是您可以尝试的东西。使用自定义操作将现有文件复制到临时位置。然后在升级安装中包含一个虚拟的小文件。安装后,另一个自定义操作从临时位置复制到原始位置。一个粗糙的,但应该工作给你的需要。

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

这是您想要确保在发布产品之前测试您的升级场景的场景之一。

最新更新