제품 설치 화면에 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 : 정말이 개념을 (I 최종 사용자에게 대신 디스플레이의 로그에 정보를 넣어 같은) 사용하지 않은,하지만 난이 일을 발견 ( 여기에서 소기 -"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;
}