WWDC Quick Look 💓 By SwiftGGTeam
Manage software updates in your organization

Manage software updates in your organization

观看原视频

Highlight

macOS Monterey 让 MDM 服务器用版本号部署 Mac 更新、用 bootstrap token 安排 Apple silicon Mac 夜间安装,并通过 MaxUserDeferrals 限制用户推迟次数,帮助组织在测试完成后按计划完成系统升级。

核心内容

IT 管理员最怕的往往是系统更新节奏失控。

一家公司可能有几千台 Mac、iPhone 和 iPad。新系统发布后,安全补丁要尽快安装。内部 VPN、打印机驱动、财务系统、课堂 App 也要先验证。用户自己点了更新,业务可能中断。管理员一直拦着更新,设备又会停留在旧系统。

这场 session 把流程拆成三段:先测试,再部署,最后强制完成。

测试阶段,AppleSeed for IT 让组织在 beta 阶段验证新系统。正式版发布后,deferral(延迟更新)让受监督设备暂时不向用户展示更新。管理员可以把更新时间窗口控制在 1 到 90 天内。

部署阶段,macOS Monterey 让 Mac 更接近 iOS 的更新流程。MDM 服务器可以从 Apple Software Lookup Service 获取版本列表,再用设备的硬件标识判断适用性。以前 Mac 需要先让设备扫描可用更新,再把结果回传给服务器。现在少了一次往返。

最后是执行问题。用户可能连续点击“稍后提醒”。macOS Monterey 新增 MaxUserDeferrals。管理员可以指定最多允许推迟几次。次数用完后,设备会强制安装更新,并提前告诉用户剩余次数。

测试和延迟:给组织留出验证窗口

新系统发布前,组织可以用 AppleSeed for IT 获取预发布软件、测试计划和反馈渠道。任何来自 Apple School Manager 或 Apple Business Manager 的非学生 Managed Apple ID 都可以参与。

正式版发布后,deferral 会阻止受监督设备在软件更新界面向用户展示更新。默认延迟 30 天,也可以设置为 1 到 90 天。延迟只影响用户界面,不会阻止 MDM 命令部署指定更新。

部署和执行:减少服务器往返,减少用户打断

Mac 以前要通过 ScheduleOSUpdateScan 在设备本地判断可用更新。服务器需要等待扫描结果,再选择要部署的版本。

macOS Monterey 增加 SoftwareUpdateModelID,让 MDM 可以拿到硬件型号字符串。Apple Software Lookup Service 也会包含 macOS 硬件标识。服务器可以把两者对比,直接判断某个版本是否适用。

Apple silicon Mac 还需要认证才能更新。macOS 11.2 以后,自动更新可以使用 MDM bootstrap token。macOS Monterey 把这个能力扩展到 InstallLater,设备可以在夜间安装,用户第二天打开就是新系统。

详细内容

1. 用 deferral 控制更新展示

02:16)Deferral(延迟更新)用于受监督设备。它会在 Apple 发布更新后,等待指定天数,再把更新展示给用户。

macOS 11.3 起,管理员可以分别延迟 major release(主版本)、minor release(次版本)和 supplemental update(补充更新)。这样可以先放行安全更新,再继续验证新的主版本。

forceDelayedMajorSoftwareUpdates = true
forceDelayedMajorSoftwareUpdatesDelay = 90

forceDelayedSoftwareUpdates = true
forceDelayedSoftwareUpdatesDelay = 14

forceDelayedAppSoftwareUpdates = true
forceDelayedAppSoftwareUpdatesDelay = 14

ManagedDeferredInstallDelay = 30

关键点:

  • forceDelayedMajorSoftwareUpdates 打开主版本延迟。
  • forceDelayedMajorSoftwareUpdatesDelay 表示主版本延迟天数,取值范围来自 session:1 到 90 天。
  • forceDelayedSoftwareUpdates 打开次版本延迟。
  • forceDelayedSoftwareUpdatesDelay 给次版本设置单独延迟天数。
  • forceDelayedAppSoftwareUpdates 打开补充更新延迟。
  • forceDelayedAppSoftwareUpdatesDelay 给补充更新设置单独延迟天数。
  • ManagedDeferredInstallDelay 是旧 key;某类延迟已启用但没有对应延迟周期时,系统会回退使用它。

02:58)这组限制只影响 Software Update(软件更新)界面。MDM 仍然可以在延迟窗口内向设备发送指定更新。

# 用户界面
Software Update UI -> 等待 deferral 到期后展示更新

# MDM 命令
MDM ScheduleOSUpdate -> 可以在 deferral 期间部署指定更新

关键点:

  • 第一行表示用户在系统设置里看到的更新入口。
  • Software Update UI 会受延迟策略影响。
  • MDM ScheduleOSUpdate 是管理员部署更新的命令路径。
  • MDM 命令不被 deferral 阻止,适合在测试完成后主动推送。

2. 用 SoftwareUpdateModelID 判断 Mac 更新适用性

05:23)macOS Monterey 以前,Mac 的可用更新只能在用户设备上评估。MDM 服务器要先发送 ScheduleOSUpdateScan,让 Mac 查询服务器并判断适用性,然后等待结果回传。

ScheduleOSUpdateScan
  -> Mac 查询软件更新服务器
  -> Mac 判断可用更新和适用性
  -> Mac 把扫描结果回传给 MDM
  -> MDM 选择要部署的更新

关键点:

  • ScheduleOSUpdateScan 触发设备端扫描。
  • Mac 自己查询软件更新服务器。
  • 适用性判断发生在设备端。
  • MDM 要等扫描结果回来后才能部署。

06:44)macOS Monterey 增加 DeviceInformation query key:SoftwareUpdateModelID。它会向 MDM 返回 iOS 和 macOS 的硬件型号字符串。Apple Software Lookup Service 也会在 JSON feed 中包含 macOS 的硬件标识。

DeviceInformation query:
  SoftwareUpdateModelID -> "MacBookPro17,1"

Apple Software Lookup Service:
  SupportedDevices -> ["MacBookPro17,1", "MacBookAir10,1"]

if SoftwareUpdateModelID in SupportedDevices:
  deploy ProductVersion

关键点:

  • SoftwareUpdateModelIDDeviceInformation 查询里的新 key。
  • 返回值是设备硬件型号字符串,session 说明 iOS 和 macOS 都支持。
  • Apple Software Lookup Service 提供可用系统版本和适用硬件标识。
  • MDM 服务器对比两边的硬件标识,就能判断更新是否适用。
  • 判断完成后,服务器可以直接部署目标版本。

07:25)macOS Monterey 还开始支持 ProductVersion。此前 macOS 会忽略它,使用 ProductKey。如果两个 key 同时提供,系统仍然使用 ProductKey

ScheduleOSUpdate:
  ProductVersion = "12.1"

# 兼容旧流程时可能同时出现
ScheduleOSUpdate:
  ProductVersion = "12.1"
  ProductKey = "012-34567"

# 两者同时存在时
selected update = ProductKey

关键点:

  • ProductVersion 用版本号指定更新,iOS 已经使用这个 key。
  • macOS Monterey 开始支持 ProductVersion
  • ProductKey 是 macOS 旧流程使用的产品标识。
  • 两个 key 同时存在时,ProductKey 优先。
  • 如果设备找不到对应版本的适用更新,会返回相应响应。

3. 用 ScheduleOSUpdate 选择安装动作

10:02)MDM 确定设备适用哪个版本后,用 ScheduleOSUpdate 部署到 macOS、iOS 和 iPadOS。命令里必须设置 install action(安装动作),它决定下载、通知和安装的行为。

ScheduleOSUpdate:
  InstallAction = InstallASAP
  ProductVersion = "12.1"

关键点:

  • ScheduleOSUpdate 是部署更新的 MDM 命令。
  • InstallAction 是必须设置的选项。
  • InstallASAP 表示尽快执行安装。
  • ProductVersion 指定要部署的系统版本。

10:19)macOS 的安装动作包括 InstallASAPDownloadOnlyNotifyOnlyInstallLater。Apple silicon Mac 上,InstallASAP 会使用 bootstrap token 完成认证。

InstallAction = InstallASAP
# 立即执行,用户可以取消;Apple silicon Mac 使用 bootstrap token

InstallAction = DownloadOnly
# 后台下载,不启动安装

InstallAction = NotifyOnly
# 只通知用户,不启动安装

InstallAction = InstallLater
# 安排夜间安装,通常在 2:00 到 4:00 之间

关键点:

  • InstallASAP 适合无用户设备,命令会立即执行。
  • DownloadOnly 适合提前下载更新,减少正式安装等待。
  • NotifyOnly 只提醒用户有可用更新。
  • InstallLater 会安排夜间安装。
  • session 说明夜间窗口通常是 2:00 到 4:00,并要求设备接入电源。

09:29)macOS Monterey 让 Apple silicon Mac 的 InstallLater 也可以使用 bootstrap token。前提是你已经支持 bootstrap token,并使用 ScheduleOSUpdateInstallLater action。

ScheduleOSUpdate:
  InstallAction = InstallLater
  ProductVersion = "12.1"

Authentication:
  MDM Bootstrap Token

关键点:

  • InstallLater 让设备在稍后选择合适时间安装。
  • Apple silicon Mac 的自动非交互更新需要认证。
  • MDM Bootstrap Token 可以完成自动更新所需认证。
  • macOS Monterey 把 bootstrap token 支持扩展到 InstallLater

4. 用 MaxUserDeferrals 强制完成 macOS 更新

13:55)测试完成后,管理员需要避免用户一直推迟更新。macOS Monterey 给 InstallLater 增加执行策略:MaxUserDeferrals

ScheduleOSUpdate:
  InstallAction = InstallLater
  ProductVersion = "12.1"
  MaxUserDeferrals = 3

关键点:

  • InstallAction = InstallLater 使用夜间安装流程。
  • MaxUserDeferrals 指定用户最多能推迟几次。
  • session 说明设置这个 key 会在达到上限后隐含 InstallForceRestart
  • 管理员想修改最大推迟次数时,只需发送新的 InstallLater 命令。

15:01)用户通知会显示剩余推迟次数。用户选择 Remind Me Tomorrow 后,剩余次数递减。次数用完后,系统通知用户这次更新会被强制执行。

remainingDeferrals = MaxUserDeferrals

user selects "Remind Me Tomorrow"
remainingDeferrals = remainingDeferrals - 1

if remainingDeferrals == 0:
  InstallForceRestart applies

关键点:

  • remainingDeferrals 表示通知中显示的剩余次数。
  • Remind Me Tomorrow 会推迟更新,并减少一次机会。
  • remainingDeferrals == 0 表示已达到最大推迟次数。
  • 达到上限后,机器会重启执行更新,即使用户仍在使用设备。

5. 用 RecommendationCadence 控制 iOS/iPadOS 的更新版本展示

15:55)iOS 和 iPadOS 现在会在 Settings(设置)里给用户两个更新选择:升级到下一个 major OS,或留在当前 major release 并继续接收重要安全更新。

MDM 可以通过 Settings 命令里的 SoftwareUpdateSettings 字典控制展示哪个版本。关键 key 是 RecommendationCadence

Settings:
  SoftwareUpdateSettings:
    RecommendationCadence = 0

关键点:

  • Settings 是 MDM 用来调整设备设置的命令。
  • SoftwareUpdateSettings 是控制软件更新展示的字典。
  • RecommendationCadence 决定用户看到哪个更新选项。
  • 0 是默认视图;没有 MDM 限制时也会得到这个视图。

16:38RecommendationCadence 有三个值。0 展示 major 和 minor 两类可用更新。1 在两个版本都可用时展示版本号较低的更新。2 展示版本号较高的更新。

RecommendationCadence = 0
# 展示所有可用更新

RecommendationCadence = 1
# 如果两个版本都可用,展示较低版本号

RecommendationCadence = 2
# 如果两个版本都可用,展示较高版本号

关键点:

  • 0 适合让用户自己选择升级路径。
  • 1 适合让设备留在当前主版本并接收安全更新。
  • 2 适合引导用户升级到更新的主版本。
  • 如果已有 enforceSoftwareDelayUpdate 延迟设置,设备会先考虑延迟,再按 RecommendationCadence 过滤。

核心启发

  1. 做什么:做一个 MDM 更新看板,把设备按“可升级、已延迟、待强制、已完成”分组。 为什么值得做SoftwareUpdateModelID 和 Apple Software Lookup Service 让服务器能提前判断 Mac 更新适用性,少等一次设备扫描。 怎么开始:先收集每台设备的 SoftwareUpdateModelID,再把它和 lookup feed 的设备列表对比,生成每个版本的目标设备清单。

  2. 做什么:给企业 Mac 做“夜间更新”策略。 为什么值得做:macOS Monterey 支持 Apple silicon Mac 在 InstallLater 流程中使用 bootstrap token,用户不用在工作时间等待安装。 怎么开始:确认设备已监督并具备 MDM bootstrap token,然后发送 ScheduleOSUpdate,把 InstallAction 设为 InstallLater

  3. 做什么:给高风险安全更新设置有限推迟次数。 为什么值得做MaxUserDeferrals 能给用户准备时间,也能避免设备长期停留在旧版本。 怎么开始:在 InstallLater 命令中加入 MaxUserDeferrals,先从 3 次开始,在通知文案里说明强制安装时间。

  4. 做什么:为学校 iPad 提供“留在当前主版本”的更新策略。 为什么值得做:iOS/iPadOS 的 RecommendationCadence = 1 可以优先展示较低版本,让设备继续接收重要安全更新,同时避免学期中途切换主版本。 怎么开始:通过 Settings 命令写入 SoftwareUpdateSettings,把 RecommendationCadence 设为 1,再结合 deferral 控制展示时间。

  5. 做什么:把 major 和 minor 更新拆成不同审批流。 为什么值得做:macOS 11.3 起可以分别延迟主版本、次版本和补充更新,安全修复不用被主版本验证拖慢。 怎么开始:在配置 profile 中分别设置 forceDelayedMajorSoftwareUpdatesforceDelayedSoftwareUpdatesforceDelayedAppSoftwareUpdates,让不同更新类型进入不同测试窗口。

关联 Session

评论

GitHub Issues · utterances