VB6にて、以下のようなプログラムを作成中です。
・.NET FrameWork2.0をインストール。
・上記のインストール完了後、日本語ランゲージパックをインストール。
以下質問です。
(1)Shellでdotnetfx.exeを起動し、WaitForSingleObjectで終了を検知
する予定ですが、インストールが正常に終了したか、中断(もしくは異常終了)
したかを戻り値か何かで判断することは出来るでしょうか?
(2).NET FrameWork2.0及び日本語ランゲージパックがインストール済みか
どうか、VB6にて判断することは可能でしょうか?
レジストリを確認すればよい、という記述を見つけたのですが
それで判断するのでしょうか?
以上、よろしくお願い致します。
(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
> .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 で。
やじゅさん、魔界の仮面弁士さん 回答ありがとうございます。
> FrameWork ではなく、 Framework です。
申し訳ありません、以後気をつけます。
各インストールexe終了後、それぞれのレジストリの値を
チェックすることで、インストール済みかどうか判断するようにしたら
希望通りの動作をしました。
これにて解決とします。ありがとうございました。
追記:
《.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