9

MSIとEXEを実行できる自動アップデーターを作成しています。これらのMSI/EXEは私自身のものではありません。無人/サイレントインストールオプションが存在する場合はそれを使用したいと思います。MSI / EXEに何らかの無人インストールサポートがあるかどうかを判断し、サポートしている場合は、実行時にファイルに渡すことができるように正しい引数を取得する方法はありますか?デフォルトでは「/quiet」がサイレントインストールオプションですが、このオプションをカスタマイズした可能性のあるEXEやMSIについても興味があります。

この質問(無人インストールのmsiパラメーターを検出する)も同様ですが、回答のリンクが壊れており、回答から何をするかわかりません。

ありがとう。

4

3 に答える 3

39

ロギングをオンにしてインストーラーを実行するだけで、特定のMSIが受け入れる可能性のあるすべてのパラメーターが表示されます。

例えば: msiexec /log logfile.txt /i installer.msi

インストーラー全体を実行すると、logfile.txtに、通過可能なパラメーターが「Property(S)」または「Property(C)」として表示され、名前はすべて大文字で示されます。

ソース: http: //www.codeproject.com/Articles/16767/How-to-Pass-Command-Line-Arguments-to-MSI-Installe

于 2012-03-15T22:50:35.870 に答える
5

MSIの場合、パラメータは標準です。オプションのリストを取得するか、MSDNのドキュメントをmsiexec /?表示できます。

サポートしているオプションがある場合、任意のEXEのオプションを検出する方法はありません。ベンダーからドキュメントを探すか、切り替えてみてください/?…</ p>

于 2011-09-05T07:57:32.680 に答える
2

:この応答のバリエーションを、あなたが言及した無人インストールの質問の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/SRD

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

于 2018-09-23T03:17:01.837 に答える