Wix 从服务运行时,Windows Installer始终失败,并出现错误1601或1603
我们有一个安装在客户位置的应用程序。此应用程序由作为Windows服务运行的自托管WCF服务器以及与此问题无关的客户端应用程序组成 我们通过让服务在后台下载WiX生成的.msi文件来向客户发布更新,然后在客户选择安装时安装。安装程序如下:Wix 从服务运行时,Windows Installer始终失败,并出现错误1601或1603,wix,windows-installer,Wix,Windows Installer,我们有一个安装在客户位置的应用程序。此应用程序由作为Windows服务运行的自托管WCF服务器以及与此问题无关的客户端应用程序组成 我们通过让服务在后台下载WiX生成的.msi文件来向客户发布更新,然后在客户选择安装时安装。安装程序如下: 服务器将引导程序应用程序复制到临时路径并运行它,并将路径传递给要安装的MSI文件 引导程序使用MSI文件中的升级代码卸载以前的版本,然后安装新版本。它使用与MSI相关的各种P/Invoke调用调用安装程序,如msinstallproduct 引导程序重新启动服
msinstallproduct
=== Verbose logging started: 3/29/2013 8:23:30 Build type: SHIP UNICODE 5.00.7600.00 Calling process: <<PATH TO MSI>> ===
MSI (c) (00:7C) [08:23:30:194]: Resetting cached policy values
MSI (c) (00:7C) [08:23:30:262]: Machine policy value 'Debug' is 0
MSI (c) (00:7C) [08:23:30:418]: ******* RunEngine:
******* Product: <<PATH TO MSI>>
******* Action:
******* CommandLine: **********
MSI (c) (00:7C) [08:23:30:491]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (00:7C) [08:23:30:520]: Grabbed execution mutex.
MSI (c) (00:7C) [08:23:30:562]: Failed to connect to server. Error: 0x800703FA
MSI (c) (00:7C) [08:23:30:605]: Failed to connect to server.
MSI (c) (00:7C) [08:23:30:637]: MainEngineThread is returning 1601
=== Verbose logging stopped: 3/29/2013 8:23:30 ===
==详细日志记录已开始:2013年3月29日8:23:30构建类型:SHIP UNICODE 5.00.7600.00调用过程:===
MSI(c)(00:7C)[08:23:30:194]:重置缓存的策略值
MSI(c)(00:7C)[08:23:30:262]:计算机策略值“Debug”为0
MSI(c)(00:7C)[08:23:30:418]:*********运行引擎:
*******产品:
*******行动:
*******命令行:**********
MSI(c)(00:7C)[08:23:30:491]:客户端和UI为无或基本:在服务器上运行整个安装。
MSI(c)(00:7C)[08:23:30:520]:抓取执行互斥。
MSI(c)(00:7C)[08:23:30:562]:无法连接到服务器。错误:0x800703FA
MSI(c)(00:7C)[08:23:30:605]:无法连接到服务器。
MSI(c)(00:7C)[08:23:30:637]:MainEngineThread正在返回1601
===详细日志记录已停止:2013年3月29日8:23:30===
这是一个太宽泛的问题,无法回答,但以下是我为其他客户设计的:
1) 提升的服务将MSI下载到本地目录,并使用命令msiexec/jm foo.MSI“播发”(祝福)MSI
2) 然后,非提升的客户端组件使用命令msiexec/I foo.MSI安装MSI
MSI必须正确设计并符合UAC标准。从Install UI到Install Execute的转换将在没有UAC提示的情况下进行。只有正确计划(延迟而不模拟)的自定义操作才会运行
当所有类型都完成后,客户对他们的自动更新模式非常满意 这个问题太宽泛,无法回答,但以下是我为其他客户设计的: 1) 提升的服务将MSI下载到本地目录,并使用命令msiexec/jm foo.MSI“播发”(祝福)MSI 2) 然后,非提升的客户端组件使用命令msiexec/I foo.MSI安装MSI MSI必须正确设计并符合UAC标准。从Install UI到Install Execute的转换将在没有UAC提示的情况下进行。只有正确计划(延迟而不模拟)的自定义操作才会运行
当所有类型都完成后,客户对他们的自动更新模式非常满意 也许你需要看看另一个角落:
过去,当我遇到奇怪的安装问题时,它们通常是由行为分析工具造成的,这些工具意外地阻止了他们不应该有的东西。如果某些此类工具可能是病毒扫描套件的一部分,或者相关计算机上安装了ThreatFire等独立应用程序,请确保更新过程所需的任何部分都没有列为“已阻止”。如果您的更新执行了导致行为分析组件自动处理的操作,请确保可靠地将它们列为白名单。也许您需要查看另一个角落:
过去,当我遇到奇怪的安装问题时,它们通常是由行为分析工具造成的,这些工具意外地阻止了他们不应该有的东西。如果某些此类工具可能是病毒扫描套件的一部分,或者相关计算机上安装了ThreatFire等独立应用程序,请确保更新过程所需的任何部分都没有列为“已阻止”。如果您的更新执行的操作导致行为分析组件自动处理,请确保可靠地将其列为白名单。检查详细的日志文件。有很多关于Windows安装程序在服务下运行不愉快的报道,但具体情况各不相同。@RobMensching:谢谢。需要明确的是,该服务会启动第二个运行安装程序进程的可执行文件。所以,当它在服务会话中运行时,它不是在同一进程中运行的。我看到的大多数安装都失败了,因为系统是由于InstallShield在IS12之前的DCOM故障造成的。还有一些细微的差异,例如USERDNSDOMAIN等环境变量不属于系统配置文件的一部分。你真的