1

私のマネージャーは、msi がインストールされているマシンの構成ファイルのリストをくれました。

そして、彼は私に、それらがどのmsiから来たのかを見つけるように頼んだ. (その msi のロジックを記述する必要があるため)。

このファイルがどのmsiから来たかを見つける方法は?

orca を手動で開いて検索するのは、msi の数が多いため大変です。

他の代替アプローチはありますか?msiの作成にはWixを使用しています。

4

3 に答える 3

1

.config ファイルの MD5 ハッシュを取得し、一致するハッシュが見つかるまで、.msis の MsiFileHash テーブルをクエリします。

于 2013-03-26T16:55:43.303 に答える
1

MSI がファイルをインストールしたという保証はありません。そうは言っても、私がよく使った簡単なハックの 1 つは、ms-dos findstr コマンドです。

構成ファイルがインストールされているマシンで:

CD %WINDIR%\Installer
FINDSTR -i -m dark.exe *.msi *.msi

これにより、すべての MSI ファイルで大文字と小文字を区別しない検索が行われ、文字列 dark.exe が検索されます。次に、ORCA を使用して結果の MSI を検査し、ヒットが正確かどうか、およびそれがどの製品であるかを確認します。注意: MSI 名は短い 16 進ハッシュになります。これは、元の MSI ではなく、ストリップ/キャッシュされた MSI であるためです。

于 2013-03-26T20:03:50.227 に答える
0

マシン上でコードを実行できる場合は、Windows インストーラー API を使用するユーティリティが答えを提供します。このようなユーティリティは、VC++ で簡単に作成できます。

Windows インストーラー API の開始点はMsiEnumComponentsで、システムにインストールされているすべてのコンポーネントのコンポーネント コードを提供します。そこからMsiEnumClients、特定のコンポーネントを含むすべての製品の製品コードが提供されます。次にMsiGetComponentPath、コンポーネントのパスを取得するために使用できます。関心のあるパスである場合は、MsiGetProductInfoExINSTALLPROPERTY_INSTALLSOURCEを使用して、それをインストールした製品について調べます。INSTALLPROPERTY_PACKAGENAME.

複雑に聞こえますが、そうではありません。

于 2013-03-30T18:41:13.847 に答える