我遇到以下情况,我需要删除标记为永久的组件。 我们的安装程序的先前版本安装了一个Windows服务,应该在卸载主产品后留在系统上。
现在我们尝试删除左侧服务并将其替换为更新版本。问题是我们有两个不同的组件指南,因为我们用它来改变创建msi的工具。
在我看来,有三种可能的方法来实现目标:
a)使用文件搜索来更新文件本身。 b)使用组件搜索并尝试查找它。如果没找到,试着找另一个。如果找到任何一个使用升级元素来升级组件。 C) ??? - 可能是“最佳实践”方式
我的一些同事提到只删除文件,但由于Windows Installer注册表中未注册的组件,这会导致更多麻烦。
我在这里没有提到CustomActions,因为它应该是实现目标的最后一个选项。
答案 0 :(得分:1)
这里最好的选择是使用InstEd It!或Orca打开旧的MSI,然后复制组件GUID并在新的安装程序中使用它们。
这样WindowsInstaller将为您处理升级。显然,如果你有数百个被设置为永久性的组件(你只需要打扰永久性组件),这将是非常痛苦的,但如果它只是服务元素,它应该是一个相当容易的任务。
另外,请确保您的UpgradeCode已转移并执行MajorUpgrade,以便首先卸载旧安装程序。