Microsoft Visual C# .NET については、次の資料を参照してください。
(http://support.microsoft.com/kb/317421/ja)
目次
概要
必要条件
Windows サービスのセットアップ プロジェクトを作成する
Windows サービス プロジェクトを作成する
コンパイルされたセットアップ プロジェクトを使用して Windows サービスをインストールする
完全なコード リスト (Service1.vb)
Windows サービスの動作を検証する
トラブルシューティング
関連情報
概要
この資料では、Windows サービス アプリケーション (Windows サービスは以前は "NT サービス" と呼ばれていました) のセットアップ プロジェクトを作成する方法について説明します。最初に簡単な Windows サービス プロジェクトを含むソリューションを作成します。このプロジェクトは、アプリケーション ログにエントリを書き込むものです。次に、セットアップ プロジェクトをソリューションに追加し、Windows サービスをインストールします。最後に、Visual Studio .NET サーバー エクスプローラ内からサービスを開始します。
先頭へ戻る
必要条件
必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は、次のとおりです。 ? Microsoft .NET Framework がインストールされた Microsoft Windows Server 2003、Microsoft Windows 2000 Professional、Microsoft Windows 2000 Server、Microsoft Windows XP Professional、または Microsoft Windows XP Server
? Microsoft Visual Studio .NET Enterprise Edition、Visual Studio .NET Enterprise Architect Edition または Microsoft Visual Studio 2005
この資料は、Windows サービスについての知識があるユーザーを対象としています。Windows サービスについては、「関連情報」を参照してください。
また、この資料では、このサービスをインストールして実行するユーザー アカウントに、サービスをインストールして開始するために必要なアクセス許可と、イベント ログにアクセスするために必要なアクセス許可があることを前提としています。
先頭へ戻る
Windows サービスのセットアップ プロジェクトを作成する
ここでは、Windows サービス プロジェクトを作成する方法と、コンパイルされたセットアップ プロジェクトを使用して Windows サービスをインストールする方法について説明します。
Windows サービス プロジェクトを作成する
1. [スタート] ボタンをクリックし、[プログラム]、[Microsoft Visual Studio .NET] または [Microsoft Visual Studio 2005] を順にポイントし、[Microsoft Visual Studio .NET] または [Microsoft Visual Studio 2005] をクリックします。
2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
3. [新しいプロジェクト] ダイアログ ボックスで、以下の手順を実行します。 a. [プロジェクトの種類] の [Visual Basic プロジェクト] または [Visual Basic] の [Windows] をクリックします。
b. [テンプレート] ボックスの一覧の [Windows サービス] をクリックします。
c. [プロジェクト名] ボックスに LogWriterService と入力します。
d. [場所] ボックスに C:/ と入力し、[OK] をクリックします。
4. ソリューション エクスプローラで [Service1.vb] を右クリックし、[コードの表示] をクリックします。
5. OnStart イベント ハンドラで、コメントを次のコードに置き換えます。 EventLog.WriteEntry("My simple service started.")
6. ソリューション エクスプローラで、[Service1.vb] をダブルクリックします。
7. プロパティ ダイアログ ボックスで、[インストーラの追加] をクリックします。
8. ServiceInstaller1 の [プロパティ] ウィンドウで、ServiceName プロパティを LogWriterService に変更します。
9. [ProjectInstaller.vb [デザイン]] タブで、[ServiceProcessInstaller1] をクリックします。
10. [プロパティ] ダイアログ ボックスで、Account プロパティを LocalSystem に変更します。LocalService 値および NetworkService 値は、Microsoft Windows XP およびそれ以降のオペレーティング システムでのみ使用可能です。
コンパイルされたセットアップ プロジェクトを使用して Windows サービスをインストールする
「Windows サービス プロジェクトを作成する」に記載されている手順を実行して Windows サービス プロジェクトを構成したら、サービス アプリケーションをパッケージ化するデプロイメント プロジェクトを追加し、サービス アプリケーションをインストールできるようにします。これを行うには、次の手順を実行します。 1. 新しいプロジェクトを LogWriterService プロジェクトに追加します。 a. ソリューション エクスプローラで、[ソリューション 'LogWriterService' (1 プロジェクト)] を右クリックし、[追加] をポイントし、[新しいプロジェクト] をクリックします。
b. [プロジェクトの種類] ボックスの一覧の [セットアップ/デプロイメント プロジェクト] または [その他のプロジェクトの種類] の [セットアップと配置] をクリックします。
c. [テンプレート] ボックスの一覧の [セットアップ プロジェクト] をクリックします。
d. [プロジェクト名] ボックスに ServiceSetup と入力します。
e. [場所] ボックスに C:/ と入力し、[OK] をクリックします。
2. デプロイメント プロジェクトに対してパッケージの対象を指定します。 a. ソリューション エクスプローラで、[ServiceSetup] を右クリックし、[追加] をポイントし、[プロジェクト出力] をクリックします。
b. [プロジェクト出力グループの追加] ダイアログ ボックスで、[プロジェクト] ボックスの一覧の [LogWriterService] をクリックします。
c. [プライマリ出力] をクリックし、[OK] をクリックします。
3. プライマリ出力を追加するだけで適切なインストールが行われます。カスタム動作を追加するには、以下の手順を実行します。 a. ソリューション エクスプローラで、[ServiceSetup] を右クリックし、[表示] をポイントし、[カスタム動作] をクリックします。
b. [カスタム動作] を右クリックし、[カスタム動作の追加] をクリックします。
c. [アプリケーション フォルダ] をクリックし、[OK] をクリックします。
d. [LogWriterService (アクティブ) のプライマリ出力] をクリックし、[OK] をクリックします。[インストール]、[確定]、[ロールバック]、および [アンインストール] の下に [LogWriterService (アクティブ) のプライマリ出力] が表示されます。
4. セットアップ プロジェクトは、デフォルトではビルド構成に含まれません。ソリューションをビルドするには、以下の手順を実行します。 a. 以下のいずれかの手順を実行します。 ? [LogWriterService] を右クリックし、[ビルド] をクリックします。次に、[ServiceSetup] を右クリックし、[ビルド] をクリックします。
? 同時にソリューション全体をビルドするには、[ビルド] メニューの [構成マネージャ] をクリックし、ServiceSetup の [ビルド] チェック ボックスをオンにします。
b. Ctrl + Shift + B キーを押して、ソリューション全体をビルドします。ソリューションがビルドされると、サービス用の完全なインストール パッケージが作成されます。
5. 新しくビルドしたサービスをインストールするには、[ServiceSetup] を右クリックし、[インストール] をクリックします。
6. ServiceSetup セットアップ ウィザードで、[次へ] を 3 回クリックします。セットアップ プログラムでサービスをインストールしている間、進行状況バーが表示されます。
7. サービスがインストールされたら、[閉じる] をクリックします。
先頭へ戻る
完全なコード リスト (Service1.vb)
Imports System.ServiceProcess
Public Class Service1
Inherits System.ServiceProcess.ServiceBase
#Region " Component Designer generated code "
Public Sub New()
MyBase.New()
' The Component Designer requires this call.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
'UserService overrides Dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' This is the main entry point for the process.
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' More than one NT Service may run within the same process. To add
' another service to this process, change the following line of
' code 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)
End Sub
'The Component Designer requires this code.
Private components As System.ComponentModel.IContainer
' NOTE: The Component Designer requires the following procedure.
' You can use the Component Designer to modify the procedure.
' However, do not modify use the code editor to modify it.
components = New System.ComponentModel.Container()
Me.ServiceName = "Service1"
End Sub
#End Region
Protected Overrides Sub OnStart(ByVal args() As String)
EventLog.WriteEntry("My simple service started.")
End Sub
Protected Overrides Sub OnStop()
End Sub
End Class
先頭へ戻る
Windows サービスの動作を検証する
1. [スタート] ボタンをクリックし、[コントロール パネル]、[管理ツール] の順にポイントして、[サービス] をクリックします。
2. [LogWriterService] を右クリックし、[開始] をクリックします。
3. イベントがイベント ログに記録されていることを確認するには、次のいずれかの方法を使用します。 ? [スタート] ボタンをクリックし、[コントロール パネル]、[管理ツール] の順にポイントし、[イベント ビューア] をクリックします。左側のウィンドウで [アプリケーション] をクリックし、右側のウィンドウでサービスのイベント ログを見つけます。
? サーバー エクスプローラで、[サーバー]、[ComputerName]、[イベント ログ]、[アプリケーション]、[Service1] の順に展開します。Service1 はサービス自体ではなく、クラスの名前です。そのため、Service1 はアプリケーション名として使用されます (名前をカスタマイズする方法はこの資料では説明しません)。ログ エントリの上にカーソルを移動します。上から 2 番目のエントリには次のように表示されます。
My simple service started
先頭へ戻る
トラブルシューティング
Framework SDK ドキュメントには、次のように記載されています。
サービス アプリケーション プロジェクトが作成するコンパイル済み実行可能ファイルは、プロジェクトの使用開始前にサーバーにインストールしておく必要があります。F5 キーまたは F11 キーを押してサービス アプリケーションをデバッグまたは実行することはできません。サービスを即時実行することや、サービスのコードにアクセスすることはできません。サービスのインストールと起動を行ってから、デバッガをサービスのプロセスにアタッチする必要があります。
詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp)
先頭へ戻る
関連情報
サービスのインストール、テスト、およびデバッグ方法の理解に役立つ Windows サービスを作成するには、次の MSDN Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbconintroductiontontserviceapplications.asp (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbconintroductiontontserviceapplications.asp)
詳細については、次の MSDN Web サイトを参照してください。
http://msdn.microsoft.com/msdnmag/issues/01/12/NETServ/default.aspx (http://msdn.microsoft.com/msdnmag/issues/01/12/NETServ/default.aspx)