Windows.Management.Update 命名空間

Windows.Management.Update 命名空間提供管理跨 Windows 裝置的 Windows Update 操作的 API。 它有幾個不同的用途:

這些 API 群組共存於相同命名空間,但針對不同的情境。 根據你的裝置類型和更新需求,選擇正確的組合。

類別

名稱 Description
PreviewBuildsManager

管理裝置預覽版本的狀態。

PreviewBuildsState

包含用於連接裝置並與 Windows 測試人員計畫 關聯的資訊。

WindowsSoftwareUpdate

代表提供者向 Windows Update Orchestrator 報告的單一軟體更新,包括其身份、版本、大小、套用所需的動作,以及目前狀態。

WindowsSoftwareUpdateActionInfo

描述提供者如何透過指定要調用的檔案、其參數及動作類型來執行單一更新動作。

WindowsSoftwareUpdateActionProgress

描述目前正在執行的 WindowsSoftwareUpdate 動作的進度。

WindowsSoftwareUpdateActionResultInfo

描述最近完成的 WindowsSoftwareUpdate 動作的結果。

WindowsSoftwareUpdateAppPackageInfo

描述 AppPackageWindowsSoftwareUpdate 所安裝的 MSIX/AppX 應用程式套件。

WindowsSoftwareUpdateApprovalInfo

描述 WindowsSoftwareUpdate 獲准進行的條件。

WindowsSoftwareUpdateExecutionInfo

描述提供者執行執行的一組動作,以套用可執行檔或PowerShell WindowsSoftwareUpdate。

WindowsSoftwareUpdateIdentity

透過 MSI 產品程式碼或 MSIX 套件族名稱,識別 WindowsSoftwareUpdate 所針對的已安裝產品。

WindowsSoftwareUpdateLocalizationInfo

提供 WindowsSoftwareUpdate 的在地化標題、描述及更多資訊網址,並以特定語言呈現。

WindowsSoftwareUpdateOptionalActionInfo

描述 WindowsSoftwareUpdate 的可選「關閉並部署」、「關閉並安裝」及「關閉並重新啟動」動作變體——當目標應用程式必須先關閉時會執行的動作。

WindowsSoftwareUpdateOptionalInfo

攜帶 WindowsSoftwareUpdate 的可選元資料,包括其分類、在地化內容及合規時序。

WindowsSoftwareUpdateProvider

代表磁碟上的 Windows 軟體更新提供者套件,並提供驗證、註冊及取消註冊的操作,並可透過 Windows Update Orchestrator 進行。

WindowsSoftwareUpdateProviderActionResult

描述提供者對軟體更新動作所回報的結果,包括結果、任何需要重啟的資訊及錯誤資訊。

WindowsSoftwareUpdateProviderPayloadFileInfo

描述屬於 WindowsSoftwareUpdateProvider 的單一有效載荷檔案,包括其雜湊值與程式碼簽章信任狀態。

WindowsSoftwareUpdateProviderStatus

提供者用來向 Windows Update Orchestrator 回報結果的通道:掃描結果、行動進度和行動結果。 當協調者要求取消時,也會通知服務提供者。

WindowsSoftwareUpdateResult

代表軟體更新操作的結果,例如提交掃描結果、回報進度或回報動作結果。

WindowsSoftwareUpdateScanResult

代表軟體更新掃描的結果,包括掃描是否成功以及發現的 WindowsSoftwareUpdate 物件。

WindowsSoftwareUpdateVersion

代表 WindowsSoftwareUpdate 的四部分版本號(主要、次要、修訂主及次要修訂)。

WindowsUpdate

WindowsUpdate 是一個屬性包,描述單一待處理或進行中的更新——包括其身份與元資料、分類標記、授權協議(EULA)狀態 End-User 截止日期,以及目前執行的動作的進度與結果。

WindowsUpdateActionCompletedEventArgs

該事件的對應 WindowsUpdateManager.ActionCompleted 事件資料。

WindowsUpdateActionProgress

由 WindowsUpdate 與 WindowsUpdateProgressChangedEventArgs 的 ActionProgress 屬性回傳。

WindowsUpdateActionResult

由 WindowsUpdate.ActionResult 屬性回傳。

WindowsUpdateAdministrator

讓註冊管理員能控制裝置上的 Windows Update 活動——將掃描、更新和更新動作設於明確核准後,並可請求或取消重啟。

WindowsUpdateApprovalData

允許在透過 ApproveWindowsUpdate 核准更新時,設定額外的元資料。

WindowsUpdateAttentionRequiredInfo

代表 WindowsUpdateAttentionRequiredReason 的元組與時間戳記。

WindowsUpdateAttentionRequiredReasonChangedEventArgs

對應的 WindowsUpdateManager.AttentionRequiredReasonChanged 事件的事件資料。

WindowsUpdateGetAdministratorResult

代表呼叫 GetRegisteredAdministrator 的結果。

WindowsUpdateItem

代表一個關於先前完成更新的資訊資料夾。

WindowsUpdateManager

提供裝置更新活動的統一視圖。 使用 WindowsUpdateManager 啟動掃描、列舉適用於裝置的更新、檢視最近完成的更新,並透過事件監控掃描、工作與進度——無需輪詢。

從 Windows 軟體更新提供者平台開始,WindowsUpdateManager 也會列舉註冊的軟體更新提供者並執行軟體更新掃描。

WindowsUpdateManagerScanOptions

Windows.Management.Update 命名空間提供管理跨 Windows 裝置的 Windows Update 操作的 API。 它有幾個不同的用途:

這些 API 群組共存於相同命名空間,但針對不同的情境。 根據你的裝置類型和更新需求,選擇正確的組合。

WindowsUpdateProgressChangedEventArgs

對應 WindowsUpdateManager.ProgressChanged 事件的資料。

WindowsUpdateRestartRequestOptions

代表一個可設定並傳遞給 RequestRestart 的屬性袋。

WindowsUpdateScanCompletedEventArgs

對應 WindowsUpdateManager.ScanCompleted 事件的事件資料。

列舉

名稱 Description
WindowsSoftwareUpdateActionResult

定義常數,指定軟體更新動作的結果,提供者透過 WindowsSoftwareUpdateProviderActionResult 回報。

WindowsSoftwareUpdateActionType

定義常數,指定提供者執行的動作,以推動 WindowsSoftwareUpdate 在其生命週期中移動。

WindowsSoftwareUpdateArchitecture

定義 WindowsSoftwareUpdateAppPackageInfo 所適用的處理器架構的常數。

WindowsSoftwareUpdateCategory

定義了根據 WindowsSoftwareUpdate 所傳遞的有效載荷類型來分類的常數。

WindowsSoftwareUpdateIdentityType

定義了 WindowsSoftwareUpdateIdentity 所針對產品的常數。

WindowsSoftwareUpdateInstallationType

定義了 WindowsSoftwareUpdate 如何在裝置上安裝的常數。

WindowsSoftwareUpdateProviderRegistrationType

定義了指定 WindowsSoftwareUpdateProvider 註冊狀態的常數。

WindowsSoftwareUpdateProviderTrustState

定義常數,指定 WindowsSoftwareUpdateProvider 或其有效載荷檔案的程式碼簽章信任狀態。

WindowsSoftwareUpdateProviderType

定義常數,指定如何呼叫註冊的 WindowsSoftwareUpdateProvider 來執行掃描與更新動作。

WindowsSoftwareUpdateRestartReason

定義了為何需要重新啟動才能完成軟體更新動作的常數。

WindowsUpdateAdministratorOptions

定義常數,指定呼叫者在註冊 RegisterForAdministration 時希望控制的管理員選項。

WindowsUpdateAdministratorStatus

定義常數,指定狀態碼以指示 Windows 更新管理員的註冊/取消註冊是否成功。

WindowsUpdateAttentionRequiredReason

定義常數,明確說明為何更新前需要注意才能繼續。

WindowsUpdateManagerScanMode

定義了在呼叫 WindowsUpdateManager.PerformScan 時,指定軟體更新掃描的常數。

範例

掃描並列舉適用更新

這個 C# 範例會建立 WindowsUpdateManager,啟動掃描,並在掃描完成後列舉適用的更新。

using System;
using Windows.Management.Update;

var updateManager = new WindowsUpdateManager("MyClientId");

updateManager.ScanCompleted += (manager, args) =>
{
    foreach (WindowsUpdate update in manager.GetApplicableUpdates())
    {
        Console.WriteLine($"Applicable update: {update.Title}");
    }
};

// Scan as if the user selected "Check for updates".
updateManager.StartScan(userInitiated: true);

Author 一個軟體更新提供者

Windows 軟體更新提供者平台允許你將自訂更新來源插入 Windows Update Orchestrator。 每次操作在 SYSTEM 情境中呼叫一次提供者:掃描 過程中會建立WindowsSoftwareUpdate 物件並提交;在 執行動作 時,會透過 WindowsSoftwareUpdateProviderStatus 回報進度與最終結果。

以下片段展示了 C#、C++/WinRT 和 PowerShell 中的核心流程。 完整且可建置的提供者範例——包括 provider.json 清單、程式碼簽署及註冊步驟——會發布在 microsoft/windows-uop 倉庫中。

C#

using System.Collections.Generic;
using Windows.Management.Update;

// Scan: report the updates this provider offers.
void PerformScan(string providerId, IEnumerable<WindowsSoftwareUpdate> updates)
{
    var status = new WindowsSoftwareUpdateProviderStatus(providerId);
    WindowsSoftwareUpdateResult result = status.SetScanResult(true, 0, 0, updates);
}

// Action: report progress, then the final result.
void PerformAction(string providerId)
{
    var status = new WindowsSoftwareUpdateProviderStatus(providerId);

    for (ulong i = 0; i <= 100; i += 10)
    {
        status.SetActionProgress(i, 100);
    }

    var actionResult = new WindowsSoftwareUpdateProviderActionResult(
        WindowsSoftwareUpdateActionResult.Succeeded,
        WindowsSoftwareUpdateRestartReason.None,
        resultCode: 0,
        extendedError: 0);
    status.SetActionResult(actionResult);
}

C++/WinRT

#include <winrt/Windows.Management.Update.h>
#include <winrt/Windows.Foundation.Collections.h>

using namespace winrt::Windows::Management::Update;
using namespace winrt::Windows::Foundation::Collections;

// Scan: report the updates this provider offers.
void PerformScan(winrt::hstring const& providerId, IVector<WindowsSoftwareUpdate> const& updates)
{
    WindowsSoftwareUpdateProviderStatus status{ providerId };
    auto result = status.SetScanResult(true, S_OK, 0, updates);
}

// Action: report progress, then the final result.
void PerformAction(winrt::hstring const& providerId)
{
    WindowsSoftwareUpdateProviderStatus status{ providerId };

    for (uint64_t i = 0; i <= 100; i += 10)
    {
        status.SetActionProgress(i, 100);
    }

    WindowsSoftwareUpdateProviderActionResult actionResult{
        WindowsSoftwareUpdateActionResult::Succeeded,
        WindowsSoftwareUpdateRestartReason::None,
        0,   // resultCode
        0 }; // extendedError
    status.SetActionResult(actionResult);
}

PowerShell

# Scan: report the updates this provider offers.
$providerStatus = [Windows.Management.Update.WindowsSoftwareUpdateProviderStatus]::new($ProviderId)
$statusResult   = $providerStatus.SetScanResult($true, 0, 0, $UpdateCollection)

# Action: report progress, then the final result.
$providerStatus = [Windows.Management.Update.WindowsSoftwareUpdateProviderStatus]::new($ProviderId)
for ($i = 0; $i -le 100; $i += 10) {
    [void]$providerStatus.SetActionProgress($i, 100)
}

$actionResult = [Windows.Management.Update.WindowsSoftwareUpdateProviderActionResult]::new(
    [Windows.Management.Update.WindowsSoftwareUpdateActionResult]::Succeeded,
    [Windows.Management.Update.WindowsSoftwareUpdateRestartReason]::None,
    0,   # resultCode
    0)   # extendedError
[void]$providerStatus.SetActionResult($actionResult)

Determine Insider Preview build status (IoT)

這個 C# 範例展示了使用者如何判斷裝置是否收到預覽建置,或是否存在問題阻止裝置取得預覽建置。

public string GetErrorMessage() 
{ 
    PreviewBuildsManager manager = PreviewBuildsManager.GetDefault(); 
    if (manager != null) 
    { 
        PreviewBuildsState state = manager.GetCurrentState(); 
        if (state.Properties.ContainsKey("ErrorMessage")) 
        { 
            return state.Properties["ErrorMessage"].ToString(); 
        } 
    } 
    return String.Empty; 
} 

備註

API 集合 支援的 Windows 版本
預覽版本 17134年或更久
Windows Update 管理員 22621 或更大
Windows Update 管理員 22621 或更大
Windows 軟體更新 26100 或更高

另請參閱