繁体   English   中英

调试“服务无法启动” Windows Installer错误

[英]Debugging “service failed to start” Windows Installer error

我有一个用WiX编写的简单msi,用于安装本机NT服务。 在msi中进行了一些更改后,它在StartServices标准操作中失败,并显示错误“服务无法启动,请验证您是否具有足够的特权”。 如果我按“忽略”并手动启动该服务,则它将成功启动。 问题绝对不是特权不足。 如何诊断/调试此类问题? Windows Installer的详细日志似乎不包含任何有用的信息。

安装程序将没有任何有用的信息,因为该错误仅由安装程序浮出水面。 这是我的处理方法。

注释掉ServiceControl元素,以便安装程序不会尝试启动服务。 运行安装程序并完成安装。 手动启动服务。

如果服务启动,则表明某种竞争条件。 一种常见的情况是该服务依赖于要安装到GAC或WinSXS的文件。 安装程序将使用PublishAssemblies标准操作将这些文件放在此处。 但是,由于GAC和WinSXS API不支持过渡安装,因此PublishAssemblies会等到提交阶段才能执行工作。 这是在安装程序尝试启动服务之后。 另一个常见的情况是,如果您有一些自定义操作正在安装或配置该服务所需的内容,并且在安装后期进行了该操作。

如果该服务仍无法启动,则通常会排除竞争条件。 您必须分析服务本身。 使用诸如depends,ildasm(如果是.net)和processexplorer(filemon / regmon)之类的工具来尝试发现缺少的依赖项是什么。 更新安装程序,然后冲洗并重复。

如您所见,Windows Installer无法启动服务时不会提供有用的信息。 但是,当显示对话框时,机器处于理想状态,可以确定出了什么问题。 因此,不要取消安装,而要开始调试。 尝试启动该服务,看看是否能为您提供更多信息。 如果没有,请打开调试器并进入城镇。

我基本上遵循此FireGiant KB文章中描述的过程。 这是找出服务为何无法启动的最直接方法。 Windows Installer本身无法提供更好的消息,这太糟糕了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM