【发布时间】: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