0

installutil を使用せずに Windows サービスをインストールしようとしています。私が見つけたこれを行うための理解しやすく簡単な方法は、次を使用することです。

ManagedInstallerClass.InstallHelper

したがって、次の Program.cs になります。

 static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main(string[] args)
    {
        if (args.Length >0)
        {
            string parameter = string.Concat(args);
            switch (parameter)
            {
                case "--install":
                    ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
                    break;
                case "--uninstall":
                    ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
                    break;
            }
        }
        else
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new PicknikService() 
            };
           ServiceBase.Run(ServicesToRun);
        }
    }
}

サービスをビルドして MyService.exe --install を実行すると、次のようになります。

Cannot start service from the command line or debugger. A winwows Service must first be installed(using installutil.exe) and then started with the ServerExplorer, Windows Services Afministrative tool or the NET START command.

何かご意見は?

4

2 に答える 2

0

MSDNエントリManagedInstallerClass.InstallHelperは、次のように記載されています。

この API は .NET Framework インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

あなたが提供したリンクで提供されているソリューションがうまくいくことは間違いありませんが、それは P/Invoke 呼び出しを多用します。それは何も悪いことではありませんが、私は完全に C# ベースのソリューションを好みます。

InstallUtil.exe を必要とせずに、コマンド ラインからインストールおよびアンインストールする Windows サービスを作成するためのステップ バイ ステップのチュートリアルがここにあります。これは Visual Studio 2008 用に作成されましたが、Visual Studio 2012 で同じことを行うサービスを作成したので、まだ機能します。

于 2013-08-10T15:29:53.163 に答える