11

使用 Visual Studio 2010,我想切换到使用 InstallShield LE 而不是 Visual Studio 安装项目。

在安装项目中,RemovePreviousVersions存在一个非常适合制作安装程序的选项,该安装程序基本上会在发布新版本时进行就地升级。

现在使用 InstallShield LE,我已经更新了版本并生成了新的 ProductCode,但在运行安装程序后,之前的版本仍然存在。

我需要做什么才能使 InstallShield 构建的项目可以删除使用 VS 安装项目构建的先前版本?

4

4 回答 4

42

当我第一次在 Visual 2012 中开始一个项目时,这让我发疯了。我不断在添加/删除程序中获得重复的副本,并且旧版本没有更新。这就是我发现我需要做的事情。

在升级路径下,创建一个新路径。将最低版本留空(除非您需要),包括最低版本是的,最高版本应设置为您现在正在安装的版本。包括最高版本到是。

每次安装更新时,请在“一般信息”部分中升级产品版本。单击一般信息部分中的新产品代码 不要更改升级代码

返回升级路径,并将 Max 版本设置为您现在正在部署的相同版本。这是让它为我工作的关键。

此过程卸载以前的版本,并安装最新版本。添加/删除程序中没有重复项。

希望这可以帮助。

于 2013-04-25T18:40:19.423 回答
8

你可以试试这个:

  • 使用Orca打开您的旧 MSI并从属性表中获取其 UpgradeCode
  • 在您的 InstallShield LE 项目中,转到解决方案资源管理器中的“常规信息”
  • 确保“升级代码”字段设置为您的旧 MSI 升级代码

您还应该确保 ALLUSERS 属性对于两个版本具有相同的值(这是相同的方法)。您可以在此处阅读有关升级的更多信息:http: //msdn.microsoft.com/en-us/library/aa369786 (VS.85).aspx

于 2011-06-23T06:17:11.207 回答
4

user2321103 的回答非常好,在升级路径中创建新的升级条目是关键。不幸的是,这个选项被隐藏起来了,因为它是产生大多数人自然期望的安装程序的正常默认行为所必需的。

这个新答案的原因是我发现我可以将升级条目中的 Max Version 设置为更高的数字而不是当前版本。这意味着我不必记住为每个新版本都更新它。我当前的版本是 2.1.8,所以我将 Max Version 设置为 2.1.9999。万一我希望在未来的某个版本中有不同的行为,我可以将我的版本升级到 2.2.x

每当您更改版本号时,Microsoft 安装项目都会自动更新产品代码,但 Installshield LE 不会,因此需要记住每次都这样做。

正如其他答案所述,升级条目使用以前安装版本的升级代码很重要。我还没有尝试过,但大概如果由于某种原因您有多个具有不同升级代码的先前版本,那么您可以为每个版本创建一个单独的升级条目。

我不明白为什么你不能同时将 Include Min Version 和 Include Max Version 都设置为 No,但这似乎不起作用。我没有尝试过这些不同参数的每种组合,但如另一个答案中所述,以下设置似乎可以解决问题:

  • 最低版本:空白
  • 包括最低版本:是
  • 最高版本:>= 当前版本
  • 包括最大版本:是

不要将 Lang Search Criterion 更改为 Exclude 似乎也很重要。我还将忽略删除失败设置为是。我将 Migrate Feature States 设置为 No,但无论如何我认为这与 LE 版本无关。

于 2014-12-16T11:27:17.480 回答
0

如果我可以再给出一个答案,我就能够创建一个升级路径,不需要基于通用ISPreventDowngrade升级路径设置/更新特定升级代码、最小或最大版本。根据 Max Version 说明中的注意事项,You must specify a value for at least one of the version settings: Min Version, Max Version, or both. 所以我将 Max 版本设置为通用占位符。完成后,我不需要设置最大版本。所以我的配置如下:

  • 升级代码:({00000000-0000-0000-0000-000000000000}将替换为当前安装程序的升级代码的通用占位符)
  • 最低版本:空白
  • 包括最低版本:否
  • 最大版本:(***ALL_VERSIONS***版本占位符)
  • 包括最大版本:是

我保持不变的所有其他字段。有关更多信息,请参阅http://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/PreventingDowngrades.htm,但请注意拼写错误。上面的两个占位符都打错了;我从ISPreventDowngrade升级路径中使用的数据中获得它们。

于 2018-03-28T15:11:45.340 回答