Session.Message não mostrando mensagem pop-up na tela de instalação do produto

Nov 24 2020

Eu tenho uma classe 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;
     }
}

Aqui, minha IU não mostra nenhum pop-up correspondente a session.Message (InstallMessage.Error, record); Porém, nos logs do MSI, vejo a mensagem impressa: limite máximo atingido

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

Alguém pode ajudar porque não consigo ver esta mensagem na IU? Quero que seja exibido na IU para o usuário final durante o processo de instalação.

Respostas

SteinÅsmul Nov 25 2020 at 04:33

Mensagem de depuração ou lançamento : Não tenho certeza do que você realmente precisa - você está apenas depurando ou deseja mostrar algo interativamente durante a instalação para usuários finais reais?

Depuração : Se você estiver depurando: Anexe o depurador à sua ação personalizada depois de mostrar uma caixa de mensagem da ação personalizada como abaixo. Em seguida, você pode percorrer o código corretamente - vídeo para uma demonstração rápida (talvez isso já esteja funcionando para você):

using System.Windows.Forms;

<..>

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

Session.Message : Eu realmente não usei esse conceito (gosto de colocar informações no log em vez de exibir para os usuários finais), mas descobri que funcionou ( eliminado daqui -"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;
}