8

Wix インストーラーにかなり長い CustomAction があり、操作の実行中に「Status: ...」テキストを変更して、進行状況を確認し、内部ステータスを更新できるようにしたいと考えています。カスタム アクションの進行状況テキストを設定する方法は知っていますが、カスタム アクションの実行中に進行状況テキストを動的に変更したいのです。

4

3 に答える 3

11

遅延カスタムアクションは、MsiProcessMessage関数を呼び出すことができます。次に、INSTALLMESSAGE_ACTIONSTART、INSTALLMESSAGE_ACTIONDATA、およびINSTALLMESSAGE_PROGRESSを使用して、UIまでメッセージを公開できます。

もう1つの可能性は、カスタムアクションをより小さなカスタムアクションに分割し、ProgressText(ActionTextテーブル)を使用してインストールのさまざまなフェーズを記述することです。(各CAに単一の責任を持たせます。)

CAが多くの作業を行うと、ロールバックを正しく計画することが難しい場合があります。

遅延実行カスタムアクションのコンテキスト情報の取得

MsiProcessMessage関数

C#/ DTFを使用すると、次のようになります。

    using (Record record = new Record(0))
    {
        record.SetString(0, "foo");
        session.Message(InstallMessage.ActionData, record);
    }

usingステートメントは、レコードを破棄して、基になるMSIハンドルを解放します。レコード内のフィールドの数とデータの設定方法は、ActionTextテーブルで定義されているテンプレートによって異なります。

于 2012-07-30T15:36:39.520 に答える