Windows installer Installshield-需要移除带有“的产品”;“坏的”;升级代码

Windows installer Installshield-需要移除带有“的产品”;“坏的”;升级代码,windows-installer,installshield,Windows Installer,Installshield,我们有一个installshield产品,在项目的生命周期中,我们有相同的升级代码。不知怎的,一个版本发布了一个新的升级代码,所以现在我们开始在客户的添加/删除程序中看到多个条目 是否有一种方法(可能是安装脚本?)检查并检查产品是否有其他升级代码,如果与当前代码不匹配,则将其删除(我们将将将其重置为旧代码,并且不再更改!) 提前感谢您的时间 安装程序可以删除属于任意数量的UpgradeCode系列的产品。只需编写另一个主要的升级规则(升级表)来涵盖旧的和新的升级代码,您就可以了。检查应用程序安装

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

是否有一种方法(可能是安装脚本?)检查并检查产品是否有其他升级代码,如果与当前代码不匹配,则将其删除(我们将将将其重置为旧代码,并且不再更改!)


提前感谢您的时间

安装程序可以删除属于任意数量的UpgradeCode系列的产品。只需编写另一个主要的升级规则(升级表)来涵盖旧的和新的升级代码,您就可以了。

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

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

使用InstallShield,这个过程应该会更容易,但我将包括我必须使用的VS说明,以防万一

在VS2005中,您没有编辑升级表的权限(至少我找不到),因此我不得不安装一个名为Microsoft Orca的程序(MS有一些很酷的代码名,但产品名很糟糕)。它与Windows SDK一起提供,所以我的计算机上已经有了它。以下是链接:

在该程序中打开您的MSI文件,您将看到列表底部的升级。您必须为要处理的升级代码添加一个新条目。这里有一个链接解释了这一点:

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

如果我正确地理解了,我基本上告诉MSI,与ReleVelviVuy版本标志一起,它将考虑这个其他升级代码并将其删除。这在我的情况下是有效的,所以希望其中的一些能对你有所帮助


祝你好运

谢谢Christopher…我们将在未来几天内对此进行研究。我真的很感谢你抽出时间!!!