.NET FrameWorkのインストール状態を確認するには?

解決


kita  2008-06-18 10:49:27  No: 100819  IP: 192.*.*.*

VB6にて、以下のようなプログラムを作成中です。
・.NET FrameWork2.0をインストール。
・上記のインストール完了後、日本語ランゲージパックをインストール。

以下質問です。
(1)Shellでdotnetfx.exeを起動し、WaitForSingleObjectで終了を検知
  する予定ですが、インストールが正常に終了したか、中断(もしくは異常終了)
  したかを戻り値か何かで判断することは出来るでしょうか?
(2).NET FrameWork2.0及び日本語ランゲージパックがインストール済みか
  どうか、VB6にて判断することは可能でしょうか?
  レジストリを確認すればよい、という記述を見つけたのですが
  それで判断するのでしょうか?

以上、よろしくお願い致します。

編集 削除
やじゅ  2008-06-18 11:32:53  No: 100820  IP: 192.*.*.*

(1)インストールが正常に行われたかどうかの確認方法
http://www.microsoft.com/japan/msdn/net/deployment/redistdeploy1_1.aspx

(2)レジストリの判断でいいのでは
Software\Microsoft\Windows\CurrentVersion\Uninstall  

VB6じゃないけど
インストール済みアプリ一覧を取得する(VB.NET Tips)
http://techbank.jp/Community/blogs/hiro/archive/2008/03/20/vb-net-tips.aspx

編集 削除
魔界の仮面弁士  2008-06-18 12:43:51  No: 100821  IP: 192.*.*.*

> .NET FrameWork2.0
FrameWork ではなく、 Framework です。

手抜き判断なら、こんな方法もありますが…これは避けたほうが良いでしょうね。
http://support.microsoft.com/kb/318785/ja


> VB6にて、以下のようなプログラムを作成中です。
VB6は、インストーラの作成用途には向かないと思いますよ。


> (1)Shellでdotnetfx.exeを起動し、WaitForSingleObjectで終了を検知
待機制御なら、WshShell.Run の方が手っ取り早いかと思います。


> (2)インストール済みかどうか、VB6にて判断することは可能でしょうか?
Windows Installer API を使う…と紹介したいところですが、
最近の OS のように、標準で組み込まれている場合に対処できないので
http://www.ailight.jp/blog/sha256/archive/2005/01/12/3667.aspx
のように、レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727\1041
を、確認した方が良いかも知れません。

レジストリの読み込みは、WshShell.RegRead メソッド、もしくは WMI あるいは API で。

編集 削除
kita  2008-06-18 16:11:23  No: 100822  IP: 192.*.*.*

やじゅさん、魔界の仮面弁士さん  回答ありがとうございます。

> FrameWork ではなく、 Framework です。
申し訳ありません、以後気をつけます。

各インストールexe終了後、それぞれのレジストリの値を
チェックすることで、インストール済みかどうか判断するようにしたら
希望通りの動作をしました。

これにて解決とします。ありがとうございました。

編集 削除
魔界の仮面弁士  2008-06-18 16:46:16  No: 100823  IP: 192.*.*.*

追記:

《.NET Framework 3.0 および以前のリリースを検出する》
http://www.microsoft.com/japan/msdn/windowsvista/general/netfx30.aspx#netfx30_topic14

《付録 A: .NET Framework の言語パックを検出する》
http://www.microsoft.com/japan/msdn/windowsvista/general/netfx30.aspx#netfx30_topic19

編集 削除