Session.Message nie wyświetla wyskakującego komunikatu na ekranie instalacji produktu
Mam klasę 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;
}
}
Tutaj mój interfejs użytkownika nie pokazuje żadnego wyskakującego okienka odpowiadającego session.Message (InstallMessage.Error, record); Jednak w logach MSI widzę wydrukowany komunikat: osiągnięto maksymalny limit
MSI (s) (30!F4) [21:26:05:047]: Product: MyApp -- This is an error!Max apps reached
Czy ktoś może pomóc, dlaczego nie widzę tej wiadomości w interfejsie użytkownika? Chcę, aby był wyświetlany w interfejsie użytkownika dla użytkownika końcowego podczas procesu instalacji.
Odpowiedzi
Komunikat dotyczący debugowania lub wydania : Nie wiesz, czego naprawdę potrzebujesz - czy debugujesz tylko, czy chcesz pokazać coś interaktywnie podczas instalacji dla rzeczywistych użytkowników końcowych?
Debugowanie : Jeśli debugujesz: Dołącz debuger do akcji niestandardowej po wyświetleniu okna komunikatu z akcji niestandardowej, jak poniżej. Następnie możesz poprawnie przejść przez kod - wideo do szybkiego demo (być może to już działa):
using System.Windows.Forms;
<..>
[CustomAction]
public static ActionResult TestCustomAction(Session session)
{
MessageBox.Show("Hello from TestCustomAction");
return ActionResult.Success;
}
Session.Message : Tak naprawdę nie korzystałem z tej koncepcji (lubię umieszczać informacje w dzienniku zamiast wyświetlać użytkownikom końcowym), ale okazało się, że zadziałało (wyszukane stąd -"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;
}