You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7下ClickOnce应用跳过更新后不再提示,需每次启动检测更新

ClickOnce更新提示及.NET 7适配问题解决

一、解决跳过更新后不再提示的问题

ClickOnce默认会缓存用户跳过的更新记录,导致后续启动不再触发同版本的更新提示。要实现每次启动都强制检查服务器端的最新版本,只需修改CheckForDetailedUpdate的调用方式:将ad.CheckForDetailedUpdate()改为ad.CheckForDetailedUpdate(true),参数true表示绕过本地缓存,直接向服务器请求最新版本信息。

二、适配.NET 7的WinForms初始化代码

在.NET 7及后续版本的WinForms项目中,原有的Application.EnableVisualStyles()和Application.SetCompatibleTextRenderingDefault(false)已被整合到统一的初始化方法中,无需手动调用。Program.cs的顶级语句结构应调整为:

ApplicationConfiguration.Initialize();
Application.Run(new YourMainForm());

三、修改后的完整更新检测代码

结合上述调整,适配.NET 7的更新检测代码如下:

using System.Deployment.Application;
using System.Windows.Forms;

// 建议放在主窗体Load事件或Program.cs启动后执行
if (ApplicationDeployment.IsNetworkDeployed)
{
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

    try
    {
        // 传入true强制跳过本地缓存,每次都检查服务器最新版本
        UpdateCheckInfo info = ad.CheckForDetailedUpdate(true);

        if (info.UpdateAvailable)
        {
            bool doUpdate = true;

            if (!info.IsUpdateRequired)
            {
                DialogResult dr = MessageBox.Show("有新版本可用,是否立即更新?", "更新提示", MessageBoxButtons.OKCancel);
                if (dr != DialogResult.OK)
                {
                    doUpdate = false;
                }
            }
            else
            {
                MessageBox.Show("有强制更新可用,应用将立即更新并重启。", "更新提示", MessageBoxButtons.OK);
            }

            if (doUpdate)
            {
                ad.Update();
                Application.Restart();
            }
        }
    }
    catch (DeploymentDownloadException dde)
    {
        MessageBox.Show("更新下载失败,请检查网络连接后重试。");
    }
    catch (InvalidOperationException)
    {
        MessageBox.Show("当前应用未通过ClickOnce部署,无法检测更新。");
    }
}

注意事项

  • 确保项目已启用ClickOnce发布,且发布配置中的更新位置指向正确的服务器路径。
  • 若需避免更新检测阻塞UI,可将检测逻辑放入异步方法中执行。

内容的提问来源于stack exchange,提问作者Hasan Danacı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:44:51