2011-07-05 11 views
0

CANCELボタンがデフォルトのインストーラUIでどのように機能しますか?MSIのインストール:キャンセルは機能していません

[キャンセル]ボタンをクリックすると、「はい」または「いいえ」オプションを使用して「設定をキャンセルしますか?」というダイアログボックスが表示されることがあります。

場合によっては、このポップアップが表示されず、インストールが続行されます。

第1フェーズの終了時に[キャンセル]ボタンをクリックすると、この問題が発生します。ステータスメッセージは「新しいファイルをコピーする」です。

"新しいファイルをコピーする"は遅延アクションです。このメッセージはどのように第1段階で表示されますか?

答えて

1

実際には「新しいファイルのコピー」アクションが実行されているのですか、それとも進行状況の更新を送信しないアクションですか?それはカスタムアクションだ場合、それは2つのうちのいずれかないことに注意してください:

  • がMsiProcessMessage(または同等)を呼び出すことはありません
  • はMsiProcessMessageのリターンコードに着目し、ハンドルが適切に

をキャンセルアクションがMsiProcessMessageを呼び出さない場合、Windowsインストーラはアクションのキャンセルを処理しますが、アクションの途中ではキャンセルできません。アクションによってMsiProcessMessage(特定の値がeMessageType)が呼び出された場合、Windowsインストーラはそのアクションがキャンセルを処理し、アクションがERROR_INSTALL_USEREXITを返すか、Windowsインストーラが混乱するとみなします。

+0

ほとんどのカスタムアクションは、実際のタスクを開始する前にMsiProcessMessageを呼び出してステータスを設定します。戻り値の型が正しく処理されません。 – Rajeshaz09

0

CANCELボタンがデフォルトのインストーラUIでどのように機能しますか? WindowsForms .NETのBackgroundWorkerのような複数のスレッドを使用しています。 UI用の1つのスレッドとインストール用のスレッドは、キャンセル(UI)をクリックすると、特定の時点で他のスレッド(インストール)を停止しようとします。

+0

私に何か不足していますか?この問題は、最初のフェーズの最後にキャンセルボタンをクリックした場合にのみ発生します。ここでは、ステータスメッセージがuiで「新しいファイルをコピーしています」と表示されます。 – Rajeshaz09

+0

これが見つかりました。これはhttp://en.wikipedia.org/wiki/Windows_Installer – dpp

0

MSIのインストールプロセスの実行順序は、2つのフェーズで実行されます:

  1. 最初に実行する必要があるすべてのアクションが一時的なインストールスクリプトで書かれています。これは即時で、キャンセルポップアップが常に表示されます。
  2. 第2フェーズでは、そのスクリプトが実行され、実際にインストールが実行されます。それは延期として実行されます。キャンセルを押すタイミングによっては、ポップアップが表示される場合と表示されない場合があります。

たとえば、コミットアクションの実行開始時にインストールをキャンセルすることはできません。

+0

に役立ちます。この問題は第1段階で発生します。 2番目の段階でキャンセルボタンをクリックすると、キャンセルポップアップが表示されます。しかし、最初の段階の終わりにのみ問題。重要な注意点は、第2段階でキャンセルボタンを直接クリックすると、ポップアップが表示されることです。しかし、私は最初の段階の終わりをクリックすると、私は見ることができませんでした......そして、私が2段階でもう一度試してみると、私は冷たいポップアップが表示されません(さらにキャンセルボタンのクリックをスキップ)。 – Rajeshaz09

関連する問題