2013-01-18 80 views
6

我正在将一些东西从Visual Studio 2008迁移到2012.我的一个项目包含2012年不再支持的安装项目。我决定重新构建它在WiX 3.6中。我创建了一个WiX安装项目来设置我的文件和另一个WiX捆绑项目,以将我的先决条件与安装项目捆绑在一起。从VS安装项目升级时Bundle的版本和升级代码与WiX的安装

现在,我希望这个安装项目可以与以前的安装无缝地工作,如果可能的话。例如,我使用VS2008中的VS setup项目创建的setup.exe,在其系统上安装了1.0版本的机器。现在我已经使用由VS2012中的WiX bundle项目创建的setup.msi编译了2.0版本。当版本2.0 msi运行时,我希望它能识别出安装了相同设置的较早版本并对该更新进行了预制(或重新安装)。

所以我的问题是,每个软件包和安装项目都包含它们自己的UpgradeCode和Version。哪一个应该会收到我1.0版本安装程序的UpgradeCode?当我现在和将来版本,我是否版本一或二?

回答

4

我或多或少地通过尝试不同的事情来想清楚它。当引导程序安装时,这是放入“添加/删除程序”菜单中的内容。因此,我认为引导程序的升级代码应该与我的旧软件包的升级代码相匹配。然后安装程序会立即知道以前的版本已安装,应在卸载之前先卸载。 msi的升级代码应该是另一个唯一的代码。然后,msi项目和bootstrapper项目的版本应该在每次构建时更新。

+5

当束进行升级时,如果它支持升级每个内部封装可以升级本身。因此,您应该能够为您的msi软件包保留相同的升级代码,并为该软件包提供新的升级代码。您的解决方案适用于包含单个msi的捆绑包,但在您需要打包/升级多个msis时发生故障。 –