自定义clickonce下载屏幕

2024-03-11

众所周知,当我们双击 clickonce 安装的应用程序时,会弹出一个“clickonce 屏幕”,显示“正在验证系统要求”。然后,如果服务器中有更新的版本,则单击更新本地安装的版本,并启动应用程序。有什么方法可以定制整个过程。这并不意味着我想对安装/升级部分做一些事情,我只是想改变整个事情的 GUI。 像屏幕上显示“正在启动应用程序......”以及不确定的进度条之类的东西就可以了。该屏幕应该取代所有 clickonce 弹出窗口,但允许 clickonce 在后台执行实际操作。 我的意思是某种启动屏幕,但它覆盖了 clickonce 屏幕的 GUI... 有什么建议么???


可以通过使用以编程方式更新应用程序ApplicationDeployment班级。但在这种情况下,您应该实现更新逻辑,根据问题的不同,更新逻辑可能很简单,也可能很复杂。

如果您以编程方式破解和下载更新,您可以取消选中“发布”窗口中的更新选项,即应用程序不会由 ClickOnce 更新,而是会执行您编写的所有更新逻辑。在代码中,您可以添加启动屏幕并同步更新,或者添加一些“动态”,并使用以下提供的数据让用户了解更新的进度CheckForDetailedUpdate method.

小样本:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        bool isUpdated = tryUpdateApplication();

        if (isUpdated)
        {
            Application.Restart();
        }
        else
        {
            Application.Run(new MainForm());
        }
    }

    static bool tryUpdateApplication()
    {
        bool result = false;

        try
        {
            UpdateCheckInfo info = ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate();

            if (info.UpdateAvailable)
            {
                //Show what you want to show
                ApplicationDeployment.CurrentDeployment.Update();
                //Hide what you showed
                result = true;
            }
        }
        catch (Exception ex) //better to catch the specific exceptions
        {
            //some exception handling logic
        }

        return result;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义clickonce下载屏幕 的相关文章

随机推荐

  • 避免基于作为模板参数的函数的返回值进行分支

    假设以下策略类负责算法的一个方面 struct VoidF static void f some code that has side effects struct BoolF static bool f bool res some com
  • 我们可以通过编程方式打开或关闭设备吗?

    我知道有一种方法可以重新启动设备 它立即显示结果 但我的需求是 我希望当我在教室时我的手机自动关闭 假设在下午 2 00 当我结束课程时 我的手机将自动开机 假设在下午 5 00 所以我正在寻找可以自动打开 关闭设备的方法 这可能吗 如果是
  • 尝试 vagrant up 时阻止 windows_hyperv_admin 出错

    我在我的环境中使用 Vagrant 但遇到了一个小问题 如下所示 kk Lenovo MINGW64 sravz vm1 vagrant up C HashiCorp Vagrant embedded gems gems vagrant 1
  • 如何在编辑项模板中找到控件?

    我的表单上有一个 gridview 并有一些模板字段 其中之一是
  • 如何在 Qt 子目录项目中设置构建顺序

    我有一个包含 5 6 个库和一个可执行文件的项目 可执行文件依赖于库 并且某些库依赖于其他库 如何指定构建顺序 以便在需要依赖项之前构建依赖项 Update 2021 年 2 月 2018 年 10 月 Qt 决定弃用 Qbs https
  • 与表无关的外键?

    首先 我确实读过这个 StackOverflow 问题 https stackoverflow com questions 294969 sql one foreign key references primary key in one o
  • PKCS12 到 JKS 转换失败

    我正在尝试使用以下命令将 PKCS12 格式文件转换为 JKS 密钥库 keytool v importkeystore trustcacerts srckeystore cert p12 srcstoretype PKCS12 destk
  • emacs isearch 整个缓冲区的延迟突出显示

    isearch 的默认行为是突出显示当前窗口中匹配的世界 我怎样才能改变这种行为 让它突出显示整个当前缓冲区中匹配的世界 也许您正在寻找高亮 命令 以便在执行其他操作时在整个缓冲区中突出显示内容 M shC h lists Global B
  • KeyListener 在 JPanel 中不起作用?

    我正在尝试在 java 类中使用 KeyListener 但由于某些奇怪的原因它不接受输入 我最近刚刚遇到这个问题 在它运行完美之前 但发生了一些变化 现在它不接受任何输入 这是我的代码的摘录 public class SquarePane
  • 嵌套文档 MongoDB 中的求和

    我试图对一系列文档中的一些值求和 但没有成功 这是文件 db Cuentas find pretty Agno 2013 Egresos Fecha 28 01 2013 Monto 150000 Detalle Pago Nokia Lu
  • 在 Microsoft Excel 中将值向上舍入到最低值

    我正在 Excel 中编写一个公式 其中我要潜水 2 个数字 并且我不需要十进制值 我尝试使用 ROUND 5 10 0 但它的舍入范围为 0 5 到 1 但我的要求是 0 0 99 应该评估为0 同样 2 2 990 应评估为 2 E g
  • android RadioButton按钮可绘制重力

    我正在动态生成 RadioButtons RadioButton radioButton new RadioButton context LayoutParams layoutParams new LayoutParams radioWid
  • 使用函数的返回类型指定类型提示

    我想将变量的类型暗示为特定函数的返回类型 无需手动指定函数的返回类型是什么 我无法以可用作另一个变量提示的方式从函数中提取返回值类型 def dostuff gt T StuffContainer namedtuple StuffConta
  • 为什么 SortedList.add() 会抛出 UnsupportedOperationException?

    非常简单的代码 import javafx collections FXCollections import javafx collections ObservableList import javafx collections trans
  • 在 Firebase 中的 SafetyNet 的应用程序检查中取消注册应用程序

    我已在 firebase 控制台中的应用程序检查中的 safetyNet 中注册了应用程序 但是现在我必须取消注册 将应用程序添加到 safetyNet 中或禁用 safetyNet 我该怎么做 这有点棘手且不直观 因为您无法删除产品设置中
  • 在 Laravel 中使用同步在数据透视表中分离

    我发生了一些奇怪的事情 我无法理解 想知道是否有人可以帮助我弄清楚发生了什么事 我有 2 个表 评估者 流程 和一个数据透视表 process assessor 我正在尝试使用评估者的流程更新数据透视表 因此我有一个表单 在提交时会传递给此
  • Devise for Rails 4:为什么要将用户配置文件数据保存在与 Devise 用户模型表不同的单独表中

    我正在使用 devise 根据文档建议 我有一个用户模型 用于 devise 和一个用于用户数据 例如姓名 工作等 的配置文件模型 为什么仅将所有这些属性存储在设计用户模型表 只是好奇 如果 gem 更改了表定义 则向外部源指定的表添加字段
  • URL 缩短工具如何保证 URL 不会过期? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 stackoverflow 上以及互联网上的其他地方都有很多关于 URL 缩短器的问题 例如 如何编写 URL 缩短器代码 https stackov
  • 本地删除文件后SVN提交错误

    我有一个使用 Netbeans 6 1 构建的项目 并且使用 SVN 我删除了本地计算机上的一些文件 然后尝试将更改提交到 SVN 存储库 提交失败并显示错误消息 C path to project myfile 的条目没有 URL 其中
  • 自定义clickonce下载屏幕

    众所周知 当我们双击 clickonce 安装的应用程序时 会弹出一个 clickonce 屏幕 显示 正在验证系统要求 然后 如果服务器中有更新的版本 则单击更新本地安装的版本 并启动应用程序 有什么方法可以定制整个过程 这并不意味着我想