WiX:在CustomAction期间动态更改状态文本

Roy*_*nik 8 wix wix3.5

我在wix安装程序中有一个非常冗长的CustomAction,我希望能够在操作运行时更改"Status:..."文本,以查看是否有进度并更新其内部状态.我知道如何设置自定义操作的progresstext - 但我想要的是在自定义操作运行期间动态更改进度文本.

Chr*_*ter 11

延迟自定义操作可以调用MsiProcessMessage函数.然后,您可以使用INSTALLMESSAGE_ACTIONSTART,INSTALLMESSAGE_ACTIONDATA和INSTALLMESSAGE_PROGRESS将消息发布到UI.

另一种可能性是将自定义操作分解为较小的自定义操作,并使用ProgressText(ActionText表)来描述不同的安装阶段.(使每个CA都有一个责任.)

有时,当CA做太多工作时,很难正确规划回滚.

获取延迟执行自定义操作的上下文信息

MsiProcessMessage函数

使用C#/ DTF,它看起来像:

    using (Record record = new Record(0))
    {
        record.SetString(0, "foo");
        session.Message(InstallMessage.ActionData, record);
    }
Run Code Online (Sandbox Code Playgroud)

using语句处理记录以释放底层的MSI句柄.记录中的字段数以及设置数据的方式取决于ActionText表中定义的模板.