清理Wix安装程序中的重复条目

时间:2013-09-30 22:58:36

标签: wix windows-installer wix3.6

我需要一些关于如何清理一个管理不善的旧Wix项目的建议。一个问题是项目当前有相同文件的多个条目,转到相同的位置。例如,项目中的几个.wxs文件将为foo.exe定义一个新组件,每个组件使用不同的GUID,每个组件都将此文件发送到同一DirectoryRef。这还没有产生任何问题,但现在我想在我们的产品中使用补丁(MSP),这种事情会混淆他们的操作。

我想知道在不破坏升级的情况下解决这个问题的最佳方法(因为所有以前的安装程序都已经这样了)。如果我只删除所有重复的组件,我们会在升级过程中获得未定义的行为。我认为发生的事情是删除一个或多个重复条目将导致安装程序为该文件生成删除操作。即使文件的剩余条目是新版本,也无法保证安装期间的操作顺序。因此,其中一些文件将首先更新,然后一个或多个删除操作将删除更新的文件。因此,在升级结束时,将丢失几个文件。之后立即运行修复将恢复文件,因为安装程序知道它们应该在那里。

我想解决这个问题的一种方法是在我们的下一个版本中执行一次“hack”,我们将这些文件复制到辅助位置,然后在安装后运行自定义操作,将文件从辅助位置复制到主要并删除临时目录。

有没有更清洁的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可能需要做的是使用验证来识别所有重复项并进行修复。然后通过尽可能早的安排将升级更改为主要升级。您可能还需要将安装位置更改为稍微不同的目录,以避免组件引用计数中断。

一旦清理完毕,您应该可以重新进行小规模升级并开始考虑修补。另一种选择是“假”补丁。我已经使用了一个MSI,它不会非常成功地将自身发布为修补程序方法。它打破了很多规则,但对于那些不关心修补规则而只是想让业务开心的组织来说非常有用。