제품 설치 화면에 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;
}