我已经看了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 回答
如果我理解正确,你说如果对新版本进行修复,升级是否有效?当两个包都具有共享组件(即包组件的重复GUID)时,可能会出现这种情况 . 要跟踪此问题的最佳方法是创建安装的详细日志,以便我们对其进行分析 .
在修复过程中,与旧版本没有冲突,因为它已经被删除,并且包中的组件安装正确,这就是为什么插件工作之后的原因 .
你能创建一个详细的日志,以便我们可以查看它吗?
奇怪的是,第二个日志没有明显的问题,因此应该正确安装升级 . 要获得更多详细信息,我们需要在操作系统触发自动修复时创建的详细日志 . 要创建此日志,您需要激活全局日志记录,如下所述:http://support.microsoft.com/kb/2545723
我试图从日志中获取更多细节,但可以找到很多信息 . 但是,我发现了另一种检测修复原因的方法 . 要获取有关按需安装原因的更多信息,请打开事件查看器(“开始 - >运行”,“eventvwr.msc”),然后在“应用程序”节点下查找以下格式的“MsiInstaller”日志消息:
消息和GUID当然会在您的计算机上有所不同 . 然后,您可以检查项目中的GUID以查看哪个组件触发了修复 .
通过使用Orca Tool编辑msi,可以解决您的问题 .
首先,我通过在InstallExcecuteSequence选项卡下的InstallValidate之后和InstallInitialize之前设置RemoveExistingProducts的序列号来删除现有产品 .
谢谢,Saurabh
你应该告诉我们更多 . 您是否在交换版本号,产品,组件,升级和包裹代码?你使用的是哪种软件?
通常,您在产品中保持升级代码相同 . 您需要在升级表中指定版本号,包括旧/当前升级代码 .
取决于你在哪里安排 RemoveExistingProducts ,如果你保留组件代码,我可能是一些旧的组件没有被替换 .
我总是在 InstallInitialize 之后安排活动 .
检查是否调用了操作 FindRelatedProducts .
在this Post中,您可以使用WIX找到样本 .