アプリのインストール先のフルパス取得


やっとVB  2005-01-26 12:43:06  No: 119185  IP: [192.*.*.*]

インストールしたアプリ(例: ABC.exe)がどこにあるのかフルパスで探したいのですがやりかたがわかりません。  お助けください。

編集 削除
INA  2005-01-26 13:08:11  No: 119186  IP: [192.*.*.*]

App.path でしょうか?

編集 削除
やっとVB  2005-01-26 13:58:34  No: 119187  IP: [192.*.*.*]

説明不足ですみません。
パッチ当てのソフトを作るのが目的です。  使用者がどこか任意の場所にインストールしたフルパスを探して自動的にexeを書き換えてしまおうという計画です。  ソフト名(exe)を指定するとインストール先のフルパスがわかるようにしたいと思いました。  よろしくお願いします。

編集 削除
INA  2005-01-26 15:11:43  No: 119188  IP: [192.*.*.*]

それはインストールしたソフト次第ではないでしょうか?

インストールされているのか、exeが置いてあるだけなのか判断することの
できる情報は何かあるのでしょうか?  レジストリ?

そのソフトは何でしょう?

編集 削除
やっとVB  2005-01-26 18:21:02  No: 119189  IP: [192.*.*.*]

ソフトは自分で作ったものを不特定のユーザーが「setup.exe」を使ってインストールしてあります。  だからレジストリから判断できるものと思いましたがその方法がわからないので質問しました。  よろしくお願いします。

編集 削除
ひろ  2005-01-26 18:27:40  No: 119190  IP: [192.*.*.*]

パッチを当てる対象のソフトの作者か、パッチの作者に聞いて下さい。
それが一番確実です。

編集 削除
ひろ  2005-01-26 18:28:51  No: 119191  IP: [192.*.*.*]

すいません。返信が交錯しました。
ディストリビューションウィザードで作ったsetup.exeでインストールしたと考えて良いのでしょうか?

編集 削除
030  2005-01-26 18:34:49  No: 119192  IP: [192.*.*.*]

セットアップウィザードを使って作成したSetup.exeによりインストールしたVBのアプリケーションの
実行ファイル名をレジストリエディタで検索したら下記のレジストリにパスらしきものがありました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ST[n]UNST #[m]
(n,mは整数)
たとえば「ST1UNST #1」とかになっていました。

詳細は自分で確かめてください。

編集 削除
ひろ  2005-01-26 18:56:17  No: 119193  IP: [192.*.*.*]

VB6のディストリビューションウィザードで作成したインストーラという仮定で
書いておきます。

VB6のディストリビューションウィザードで作成したインストーラのアンインストール情報は

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

の下にある  "ST6UNST" で始まるキー名("ST6UNST #1"等)のレジストリキーの物が該当します。

その中で、DisplayName(これはアプリケーションの追加と削除の画面に出る名前と同じ)が自分の作ったアプリケーションの物であるか確認します。

#  DisplayNameは同じソフトを複数個インストールした場合には、自動的に
# "(" & インストール先のフォルダ名 & ")" が追加されるので注意して下さい

次に、UninstallString キーの値を持ってきて、"st6unst.exe -n "の後に書いてあるのが、アンインストール情報ファイルのパスです。

アプリケーションのアンインストール情報が手に入りましたから、次は、このファイルを読み込んでパッチ当ての対象ファイルの場所を探して下さい。

(インストーラの構成によっては、アンインストール情報ファイルとインストールした実行ファイルが必ず同じになる事もありますので、その様な構成なら、アンインストール情報ファイルのパスをそのままソフトの入っているパスと見なしても良いかもしれません)

編集 削除
シャノン  2005-01-26 19:26:22  No: 119194  IP: [192.*.*.*]

パッチを当てる対象のソフトも自作したものなら、ディストリビューションウィザードをカスタマイズして、インストール時にレジストリにパスを書き込むようにするか、あるいは初回起動時にレジストリにパスを保存しておくのが楽でいいのではないでしょうか。
アンインストール情報から取得しようとすると、Win32 API を使わなければなりませんから。

編集 削除