2012-08-02 46 views
8

TopShelfを使用してWindowsサービスを作成しようとしています。サービスの1つのインスタンスですべてうまく動作します。しかし、サービスフォルダ全体を別の場所にコピーして、その場所でインストールを実行すると、「スタートアップ」でハングするだけです。TopShelf同じマシンに複数の同じサービスをインストールする

設定ファイルの値に基づいてservicename、description、displayanameを割り当てて、名前の競合がないようにします。

+0

可能であれば、メーリングリストに参加してください。 https://groups.google.com/forum/#!forum/topshelf-discussこれはSO全体で把握するのが難しいでしょう。ただし、同じサービスの2つを実行できるようにする "インスタンス"名を設定することができます。 – Travis

+0

サービス名と表示名が一意であることを確認してください。一意のサービス名で2つのサービスをインストールしようとしましたが、同じdisplaynameを使用していましたが、うまく機能しませんでした。 – Bomberlt

答えて

22

これは、区別する必要があるサービスのinstancenameです。

documentationより:

SERVICE.EXE [動詞] [-option:値] [-switch]

をインストールインスタンス-instanceサービス

をインストールサービスを複数回登録する場合の名前

は、だからあなたが使用できます。

service.exe install -instance:FirstInstanceOfMyService 

service.exe install -instance:SecondInstanceOfMyService 
5

あなたが設定ファイルにサービスのインスタンス名を設定することで何をしたい場合は、このようにプログラム的にインスタンス名を設定することができます。

var instanceName = ConfigurationManager.AppSettings["Instance"]; 
HostFactory.Run(hostConfigurator => 
{  
    ... 
    hostConfigurator.SetDisplayName("My service"); 
    hostConfigurator.SetDescription("My service that does something"); 
    hostConfigurator.SetServiceName("MyService"); 
    hostConfigurator.SetInstanceName(instanceName); 
} 

ので、中あなただけが実行するインストール

MyService.exe install 
関連する問題