2011-05-26 182 views
0

我有一个MSI程序集,这是一个升级。升级代码在先前版本和新升级程序集之间保持不变。我还设置了RemovePrevious属性,以便在安装升级之前删除旧版本。Windows 3.1安装程序卸载后立即重新安装旧版本,而不是安装新的升级

我看到旧版本的卸载按预期发生。但是,Windows Installer 3.1立即转向尝试重新安装旧版本,然后再继续安装新版本。我已经通过更改新版本中的第一个自定义安装对话框来验证这一点,并在第一次安装新版本时看到它很好。但是升级时看到的对话框是旧版本发布时的对话框。我甚至用消息框显示来重建旧版本,以验证安装程序在卸载后确实重新安装旧版本,而不是转到新的升级版本。

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

任何人有任何想法,为什么这种行为正在发生,以及如何去解决它?

+0

我还应该提到,安装和卸载的自定义操作包含在常见的steps.exe中。它是由我的VS 2005解决方案的一部分制作的。自定义操作中没有输入功能。因此,假设正确的调用是由以下正式声明来覆盖安装程序的: protected override void OnBeforeInstall(); public override void Install(); public override void Uninstall(); 由于Uninstall()完成无错误,所以不清楚为什么安装程序调用其他两个安装函数自定义操作而不是转向新的升级程序集? – Del 2011-05-26 23:35:12

回答

0

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

+0

对不起,我想我很明白,为了让升级过程开始,版本号和产品代码将不得不随着两个具有相同的升级代码一起增加。即使增加版本而不更改ProductCode也不会启动升级过程,而是调用已安装现有应用程序并且必须通过添加/删除程序删除的错误。 – Del 2011-05-26 22:40:09

相关问题