25

这可能吗?

我所看到的搜索基本上是我需要使用 3rd 方工具(例如 Orca)从我现有的 MSI 中获取 GUID,并使用这些配置 InstallShield 以卸载现有版本。我已经尝试过其中一两套指令,但到目前为止没有任何效果。可能是因为我做错了什么,但似乎我跳过了很多圈来做一些我认为应该相对直截了当的事情。这个问题之前不是已经解决了吗?

谷歌的最高结果指向这个答案

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

这是否意味着每次我想部署新版本时都必须打开我的“使用 Orca 的旧 MSI 并获取其升级代码”?

这听起来有点骇人听闻,而且我肯定不想在每次部署新版本时都这样做。有没有办法自动化这个?此功能是否在更高级的 InstallShield 版本中可用(请记住我在 LE 上 - 如果需要,我会升级)

4

3 回答 3

62

InstallShield LE 与之前的安装项目一样,允许安装新版本的产品,该版本将替换以前安装的版本。至于技术上是卸载旧产品,还是就地升级,似乎无关紧要。

关键在于产品代码升级代码之间的区别:

  • 产品代码:由于此代码唯一标识您的产品,因此不建议在您已分发版本后更改产品代码。

  • 升级代码:存储在 UpgradeCode 属性中的升级代码对于产品的所有版本应保持相同。

(此文本直接来自 InstallShield LE 帮助库。)

如何使用这些代码来部署产品和同一产品的版本更新并不完全简单。

InstallShield LE 一般信息

帮助文本听起来像是您永远不应该更改产品代码。不是这种情况。可能应该写得更清楚地说“由于此代码唯一标识您的产品版本,因此不建议在您已经分发特定版本之后更改产品代码。” ... 或类似的东西。

基本上,您应该在创建要发布的新版本时更改产品代码。别管升级代码!要更改产品代码,请单击{..}代码右侧的按钮。InstallShield LE 将生成一个新代码。

我的标准过程是更改我的项目的版本、生成新的产品代码并构建 InstallShield 安装项目。

在已安装较早版本的机器上安装产品时,安装项目将对其进行更新,并在目标机器上仅保留一个版本(最新)的程序。

于 2012-08-04T21:14:25.710 回答
4

据我了解,YJelton 的回答是正确的,但是如果您想确保删除旧产品,您应该在升级表中添加一个 MajorUpgrade 项目——如果您保持升级代码相同(如建议的那样),您可以选择“共享我的升级代码的产品”选项,对于产品版本,您可以选择“任何早期版本”。

这样,如果升级代码与您的旧产品相同,并且您的新产品具有更高的版本号,则旧产品将被删除。

如果您想更改升级代码,您可以添加一个 MajorUpgrade 项目,该项目选择了“具有另一个升级代码的产品”选项。然后粘贴您的旧升级代码。

于 2013-06-12T15:30:49.883 回答
-1

转到“升级路径”并将最小版本设置为空白,最大版本。到电流。将 max/min 包括为 yes 并将所有代码 id 设置为一个 guid。

于 2016-05-11T11:40:22.833 回答