首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装成功,但未安装服务,事件日志中出现MsiExec错误

安装成功,但未安装服务,事件日志中出现MsiExec错误
EN

Stack Overflow用户
提问于 2018-04-24 14:47:57
回答 1查看 1.3K关注 0票数 0

我有一个msi安装程序,可以安装两个windows服务。在Windows 2016位计算机上安装过程中没有错误,安装成功,但服务未安装。我能够使用installutil手动安装服务,但是没有任何线索说明msi为什么无法安装这些服务。到目前为止,安装程序已经在数百个安装中工作了。我能够从机器上获得事件日志,而我能够找到的唯一错误是在Application日志中找到的这类错误:

代码语言:javascript
复制
     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: 

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-24 18:18:14

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

您似乎正在使用installer类自定义操作来安装服务。在我所知道的每一种情况下(除了Visual设置),这都是不必要的。Windows内置支持安装服务而不运行任何代码。自定义操作(而不是标准内置功能)容易出错。更好的工具提供了对ServiceInstall表ServiceControl表的支持,这使您摆脱了运行代码和相关问题的需要。

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

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

对于不同的体系结构,Windows需要不同的设置,所以对于64位的安装,如果问题与跨架构相关,那么需要确保所有的自定义操作代码都是为64位显式构建的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50004629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档