我的安装程序使用Inno Setup中的以下命令创建服务:
Filename: {sys}\sc.exe; Check: IsAdminLoggedOn; Parameters: "create Example start= delayed-auto binPath= ""{app}\Example.exe"""; Flags: runhidden
此行适用于Windows XP以外的所有Windows,因为Windows XP不支持delayed-auto
启动类型
我需要使用delayed-auto
启动类型有两个原因。
delayed-auto
。那么我可以在Windows XP上创建一个类似于delayed-auto
的启动类型的服务,如果没有,那么有哪些替代方案?
答案 0 :(得分:6)
delayed-auto
启动类型不是为了解决服务之间的依赖关系。如果您所依赖的服务也具有delayed-auto
启动类型,该怎么办? delayed-auto
启动类型旨在通过延迟非必要服务来加速计算机启动。
请参阅What does “delayed start” do in startup type for a Windows service?
要设置服务之间的依赖关系,请使用depend=
选项。
sc.exe create Example start= delayed-auto binPath= "..." depend= service1/service2/service3
如果您仍想在Windows Vista及更高版本(推荐使用)上使用delayed-auto
,只需创建两个[Run]
条目,一个用于Windows XP,另一个用于Windows Vista(Windows version 6.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
另见Execute different command in Inno Setup Run section based on Windows version。
更好但是更复杂的解决方案是使用scripted constant。它减少了代码重复。
答案 1 :(得分:1)
尝试创建计划任务,该任务在系统启动时开始。计划任务可以取决于存在的网络连接。您也可以(如果无法使用该命令)使用命令行脚本对网络设备执行ping操作,并在启动作为“手动”启动方式创建的服务之前检查响应。这样可以避免由于资源不可用而导致崩溃。 ] << / p>