C#でSignalRを使用した通信を行いたい その12(Windowsサービス③) | プログラミングがわからなすぎる

プログラミングがわからなすぎる

気が向いた時の備忘録。プログラミングは好きなのに物凄く単純なものしか理解できないからメモしていくうちに覚えられたらいいな
ターゲットフレームワークは大体4.7.2

ソースは前記事を参照

 

今回はサービスのインストールと実行結果をやっていきたいと思います

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を再起動すればサービス一覧から消えます