在没有InstallUtil.exe的情况下安装.NET Windows服务
我有一个用C#编写的标准.NET Windows服务。
是否可以在不使用InstallUtil的情况下自行安装?我应该使用服务安装程序类吗?我应该如何使用它?
我希望能够拨打以下电话:
MyService.exe -install
它与调用具有相同的效果:
InstallUtil MyService.exe
回答:
是的,这是完全可能的(即我完全可以做到);您只需要引用正确的dll(System.ServiceProcess.dll)并添加安装程序类即可。
这是一个例子:
[RunInstaller(true)]public sealed class MyServiceInstallerProcess : ServiceProcessInstaller
{
public MyServiceInstallerProcess()
{
this.Account = ServiceAccount.NetworkService;
}
}
[RunInstaller(true)]
public sealed class MyServiceInstaller : ServiceInstaller
{
public MyServiceInstaller()
{
this.Description = "Service Description";
this.DisplayName = "Service Name";
this.ServiceName = "ServiceName";
this.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
}
}
static void Install(bool undo, string[] args)
{
try
{
Console.WriteLine(undo ? "uninstalling" : "installing");
using (AssemblyInstaller inst = new AssemblyInstaller(typeof(Program).Assembly, args))
{
IDictionary state = new Hashtable();
inst.UseNewContext = true;
try
{
if (undo)
{
inst.Uninstall(state);
}
else
{
inst.Install(state);
inst.Commit(state);
}
}
catch
{
try
{
inst.Rollback(state);
}
catch { }
throw;
}
}
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
}
}
以上是 在没有InstallUtil.exe的情况下安装.NET Windows服务 的全部内容, 来源链接: utcz.com/qa/426781.html