我正在编写一个托管自定义操作.我正在使用Windows Installer Xml中的DTF Framework将托管dll包装到可用的CA dll中.CA做了它应该做的事情,但我仍然遇到错误处理问题:
Dim record As New Record(1) ' Field 0 intentionally left blank ' Field 1 contains error number record(1) = 27533 session.Message(InstallMessage.Error, record)
上面的代码生成MSI日志中显示的以下文本:
MSI(c)(C4!C6)[13:15:08:749]:产品:TestMSI - 错误27533.区分大小写的密码不匹配.
错误号是指MSI中Error表中包含的代码.上面显示的消息是正确的.
我的问题是:为什么Windows Installer不会创建一个对话框来通知用户该错误?
MSI可以执行此操作,但您需要在messageType参数的某些额外值中使用OR.
例如.
Record record = new Record(); record.FormatString = string.Format("Something has gone wrong!"); session.Message( InstallMessage.Error | (InstallMessage) ( MessageBoxIcon.Error ) | (InstallMessage) MessageBoxButtons.OK, record );
有关详细信息,请参阅wix-users邮件列表中的此主题.