我的安装程序运行良好(在更新中),但没有组件更新

时间:2014-12-17 21:36:46

标签: windows-installer installshield

有一些基本的我想念升级。

我有一个带有嵌入式MSI的安装程序(setup.exe),由InstallShield编写。在干净的机器上运行设置时 - 一切都安装得很好。

在安装了较低版本设置的机器上运行更高版本的设置(在我的情况下:3.6.200)(3.5.300) - 设置运行正常,它甚至说软件已更新到新版本3.6.200 - 但我最终得到了完全相同的文件 - 没有更新任何组件。

我已经仔细检查了文件版本 - 并为所有二进制文件正确设置(3.5.300.0和3.6.200.0)。对于这两个版本,我都有相同的“产品代码”和“升级代码”,我相信这是我应该做的。

两个问题:

  1. 我做错了什么?
  2. 我有哪些诊断工具?是否有任何详细模式,安装程序或InstallShield可以告诉我为什么它没有升级我的组件?

1 个答案:

答案 0 :(得分:1)

乌里

希望您现在已经找到了解决问题的方法。 要考虑的一件事是次要升级和主要升级之间的区别。 MSDN对这两者之间的区别有很好的文档。

菲尔在评论中问道,如果你打算这是一次重大升级。如果您希望这是一次重大升级,那么您需要更改ProductCode GUID。根据您编写的内容,您当前配置为进行次要升级。通常使用此方法,以便您可以为现有设置创建修补程序包。

Christopher试图帮助您弄清楚如何创建一个MSI日志文件,该文件将列出升级时采取的所有操作。如果你有日志文件,那么尝试解析输出或在适当的位置放在这里作为zip文件。如果它有敏感数据,请确保先删除它。您还可以在注册表中设置msi日志记录参数。只需搜索' voicewarmup msi logging'在谷歌中设置要设置的策略密钥的示例。

在您的方案中,我唯一可以想到的是组件的密钥文件关联未正确设置。 MSI引擎使用与组件关联的密钥文件的版本来确定是否应在次要升级期间替换该文件。如果未指定密钥文件,则使用组件目录来评估是否应升级该文件。因此,在次要升级方案中,如果组件目录是[INSTALLDIR]并且它已经存在,则文件将永远不会更新。

如果是这种情况,那么我相信您需要更改ProductCode并构建主要升级。确保遵循一个< exe,dll,ocx或chm'的组件规则。每个组件的文件,并将该特定文件设置为组件的密钥文件。 另外一个提示,避免在InstallShield中使用动态链接,如果你从不使用include子目录。这可能导致修补和升级问题。