Windowsサービスによるインストール項目の作成


Windowsサービスのインストール項目の作成


このセクションでは、Windowsサービスプロジェクトを作成する方法と、コンパイルされたインストールプロジェクトを使用してWindowsサービスをインストールする方法について説明します.

Windowsサービスプロジェクトの作成


Microsoft Visual Studioを起動します.
「ファイル」メニューで「新規」をクリックし、「プロジェクト」をクリックします.
「プロジェクトタイプ」ボックスで、「Visual C#プロジェクト」をクリックし、テンプレートの下にあるWindowsサービスをクリックします.注意Visual Studio 2005またはVisual Studio 2008でVisual C#プロジェクトタイプを展開し、Windowsをクリックし、テンプレートの下のWindowsサービスをクリックします.
タイプは、「名前」テキスト・ボックスと「場所」テキスト・ボックスにC:/LOgWriterServiceと入力します.「OK」をクリックします.
ソリューションエクスプローラで、サービス1を右クリックします.csをクリックし、「コードの表示」をクリックします.
OnStartイベントハンドラでは、次のコードを使用してコメントを置き換えます.
EventLog.WriteEntry("My simple service started.");

.
ソリューションエクスプローラで$Services 1をダブルクリックします.cs.
コードエディタウィンドウでデザインビューを右クリックし、プロパティをクリックします.
「≪プロパティ|Properties|Ir≫」ペインで、「≪インストーラの追加|Add Installation|Ir≫」リンクをクリックします.
「ServiceInstaller 1のプロパティ」ペインで、ServiceNameサービス1のプロパティを変更します.
デザインビューのコードエディタウィンドウで$ServiceProcessInstaller 1をクリックします.
プロパティ・ペインで勘定科目のプロパティをローカル・システムに変更します(LocalServiceとネットワーク・サービスの値は、Microsoft Windows XPでのみ使用可能です).

Windowsサービスのインストールコンパイルされたインストール項目の使用


前のセクションでWindowsサービスプロジェクトを構成できるようにするには、次の手順に従います.
LogWriterServiceプロジェクトに新しいプロジェクトを追加します.これを行うには、次の手順に従います.
ソリューションエクスプローラで、ソリューションLogWriterService(1プロジェクト)を右クリックし、「追加」をクリックし、「新規プロジェクト」をクリックします.
「プロジェクト・タイプにプロジェクトをインストールおよび配置」をクリックし、「テンプレート」の下にある「プロジェクトのインストール」をクリックします.
「名前」テキスト・ボックスに「ServiceSetup」と入力します.
タイプC:/場所テキストのボックスを選択し、「OK」をクリックします.

プロジェクトパッケージの配備を伝えます.これを行うには、次の手順に従います.
ソリューションエクスプローラで、ServiceSetupを右クリックして追加し、プロジェクト出力をクリックします.
「プロジェクト出力グループの追加」ダイアログ・ボックスで、プロジェクト・ボックスの「LogWriterService 」をクリックします.
メイン出力をクリックし、「OK」をクリックします.

正しいインストールにプライマリ出力のみを追加します.カスタム操作を行うには、次の手順に従います.
ソリューションエクスプローラで、サービス設定を右クリックしてビューに移動し、「カスタムアクション」をクリックします.
カスタム操作を右クリックし、「カスタム操作の追加」をクリックします.
アプリケーションフォルダをクリックし、「OK」をクリックします.
「主出力」をクリックしてLogWriterService(アクティブ)から、「OK」をクリックします.インストール、コミット、ロールバック、アンインストールの下に表示される主出力に注意してください.

デフォルトでは、インストール項目は生成構成に含まれません.ソリューションを生成するには、次のいずれかの方法を使用します.
方法1
LogWriterServiceを右クリックし、ジェネレータをクリックします.
サービス設定を右クリックし、「構築」をクリックします.

方法2
「構築」メニューで、「ソリューション全体を生成するコンフィギュレーションマネージャ」をクリックします.
サービス設定生成チェックボックスを選択するには、をクリックします.
f 7キーを押してソリューション全体を生成します.このソリューションを構築するには、サービスを利用できる完全なインストーラパッケージが必要です.


新しく生成されたサービスをインストールするには、ServiceSetupを右クリックし、「インストール」をクリックします.
サービス設定ダイアログボックスで「次へ」を3回クリックします.このサービスのインストール時に進捗バーが表示されることに注意してください.
サービスがインストールされているので、「閉じる」をクリックします.

コードリストの完了


Service1.cs


 
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;

namespace LogWriterService
{
	public class Service1 : System.ServiceProcess.ServiceBase
	{
		/// <summary> 
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Service1()
		{
			// The Windows.Forms Component Designer must have this call.
			InitializeComponent();

			// TODO: Add any initialization after the InitComponent call
		}

		// The main entry point for the process
		static void Main()
		{
			System.ServiceProcess.ServiceBase[] ServicesToRun;
	
			// More than one user service may run in the same process. To add
			// another service to this process, change the following line to
			// create a second service object. For example,
			//
			//   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
			//
			ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

			System.ServiceProcess.ServiceBase.Run(ServicesToRun);
		}

		/// <summary> 
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			components = new System.ComponentModel.Container();
			this.ServiceName = "Service1";
		}

		/// <summary>
		/// Clean up any resources that are being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		/// <summary>
		/// Set things in motion so your service can do its work.
		/// </summary>
		protected override void OnStart(string[] args)
		{
			EventLog.WriteEntry("My simple service started.");
		}
 
		/// <summary>
		/// Stop this service.
		/// </summary>
		protected override void OnStop()
		{
			// TODO: Add code here to perform any tear-down necessary to stop your service.
		}
	}
}

 

動作を検証する


$コントロール面版で管理ツールをダブルクリックし、サービスをダブルクリックします.
サービス1を右クリックし、「開始」をクリックします.
次のいずれかの方法で、イベント・ログにイベントが記録されていることを確認します.
方法1
$コントロールフェースで管理ツールをダブルクリックし、イベントビューアをダブルクリックします.
左ウィンドウ枠でアプリケーション・ログをクリックし、右ウィンドウ枠でサービスがあるイベント・ログを見つけます.

方法2
サーバエクスプローラで、サーバを展開し、ComputerNameを展開し、イベントログを展開し、アプリケーションを展開し、サービス1を展開します.サービス1が存在するクラスは、そのサービスの名前自体ではないことを覚えておいてください.したがって、サービス1はアプリケーションの名前として使用される.(この文書で説明した名前のカスタマイズ方法の範囲を超えています.ログ・エントリにカーソルを移動します.上部から2番目のエントリを読む必要があります.「私のシンプルなサービス起動」


 
 
参照http://support.microsoft.com/kb/816169/zh-cn