如何让InstallShield LE自动卸载现有安装?

Dav*_*Dev 25 windows-installer uninstall installshield-le

这可能吗?

我所能看到的只是我需要使用第三方工具(例如Orca)从我现有的MSI获取GUID并使用这些来配置InstallShield以卸载现有版本.我已经尝试过这些指令中的一两个,但到目前为止还没有任何工作.可能是因为我做错了什么,但似乎我正在经历许多箍,做一些我认为应该相对直截了当的事情.这个问题以前没有解决过吗?

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

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

这是否意味着每次我想部署新版本时,我必须用Orca打开我的'旧MSI并获得它的UpgradeCode'?

这听起来有点hackish,当然我每次部署新版本时都不想做.有没有办法实现自动化?这个功能是否在更高版本的InstallShield中可用(请记住我在LE上 - 如果需要我会升级)

JYe*_*ton 62

InstallShield LE与之前的Setup Project一样,允许安装新版本的产品,该产品将取代之前安装的版本.至于技术上是否是旧产品的卸载,或者就地升级似乎不太重要.

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

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

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

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

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

InstallShield LE一般信息

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

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

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

在已安装早期版本的计算机上安装产品时,安装项目将更新它并仅保留目标计算机上安装的程序的一个版本(最新版本).

  • 嗨JYelton,我尝试了你的建议,它似乎工作 - 按照你的指示我可以安装新版本,而无需手动卸载旧版本.但是,旧版本仍存在于"添加或删除程序"列表中(在XP上,未在Windows 7中尝试过).你知道是否有办法删除旧版本? (7认同)
  • 很抱歉发布了一个旧问题,但我遇到了与@DaveDev相同的问题.我的UpgradeCode完全相同,但是当我更改ProductCode和ProductVersion时,我仍然在添加/删除程序中有多个版本. (4认同)
  • 我也经历过两个版本,但后来我做了一个升级路径并修复了它(我想这是让安装人员知道它应该尝试升级/更新) (2认同)
  • 我也尝试了上面的步骤,但我又在添加/删除程序条目中有两个版本的相同应用程序 (2认同)