MSI:在UI安装阶段显示消息框

时间:2016-12-14 11:20:11

标签: wix installshield dtf

我正在更新基于InstallShield的安装程序。我添加了一个新的托管自定义操作,用C#编写,并使用Wix DTF打包。 正确调用操作,并执行必要的操作。

我遇到的问题是向用户显示错误消息。

方法1:MsiProcessMessage

从我读过的文章中,我了解MsiProcessMessage是正确的方法,但是这种方法在UI序列中不起作用(在设置实际开始复制文件和修改系统之前)。在安装顺序中,此方法有效。我使用的代码如下:

Record record = new Record() { FormatString = "Password is not valid for this user." };
session.Message(
    InstallMessage.Error | (InstallMessage)(MessageBoxIcon.Error) | (InstallMessage)MessageBoxButtons.OK,
    record
);

是否真的无法使用MsiProcessMessage在UI序列中显示错误消息(立即执行)?

方法2:MessageBox.Show

使用Windows.Forms可以显示消息框。但是,消息显示在安装向导的后台,并在Windows任务栏中显示单独的图标。

有没有办法获得安装向导的窗口句柄,这样可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

你没有提到这一点,但我猜你是在DoAction ControlEvent之外调用你的自定义动作,发布了点击按钮之类的东西。在封面下方,这与在InstallUISequence中安排它非常不同。 MsiProcessMessage doesn't work from DoAction

为了与Windows Installer UI体验正确集成,您应该避免使用MessageBox.Show(您的方法2)。更好的集成选项包括:

所有这三个都涉及编辑项目的UI,但方式不同。