Windows installer MSI升级并保留注册表项?

Windows installer MSI升级并保留注册表项?,windows-installer,upgrade,uninstallation,Windows Installer,Upgrade,Uninstallation,我们有一个产品,1.0,在该领域。我正在尝试更新该产品的安装程序,以便它可以在旧版本上安装,以安装新版本2.0。我正在使用VisualStudio2010安装项目来完成此任务 我已经维护了升级代码,并将remove Previous versions设置为true,新安装程序将成功地在旧安装程序上安装,从而删除旧安装程序 但是,旧MSI的卸载似乎发生在安装新MSI之后。两个MSI部署相同的注册表项(因为使用它们的代码没有更改)。。。但这意味着当旧的MSI卸载时,它会删除这些注册表项。由于卸载发生

我们有一个产品,1.0,在该领域。我正在尝试更新该产品的安装程序,以便它可以在旧版本上安装,以安装新版本2.0。我正在使用VisualStudio2010安装项目来完成此任务

我已经维护了升级代码,并将remove Previous versions设置为true,新安装程序将成功地在旧安装程序上安装,从而删除旧安装程序

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

有没有一个简单的方法来防止这种情况?这似乎是一个非常正常的用例,但如果旧的安装程序删除了这些注册表项,我不知道该如何维护它们

编辑:
因此,我在流程的早期就知道了如何移动RemoveExistingProduct步骤。我仔细检查了一下——是的,在VS2005中,它是第一个完成的,在2010年,它几乎是最后一个完成的。如果旧的卸载程序删除了新安装程序添加的内容,我不确定他们希望如何工作。。。。无论如何,这只是获取Orca并编辑步骤序列号的问题。

听起来您可能需要将操作放在安装程序序列中—可能是安装验证操作


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

在Advanced Installer中,您只需从Upgrades(升级)视图中选择升级顺序,其余由应用程序自动处理。是的,Visual Studio安装项目界面非常糟糕。就像试图用一块石头和一些尖头的棍子建造一架747。@NateFinch什么,747?:-)看起来这可能是升级安装项目中的一个bug。我认为没有包括的一点是,旧的安装项目是在VS2005中创建的,而新的项目是在2010年创建的。这里有一个与我在这个场景中遇到的问题类似的链接:我现在正在试用这个补丁,当我发现它是否有效时,我会做出回应。好了,就到此为止。补丁-似乎没有任何帮助。