2

假设一个名为的可执行文件ConsoleOrService.exe是用C#. 它目前是混合动力车。我可以在命令行上启动它,或者我可以使用 .Net 安装它installutil ConsoleOrService.exe,然后启动服务。我想要第三种选择:像这样在命令行上运行它:ConsoleOrService.exe --install并让它完成所有工作。

  1. 这可能吗?
  2. 这很难吗?
  3. 我该如何开始?

谢谢,如果有问题请告诉我。

4

1 回答 1

2

其实很简单。我已经在我自己的许多服务中使用了它(事实上,我的所有服务都能够进行自己的安装/卸载。我使用命令行开关控制它,例如/installor /uninstall

安装是这样执行的:

private static void InstallService()
{
 var ti  = new System.Configuration.Install.TransactedInstaller();
 var si  = new MyServiceInstaller();
 var cl  = new string[] { string.Format(CultureInfo.InvariantCulture, "/assemblypath={0}", System.Reflection.Assembly.GetExecutingAssembly().Location) };
 var ctx = new System.Configuration.Install.InstallContext(null, cl);

 ti.Installers.Add(si);
 ti.Context = ctx;
 ti.Install(new Hashtable());
}

卸载是相同的,只是您调用ti.Uninstall(null);而不是ti.Install(...);.

MyMyServiceInstaller是一个继承自该类的System.Configuration.Install.Installer类(正如您通常在服务中所拥有的那样)。

于 2010-09-02T20:05:10.920 回答