トップ «前の日記(2012-11-09) 最新 次の日記(2012-11-11)» 編集

日々の破片

著作一覧

2012-11-10

_ プロダクトのインストール位置

ムムリクさんのRuby-2.0.0-preview1をインストールを読んでいて(tcltklibは入れたつもりだけど何かパッケージかビルドをミスしたらしい)、インストールディレクトリなら、WMIを使えば簡単に取得できるだろうと試してみた。

# coding : cp932
require 'win32ole'
 
service = WIN32OLE.connect('WinMgmts:Root\\CIMV2')
set = service.execQuery("select * from Win32_Product where Name like '%Ruby%'")
set.each do |ins|
  puts ins.Name
  puts ins.InstallLocation
end
が、無常な結果となる。
Ruby-1.9.3
    ← 空っぽ

はて、と調べると、WMIのInstallLocationプロパティはMSIのカスタムアクション51でAPPINSTALLLOCATIONARPINSTALLLOCATIONへ明示的に設定しなければ、何も入らない仕様らしい。

そういう面倒を不要にするために、Visual Studio Installerを使っているのに、このでくのぼうは既定ではカスタムアクション51のことは何もしない。

それだけではなく、よくよく列挙してみると(上のスクリプトでWQLのWhere以降を削除して全列挙させる)、MS Office、HTCの何か、Intelのいろいろ、Oracle、Adobe以外は誰も設定していない。というか、Visual Studioがそもそも設定していないから、おそらくVisual Studio Installerを作った連中は、カスタムアクション51の存在そのものを知らないのではなかろうか。Oralceは、JDKやJREの位置を調べるのに必要なのでまじめに設定しているのだろう。Adobeもセキュリティアップデートで既存バージョンを調べるためにまじめに設定しているのだな。IntelやHTCはハードウェア屋だからそのあたりはいかにも固そうだ。

というわけで、使えないということはわかった。おれが作るパッケージにカスタムアクション51を付けるかどうかはちょっと判断保留。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え