やっと日記書けるようになった。
タッチキーボードが全然だめなので困ってたがサードパーティ製のやつを見つけて入れてみたらかなり良くなった。 Hot Virtual Keyboardってやつ。有料なので試用してるが$30くらいなので買ってよさげだ。
体調はまあまあ良くなった。 目は大丈夫で内科に行ったら胃がやべえのと風邪かなということで胃薬と風邪薬をもらって飲んでた。 いろんなところがしんどいのでわからなかったが胃は確かに痛かったなぁ。
しばらくして大丈夫そうになったんだが、それからちょっとしたらまた気分悪いのが再発してしまった。 症状的に夏バテだったんでおとなしくしてるくらいしかないな。 でまあ最近やっと直ってきた感じ。あんま冷房つけっぱだったりしたのはよくなかったかな。 でも夜も暑かったしな。
眼科行った時に近眼だし緑内障の検査した方がいいよって言われたので検査を受けた。 まあ結果は大丈夫だったんだが、なんかなりそうな目してるんで半年毎くらいに検査受けろよって言われてしまった。ひょえー。
最近はインラインアップデート用にいろいろいじってた。
アップデートするのにインストーラ版だとインストーラ立ち上げつつ自分は終了ってするとスムーズにアップデートして再起動できるんだけど、zip版だとできないしインストーラ版があるのはWindowsだけなんでmonoでできなくて面倒だった。 なので自前のアップデータを作ろうかと。
Windowsのexeやdllは起動中に上書きできないが、monoでも同じく起動中のファイルは上書きできない。
インストーラのように他のアップデータプロセスを立ち上げればいいかなと思ったんだが、monoだと難しそうだ。
というのもmono PeerCastStation.exe
のように起動することになるが、この起動コマンドであるmono側のコマンドラインが取れねえ。PeerCastStation.exe
以降のものしか取れないのでどうやってmono起動したのか知りえないのであった。そんなあ。
仕方ないので起動しっぱなしでファイルを置き換える方法を検討する。 AppDomainを新しく作ってそいつにメインのプロセスを読み込ませ、終了したらAppDomainを削除するとDLLがアンロードされるので上書きできるって寸法だ。 で、その方法でやろうと調べたんだけど、AppDomain新しく作るとアセンブリのシャドウコピーってのが指定できるらしい。これ使うと勝手にコピってから読み込んでくれるから元のファイルは上書きでるんですって。これいいな使おう。
新しいAppDomainでの読み込みと実行はうまくいったんだが、AppDomainのアンロードをしようとするとアンロードできませんでした的な役に立たないメッセージの例外が投げられた。これじゃわからんのだが、たぶん投げっぱなしのTaskが生きてるせいかなぁ。ドキュメント読むと生きてるスレッドはAbortでぶっころすって書いてあるけどそうだっけ?でもやっぱりTask生き残ってるせいな気がするなあ。
投げっぱなしのTaskを全部終了待ちするのは難しいのだがどうしたものか……諦めるか。 どうせファイルはシャドウコピーされてるので上書きできるしアンロードする必要もない。 前のはそのままに新しいの立ち上げちゃえ。
あとは細々と間違ったりしながらなんとか動くところまで行ったっぽい? Assebly.LoadFromだとシャドウコピーが有効だけどAssembly.LoadFileだとそうではないあたりに騙された。
肝心のファイル上書き部分はこれから。ちゃんと動くといいなあ。