c# - 安装不带 InstallUtil.exe 的 .NET Windows 服务

标签 c# .net deployment windows-services installutil

我有一个用 C# 编写的标准 .NET Windows 服务。

它可以不使用 InstallUtil 自行安装吗? 我应该使用服务安装程序类吗?我应该如何使用它?

我希望能够调用以下内容:

MyService.exe -install

它的效果和调用一样:

InstallUtil MyService.exe

最佳答案

是的,这是完全可能的(即我就是这么做的);您只需要引用正确的 dll (System.ServiceProcess.dll) 并添加一个安装程序类...

Here's an example:

[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/

相关文章:

c# - 如何从 appsettings.json 文件中的对象数组读取值

c# - 类 System.Dynamic.DynamicObject .. 为什么不抽象?

java - Play framework 2.1 应用部署

python - 如何将python项目部署到没有安装一些第三方库的环境中?

c# - 如何配置 Bamboo 来构建 NUnit 测试?

c# - 表达式几乎相同,但其中一个不起作用

c# - 在哪里放置txt文件

c# - 使用 NuGet 将依赖关系限制为特定 .NET 版本

c++ - 匹配的旋律

java - 如何指定 war 文件中的目录?