无法让MSI次要升级工作

时间:2012-08-30 02:11:02

标签: windows windows-installer upgrade

当我尝试对我的应用程序进行次要升级时,我启动了安装程序并且(根据我尝试的设置组合)我得到了:

  • 修复/删除对话框
  • 提示安装目录

我不相信我应该得到这些提示中的任何一个。我主要期望安装程序自动应用升级而不提示任何内容。我想我在Visual Studio安装项目中正确地做了一切:

  • 将版本从1.0.0升级到1.1.0
  • 使产品代码保持不变
  • 更新了包裹代码
  • 保持升级代码相同
  • 使用参数REINSTALLMODE = vomus REINSTALL = ALL
  • 启动安装程序

我已经尝试了几乎所有代码/标志和技术的组合,但似乎无法应用更新。

关于我还能尝试什么的任何想法?

2 个答案:

答案 0 :(得分:1)

为了让它发挥作用我:

  • 将版本从1.0.0升级到1.1.0
  • 使产品代码保持不变(在Visual Studio提示时表示否)
  • 更新了包裹代码(Visual Studio自动执行此操作)
  • 未更改升级代码
  • 使用参数REINSTALLMODE = vomus REINSTALL = ALL
  • 启动安装程序
正如我在我的问题中指出的那样,它似乎正在发挥作用。我可以成功应用升级。但是,当我运行安装程序时,仍然会提示我修复/删除选项。但是,我猜这是一个不同的问题。

答案 1 :(得分:0)

首先要做的事情您确定没有在两个MSI文件中重新使用包GUID ,或者在部署工作期间的某个时刻和测试?

尝试使用新GUID重建两个MSI文件,以将它们与任何现有缓存版本“解耦”,然后再次尝试测试安装。更改包裹代码和产品代码。更好的是:在干净的虚拟机上测试这些新版本,以确保不受过去罪恶影响的正确测试环境。由于包guid冲突,您的开发人员系统可能在其Windows安装程序数据库中有gremlins。如果是这种情况,软件包安装将成为总XFiles - 可能会发生最奇怪的事情。


更多详情: 如果两个MSI文件的包GUID相同,则Windows Installer将根据定义将它们视为同一文件 - 无论它们包含什么。这可能会导致各种难以清理和调试的奇怪问题。请注意,即使您忘记更新一次也会发生这种情况,因为安装MSI会导致它被缓存在C:\ Windows \ Installer文件夹中的系统上(此文件夹被隐藏并受到保护)。如果启动了具有相同GUID的MSI文件,则将重新使用此缓存副本(至少对于早期版本的Windows Installer来说就是这种情况 - 现在可以修复此问题。)

如果您使用的是Installshield,则应启用“始终生成打包GUID”功能,以确保不会发生这种情况。包GUID应始终针对每个构建进行更改 - 没有任何理由保持硬编码。我相信WIX会自动生成包GUID,除非你专门覆盖它。