1

我处于以下情况,我需要删除标记为永久的组件。我们的安装程序的早期版本安装了一个 Windows 服务,在卸载主要产品后应该留在系统上。

现在我们尝试删除左侧的服务并用更新的版本替换它。问题是我们有两个不同的组件 guid,因为我们更改了用于创建 msi 的工具。

在我看来,有三种可能的方式来实现这个目标:

a) 使用文件搜索来更新文件本身。b) 使用组件搜索并尝试找到它。如果没有找到,请尝试找到另一个。如果找到任何一个,请使用升级元素来升级组件。C) ???- 可能是“最佳实践”方式

我的一些同事提到只删除文件,但这会导致更多麻烦,因为 Windows Installer 注册表中没有未注册的组件。

我在这里没有提到 CustomActions,因为它应该是实现目标的最后一个选项。

4

1 回答 1

1

您最好的选择是使用InstEd It 打开您的旧 MSI!或 Orca,然后复制组件 GUID 并在新安装程序中使用它们。

这样,WindowsInstaller 将为您处理升级。显然,如果您将数百个组件设置为永久组件(您只需要关心永久组件),这将非常痛苦,但如果它只是一个服务元素,它应该是一个相当容易的任务。

还要确保您的 UpgradeCode 已转移并执行MajorUpgrade以便首先卸载旧的安装程序。

于 2012-07-20T20:16:01.927 回答