[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/06(Mon) 21:53
投稿者名:もみじ
Eメール:
URL :
タイトル:
インストール先フォルダの取得について
はじめましてもみじと申します。

自作アプリにバグがあった場合に、パッチをあてる為のパッチプログラムを
VBで作成しています。
自作アプリはMSIでインストールしており、ユーザが任意のインストール先の
フォルダを指定できるようになっています。
パッチプログラムの起動時に、インストール先のフォルダを探って、パッチ
をあてたいと考えていますが、インストール先のフォルダを取得できる方法は
ありませんでしょうか?

WMIを使用して、Win32_Productクラスで取得できるInstallLocationの値を
参照しようかと考えていましたが、いつ取得してもNULLが返ってきてしま
います。

パッチをあてる場合は、一般的にこうすべきというご意見などもございまし
たら、ご教授ください。

宜しくお願い致します。

投稿時間:2005/06/07(Tue) 11:44
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: インストール先フォルダの取得について
# 回答ではありません。

> WMIを使用して、Win32_Productクラスで取得できるInstallLocationの値を
> 参照しようかと考えていましたが、いつ取得してもNULLが返ってきてしま
> います。

下記のコードで試してみましたが、Visual Studio Installer で作成されたパッケージでは
InstallLocation が未定義のようですね。
# というよりも、InstallLocation が設定されるのって、VS.NET や Office系ぐらいのようで……。


'Dim WI As WindowsInstaller.Installer
Dim WI As Object
Dim I As Long
Dim P As String

Set WI = CreateObject("WindowsInstaller.Installer")
For I = 0 To WI.Products.Count - 1
    P = WI.Products.Item(I)
    Debug.Print P & " - " & WI.ProductInfo(P, "InstalledProductName")
    Debug.Print " AppPath="; WI.ProductInfo(P, "InstallLocation")
    Debug.Print " msiPath="; WI.ProductInfo(P, "InstallSource"); WI.ProductInfo(P, "PackageName")
Next
Set WI = Nothing

投稿時間:2005/06/07(Tue) 19:46
投稿者名:もみじ
Eメール:
URL :
タイトル:
Re^2: インストール先フォルダの取得について
情報ありがとうございます。

> 下記のコードで試してみましたが、Visual Studio Installer で作成されたパッケージでは
> InstallLocation が未定義のようですね。
> # というよりも、InstallLocation が設定されるのって、VS.NET や Office系ぐらいのようで……。

# そうなんですね。。
やはり別の方法で取得するしかないようですね。
インストールの際に、Installerでインストール先のパスをレジストリに格納する方法などを
考えていますが、そのようなことをしなくても取得できる方法があるのではと調べています。
# もう既にインストールされているアプリに関しては、そのような情報を格納する機能を
# 持っていませんので。。

レジストリを検索するとインストール先のフォルダが格納されているようですが、どのような
構成で格納されているのかを現在調査中です。MSIのインストール・アンインストール情報の
ようです。

おかげさまでInstallLocationが設定されていないのがわかりましたので、別の方法を探って
みたいと思います。また何か情報等がございましたらご教授ください。
宜しくお願い致します。