Wix ServiceControl启动失败耗时4分钟,预期仅30秒,求排查原因
MSI ServiceControl等待时间不符合预期的问题排查与临时方案
最近在配置服务的MSI安装包时遇到了个头疼的问题,跟大家说说详情:
我的服务设置为安装期间自动启动,对应的ServiceControl配置是这样的:
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="HeskaGateway" Wait="yes" />
正常情况下,给服务配置有效的连接字符串,启动完全没问题。但如果填了错误的连接字符串,手动启动服务时会很快启动后就停止。按照MSI ServiceControl表的文档,Wait="yes"对应的数值是1,应该等待30秒就判定启动失败,但实际安装时足足耗了4分7秒才抛出错误,日志如下:
MSI (s) (6C:78) [16:36:41:932]: Executing op: ServiceControl(,Name=HeskaGateway,Action=1,Wait=1,) StartServices: Service: Heska Gateway MSI (s) (6C:78) [16:40:48:862]: Note: 1: 2205 2: 3: Error MSI (s) (6C:78) [16:40:48:862]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1920 Error 1920. Service 'Heska Gateway' (HeskaGateway) failed to start. Verify that you have sufficient privileges to start system services.
临时解决办法
目前我还没定位到等待时间不符合预期的根本原因,但发现了另一个安装顺序的问题:用来修改JSON文件中连接字符串的延迟自定义操作,居然是在ServiceStart之后才执行的!尝试调整ServiceStart到这个自定义操作之后的难度非常大,所以我换了个思路:移除ServiceControl条目里的启动配置,新增一个静默执行SC.EXE start HeskaGateway的自定义操作,用这种方式来启动服务,暂时解决了问题。
内容的提问来源于stack exchange,提问作者user922020
相关产品推荐
相关产品推荐

