C++プログラムの話から入ろう。VCランタイムがインストール済みかどうかを調べるのにMsiQueryProductStateを使えばいいという過去の経験則があったが、今はもう通用しないことがわかった。以下はVC++ランタイム2010×64のチェック。
if( MsiQueryProductState(_T("{1D8E6291-B0D5-35EC-8441-6616F567A0F7}")) < INSTALLSTATE_ABSENT ) return FALSE; return TRUE;
ターゲットはVC++ランタイム2015~2022×64で、ファイル名はVC_redist.x64.exe。こいつはmsiではないっぽくて、exeからmsiを取り出すことができず、msiからorcaでGUIDを取得することができなかった。
しょうがないからと編み出したのが以下の以下のレジストリで判断すること。
HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\X64
Installed=1
Major=14
Minor=40
Bld=33810
ただ難点が一つあって、VCランタイムをアンインストールしてもこのレジストリが残ること。
Microsoft Visual C++ 2015-2022 Redistributabl (x64) – 14.41.33810
プログラム一覧を検索して、この名前があるかどうかまで判断しなければならい。
プログラム一覧もレジストリなので、以下の記事通り(C#だけど)にやればいい。
C# インストールされているプログラムのリストを取得する
気が向いたら明日これも実装してみるかね。
画像174枚のWebで公開する件は終結。LightBox2というクソ便利なJavaScriptで実装。GitHubからブツをダウンロードしてきて、最もシンプルなHTMLの描きっぷりを連続して書いただけ。元画像が15001000pxとデカいのに対して、一覧に載せるのはもっと小さくで軽いものを作る必要があって、Photoshopのバッチ処理を実施。画像を1枚ずつ開いて画素数を変えて別名保存するなんてアホなことはできんと、バッチ処理を調べてうりゃーと一気にリサイズ。昔買ったPhotoShop CS6はまだまだ現役で使えますな。2012年にリリースしたCS6が、12年を経てWindows 11で使えていてエラい。2013年にCC(CreativeCloud)がひたすらバージョンアップを重ねており、CC(25.0)だそうだ。CCは完全サブスクリプションだから、使うためには毎年おいくら万円という金額を払わなければならない。一方で永久ライセンスなのがCS6。CS6がいつまで使い続けられるだろうか。。
母校(高校)の同窓会役員になってからもうすぐ1年が経とうとしている。70歳以上の年配者との関係性に苦労している。40歳以下の若者達は行動力があってなかなかヤルじゃないかと感心することしきりなのに対して、年配者はタチが悪い。昔ながらの先輩後輩絶対みたいなところがベースにあって、上意下達(じょういかたつ)とか言って後輩は先輩の言うことにただ従うべしという時代遅れの価値観。年配者同士の対立や、年配者から若年層への強い物言いなんてのがあって雰囲気が悪い。中間層と言える54歳のおいらが入ってネット推進をやりだしたら、年配層(特にインターネットが身近にない70歳以上)は無関心になるか、どうでもいい指摘をしてきたりと、コトを進めるのにやや難航した。仕事はとっくに引退して、社会との接点を持ち続けるためにこの手の会で活動するのはよいこと。でも、自分の価値観だけを押し付けるようなやり口ではNG。年配層と若年層との懸け橋としておいらは、これからも立ち働く所存。どんな組織も人間関係なので、ほどほどに主張してうまくやっていこうかね。