0

我的 Visual Studio 2008 安装项目已更改,因此 MFC 和 VC 的合并模块已替换在安装文件夹中手动安装的 DLL。我对合并模块没问题,但是有一个问题。在之前的设置中,用户可以在“Everyone”和“Just me”之间进行选择。在新设置中,此选择无效,并且由于合并模块必须为每个人安装,因此始终为每个人安装。因此,如果以前的安装是“只为我”,那么新安装不会删除以前安装的 DLL,并且在控制面板中有两个同名的安装。

在新版本的安装项目中 ProductCode 发生了变化,UpgradeCode 没有,RemovePreviousVersion 设置为 true,Version 比以前高。

如果我从设置中排除合并模块,并“只为我”安装新版本,那么一切都很好。旧文件被删除,控制面板中只有一个安装。但我宁愿不给用户单独安装可再发行软件包带来负担。

我如何在 Visual Studio 2008 安装程序中同时拥有合并模块,并指示安装程序删除以前的版本,即使以前的版本是“只为我准备的”,而新的版本是为“所有人”准备的?

也许更好的问题是你会代替我做什么来解决这个问题?

4

1 回答 1

0

Windows Installer(MSI 文件的处理程序)不会在安装另一个产品期间卸载一个产品。此外,当按用户(“just me”)和按机器(“everyone”)安装时,相同的安装被视为两个不同的产品。因此,如果要在每台计算机上安装新的,则您无法从 .msi 卸载每个用户安装的旧版本。

选项按优先顺序排列:

  1. 进行引导程序安装 (.exe),它将寻找并卸载所有需要卸载的内容。Bootstrapper 也是安装先决条件的首选方式,而不是使用合并模块。
  2. 从 .msi 中,您可以检测到有问题,然后停止安装。我已经这样做了,但也将使用第一个选项。
  3. 忽略问题,说这是设计使然,什么也不做。这一切都在用户手中。
于 2012-12-14T11:44:08.517 回答