我尝试使用Burn连续运行多个MSI,而对于其中一个MSI,我需要显示UI,因为用户必须选择各种安装选项。
<MsiPackage
Id="SomeVisibleMsi"
Name="$(var.SomeOtherProject.TargetName)-x86.msi"
SourceFile="$(var.SomeOtherProject.TargetDir)\..\$(var.SomeOtherProject.TargetName)-x86.msi"
InstallCondition="NOT VersionNT64"
SuppressSignatureVerification="yes"
Permanent="no"
After="SomeOtherMsi_x86"
DisplayInternalUI="yes"
Vital="yes"
Visible="yes"
EnableFeatureSelection="yes">
</MsiPackage>
此安装程序还包含deferred
Custom Action
,如果在执行操作时发生某些错误,则会显示一条消息。
<CustomAction
Id="MyCustomAction"
BinaryKey="MyCustomAction.CA.dll"
DllEntry="DoSomething"
Execute="deferred"
Return="check"
Impersonate="no" />
自定义操作中的session.Message调用:
Record message = new Record();
message.FormatString = string.Format("MyCustomAction {0} - Uh oh, something went wrong.", DateTime.Now);
session.Message(InstallMessage.Warning | (InstallMessage)MessageButtons.OK, message);
在MSI上运行MSI时,该消息显示正确(阻止安装,直到按下OK)。但是当通过Burn启动MSI时,安装程序会在显示消息的呼叫时阻止,但消息框不会弹出。此时安装程序无响应,终止它的唯一方法是使用任务管理器。一旦终止,控制权将返回Burn Bootstrapper并显示消息框。
我是否在此处配置了错误,或者WiX中是否支持此功能(使用DisplayInternalUI =&#34时是session.Message;是&#34;)?