3

いくつかの製品をインストールし、サイレント モードで他の製品をアンインストールするための小さなアプリを作成しています。
すべての製品には MSI ファイルがあり、他には何もありません。私のアプリ マニフェストには、管理者権限で実行する必要があると記載されています。適切な引数を指定してタスク (一連のコード)
を実行するのは非常に簡単で、すべて正常に動作しています。 とにかく、一部のパッケージは完了するのに時間がかかり、一部の古い PC ユーザーはバックグラウンドでまだ何かが起こっているのか、それともハングしているのかを尋ねています。 進行状況を「キャッチ」して、たとえばアプリの進行状況バーを更新することは可能ですか? クレイジーに聞こえますが、プロのインストーラーの中には、外部の msi パッケージを実行してこのように動作するものがあると確信しています。msiexec

msiexec
それで、それは可能ですか?C# でできることはありますか、それとも私が持っていない多くの知識を必要とする非常に難しい作業ですか?

注意: "/qb"param を使用できることはわかっていますが、一部のパッケージが正しい動作をしていないため、使用したくありません。

4

2 に答える 2

5

進行状況を監視したい場合は、おそらく Windows Installer API を直接使用する必要があります。

http://www.codeproject.com/Articles/5773/Wrapping-the-Windows-Installer-2-0-API

この CodeProject 記事にはサンプルが示されていますが、Microsoft は MSDN の関数に関する情報をほとんど持っていません。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa370384(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/aa368786(v=vs.85).aspx

于 2012-05-30T07:50:20.293 に答える
-1

これの代わりに

msiexec の進行状況を「キャッチ」して、たとえばアプリの進行状況バーを更新することは可能ですか?

progresBarこのようなタスクが完了するまで実行し続ける法線を持つことができます

     myProgressBar.Style = ProgressBarStyle.Marquee;

Marqueeからもmsdn.microsoft.comをチェックしてください

ここに画像の説明を入力

msiexec1.実行中かどうかを確認する

2.スタートmyProgressBar.Style = ProgressBarStyle.Marquee;

3.走り続けるここに画像の説明を入力

4.完了したら、 progresBarmsiexecを非表示にします

于 2012-05-30T07:56:23.943 に答える