(注:この応答のバリエーションを、あなたが言及した無人インストールの質問のmsiパラメーターの検出に投稿しました。)
lessmsiがあります。これは、GUIを使用して手動で調査する場合に、ここで確実に機能する優れたツールです。
次のコマンドを試すことができます。
lessmsi l -tProperty <msi_name>
...しかし、上記があなたが探しているすべてのものを持っている可能性は低いです。
可能なすべてのプロパティを取得することを基本的に保証する1つの方法は、MSIファイルを使用してインストール、修復、またはアンインストールを実際に実行し、JonHeeseの回答に記載されているようにプロセスをログに記録することです。
ログファイルでふるいにかけるテキストを少なくしたい場合は、プロパティのみをログに記録するようにログ設定を設定できます。
<msi_name> /lp! <msi_property_logfile>
また
msiexec /lp! <msi_property_logfile> /i <msi_name>
私は「抽出」によってインストール/削除/修復の必要性を回避する方法を好みます。この方法がlessmsiに勝る利点は、サードパーティのユーティリティ(つまりlessmsi)を必要とせず、インストールをいじる必要がないことです。プログラムを実際にインストールするのに十分なディスク容量が必要です(安全のために、おそらく追加の容量が必要です)。次に、次のようなことを行うことができます。
msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>
は存在しないディレクトリを指す可能性があることに注意してください<absolute_path_to_extract_to>
(コマンドは必要なディレクトリを作成するか、失敗します)。
何らかの理由でインストールUIが嫌いな場合は、/qr
オプションを追加できます。これにより、プロパティのログ記録プロセスを損なうことなくUIが「削減」され、場合によっては削除されます。ただし、注意が必要です。縮小されたUI(つまり/qb
|/passive
または/qn
| /quiet
)よりも「低く」なると、<msi_property_logfile>
一部のプロパティが失われる可能性があります。
次のコマンドは、あるディレクトリ内の各MSIファイルのプロパティログファイルを効果的に生成できます(サブディレクトリを再帰しないのDIR /B
ではなく使用します。抽出されたファイルを保持する場合は、コマンドを削除します)。DIR /B/S
RD
cmd /C "FOR /F delims^=^| %G IN ('DIR /B/S "%DirToSearch%\*.msi"') DO msiexec /a "%G" /qr /lp! "%~nG_log.txt" TARGETDIR="%~dpnG_extract" && RD /S/Q "%~dpnG_extract""
何らかの理由でPowerShellで実行する場合は、代わりに次のコマンドを使用してください。
cmd /C "FOR /F delims^=^| %G IN ('DIR /B/S ""%DirToSearch%\*.msi""') DO msiexec /a ""%G"" /qr /lp! ""%~nG_log.txt"" TARGETDIR=""%~dpnG_extract"" && RD /S/Q ""%~dpnG_extract"""
プロセスが終了したら、ログファイルを開いて、JonHeeseが述べたようにProperty(S):
/で始まる行をメモします。Property(C):
一般的に、インストール用に設定できるパラメーター/プロパティはすべて大文字で記録されます。たとえば、インストールがすべてのユーザー向けにALLUSERS
なるように設定できます。ALLUSERS=1