Wix 安装 - 使用 Burn 来管理 UI 并显示与内置对话框相同的进度文本

标签 wix installation burn

我正在使用 Wix Burn 来安装项目的必备组件,我使用了 ManagedBootstrapperApplicationHost 来拥有自定义 UI,我一直在关注 Wix 源代码中提供的项目来创建我的托管 WPF 应用程序。 .

现在的问题是进度(消息)它显示与我们使用内置 UI 的进度消息不匹配 - WixStandardBootstrapperApplication.RtfLicense

基本上我使用的是 Wix 源代码中的以下代码

 private void ExecuteMsiMessage(object sender, ExecuteMsiMessageEventArgs e)
        {
            lock (this)
            {
                this.Message = e.Message;
                e.Result = this.root.Canceled ? Result.Cancel : Result.Ok;
            }
        }

我怎样才能有与普通进度对话框相同的显示..我是否必须从其他方法(如 PlanPackage 等)单独设置消息..

最佳答案

wixstdba 今天不显示操作数据进度消息。有人讨论在 wix-devs 邮件列表中添加该功能,但这还没有发生。只需将托管案例中的代码添加到 wixstdba(还没有)即可。

如果您只想按照 wixstdba 的方式显示正在安装的包的名称,那么您需要处理 Engine.OnCachePackageBegin()Engine.ExecutePackageBegin () 回调。这些回调会告诉您软件包何时开始下载并分别安装。作为这些回调参数的一部分,您将获得包 ID。

要获取友好的显示名称,您可以读取自动包含在 Bootstrapper Application.dll 旁边的 BootstrapperApplicationData.xml。其中的 WixPackageProperties 元素提供了有关 bundle 中的包的大量信息,包括 DisplayName

--- 抱歉,以下是对未提出问题的回答。 ---

当 Windows Installer 显示消息(例如操作数据或提示用户输入的请求)时,将调用 Engine.ExecuteMsiMessage() 回调。进度通过三个不同的回调提供。

  1. 您可以通过Engine.Progress回调获取总体进度。这是一个非常粗粒度的进度,基本上随着每个包的缓存和执行而移动。

  2. 您可以通过Engine.CacheAcquireProgress获取整体和单个包的进度。当下载/复制每个包并验证是否将其放置在包缓存中时,此进度就会移动。

  3. 您可以通过 Engine.ExecuteProgress 回调获取整体和单个包的进度。此进度随着每个软件包的安装/修复/卸载而移动。

因此,Engine.Progress 显示了总的整体进度,对于单个进度条来说非常易于使用,但进度条不会移动得很顺畅。您可以通过将 Engine.CacheAcquireProgress 添加到 Engine.ExecuteProgress 来获得更平滑的整体进度。注意:这将使您的进度条达到 200。

您可以在 src\Setup\WixBA\ProgressViewModel.cs 文件中了解 WixBA 如何处理所有这些。

关于Wix 安装 - 使用 Burn 来管理 UI 并显示与内置对话框相同的进度文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872126/

相关文章:

Wix Bootstrap : Sequence of Bootstrapper events

WiX 变量 bal :Overridable ="yes" being ignored

.net - 指定刻录 Bootstrap 先决条件

wix - 有没有办法加速 WiX 构建?

Wix:在显示失败屏幕之前调用了哪个 CustomAction?

visual-studio-2008 - Visual Studio 2008 安装项目 - 包括 .NET Framework 3.5

Python模块安装报错: command 'gcc' failed with exit status 1

wix - 我鄙视WIX,我要WIX死(真题: can't run custom action and delete a folder at the same time)

windows - Wix:安装 MSMQ 组件

android - 从计算机轻松安装 Android 应用程序?