9

我在 VS2010 中使用 InstallShield LE 遇到了障碍。第二次运行生成的 setup.exe(版本号递增),我收到错误

该产品的另一个版本已经注册

通过“增加的版本号”,我的意思是我在我的 .exe 的 AssemblyVersion 和 AssemblyFileVersion 中将次要版本、内部版本号和修订版更改为更大的数字(DLL 设置为“1.0.*”)

[assembly: AssemblyVersion("0.2.103.005")]
[assembly: AssemblyFileVersion("0.2.103.005")]
[assembly: AssemblyInformationalVersion("Alpha 0.1 - 2/8/2011")]

并且还将 Installshield LE 安装项目的常规信息选项卡中的产品版本从 0.10.0000 更新为 0.11.0000。

我确实在其他 SO 帖子和制造商的社区支持论坛中遇到过此错误消息的实例,但没有找到适用于我的解决方案。

4

3 回答 3

13

事实证明,答案是在“升级路径”选项卡上创建一个条目。当您这样做时,InstallShield LE 将显示一个文件选择对话框。如果您有旧的安装程序,大概您可以浏览到它以获取有关您希望能够从哪个版本升级的信息。在我的情况下,我没有方便的旧安装程序,所以我按了取消,并且无论如何都创建了新的升级路径条目。然后我调整了该条目的属性以指定升级的最小和最大版本,一切都按预期工作。

编辑

(来自@lookatmike 的评论)

您还必须在一般信息选项卡中更改产品版本和(有点违反直觉)产品代码。升级代码必须保持不变。

于 2011-02-13T17:52:21.503 回答
7

好的 - 这个问题让我发疯了 - 我还没有在网上找到完美的答案。

所以我决定我已经搞定了。

这可能不是解决问题的“最佳”方法——我确信有一些基于 MSI 的“正确处理”的复杂方式,但我想不通(我想我很笨?)

基本上,我的安装程序只是确保已安装 .NET,并将一些文件复制到 Program Files 目录中,添加一些注册表项、快捷方式等。

如果您有更复杂的安装过程 - 我鼓励您在其他地方找到“正确”的答案。但是对于像我这样简单的事情(我怀疑 95% 的人都在努力解决这个问题),这很好用。

首先 - 切勿触摸“产品代码”。我相信这是全面适用于 MSI 的正确程序……您不应该更改产品代码。这个解决方案也依赖于此。

下一步 - 将产品代码复制到剪贴板 - 我们稍后将需要它。

基本上,如果机器上已经存在该产品,我们将告诉 InstallShield 始终卸载该产品。

在此处输入图像描述

在此处输入图像描述

如果您或您的合作伙伴曾经默默地运行安装 - 请确保您在两个地方都这样做:

在此处输入图像描述

对于“文件名和命令行”,输入:

msiexec /uninstall {YOUR PRODUCT CODE HERE} /passive

就是这样。现在您的安装程序将始终卸载旧版本。

注意:这会禁用任何类型的“我是否正在运行更新版本的安装程序”检查。

于 2012-03-18T17:56:00.560 回答
0

我经常重复使用我的 Visual Studio 项目并遇到这个问题。正如@Eric-j 所说,我必须在 VS Install Setup 项目的 General Information 选项卡中更改产品代码:

在此处输入图像描述

于 2018-01-23T15:35:37.180 回答