16 .net windows installer windows-services .net-2.0
我的安装程序不支持安装服务,但我可以运行程序/命令行等,所以我的问题是我如何安装Windows服务并使用命令行添加2个依赖项?该程序是一个.Net 2.0应用程序.
谢谢
Vol*_*erK 17
您可以编写自安装服务,并在安装程序执行时设置服务依赖的服务列表.
基本步骤:
编辑:忘了提及您可以使用例如Installutil.exe来调用安装程序.
[RunInstaller(true)]
public class MyServiceInstaller : Installer
{
public MyServiceInstaller()
{
using ( ServiceProcessInstaller procInstaller=new ServiceProcessInstaller() ) {
procInstaller.Account = ServiceAccount.LocalSystem;
using ( ServiceInstaller installer=new ServiceInstaller() ) {
installer.StartType = ServiceStartMode.Automatic;
installer.ServiceName = "FooService";
installer.DisplayName = "serves a lot of foo.";
installer.ServicesDependedOn = new string [] { "CLIPBOOK" };
this.Installers.Add(procInstaller);
this.Installers.Add(installer);
}
}
}
}Run Code Online (Sandbox Code Playgroud)
Kip*_*Kip 10
这也可以通过使用该sc命令的提升命令提示符来完成.语法是:
sc config [service name] depend= <Dependencies(separated by / (forward slash))>
Run Code Online (Sandbox Code Playgroud)
注意:有一个空间后等号,有没有一个之前.
警告:depend=参数将覆盖现有的依赖项列表,而不是追加.因此,例如,如果ServiceA已经依赖于ServiceB和ServiceC,那么如果运行depend= ServiceD,ServiceA现在将仅依赖于ServiceD.
sc config ServiceA depend= ServiceB
Run Code Online (Sandbox Code Playgroud)
以上意味着ServiceA在ServiceB启动之前不会启动.如果停止ServiceB,ServiceA将自动停止.
sc config ServiceA depend= ServiceB/ServiceC/ServiceD
Run Code Online (Sandbox Code Playgroud)
以上意味着在ServiceB,ServiceC和ServiceD全部启动之前ServiceA不会启动.如果您停止任何ServiceB,ServiceC或ServiceD,ServiceA将自动停止.
sc config ServiceA depend= /
Run Code Online (Sandbox Code Playgroud)
sc qc ServiceA
Run Code Online (Sandbox Code Playgroud)