UWP AppInstaller发布后更新设置复原,如何禁用启动时更新?
UWP AppInstaller 更新控制问题解答
1. 禁用应用启动时的自动更新检查
要彻底禁用启动时的更新检查,需完成两个关键调整:
- 升级AppInstaller schema版本:你当前使用的
http://schemas.microsoft.com/appx/appinstaller/2017/2版本不支持直接禁用OnLaunch检查,需升级到2019/2或更高版本(如2021/2)。 - 设置OnLaunch的Enabled属性为false:在
<UpdateSettings>节点中替换原有<OnLaunch>元素,明确禁用启动检查。
修改后的UpdateSettings代码片段:
<UpdateSettings> <OnLaunch Enabled="false" /> </UpdateSettings>
注意:若继续使用2017/2 schema,设置HoursBetweenUpdateChecks="0"无法彻底禁用检查(系统仍会在每次启动时尝试检查),必须升级schema才能使用Enabled属性。
2. 自定义计划更新或手动触发更新(无需修改已发布应用)
完全可以实现,且无需改动已发布的应用包:
手动触发更新
在UWP应用中调用AppInstallerManager类的API,手动触发更新检查:
using Windows.Management.Deployment; private async Task TriggerManualUpdateCheck() { var installerManager = AppInstallerManager.GetDefault(); var updateResult = await installerManager.CheckForUpdatesAsync(); if (updateResult.UpdateAvailability == UpdateAvailability.UpdateAvailable) { // 可提示用户,或直接启动更新流程 await installerManager.StartUpdateAsync(updateResult); } }
你可以将此方法绑定到应用内的“检查更新”按钮,让用户手动触发。
计划更新
有两种可行方案:
- 应用内后台任务:注册定时后台任务(如时间触发器),在任务中调用上述手动检查方法。注意后台任务有运行时长限制,适合短周期(如每日、每小时)的更新检查。
- 系统任务计划:通过Windows任务计划程序创建定时任务,执行PowerShell命令触发更新:
这种方式无需修改应用,完全通过系统层面控制更新时机。Add-AppxPackage -Update -AppInstallerFile "C:/Updates/UpdateDemo2_x64.appinstaller"
3. 打包后.appinstaller文件复原是否属于预期行为?
是预期行为。原因在于:
Visual Studio的MSIX打包项目会根据项目内的.appinstaller源模板文件和打包配置,自动生成输出目录中的.appinstaller文件。若直接修改输出目录(如bin/x64/Debug)下的.appinstaller文件,下次重新打包时,VS会用源模板覆盖你的修改。
正确做法是:在VS打包项目中找到.appinstaller源文件(通常位于项目根目录,命名为AppInstaller.xml或类似),直接修改该源文件后重新打包,生成的输出文件会保留你的设置。
内容的提问来源于stack exchange,提问作者Samhita Mahendran
相关产品推荐
相关产品推荐

