如何为MAUI Windows应用配置启动时自动更新?
MAUI Windows 应用自动更新可行方案
方案一:修复官方文件夹发布的安装源配置(解决你之前的失效问题)
你之前按官方文档设置没生效,大概率是配置细节没做到位,按下面步骤重新配置:
- 发布1.0.1版本时,在Visual Studio发布配置里必须勾选「生成应用安装程序文件(.appinstaller)」
- 编辑生成的
AppInstaller.xml,重点检查这几个地方:- 安装源URI格式:本地路径要写成
file:///D:/MAUI/(三个斜杠开头),服务器路径要确保末尾带斜杠,比如https://www.example.com/MAUI/ - 版本匹配:
AppInstaller.xml里的Version要和1.0.1安装包的版本号完全一致,服务器上必须同时放好1.0.1的.msix、Package.xml和更新后的AppInstaller.xml - 客户端安装方式:用户必须通过
.appinstaller文件安装应用,不能直接双击.msix——只有通过安装程序文件部署,系统才会监听更新源
- 安装源URI格式:本地路径要写成
- 另外,服务器要确保这些文件能被客户端正常访问,不要有防火墙或权限拦截
方案二:用MAUI社区工具包的更新组件
这是社区维护的成熟方案,比官方配置更灵活:
- 先安装NuGet包:
CommunityToolkit.Maui.Updates - 在
MauiProgram.cs里注册服务:builder.UseMauiApp<App>() .UseMauiCommunityToolkitUpdates(); - 在应用启动的页面(比如
MainPage)的OnAppearing方法里加更新检查逻辑:var updateManager = ServiceProvider.GetRequiredService<IUpdateManager>(); var updateInfo = await updateManager.CheckForUpdatesAsync(); if (updateInfo.IsUpdateAvailable) { // 这里可以加个弹窗提示用户有更新 await updateManager.DownloadAndInstallUpdateAsync(); } - 你需要在服务器上放一个版本清单文件(比如
version.json),里面写清楚最新版本号、安装包下载链接,组件会自动对比本地版本和清单版本
方案三:自定义更新逻辑(完全可控)
如果上面的方案都不符合你的需求,可以自己写一套:
- 在服务器上做个简单的接口,返回最新版本信息,比如:
{ "LatestVersion": "1.0.1", "DownloadUrl": "https://www.example.com/MAUI/MyApp.msix" } - 应用启动时,调用这个接口,获取最新版本号,和本地版本对比(用
AppInfo.Current.VersionString拿本地版本) - 如果有更新,提示用户下载安装包,下载完成后启动安装进程:
var process = new Process(); process.StartInfo.FileName = "msiexec.exe"; // /quiet是静默安装,去掉的话会弹出安装界面 process.StartInfo.Arguments = $"/i \"{下载好的文件路径}\" /quiet"; process.Start(); - 额外处理:可以加下载进度条、安装完成后自动重启应用的逻辑,注意安装可能需要管理员权限,要提前提示用户
内容的提问来源于stack exchange,提问作者Sanket
相关产品推荐
相关产品推荐

