ソースは前記事を参照
今回はサービスのインストールと実行結果をやっていきたいと思います
Windowsサービスの苦手意識が凄いのでとりあえず躓いたところも全部メモしました
サービスのデバッグ実行については他のやりかたもあるのかも
参考にしたサイト↓
デバッグ準備
準備不足なことがあったので少し脱線しながら頑張ります
とりあえずプロジェクトを右クリックしてビルドします
Debugでビルドしたので
プロジェクトを保存したフォルダのbin\Debug配下に
exeが作成されています
このフォルダのアドレスをコピーしておきます
コマンドプロンプトを立ち上げてサービスのインストールをします(参考リンク参照)
installUtil.exeがあるフォルダに移動して
(自分は"C:\Windows\Microsoft.NET\Framework\v4.0.30319"配下にありました)
InstallUtil.exe [先ほどコピーしたパス]\WindowsService1.exe
を実行します
exe名は自分で作成したexeのものを使用します
サービス ログインの設定とかいうのが表示されました
自分はMicrosoftアカウントでしかログインしたことないので
ユーザー名とかパスワードとか言われても!
適当に入れてみましたが普通に失敗しました
Microsoftアカウントでもできるのか、よくわからないので
ローカルアカウントを設定することにしました
スタートメニューの自分のアカウントのところを右クリックして
「アカウント設定の変更」を開きます
たしか「ローカルアカウントでのサインインに切り替える」を選択して
開いたウィンドウに従ってローカルアカウントを作成しました
(もしかしたら違うかも?)
これでさっきのユーザ名とパスワードを聞かれてもなんとかできます
もう一度InstallUtillして、以下の内容を入力します
ユーザー名:PC名\ローカルアカウントのユーザID※
パスワード:設定したローカルアカウントのパスワード
※コマンドプロンプトで
「whoami」と入力してEnterしたときに出てくる文字をコピペでいけました
フォルダパスとか恥ずかしいのでマスキングだらけです
「インストールが完了しました」と出たので成功してそう
ここでロールバックしました、のような文言や
インストールに失敗しましたのようなことが出ていたら
ユーザIDとかパスワード間違ってるかもしれません
サービス一覧を開いてみると
それっぽいやつが居ました
なにも設定とかしないでインストールすると
サービスのクラス名と同じ名前で入るのかな
「ログオン」がインストールしたときに入力したアカウントになってました
これを開始するときにはMicrosoftアカウントに戻っていたからか
開始できなかったためアカウントを変更します
インストールしたサービスを右クリックしてプロパティを開きます
「ログオン」タブの「アカウント」のほうのラジオボタンが選択されていたので
「ローカル システム アカウント」のほうを選択しなおして
「OK」をクリックします
これでサービスが開始できると思うので
「サービスの開始」をクリックしてスタートします
デバッグ実行のメッセージが出ました
「はい」をクリックします
「利用可能なデバッガー」を選択して「OK」をクリックすると
visual studioでステップ実行できます
↑で囲った行が無ければ
わざわざこんなデバッグするよみたいなこと言い出さないと思います
メモ:リリースビルドする前には必ずこの行を消す
「状態」の列が「実行中」になったのでちゃんと起動してるみたいです
接続テスト
前々から作ってあそんでいるクライアントのプログラムを使うことにします
今はサービスが開始されていて、
サーバ側Windowsサービスが接続していいよ~って状態になっているはずなので
↑の「接続」ボタンをクリックして接続に成功したことが確認できれば
Windowsサービス版のSignalRサーバプログラムも問題ないはず
接続成功のメッセージが出たので大丈夫みたいです
サービスのアンインストール
入れたサービスをアンインストールします
デバッグで見つかったバグを直してexeをインストールし直したいときも
たぶんこれで一旦削除してインストールし直せば行けると思います
とりあえずサービスを停止します
状態欄が空欄になったので停止できました
インストール時と似ていますが
InstallUtil.exe -u [exeのパス]\WindowsService1.exe
を実行します
「アンインストールか完了しました。」と表示されたので
先ほどインストールしたWindowsサービスは消えました
もしサービスを停止し忘れてアンインストールしたりすると
状態かスタートアップの種類かどこかが「無効」という表示で
サービス一覧からは消えず、再インストールもできない状態になりますが
その場合はPCを再起動すればサービス一覧から消えます