サイトアイコン CAD日記

VC2005 SP1 再頒布可能パッケージ

KB2467175の対応がとれた再頒布可能パッケージがリリースした。
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージMFC のセキュリティ更新プログラム
対応OSは、Windows 7; Windows Server 2003; Windows Vista; Windows XP
とのことで、Windows2000は外れている。
なのに、WindowsUpdateでこいつが適用されちまうというのは、マイクロソフトの
ミスということになるだろう。
ダウンロードするファイルは、vcredist_x86.EXEのように拡張子が大文字になっている。
歴代の再発布可能パッケージは、vcredist_x86.exeというように小文字の拡張子だった。
大文字の拡張子というのは何だかかっこ悪いと思うのはおいらだけだろうか。
プロダクトコードは「a0fe116e-9a8a-466f-aee0-625cb7c207e3」。
こいつがインストールされているかどうかのチェックに必要なもの。
どうやって導き出したかポイントだけ列挙する。
1.Platform SDKのインストール
 ここから、PSDK-x86.exeをダウンロード。
 たったの1.3MBだからといってあなどってはいけない。
 10分程度の時間と、約1GBのディスク容量を食う。
2.orcaのインストール
 C:\Program Files\Microsoft Platform SDK\Bin\Orca.Msi を実行。
 これはすぐ終わる。
3.vcredist_x86.EXEを展開
 コマンドラインで以下を実行。
 vcredist_x86 /c /t:c:\temp
 C:\temp\vcredist.msiが出来上がる。
4.orcaでmsiを開く
 PropertyのProductCodeを参照する。
 目的のコードが発見できる。
では、このコードが示す再頒布可能パッケージがインストールされているかどうかを
チェックする方法について書いてみようとおもったけれど、
面倒くさいのでコードをそのまま載せる。
BOOL stat = FALSE;
HINSTANCE hDLL;
LPFNDLLFUNC1 lpfnDllFunc1;
hDLL = LoadLibrary(_T(“Msi.dll”));
if( hDLL != NULL )
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress( hDLL, “MsiQueryProductStateW” );
if( lpfnDllFunc1 )
stat = ( lpfnDllFunc1( _T(“{a0fe116e-9a8a-466f-aee0-625cb7c207e3}”) ) >= INSTALLSTATE_ABSENT );
FreeLibrary( hDLL );
}
return( stat );

モバイルバージョンを終了