从C#Application安装TopShelf服务

时间:2016-01-07 10:22:49

标签: c# windows-services topshelf

您好我正在尝试使用c#中的Windows窗体应用程序安装服务(使用TopShelf创建)。 我正在考虑使用Service Manager Class,但这似乎不是一个选项。因此,我考虑使用Process类来调用安装。 通常要安装Topshelf服务,请运行以下命令:

  

MyService.EXE install -someOptions

然而,当我在一个过程中尝试这个

 var servicePath = @"C:\Program Files (x86)\Blah Services\bin\Gateway\Gateway.exe";
 var userName = "test";
 var password = "Word!";

 try{
      Process proc = new Process(); //call new Process
        ProcessStartInfo info = new ProcessStartInfo(); //call new ProcessStartInfo
        info.Arguments = "install -instance:default -username:" + userName + "-password:" + password;
        info.FileName = servicePath; //set the file name (location)

        proc.StartInfo = info; //put the StartInfo into the Procces method
        proc.Start(); //Start the procces (sc.exe with the arguments)
        proc.WaitForExit(); //waits till the procces is don

   }

我甚至考虑过使用命令窗口并用以下内容替换Arguments和File名称:

   info.Arguments = "//k " + servicePath +" install -instance:default -username:" + userName + "-password:" + password;
            info.FileName = "cmd.exe"; //set the file name (location)

似乎都没有工作。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

只是捅了一下,但是你是否以管理员身份运行WinForms应用程序(或Visual Studio)?我一直在使用以下内容作为管理员触发TopShelf安装:

System.Diagnostics.Process.Start(@"C:\winServices\extracts\bin\service.exe", "install");