1

我有一个简单的 msi 安装程序 setup.exe(通过 VS2010 创建)。在第一次安装中一切正常,问题出在第二次安装中: 1. msi 设置是:a.RemovePreviousVersions 设置为 TRUE。2.我升级了安装版本(用于第二次安装)编号,然后当我询问是否要升级产品代码时按确定。

此时我重新编译了 msi 并双击 setup.exe。问题:我希望安装程序会检测到已经安装了以前的版本并询问我是否要删除\升级它。发生的情况是安装程序自动将已安装的产品升级到新版本而不询问任何内容......

有什么方法可以配置 msi 项目以使其提示“升级\删除”屏幕????

非常感谢..

4

2 回答 2

1

我发现这篇文章很有帮助。尤其:

•如果新的 MSI 文件与已安装的产品具有相同的 ProductCode 和 PackageCode,Windows 会指示您必须修复或删除该产品

在此处输入图像描述

删除会卸载产品,但修复可能会更令人困惑。

修复不会使用您的新 MSI 文件来修复产品,也不会更新您之前安装的内容。相反,它会修复现有的已安装产品。也就是说,它的行为就像您转到用于安装现有产品的原始 MSI 文件,选择上下文菜单,然后选择修复。(注意:也可以从添加/删除程序启动修复。)

• 如果新的 MSI 文件的 ProductCode 与已安装的产品相同,但 PackageCode 不同,您将收到一条消息,指出已安装了该产品的另一个版本。

于 2011-05-08T22:25:16.983 回答
1

我没有使用过 VS 安装程序,但它受到严重限制。从技术上讲,您的升级包必须具有

  1. 新的产品代码
  2. 与您之前的产品相同的升级代码

您还需要以正确的顺序将 FindRelatedProducts 和 RemoveExistingProducts 添加到 InstallE 表中。您可以在上面添加一些 MSI gui,但这意味着您必须使用 Orca 编辑器手动编辑 msi。一种更简单的方法可能是使用Wix工具包,让您有更多的自由。那里已经回答了您的问题。

于 2011-05-08T22:38:09.147 回答