Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows installer 安装(MSI)赢得';无法在旧版本上正确安装_Windows Installer - Fatal编程技术网

Windows installer 安装(MSI)赢得';无法在旧版本上正确安装

Windows installer 安装(MSI)赢得';无法在旧版本上正确安装,windows-installer,Windows Installer,我已经看过了 但这对我没有帮助 我有一个由安装包(MSI)安装的程序(Office插件) 最初,插件和安装项目是在VisualStudio2005中创建的。该解决方案现在移动到VisualStudio2010。 当我创建一个新的MSI并尝试在旧版本上安装它时,在我使用添加删除程序->修改安装->修复进行修复之前,新版本将无法工作 如果我先删除旧版本,新版本会安装得很好 对于我们来说,新的MSI能够顺利地删除旧版本并安装新版本是很重要的,因为它被几个没有计算机经验的用户使用 RemovePrevi

我已经看过了 但这对我没有帮助

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

最初,插件和安装项目是在VisualStudio2005中创建的。该解决方案现在移动到VisualStudio2010。 当我创建一个新的MSI并尝试在旧版本上安装它时,在我使用添加删除程序->修改安装->修复进行修复之前,新版本将无法工作 如果我先删除旧版本,新版本会安装得很好

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

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


谢谢

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

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


你能创建一个详细的日志让我们查看一下吗?

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

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

事件类型:警告 事件源:MSI安装程序 事件ID:1001 说明: 在组件{00030829-0000-0000-C000-0000000000 46}的请求期间,检测产品{000C1109-0000-0000-C000-0000000000 46}功能“示例”失败


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

通过使用Orca工具编辑msi,您的问题可能会得到解决

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


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

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

根据您计划在哪里移除现有产品,如果您保留组件代码,我可能会发现一些旧组件没有被替换

我总是在InstallInitialize之后安排事件

检查是否调用了操作FindRelatedProducts


在中,您可以使用WIX找到样本。

Hi。谢谢你的回复。如果我对新版本进行修复,升级工作正常,这是正确的。我对这两个安装都做了详细的日志。它可以在此处下载。日志显示,应用程序的两个版本共享具有以下GUID的组件:{1BB1F0AD-8476-42BE-A165-9116EEDCB560}。我建议您在新版本的软件包中为此组件生成一个新GUID,然后再次测试升级。发生的情况是,该组件由双方共享,新版本跳过了其安装,但由于Windows Installer中的错误,卸载旧版本正在删除共享组件,所以你最终失去了资源。这就是为什么维修后一切都正常工作的原因。生成一个新的GUID应该可以解决这个问题。很抱歉回答得太晚,我已经离开复活节了。我已经按照建议创建了一个新的GUID,但不幸的是它似乎没有帮助。您可以发布为新安装包创建的另一个日志吗?在进行升级的其他机器上是否也存在此问题?机器清洁非常重要,即没有重复测试。这里有一个详细的修复日志:download.ditmer.dk/klu/verboseLog.zip