2016-03-06 127 views
0

我的安装程序中的延迟自动启动类型服务,在创新安装使用以下命令创建服务:如何安装在Windows XP

Filename: {sys}\sc.exe; Check: (IsAdminLoggedOn or IsPowerUserLoggedOn); Parameters: "create Example start= delayed-auto binPath= ""{app}\Example.exe"""; Flags: runhidden 

这条线工作在所有的Windows之外的Windows XP,因为delayed-auto启动键入在Windows XP中不受支持。
我需要使用delayed-auto启动类型有两个原因。

  1. 我的服务需要始终在后台运行,无需用户干预,这意味着服务必须在启动时自动启动。
  2. 我的服务取决于其他基本的Windows服务,不能没有它们运行,因此我使用delayed-auto只有在所有基本服务启动后才启动。

因此,我可以在Windows XP上创建一个类似于delayed-auto的启动类型的服务,如果没有,那么有什么选择?

回答

3

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 

如果你仍然想使用delayed-auto在Windows Vista和更高版本(推荐的),刚刚创建两个[Run]条目,一个用于Windows XP和一个为Windows Vista(Windows version 6.0)和更新。

; Delayed automatic start on Vista and newer 
Filename: {sys}\sc.exe; Check: (IsAdminLoggedOn or IsPowerUserLoggedOn); \ 
    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 or IsPowerUserLoggedOn); \ 
    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。它减少了代码重复。

+0

但是如果我不知道我的依赖是什么。不同的操作系统可以有不同的依赖关系吗?我是否应该为常规Web服务包含任何基本的依赖项。 – yuval

+0

我的可执行文件使用SNMP扫描网络设备,并使用HTTP/HTTPS将它们发送到服务器。你可以在这里下载http://maprinter.com/downloads/Maprinter.exe – yuval

+0

不断更新设备列表 – yuval