質問

私は、Windowsサービスのインストーラを使用しようとしている、とInstallUtil.exeを使用しないようにしたいと思います。インストーラが正常に動作しているように見えます(実行ファイルやDLLが正しいディレクトリにある)が、サービスはコンピュータの管理の下に表示されません。

ここで私がこれまで行ってきたものです。

サービスクラス名がデフォルトである - 。Service1の

サービス1 -

プロジェクトインストーラでは、サービスインストーラのServiceNameが、クラス名と一致します。

カスタムアクションの下では、サービスの主な出力は、ロールバック、およびアンインストールをインストールコミットするために追加されました。

私が使用している http://support.microsoft.com/kb/816169 のよう参照。

任意のアイデア?

役に立ちましたか?

解決

あなたのサービスプロジェクトは、インストーラクラスを持っていますか?あなたはこのようになりますものを持っている必要があります:

[RunInstaller(true)]
public partial class Service1Installer : Installer
{
    public Service1Installer()
    {
        InitializeComponent();
        ServiceProcessInstaller process = new ServiceProcessInstaller();
        process.Account = ServiceAccount.LocalSystem;

        ServiceInstaller serviceAdmin = new ServiceInstaller();
        serviceAdmin.StartType = ServiceStartMode.Manual;
        serviceAdmin.ServiceName = "Service1";
        serviceAdmin.DisplayName = "Service1";
        serviceAdmin.Description = "Service1";

        Installers.Add(serviceAdmin);
    }
}

他のヒント

あなたのサービスプロジェクトでのServiceInstallerとServiceProcessInstallerクラスを作成しました確認してください。 (詳細はこのリンクを確認してください)。

を閉じるコンピュータの管理とサービス]ウィンドウ、もう一度インストーラを実行し、[サービス]ウィンドウを開きます。

それでも解決しない場合は、

は、コンピュータを再起動します。あなたは、いくつかのファイルがロックされている場合があります。

これが正しく動作するために、あなたはおそらく、マシンの管理者権限が必要であることは言うまでもない。

私は、私はそれを考え出したと思います。これは、デザイナーのコードのバグかもしれない、または多分私はステップを逃しています。

私はのInitializeComponent()メソッドでは、デザイナーのコードで考えて、それが追加になっています:

this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1});

それはありませんでしたので、私はProjectInstallerコンストラクタでこれを追加しました:

Installers.Add(serviceInstaller1);
Installers.Add(serviceProcessInstaller1);

これでインストールの上、それはコンピュータの管理でのサービスとしてリストされています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top