http://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y684に記載されている手順に従って、私は正常にインストールしてテストしたWindowsサービスを作成しました。しかし、私はサービスをインストールするために使用されたコンポーネントの何かに困惑しています。コンポーネントデザイナで、使用されていない(使用されていない)サービスインストーラオブジェクトが生成されるのはなぜですか?
サービスのインストールは、デザイナーが作成したProjectInstaller
クラスで行います(下記参照)。このクラスは、installutil.exe
(.NET Framework)でサービスおよび関連するサービスプロセスをインストールするために使用されます。デザイナーが生成したコードでは、インストール時にサービス用にMyServiceInstaller
、サービスプロセス用にMyServiceProcessInstaller
の2つのインストーラーオブジェクトが作成され、installutil.exe
で使用されます。ただし、後者のみをInstallers
コレクションに挿入します。
サービス自体はどのようにインストールされますか?サービスプロセスとともに明示的にサービスがインストールされていない場合、サービスプロセスの「デフォルトサービス」はありますか?
CODE:(。。あなたはこれを試している場合、あなたはデザイナーは、実際には2つの部分のクラスを使用して、このクラスを作成していることがわかります、私は簡単にするために、単一のクラスにこれらを統合しています)
namespace MyService
{
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.MyServiceProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller();
this.MyServiceInstaller = new System.ServiceProcess.ServiceInstaller();
//
// MyServiceProcessInstaller
//
this.MyServiceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.MyServiceProcessInstaller.Password = null;
this.MyServiceProcessInstaller.Username = null;
//
// MyServiceInstaller
//
this.MyServiceInstaller.ServiceName = "MyService";
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
// *** Expected here: this.MyServiceInstaller,
this.MyServiceProcessInstaller});
}
private System.ServiceProcess.ServiceProcessInstaller MyServiceProcessInstaller;
private System.ServiceProcess.ServiceInstaller MyServiceInstaller;
}
}
私は漠然とこれらのいずれかがinstallutil' 'で使用されていて、Windowsインストーラをビルドする場合は、他のが使用されていることを読んで思い出します。しかし、私は間違っている可能性があります。 –
@Joe - ありがとう、私はそれを可能性として見ています。 –
これは説明していますか? http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceinstaller(v=vs.80).aspx –