Session.Message n'affiche pas de message contextuel sur l'écran d'installation du produit
J'ai une 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;
}
}
Ici, mon interface utilisateur n'affiche aucune fenêtre contextuelle correspondant à session.Message (InstallMessage.Error, record); Cependant, dans les journaux MSI, je peux voir le message imprimé: limite maximale atteinte
MSI (s) (30!F4) [21:26:05:047]: Product: MyApp -- This is an error!Max apps reached
Quelqu'un peut-il expliquer pourquoi je ne peux pas voir ce message sur l'interface utilisateur? Je veux qu'il soit affiché sur l'interface utilisateur pour l'utilisateur final pendant le processus d'installation.
Réponses
Message de débogage ou de publication : Vous n'êtes pas sûr de ce dont vous avez vraiment besoin - êtes-vous en train de déboguer ou souhaitez-vous afficher quelque chose de manière interactive lors de l'installation pour les utilisateurs finaux réels?
Débogage : si vous déboguez: attachez le débogueur à votre action personnalisée après avoir affiché une boîte de message de l'action personnalisée comme ci-dessous. Ensuite, vous pouvez parcourir le code correctement - vidéo pour une démonstration rapide (peut-être que cela fonctionne déjà pour vous):
using System.Windows.Forms;
<..>
[CustomAction]
public static ActionResult TestCustomAction(Session session)
{
MessageBox.Show("Hello from TestCustomAction");
return ActionResult.Success;
}
Session.Message : Je n'ai pas vraiment utilisé ce concept (j'aime mettre des informations dans le journal au lieu de les afficher aux utilisateurs finaux), mais j'ai trouvé que cela fonctionnait ( récupéré à partir d'ici -"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;
}