0

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

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

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

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

4

1 回答 1

0

您可能需要做的是使用验证来识别所有重复项并修复它们。然后将您的升级更改为具有最早计划的重大升级。您可能还必须将安装位置更改为稍微不同的目录,以避免组件引用计数中断。

一旦清理干净,您应该能够返回到较小的升级并开始考虑修补。另一种选择是“假”补丁。我使用的 MSI 并没有非常成功地发布为修补程序方法。它打破了很多规则,但对于那些不关心修补规则而只想让业务满意的组织很有用。

于 2013-10-01T11:35:29.557 回答