在没有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

回到顶部