kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Windows サービス 作成

VisualStudio 2005

新しいプロジェクトからサービスのテンプレートを選択し、実行する

作成したプログラムをWindowsのサービスに登録するには2つの手順を踏む必要がある

1.プログラムのインストール
2.サービスへの登録

両方を行わないとできない。


方法としては以下の手段をとる

1.installutil.exeを使用する方法
すべてのプログラム→VisualStudioVisualStudioツール→VisualStudioコマンドライン
installutil.exe サービスに登録したいプログラム名

※installutil.exe /u サービスに登録したいプログラム名
でサービスから削除できる


2.VisualStudioからセットアッププロジェクトを利用する方法
プロジェクトを作成したときにできるファイル(規定ではService1.vb)のデザインタブを開き、右クリックでインストーラの追加をする

作成されたServiceInstaller1のServiceName プロパティを作成するサービス名と同じにしておく

ソリューションにセットアップ プロジェクト(インストーラ用のプロジェクト)を追加する

カスタム動作を設定する
セットアッププロジェクトを右クリック、表示→カスタム動作→カスタム動作の追加
アプリケーションフォルダを選択し、OK

hoge(アクティブ) のプライマリ出力を選択し、OK
インストール、確定、ロールバック、アンインストールにhoge(アクティブ) のプライマリ出力が表示される

※カスタム動作を設定することにより、インストール後、インストールされたプログラムがサービスとして登録される

ソリューション全体をリビルドし、セットアッププロジェクトを右クリック、インストールでサービスに登録される




デバッグ方法

管理ツールのサービスから、目的のサービスを起動させておく

VisualStudio 2005のツールから、プロセスにアタッチを行う

一覧から目的のサービスを探す。ない場合は、すべてのユーザーからのプロセスを表示するにチェックを入れる

サービスを選択し、アタッチを押下する

サービスから起動させてからアタッチするので、OnStartイベントはデバッグできないようだ
必要であれば、ログファイルを出力させるなどする

参考サイト
http://support.microsoft.com/kb/317421/ja
http://msdn.microsoft.com/ja-jp/library/y817hyb6%28VS.80%29.aspx

http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2007-08-042.htm
http://dobon.net/vb/dotnet/deployment/installservice.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=24965&forum=7&start=0
http://www.itmedia.co.jp/enterprise/articles/0502/01/news083.html
http://shinshu.fm/MHz/95.83/archives/0000091581.html
http://d.hatena.ne.jp/frontline/20070322/p2
http://moge.blog.drecom.jp/archive/24
http://momotchi.net/forums/t/1015.aspx
http://kilala.mydns.jp/dottextweb/articles/454.aspx
http://axion.sakura.ne.jp/blog/index.php?UID=1184758703