msi を対話的にサイレントにインストールするにはどうすればよいですか?(データを進めてキャンセルする)
-
11-09-2019 - |
質問
何らかの理由で、当社は独自のインストール GUI を備えた製品を提供しています。つまり、msi インストールはバックグラウンドでサイレントに実行されます。
MSI API「MsiInstallProduct」を使用すると、製品をサイレント インストールできますが、このインストールの進行状況データを取得する方法と、インストールをキャンセルする方法がわかりません。
何かアイデアがある人はいますか?
解決
ここであなたが参照している何に見えるサンプルプロジェクトは次のとおりです。 http://www.codeproject.com/KB/cs/msiinterop.aspxする
他のヒント
2018 年 6 月の更新:以下のツールはダウンロードできなくなりましたが、Wayback machine 経由で見つけました。このツールはフリーウェアであるため、リンクすることは問題なく、合法であると思います。以下のリンクを更新しました。
アップデート: Wise のこのツールは残念ながらもうダウンロードできません. 。配布して良いのかも分かりません。これは、メインの Wise Package Studio スイートの一部として配布されている無料ツールのようですが、オープンソースではないと思います。オープンソースツールとしてリリースしてくれればいいのにと思います。
Wise パッケージ製品は、いくつかの理由により販売中止となりました。 法的問題.
MSI API 経由で進行状況を取得できると思いますが、私だったら、インストールを呼び出した後、MSI 自体から進行状況バーを表示するだけです。 msiexec.exe.
MSI は、いくつかの異なるインストール レベル (フル、完全サイレント、基本 GUI、縮小 GUI など) をサポートしています。あなたの場合、基本的な UI が必要なようです。これにより、キャンセル ボタンを非表示にしたり、必要に応じて完了モーダル ダイアログを表示したりできるプログレス バーが表示されます。
プログレスバーを使用して、キャンセルボタンや最後にモーダルダイアログを表示せずにサイレントインストールします。
msiexec.exe /I "Test.msi" /QB-!
これらの愚かな msiexec コマンド ラインを手動で構築する必要を避けるには、 msiコマンドラインビルダーツール ワイズより: http://www2.wise.com/filelib/WICLB.exe (ウェイバックマシンから復活).
ダウンロードを実行してください ウイルストータル.com 安全のために。
関連している:
あなたは(後者はよりよいですが、高いMSIのバージョン要件を持っている)MsiInstallProduct前MsiSetExternalUIまたはMsiSetExternalUIRecordを使用して外部のUIハンドラを指定する必要があります。指定した機能は、Windowsインストーラを使用して、処理したいメッセージごとに呼び出されます。これは、あなたのデータを与えるだろう、とチャンスをキャンセルすることを教え応答します。あなたはMSI 4.5以降が必要ならば、あなたは、ブートストラップを必要としない埋め込まれた外部のUIハンドラDLLを使用することができます。