2

我已经查看了为什么我的新 Windows Installer 文件 (MSI) 不能在旧版本的 MSI 上正确安装? 但这对我没有帮助。

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

最初插件和安装项目是在 Visual Studio 2005 中制作的。该解决方案现在移至 Visual Studio 2010。当我制作新的 MSI 并尝试将其安装在旧版本上时,新版本在我进行修复之前将无法工作使用 Add Remove Programs->Modify Installation->Repair 如果我先删除旧版本,新版本安装完美。

对我们来说重要的是新的微星能够顺利移除旧版本并顺利安装新版本,因为它被几个没有计算机经验的用户使用

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

谢谢!

4

5 回答 5

1

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

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

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

于 2012-04-04T10:02:15.420 回答
0

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

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

取决于您在哪里安排RemoveExistingProducts,如果您保留组件代码,我可能是一些旧组件没有被替换。

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

检查是否调用了动作FindRelatedProducts

这篇文章中,您可以找到使用 WIX 的示例。

于 2013-09-23T07:18:25.640 回答
0

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

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

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

于 2012-04-13T14:11:35.130 回答
0

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

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

谢谢, 索拉布

于 2013-09-23T07:05:31.763 回答
0

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

于 2012-04-10T12:29:18.970 回答