.NET8 WinForm AutoUpdater.NET 自动更新笔记
摘要:.NET8 WinForm AutoUpdater.NET 自动更新笔记 一、核心说明 使用 NuGet 包:Autoupdater.NET.Official 对比规则:XML 中的 <version> 只与项目 程序集版本 对比,文件版本无需管 原理:自动下载 → 独立进程替换 →…
.NET8 WinForm AutoUpdater.NET 自动更新笔记
一、核心说明
- 使用 NuGet 包:Autoupdater.NET.Official
- 对比规则:XML 中的
<version>只与项目 程序集版本 对比,文件版本无需管 - 原理:自动下载 → 独立进程替换 → 自动重启,不会文件占用
二、项目配置(去除多余语言文件夹)
编辑 .csproj 文件,在 <PropertyGroup> 中添加:
<!-- 仅保留英文,无多余语言文件夹 -->
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<!-- 如需仅中文:zh-Hans -->
<!-- <SatelliteResourceLanguages>zh-Hans</SatelliteResourceLanguages> -->
<!-- 完全不要语言文件夹:none -->
<!-- <SatelliteResourceLanguages>none</SatelliteResourceLanguages> -->
三、代码调用
using AutoUpdaterDotNET;
private void Form1_Load(object sender, EventArgs e)
{
// 启动更新检查
AutoUpdater.Start("http://你的地址/update.xml");
}
四、update.xml 标准格式
<?xml version="1.0" encoding="utf-8"?>
<item>
<version>2.0.0.0</version> <!-- 新版本号,必须大于本地程序集版本 -->
<url>http://你的地址/Update.zip</url>
<changelog>1.修复BUG
2.优化界面
3.新增功能</changelog>
<mandatory>false</mandatory> <!-- 是否强制更新 -->
</item>
五、更新包 ZIP 打包规则(最关键)
- 进入发布目录:
bin\Release\net8.0-windows - 直接全选里面所有文件(exe、dll、config 等)
- 右键压缩为 ZIP,不要套文件夹
- 压缩包内结构必须是:
❌ 禁止:压缩外层文件夹,导致包内多一层目录Update.zip ├ xxx.exe ├ xxx.dll ├ xxx.deps.json └ ...
六、常见问题
- 主程序 exe 不替换
→ 99% 原因:ZIP 内多套了一层文件夹 - 出现大量语言文件夹
→ 用SatelliteResourceLanguages配置剔除 - 更新后版本不变
→ 检查 XML 版本号 > 程序集版本 - 文件占用无法替换
→ 该库自带独立更新程序,正常不会出现,出现则检查程序是否未正常退出