体調崩してぶったおれてた。
何事もなければ水曜に休もうとしたら何事かがあったので木曜に休むことに。で水曜に帰ったら体調が崩してそのままぶったおれて木曜は起き上がれずに本読みながらごろごろと。しかし本当に何もできないのはまずいなーと伸びてうっとおしくなっていた髪だけ切りに行った。
金曜は起きたらものすごく喉が痛いのとちょっとながら熱が出てたので休みにした。この時期によく風邪引くしとても悪化したりするのでやばいと思って本気で寝まくった。夜に飯食うために起きたら連絡あって、また何事か起きたので土曜日出社しろとな。生きてたら行くわって言って寝た。
土曜は起きたら相変わらず喉がとても痛い以外はそこそこ元気だったので仕事。しっかり定時分は働いてしまった。 日曜もまだ喉痛かったのでずっと寝てた。夜には喉の痛みはつらくない程度に落ち着いたが微妙に気分が悪い。 月曜に起きても似たような状況だったが土曜の続きがあるから休むわけにもいかんのがな。
ポート開放チェックを入れたのでリリースしたいんだけど、それをやるにはサーバ側にポート開放チェックアプリを置かないといけないんだがその時間がうまいこと取れない。その間になんか適当なの実装しよか。
サービス化は結構前から要望があったしやりたいと思ってたんだけど、ちゃんとやるにはあちこち大幅に手を入れないとなーとも思ってた。が、よく考えたらGUI無し版を普通に起動するだけで最低限の動作は満たせるんじゃなかろうか。 サービスを主とするならいろいろとやらないといけないが、通常版の他にサービス版がついてくるだけなら誰も損はしないし、特に頑張る必要もなさそうだ。作ってみよか。
サービスを作ったことはまったくないのでドキュメントを読んでみると、実装するのは簡単で、サービスのプロジェクトテンプレから作ってOnStartとOnStopを実装して、インストールの設定を作るだけの模様。できた。
インストールはInstallUtilてのを使うと手動で登録できるようだ。と思ったらファイルが無い。VisualStudioのコマンドラインからじゃないと使えないのか。システム標準のツールじゃなくて開発用のツールなのね。ユーザ環境では使えないやつかー。 あとコマンドプロンプトが管理者権限じゃなくて登録できないとかやりながらなんとか登録は上手くいったぜ。
起動してみるが、アクセスが拒否されましたとか言って起動できん。なんでだー!デバッグしようとしてみるが、アタッチしかできないし、そもそもプロセス立ち上がりもしないんだか立ち上がってすぐ止まってるんだかでアタッチする暇もない。なんでだろな。
ユーザをローカルサービスユーザにしたのが悪いのかと自分のユーザにしてみようとしたがローカルユーザのパスワードがわからなくて諦めた。後で気付いたが普通にMSアカウントのパスワードで良かったんだが単に入力ミスってただけのようだ。 で、システムアカウント(管理者)にしてみたらあっさり起動した。なんでだ……と思ったがそうか、サービスの実行ファイルが自分のドキュメントフォルダに入ってるから自分か管理者アカウントでなけりゃアクセスできないのか。アクセスが拒否されましたっていうのはそういう意味かー。何へのアクセスが拒否されたか言って欲しかったですねー!
起動はしたが空の状態で起動したのでHTML UIも何も入れてなくて操作もできない。プラグイン全部入りにすると逆にGUIも入っちゃうので、GUIプラグインは無視するようにしないといけないんだが、とりあえずGUI起動させると何てエラー出されるか確認しよう。 プラグイン全部入りで起動……と、あれ、無事起動したぞ。しかもHTML UIも問題なくアクセスできるしGUIプラグインも普通に読み込めてるな。おやー? 単に見えないデスクトップでGUIが起動されるだけで、GUI表示したら死亡とかそういうのは全く無いのかな?まあたぶんServerCoreとかだと死ぬんだろうけど、試してるのは普通のWindows 8.1だしなぁ。
一応GUIプラグインは読み込まないようにはしたけど、GUI有りでも死ななかったのでServerCoreでちゃんと動くのかは謎だ。VMにでも入れて試せばいいんだけど大変なんですよね。そもそもServerCoreでPeerCastStation動かしたい人居ないんじゃねって気がすごくするけど。
ユーザ環境で動かすにはインストーラが必要なんだよな。手動で登録するには開発環境が必要だし、下手な場所にファイル置くとサービス起動するユーザからファイル見えなかったりするし。でもインストーラ版作るにはアップデートチェックをインストーラ版とzip版で分けなきゃいけないんだよなー。
インストーラのあたりなんとかするまではMono用として入れておくか。Monoでサービス起動できるコマンドあったしなー。その前にMonoで動くのかは確認しないとだけど。