我已经看过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,但似乎没有任何帮助。
谢谢!
答案 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找到示例。