我的安装程序在 Inno Setup 中使用以下命令创建服务:
Filename: {sys}\sc.exe; Check: IsAdminLoggedOn; Parameters: "create Example start= delayed-auto binPath= ""{app}\Example.exe"""; Flags: runhidden
该行适用于除 Windows XP 之外的所有 Windows,因为delayed-auto
Windows XP 不支持启动类型。
我需要使用delayed-auto
启动类型有两个原因。
- 我的服务需要始终在后台运行而无需用户干预,这意味着该服务必须在启动时自动启动。
- 我的服务依赖于其他基本 Windows 服务,没有它们就无法运行,因此我使用
delayed-auto
等所有基础服务都启动后才可以启动。
那么我可以在 Windows XP 上创建一个启动类型类似于delayed-auto
如果没有,那么还有哪些替代方案?
The delayed-auto
启动类型并不是为了解决服务之间的依赖关系。如果您依赖的服务也有怎么办?delayed-auto
启动类型?这delayed-auto
启动类型旨在通过延迟非必要服务来加速计算机启动。
See Windows 服务启动类型中的“延迟启动”有何作用? https://superuser.com/q/285653/213663
要设置服务之间的依赖关系,请使用depend=
option.
sc.exe create Example start= delayed-auto binPath= "..." depend= service1/service2/service3
如果您还想使用delayed-auto
在 Windows Vista 和更新版本(推荐)上,只需创建两个[Run]
条目,一项适用于 Windows XP,一项适用于 Windows Vista(Windows版本 https://jrsoftware.org/ishelp/index.php?topic=winvernotes6.0) 及更新版本。
; Delayed automatic start on Vista and newer
Filename: {sys}\sc.exe; Check: IsAdminLoggedOn; \
Parameters: "create Example start= delayed-auto binPath= ""{app}\Example.exe"" depend= service1/service2/service3"; \
Flags: runhidden; MinVersion: 6.0
; Automatic start on XP
Filename: {sys}\sc.exe; Check: IsAdminLoggedOn; \
Parameters: "create Example start= auto binPath= ""{app}\Example.exe"" depend= service1/service2/service3"; \
Flags: runhidden; OnlyBelowVersion: 6.0
也可以看看根据 Windows 版本在 Inno Setup Run 部分执行不同的命令 https://stackoverflow.com/q/35605614/850848.
一个更好但更复杂的解决方案是使用脚本常量 https://jrsoftware.org/ishelp/index.php?topic=scriptconstants。它减少了代码重复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)