Session.Messageが製品のインストール画面にポップアップメッセージを表示しない

Nov 24 2020

customActionsクラスがあります:

public static ActionResult Register(Session session)
{
     try
     {
         Do SOmething
     }
     catch (Exception ex)
      when (ExceptionManager.catchGenericExcetion(ex))
      {
         var responseMessage =ex.ResponseMessage;
         if (responseMessage.Contains("Maximum apps created"))
         {
             session.Log("maximum limit reached");
             using Record record = new Record(0);
             record[0] = "This is an error!Max apps reached";
             session.Message(InstallMessage.Error, record);
         }
                return ActionResult.Failure;
       }
       return ActionResult.Success;
     }
}

ここで、私のUIには、session.Message(InstallMessage.Error、record);に対応するポップアップが表示されません。ただし、MSIログに、次のメッセージが出力されていることがわかります。上限に達しました

MSI (s) (30!F4) [21:26:05:047]: Product: MyApp -- This is an error!Max apps reached

UIでこのメッセージが表示されない理由を誰かが助けてくれますか?インストールプロセス中にエンドユーザーのUIに表示されるようにしたい。

回答

SteinÅsmul Nov 25 2020 at 04:33

デバッグまたはリリースメッセージ:本当に必要なものがわからない-デバッグしているだけですか、それとも実際のエンドユーザーに対してインストール中にインタラクティブに何かを表示したいですか?

デバッグデバッグしている場合:以下のようなカスタムアクションからのメッセージボックスを表示した後、デバッガーをカスタムアクションにアタッチします。次に、コードを適切にステップ実行できます-クイックデモ用のビデオ(おそらくこれはすでに機能しています):

using System.Windows.Forms;

<..>

[CustomAction]
public static ActionResult TestCustomAction(Session session)
{
   MessageBox.Show("Hello from TestCustomAction");
   return ActionResult.Success;
}

Session.Message:私はこの概念を実際には使用していません(エンドユーザーに表示する代わりにログに情報を入れるのが好きです)が、これは機能していることがわかりました(ここから削除されました-"prepared search"):

[CustomAction]
public static ActionResult TestCustomAction(Session session)
{
    Record record = new Record(0);
    record[0] = "This is an error! Max apps reached";
       
    session.Message(InstallMessage.User | (InstallMessage)MessageButtons.OK | (InstallMessage)MessageIcon.Information, record);

    return ActionResult.Success;
}