我有一个用WiX编写的简单的msi来安装一个本地的NT服务。 在msi中进行了一些更改后,它在StartServices标准操作中失败,出现错误“服务启动失败,请确认您有足够的权限”。 如果按“忽略”并手动启动服务,则会成功启动。 问题绝对不是没有足够的权限。 我如何诊断/debugging这些问题? Windows安装程序的详细日志似乎不包含任何有用的信息。
Java计划任务(在Windows中)
C#Windows服务不会显示为已启动
Windows服务和Windows进程有什么区别?
在C#服务应用程序中configurationlog4net的步骤
.NET Windows服务 – 一个项目中的多个服务
安装程序将没有任何有用的信息,因为错误只是由安装程序浮出水面。 这是我如何处理这个。
注释掉ServiceControl元素,这样安装程序不会尝试启动服务。 运行安装程序,并完成。 手动启动服务。
如果服务启动,则表示某种竞争条件。 一种常见的情况是服务依赖于安装到GAC或WinSXS的文件。 安装程序使用PublishAssemblies标准操作将这些文件放在那里。 但是由于GAC和WinSXS API不支持跨越式安装,PublishAssemblies会一直等到提交阶段执行工作。 这是安装程序尝试启动服务之后。 另一种常见的情况是,如果您有一些自定义操作正在安装或配置服务所需的某些内容,并且您在安装过程中所做的操作较晚。
如果服务仍然无法启动,这通常会排除竞争条件。 你必须分析服务本身。 使用诸如依赖,ildasm(如.net)和processexplorer(filemon / regmon)等工具来尝试发现缺少的依赖关系。 更新安装程序,然后冲洗并重复。
如您所见,Windows Installer在启动服务失败时不提供有用的信息。 但是,当显示对话框时,机器处于完美状态以确定发生了什么问题。 所以,而不是取消安装,开始调试。 尝试启动服务,看看是否给你更多的信息。 如果没有,请打开调试器并去镇上。
我基本上遵循这个FireGiant知识库文章中描述的过程。 这是找出服务无法启动的最直接的方法。 Windows Installer不能提供更好的信息本身就太糟糕了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。