2016-04-26 13 views
0

ソフトウェアをインストールするたびに、Windows OSはインストーラ* .msiのバックアップコピーをC:\ Windows \ Installer \ locationに保存します。* .msiファイルのインストール場所の読み取り* .msiデータベース

だから私はすべてのMSIを反復処理しています「C:\ WINDOWS \ Installerの\」で存在するファイルを、私はリストを* .msiファイルとそのデフォルトの場所を持っていますマッピングリストを準備したい

言うことC:\ Windows \ Installer [プロダクトキー] \ 123xR23.msi 「123xR23.msi」はWinZipインストール用のバックアップファイルです。

ので、リストには、次のしているだろうエントリ "123xR23.msi"、 "C:\プログラムファイル(x86の)\ WinZipの"

:そして、インストーラは場所 "\プログラムファイル(x86の)\ WinZipのC" でのWinZipをインストールしています

私を助けてください。

ありがとうございました

+0

バックアップ.msiが見つかりますが、インストールされているかどうかはわかりません...例えばバックアップmsiファイル名ABC.msi XYZ.msiとしてインストールしてください。これは、ユーザーの変更パスとインストールディレクトリ、exe名...などです。完璧な場所を見つけることは不可能です。 –

+0

こんにちは、インストール時に正確なパスを知ることができません。したがって、ユーザーがデフォルト値を変更していない場合の予測を知りたいだけです。 – Wrox

+0

あなたが予測したい場合は、インストーラの名前を使用して、プログラムファイルのフォルダ内で見つけて、同じ –

答えて

0

まずは、なぜこれも必要ですか?

HKLM¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Installer¥UserData¥¥Products¥¥InstallerPropertiesのレジストリに既に存在する* .msiファイルのマッピングがあり、msiの値がLocalPackage

S-1-5-18は、ローカルシステムのセキュリティIDです。

ProductGUIDもちょっと変わっています。あなたのインストーラでは、

2F7DBBE6-8EBC-495C-9041-46A772F4E311 

ようなものが表示されますが、レジストリパスの製品GUIDがあり、この理由は間違いだが、私はそれが何であるかわからないこの

6EBBD7F2CBE8C5940914647A274F3E11 

のようになります。レジストリを見るときは、製品のGUIDをこの他の表現に変換するだけで済みます。

また、InstallLocationというレジストリキーがあり、msiパッケージのインストール場所を含める必要があります。これは必ずしも満たされているわけではありません。おそらく、インストールディレクトリはレジストリのどこかに格納されています。あなたがおそらく周りを見回す必要があるかどうかわかりません。


編集:インストールの各コンポーネントは、それがインストールされたパスが含まれているだけでなく、レジストリ内のGUIDによってエントリを取得するように見えます。これにより、上記のInstallLocationにリストされていない特定のMSIのインストール場所を見つけることができます。 Per Michealのコメントでは、私はMsiの関連機能を利用することをお勧めします()

+0

あなたは正しいです。私はレジストリからソフトウェアとアンインストーラの場所/アンインストーラパスのリストを持っています。私はどのソフトウェアがどこにインストールされているかを予測したいと思っています。たとえば、WinZipソフトウェアのインストール場所は "C:¥Program File¥WinZip"または "C:¥Program File(86)¥WinZip"となります。すべてのソフトウェアとそのインストールパスを.msiからリストします。 (Orcaを使って* .msiを検索したり読むことができます)私はそこからそれを予測することができません。 – Wrox

+0

C++(MsiEnumProducts/ExとMsiGetProductInfo参照)または[C#](http://stackoverflow.com/questions/3526449/how-to)でこの列挙を行う方法が完全にあるときに、GUIDを圧縮してトロールするのはなぜですか? - インストールされたソフトウェア製品のリスト) –

+0

@Micheal私はこれらのメソッドが存在するかどうかわからなかったので、]このことを発見するためのいくつかのウィンドウAPIがあります。この問題に対する最善の解決策だと考えるなら、答えを書くことを検討してください。 –

関連する問題