我的安装程序不支持安装服务,但我可以运行程序/命令行等,所以我的问题是如何使用命令行安装Windows服务并添加2个依赖项?该程序是.Net 2.0应用程序。
由于
答案 0 :(得分:16)
您可以编写自安装服务,并在安装程序执行时设置服务所依赖的服务列表。
基本步骤:
编辑:忘记提及您可以使用例如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);
}
}
}
}
答案 1 :(得分:10)
这也可以通过使用sc
命令的提升命令提示符来完成。语法是:
sc config [service name] depend= <Dependencies(separated by / (forward slash))>
注意:在等号后面有一个空格,并且之前有不。
警告:depend=
参数将覆盖现有依赖项列表,而不是追加。例如,如果ServiceA已经依赖ServiceB和ServiceC,那么如果您运行depend= ServiceD
,ServiceA现在将仅依赖于 在ServiceD上。
sc config ServiceA depend= ServiceB
上述意味着ServiceA在ServiceB启动之前不会启动。如果您停止ServiceB,ServiceA将自动停止。
sc config ServiceA depend= ServiceB/ServiceC/ServiceD
上述意味着在ServiceB,ServiceC和ServiceD全部启动之前,ServiceA不会启动。如果您停止任何ServiceB,ServiceC或ServiceD,ServiceA将自动停止。
sc config ServiceA depend= /
sc qc ServiceA
答案 2 :(得分:1)
可用的一种方法是sc.exe。它允许您从命令提示符安装和控制服务。这是older article覆盖它的用途。它确实允许您指定依赖项。
请查看 sc create 部分的文章,了解您的需求。
答案 3 :(得分:1)
在codeproject上有一个动态安装程序项目,我发现它通常对服务安装很有用。
答案 4 :(得分:1)
Visual Studio Setup/Deployment项目可以为此工作。它们不是最好的安装程序引擎,但它们适用于简单的场景。