私はこれにいくつかの研究を行ってきたし、ここで私が思いついた解決策があります:
インストーラがインストールを終了すると、それはパスの下のため
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<Product ID>
をレジストリ内のノードを作成します32ビットOSでの32ビットインストール、または64ビットOSでの64ビットインストール、または
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<Product ID>
(64ビットOSでは32ビットインストール)
このノードには、実行可能ファイルがインストールされている場所へのパスを示すInstallLocationという値が含まれています。
インストーラの以前のバージョンではこのプロパティが設定されていないため、使用できません。しかし、インストーラはサービスを作成します。私はそのサービスのレジストリ内のノードへのパスを見つけました。そこから、ImagePath値の値を取得し、サービスの.EXEファイル名からパスを抽出することができます。
だから私のソリューションはにある:それはINSTALLLOCATION値を設定しないように、新しいインストーラを修正し
- 。
- 以前のバージョンからのアップグレード時にのみ、サービスのImagePathキーを使用してサービス&のレジストリノードを取得します。
- 以降のバージョンからアップグレードする場合は、Uninstallノードを取得してInstallLocationキーを使用します。
申し訳トニー
、私は新しい設定ファイルにコピーするためにそこからデータを読み取ることができるように、古い設定ファイルを検索し、インストールフォルダが必要であることを示すために忘れてしまいました。私はその情報を含めるために質問を編集しました。 –