我有一个用 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);
}
}
关于c# - 安装不带 InstallUtil.exe 的 .NET Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/255056/