【问题标题】:Installshield - need to remove Products with "bad" upgrade codeInstallshield - 需要删除带有“错误”升级代码的产品
【发布时间】:2011-06-23 00:04:47
【问题描述】:

我们有一个 installshield 产品,在该产品的整个生命周期内我们都有相同的升级代码。不知何故,一个带有新升级代码的版本发布了,所以现在我们开始在客户的添加/删除程序中看到多个条目。

有没有办法(也许是安装脚本?)检查产品是否有另一个升级代码,如果它与当前代码不匹配,则将其删除(我们将把它重置回旧代码并且永远不要再改变它!)?

提前感谢您的宝贵时间!

【问题讨论】:

  • 谢谢克里斯托弗...我们将在接下来的几天内解决这个问题。我真的很感谢你抽出宝贵的时间!!!

标签: windows-installer installshield


【解决方案1】:

我自己刚刚经历过,这很痛苦。我们使用 VS 2005 来构建我们的 MSI,无论出于何种原因,我不小心更改了上一个版本的升级代码。这导致程序在“添加/删除程序”对话框中出现两次,尽管设置了 RemovePreviousVersions 标志。我发现我必须编辑升级表才能为胭脂更新代码输入一个条目。

使用 InstallShield 应该会更轻松地完成此过程,但我将包含我必须使用的 VS 说明以防万一。

在 VS 2005 中,您无权编辑升级表(至少我找不到),所以我不得不安装一个名为 Microsoft Orca 的程序(MS 有一些很酷的代号,但产品很糟糕名称)。它带有 Windows SDK,所以我已经在我的计算机上安装了它。这是链接:http://msdn.microsoft.com/en-us/library/aa370557%28v=vs.85%29.aspx

在该程序中打开您的 MSI 文件,您会在列表底部看到升级。您必须为要处理的升级代码添加一个新条目。这是一个解释它的链接: http://msdn.microsoft.com/en-us/library/aa372379%28VS.85%29.aspx

我使用要删除的升级代码创建了一个新行,版本号正确,属性为 4 (msidbUpgradeAttributesIgnoreRemoveFailure),ActionProperty 为 PREVIOUSVERSIONSINSTALLED。

如果我理解正确,我基本上告诉 MSI 连同 RemovePreviousVersions 标志,它会考虑这个其他升级代码并将其删除。它适用于我的情况,所以希望其中一些对你有所帮助。

祝你好运!

【讨论】:

    【解决方案2】:

    检查应用程序安装信息在系统注册表中的存储位置。如果您能找到产品代码的存储位置,您可以编写脚本从注册表中读取代码,然后执行删除程序脚本。

    【讨论】:

      【解决方案3】:

      安装程序可以删除属于任意数量 UpgradeCode 系列的产品。只需编写另一个 MajorUpgrade 规则(升级表)来涵盖旧的和新的 UpgradeCode,你应该没问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        • 2017-12-14
        • 2013-02-03
        • 2011-11-13
        • 2013-05-15
        • 1970-01-01
        相关资源
        最近更新 更多