gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:55:05 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com