インストールしたアプリ(例: ABC.exe)がどこにあるのかフルパスで探したいのですがやりかたがわかりません。 お助けください。
App.path でしょうか?
説明不足ですみません。
パッチ当てのソフトを作るのが目的です。 使用者がどこか任意の場所にインストールしたフルパスを探して自動的にexeを書き換えてしまおうという計画です。 ソフト名(exe)を指定するとインストール先のフルパスがわかるようにしたいと思いました。 よろしくお願いします。
それはインストールしたソフト次第ではないでしょうか?
インストールされているのか、exeが置いてあるだけなのか判断することの
できる情報は何かあるのでしょうか? レジストリ?
そのソフトは何でしょう?
ソフトは自分で作ったものを不特定のユーザーが「setup.exe」を使ってインストールしてあります。 だからレジストリから判断できるものと思いましたがその方法がわからないので質問しました。 よろしくお願いします。
パッチを当てる対象のソフトの作者か、パッチの作者に聞いて下さい。
それが一番確実です。
すいません。返信が交錯しました。
ディストリビューションウィザードで作ったsetup.exeでインストールしたと考えて良いのでしょうか?
セットアップウィザードを使って作成したSetup.exeによりインストールしたVBのアプリケーションの
実行ファイル名をレジストリエディタで検索したら下記のレジストリにパスらしきものがありました。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ST[n]UNST #[m]
(n,mは整数)
たとえば「ST1UNST #1」とかになっていました。
詳細は自分で確かめてください。
VB6のディストリビューションウィザードで作成したインストーラという仮定で
書いておきます。
VB6のディストリビューションウィザードで作成したインストーラのアンインストール情報は
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
の下にある "ST6UNST" で始まるキー名("ST6UNST #1"等)のレジストリキーの物が該当します。
その中で、DisplayName(これはアプリケーションの追加と削除の画面に出る名前と同じ)が自分の作ったアプリケーションの物であるか確認します。
# DisplayNameは同じソフトを複数個インストールした場合には、自動的に
# "(" & インストール先のフォルダ名 & ")" が追加されるので注意して下さい
次に、UninstallString キーの値を持ってきて、"st6unst.exe -n "の後に書いてあるのが、アンインストール情報ファイルのパスです。
アプリケーションのアンインストール情報が手に入りましたから、次は、このファイルを読み込んでパッチ当ての対象ファイルの場所を探して下さい。
(インストーラの構成によっては、アンインストール情報ファイルとインストールした実行ファイルが必ず同じになる事もありますので、その様な構成なら、アンインストール情報ファイルのパスをそのままソフトの入っているパスと見なしても良いかもしれません)
パッチを当てる対象のソフトも自作したものなら、ディストリビューションウィザードをカスタマイズして、インストール時にレジストリにパスを書き込むようにするか、あるいは初回起動時にレジストリにパスを保存しておくのが楽でいいのではないでしょうか。
アンインストール情報から取得しようとすると、Win32 API を使わなければなりませんから。
ツイート | ![]() |