【问题标题】:Windows 3.1 Installer reinstalls old version right after uninstalling it rather than installing new upgradeWindows 3.1 安装程序在卸载旧版本后立即重新安装旧版本,而不是安装新升级
【发布时间】:2011-05-26 22:24:59
【问题描述】:

我有一个升级版的 MSI 程序集。升级代码在先前版本和新升级程序集之间保持不变。我还设置了 RemovePrevious 属性,因此在安装升级之前删除旧版本。

我看到旧版本的卸载按预期进行。然而,Windows Installer 3.1 立即转过身来尝试重新安装旧版本,甚至还没有进入新版本。我已通过更改较新版本中的第一个自定义安装对话框来验证这一点,并在首次安装新版本时看到它很好。但是升级时看到的对话框是上一版本附带的旧对话框。我什至用消息框显示重建旧版本,以验证安装程序确实在卸载后重新安装旧版本,而不是移动到新的升级版本。

使用 MSIExec 不会显示任何记录的错误来解释这种奇怪的行为,我找不到任何有助于确定发生这种情况的原因的文档。

有人对为什么会发生这种行为以及如何解决它有任何想法吗?

【问题讨论】:

  • 我还应该提到安装​​和卸载的自定义操作包含在一个通用的steps.exe中。它是作为我的 VS 2005 解决方案的一部分由一个项目生成的。自定义操作中没有输入功能。因此,假设通过以下正式声明进行正确调用以覆盖安装程序的调用: protected override void OnBeforeInstall();公共覆盖无效安装();公共覆盖无效卸载();由于 Uninstall() 完成时没有错误,不清楚为什么 Installer 调用其他两个 Install 函数自定义操作而不是转向新的升级程序集?

标签: windows-xp windows-installer


【解决方案1】:

尝试在嵌入式资源中增加您的应用程序/dll 的版本号。安装程序的“新”行为不会升级任何 exe/dll,除非文件版本已被提升。

【讨论】:

  • 对不起,没有说明,我想我认为这很明显,为了让升级过程开始,版本号和产品代码必须随着两者一起增加相同的升级代码。即使在不更改 ProductCode 的情况下增加版本也不会启动升级过程,而是会引发一个错误,即现有应用程序已安装并且必须通过添加/删除程序删除。
猜你喜欢
  • 2014-06-03
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2012-09-16
相关资源
最近更新 更多