MSI升级并保留注册表项?

时间:2012-05-31 11:13:28

标签: windows-installer upgrade uninstall

我们在该领域拥有1.0产品。我正在尝试更新该产品的安装程序,以便可以安装旧版本,以安装新版本2.0。我正在使用Visual Studio 2010安装项目来执行此操作。

我维护了UpgradeCode,并将早期版本设置为true,新安装程序将成功安装旧版本,删除旧版本。

但是,在安装新MSI之后,似乎卸载了旧的MSI 。两个MSI都部署相同的注册表项(因为我们使用它们的代码没有更改)...但这意味着当旧的MSI卸载时,它会删除这些注册表项。并且由于在安装新的MSI之后发生了卸载......那些密钥已经消失了。

有一种简单的方法可以防止这种情况发生吗?这似乎是一个非常正常的用例,但是我无法弄清楚如果旧安装程序删除它们我应该如何维护这些注册表项。

编辑: 所以,我想出了如何在流程的早期移动RemoveExistingProduct步骤。我再次检查 - 是的,在VS2005中,它首先完成,在2010年它几乎完成了。我不确定他们希望如何工作,如果旧的卸载程序删除了新安装程序添加的内容....无论如何,这只是让Orca和编辑步骤的序列号的问题。

1 个答案:

答案 0 :(得分:3)

听起来您可能需要在安装程序序列中放置RemoveExistingProducts操作 - 可能需要安装InstallValidate操作。

我担心我不知道如何使用Visual Studio实现这一点 - 我使用Advanced Installer,因为我发现它提供了一个更容易的界面来构建和管理安装包。