安装(MSI)将无法在旧版本上正确安装

时间:2012-04-04 09:33:29

标签: windows-installer

我已经看过Why doesn't my new Windows Installer file (MSI) install properly over an older version of the MSI? 但这对我没有帮助。

我有一个程序(Office插件),它由安装程序包(MSI)安装

最初,插件和安装项目是在Visual Studio 2005中完成的。现在,该解决方案已移至Visual Studio 2010。 当我创建一个新的MSI并尝试在旧版本上安装它时,在使用“添加删除程序”进行修复之前,新版本将无法运行 - >修改安装 - >修复 如果我先删除旧版本,新版本将完美安装。

对于我们来说,新的MSI能够顺利删除旧版本并顺利安装新版本非常重要,因为它被多个没有计算机使用经验的用户使用

RemovePreviousVersion设置为True。我已将版本从3.1.1升级到4.0.0,并且该过程接受了新的ProductCode。 在Orca我已经将Reinstallmode设置为amus,但似乎没有任何帮助。

谢谢!

5 个答案:

答案 0 :(得分:1)

如果我理解正确,你说如果对新版本进行修复,升级是否有效?当两个包都具有共享组件(即包组件的重复GUID)时,可能会出现这种情况。要跟踪此问题的最佳方法是创建安装的详细日志,以便我们对其进行分析。

在修复期间,与旧版本没有冲突,因为它已经被删除,并且包中的组件安装正确,这就是为什么插件工作之后的原因。

你能创建一个详细的日志,以便我们查看它吗?

答案 1 :(得分:0)

奇怪,第二个日志没有明显的问题,因此应该正确安装升级。要获得更多详细信息,我们需要在操作系统触发自动修复时创建的详细日志。要创建此日志,您需要激活全局日志记录,如下所述: http://support.microsoft.com/kb/2545723

答案 2 :(得分:0)

我试图从日志中获取更多详细信息,但可以找到很多信息。但是,我发现了另一种检测修复原因的方法。要获取有关按需安装原因的更多信息,请打开事件查看器(“开始 - >运行”,“eventvwr.msc”)并在“应用程序”节点下查找以下格式的“MsiInstaller”日志消息: p>

  

事件类型:警告   事件来源:MsiInstaller   事件ID:1001   描述:   在组件'{00030829-0000-0000-C000-000000000046}'的请求期间检测到产品'{000C1109-0000-0000-C000-000000000046}',功能'示例'失败

邮件和GUID当然会在您的计算机上有所不同。然后,您可以检查项目中的GUID,以查看哪个组件触发了修复。

答案 3 :(得分:0)

通过使用Orca Tool编辑msi,可以解决您的问题。

首先,我通过在InstallExalcuteSequence选项卡下的InstallValidate之后和InstallInitialize之前设置RemoveExistingProducts的序列号来删除现有产品。

谢谢,Saurabh

答案 4 :(得分:0)

你应该告诉我们更多。您是否在交换版本号,产品,组件,升级和包裹代码?您使用的是哪种软件?

通常,您在产品中保持升级代码相同。 您需要在升级表中指定版本号,包括旧/当前升级代码。

取决于您在哪里安排 RemoveExistingProducts ,如果您保留组件代码,我可能会更换一些旧组件。

我总是在 InstallInitialize 之后安排活动。

检查是否调用 FindRelatedProducts 操作。

this Post中,您可以使用WIX找到示例。