【问题标题】:MSI installation succeeds but services are not installed, MsiExec error in event logMSI 安装成功但未安装服务,事件日志中出现 MsiExec 错误
【发布时间】:2018-04-24 14:47:57
【问题描述】:

我有一个安装两个 Windows 服务的 msi 安装程序。在Windows Server 2016 64位机器上安装没有错误,安装成功但服务没有安装。我能够使用 installutil 手动安装服务,但没有任何线索说明为什么 msi 无法安装服务。到目前为止,安装程序已在数百次安装中工作。我能够从机器上获取事件日志,并且我能在应用程序日志中找到的唯一错误是:

     Faulting application name: MsiExec.exe, version: 5.0.14393.0, time 
     stamp: 0x57899002
     Faulting module name: MSIC9AE.tmp, version: 4.0.30319.33440, time 
     stamp: 0x52004298
     Exception code: 0xc0000005
     Fault offset: 0x000064ff
     Faulting process id: 0x2244
     Faulting application start time: 0x01d3db09c12691f2
     Faulting application path: C:\Windows\syswow64\MsiExec.exe
     Faulting module path: C:\Windows\Installer\MSIC9AE.tmp
     Report Id: c5ffdc35-5ccd-4b00-9d60-1a198848062e
     Faulting package full name: 
     Faulting package-relative application ID: 

使用详细日志记录再次安装不是一种选择。 非常感谢任何帮助。

【问题讨论】:

  • 只需添加一件事,您是否在临时文件夹中检查了详细的randomname.MSI 日志,如果有a default logging policy enabled,这些日志可能是偶然创建的? (请参阅“机器上的所有设置全局”部分)

标签: web-services windows-installer windows-server


【解决方案1】:

没有太多关于您如何安装服务的信息,或者您使用什么工具来生成 MSI 和安装这些服务,但我可以从该日志中做出一些猜测:

您似乎正在使用安装程序类自定义操作来安装服务。在我所知道的每种情况下(Visual Studio 设置除外),这是不必要的。 Windows Installer 内置支持无需运行任何代码即可安装服务。自定义操作(而不是标准的内置功能)容易出错。更好的工具为ServiceInstall tableServiceControl table 提供支持,让您无需运行代码和相关问题。

该日志显示您正在运行 32 位 msiexec.exe 进程以在 64 位系统上安装服务。我相信 32 位子系统在 Windows Server 上是可选的,但不清楚这是否是一个问题,因为安装显然成功,尽管安装程序类失败通常会引发错误并完全回滚安装。你是静默安装吗?另一个问题可能是没有 32 位 NET FW 来运行(显然)32 位自定义操作。或者存在 NET FW 架构不匹配(您有一些 NET 2 代码试图在 4.0 运行时中运行)。如果要信任该错误 0xC0000005,那么您在自定义操作代码中存在访问冲突 - 自定义操作通过将 MSI 二进制表中的代码提取到随机名称 .tmp 文件中,然后从 msiexec.exe 进程中调用它来工作,因此自定义操作代码可能由于某种原因无法访问该 \installer 文件夹。还有一个 C++ shim Dll,它加载一个框架来运行托管代码,所以那里也有 C++ 依赖失败的空间

安装程序类自定义操作框架在失败时确实很难调试,因为有很多故障点,这就是为什么我指出安装程序类既容易出错也可能不必要。

Windows 需要针对不同的体系结构进行不同的设置,因此对于 64 位安装,如果问题与跨体系结构相关,则值得确保所有自定义操作代码都是为 64 位明确构建的。

【讨论】:

  • 非常感谢 Phil,安装确实使用了自定义操作,并且是使用 WiX 工具集构建的。我将探讨您提到的选项。
猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
相关资源
最近更新 更多