使用InstallShield LE更新现有安装程序

28
我们有一个相当简单的WinForms应用程序。我使用InstallShield LE创建了一个安装程序,在第一次安装时工作得很好。我希望用户也能够运行该安装程序以更新现有副本。问题是我无法弄清楚创建此更新包的正确方法。我尝试过:
更改产品代码 - 安装程序可以工作,但在“添加/删除程序”中创建了一个新条目,旧条目没有被删除。
保留产品代码 - Windows安装程序会显示:“已安装另一个版本的该产品”。
尝试对其他代码(升级代码/产品版本)进行操作 - 没有帮助
是否有任何简单的方法可以创建这个更新包?也许有什么东西可以告诉安装程序删除其先前的版本(如果存在)?

可能是重复的问题:如何让InstallShield卸载之前的版本? - Michael Urman
2个回答

76

在您的InstallShield安装项目中,您应该执行以下操作:

  • 选择分支:组织您的安装 -> 升级路径
  • 添加新的升级路径,然后按下取消按钮
  • 如果您不打算从以下分支更改产品版本,则不应更改新升级路径的默认属性: 组织您的安装 -> 一般信息。 如果您计划更改产品版本,则应使用以下升级路径属性进行操作:最小版本/_包括最小版本_,最大版本/_包括最大版本_。
  • 每次需要创建新的安装时,请从以下分支更改产品代码组织您的安装 -> 一般信息
  • 请注意,升级代码绝不能更改。

3
@nambar,这对您有用吗?它能正常工作,我认为您应该接受这个答案。 - Thabiso Mofokeng
2
对我有用。这是比https://dev59.com/hmct5IYBdhLWcg3wUb5-中更好的答案。 - kuradac
另外,也请查看这个问题,它也有一个很好的答案:https://dev59.com/bWgu5IYBdhLWcg3wJT5I - Andrew Garrison
这对我来说可行。谢谢。但我很好奇,在测试时,我发现当执行我创建的升级安装程序时,InstallShield没有指示正在进行升级。如果有其他细节可以配置InstallShield设置项目以使其发生,请告诉我。 - Mike Strother

1
  1. 将/常规信息/"产品代码"中的guid复制到/升级路径/升级代码中
  2. 将/常规信息/"产品代码"中的guid复制到/常规信息/升级代码中
  3. 在/常规信息/产品代码中按下“...”按钮生成新的guid

  4. 可选设置。在/升级路径/升级代码中

    • 禁用最大版本
    • 启用最小版本,例如可以将版本0.0.0.1放入最小版本中。
    • 禁用语言依赖性

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接