【问题标题】:Need to uninstall unrelated application before installation Installshield 2010安装 Installshield 2010 前需要卸载无关的应用程序
【发布时间】:2023-06-28 06:26:01
【问题描述】:

提前道歉,我仍然是 Installshield 新手!

我目前正在使用 installsheild 2010 为我的应用程序 (ds2) 打包一个安装包。我的麻烦是我需要删除该项目的前一个化身,该项目是使用 installshield 2008 作为合并模块 (ds1) 创建的,而不是本身的安装程序。

所以旧版本(ds1)目前缺少升级代码等,只能访问产品版本和包代码。

新程序具有通常的升级、包、产品代码 (ds2)。

是否可以将旧产品 mergeModule 关联到新应用程序,以便可以将其作为“以前的版本”卸载。或者是否有另一种方法可以让 installshield “删除产品代码为 xxxxxxxx 的任何内容”

我希望这足够清楚,可以做出回应! 提前致谢

【问题讨论】:

  • 你至少有旧应用程序版本的msi文件吗?
  • 是的,但是原始产品附加到多个安装程序 - 我不想卸载与以前安装有关的所有内容,只是相关的产品合并模块(对不起,这是'一点都不清楚!)
  • 我打算为你写出不同的答案。所以请经常定期检查。您应该开始考虑的一件事是......您需要破解或排除安装程序所做的事情。

标签: package upgrade installshield uninstallation


【解决方案1】:

只有 FindRelatedProducts 需要UpgradeCode 来确定 ProductCode。 RemoveExistingProducts 使用该 ProductCode 进行删除。

您可以根据虚假的 UpgradeCode 创建一个 Major Upgrde,因为您知道它不会找到任何东西。然后,您可以使用 Type 51 Set Property 自定义操作将已知 ProductCode 分配给主要升级规则使用的 ActionProperty。然后 RemoveExistingProducts 将出现并卸载该产品。

【讨论】:

  • 嗨,它似乎没有卸载旧产品。我认为这是因为我有一个“包代码”而不是来自旧 installshield ism 的“产品代码”——我曾希望它会评估为同样的东西。我认为这是解决这个问题的正确方法,我只需要让 2008 合并模块与 2010 包有一些共同点:(
  • 不,我希望 PackageCode 和 ProductCode 属性 guid(或任何与此相关的 guid)永远不会相同。您使用合并模块的事实与手头的问题无关,因为合并模块不是产品,既没有 PackageCode 也没有 ProductCode。
  • 当然!我不希望他们是一样的。我想我的观点丢失了。如前所述,旧产品作为另一个项目的合并模块存在。由于新产品有自己的安装程序,我无法通过通常的升级代码来卸载旧产品。
最近更新 更多