【问题标题】:Installsheild 2013 Upgrade not removing previous version (things to check?)Installshield 2013 升级不删除以前的版本(要检查的东西?)
【发布时间】:2014-03-21 17:30:31
【问题描述】:

我已经创建了 InstallShield 项目的副本,因此所有设置都应该相同。 (我之前成功地做到了这一点)。我正在使用此副本对安装程序项目进行更改,因为它将以自动构建方式调用。我对这个版本的安装程序项目进行的一项重大更改是为 pre-req(s) 引用共享网络位置。一个 pre-req 是在此之前构建的另一个安装程序项目,并引入了主安装程序。

我正在本地测试此构建,而不是通过自动构建过程。

我知道升级代码匹配。我有 2 个主要更新的升级代码检查。我还检查了“任何版本”设置。

但是,当我构建和测试新的安装程序时,它不会删除以前的条目。

我已在此处检查 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall] 并看到其中列出的应用两次。我真的希望找到升级代码,以便在由于某种原因弄乱的情况下有所了解,没有骰子。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\installer]

正如一些人建议的那样,我浏览了 exe 并尝试添加主要升级项目,但我仍然得到相同的升级代码。

所以我的问题是,是否还有其他人需要检查可能会阻止将此条目从添加-删除对话框中删除。

日志文件

MSI (c) (D0:E0) [16:26:28:649]: Doing action: FindRelatedProducts
Action 16:26:28: FindRelatedProducts. Searching for related applications
Action start 16:26:28: FindRelatedProducts.
Action ended 16:26:28: FindRelatedProducts. Return value 1.

MSI (s) (2C:68) [14:12:34:706]: Doing action: RemoveExistingProducts
Action 14:12:34: RemoveExistingProducts. Removing applications
Action start 14:12:34: RemoveExistingProducts.
Action ended 14:12:34: RemoveExistingProducts. Return value 1.


Action start 13:48:41: ISSetAllUsers.
MSI (c) (6C:9C) [13:48:41:826]: Invoking remote custom action. DLL: C:\Users\ngates\AppData\Local\Temp\MSID938.tmp, Entrypoint: SetAllUsers
InstallShield 13:48:41: Begin SetAllUsers()
InstallShield 13:48:41: Getting records from Upgrade table
InstallShield 13:48:41: UpgradeCode: {84A5CBA6-9BC8-4E99-B8AE-9327E9B78A34} MinVersion:     MaxVersion: 6.38.0.448  Language:   Attributes: 257
InstallShield 13:48:41: Checking related product {AD762BD7-3EA5-4DD2-8552-1474ABED7C6F}
InstallShield 13:48:41:     Venus 7000  {AD762BD7-3EA5-4DD2-8552-1474ABED7C6F}  1033    6.38.0.372   ***Related***
MSI (c) (6C!E4) [13:48:41:854]: PROPERTY CHANGE: Adding IS_MAJOR_UPGRADE property. Its value is 'Yes'.
InstallShield 13:48:41: ALLUSERS of related product {AD762BD7-3EA5-4DD2-8552-1474ABED7C6F} is = 1
InstallShield 13:48:41: End SetAllUsers()
Action ended 13:48:41: ISSetAllUsers. Return value 1.

根据文档(RemoveExistingProducts Action),返回码 1 表示某些内容已被删除,所以它的行为就像它正在工作......

【问题讨论】:

  • 详细日志说什么,尤其是在FindRelatedProducts附近?
  • 增加ProductVersion的前三位,不同的ProductCode,相同的UpgradeCode是主要的,是的。每个用户安装不会升级每个系统(反之亦然),这就是 Michael 要求您查看 FindRelatedProducts 的原因,因为这会说明一些事情。
  • 我必须升级前 3 位数字中的一个吗?过去我不需要。 MSI (c) (D0:E0) [16:26:28:649]:执行操作:FindRelatedProducts 操作 16:26:28:FindRelatedProducts。搜索相关应用 动作开始 16:26:28:FindRelatedProducts。操作于 16:26:28 结束:查找相关产品。返回值 1。
  • 不,它不起作用,所以不要这样做。重大升级需要更改前三位数字,请参阅此处的备注msdn.microsoft.com/en-us/library/aa370859(v=vs.85).aspx,看起来您需要将整个日志发布到某个地方,而不仅仅是 FindRelatedProducts 部分。
  • 这不是 InstallShield 限制,而是 Windows Installer 限制。它一直在那里:msdn.microsoft.com/en-us/library/aa370859(v=vs.85).aspx

标签: installation windows-installer installshield addremoveprograms


【解决方案1】:

我想出了办法!

在主要升级项目上,选择第二个单选按钮。并设置一个适当的范围,对我来说,我做了 6.0.0.0 到 6.99.9.9,这似乎对我有用。因为 7.0.0.0 将构成我们真正的主要版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多