發佈您的應用程式和 WebView2 執行階段

發佈 WebView2 應用程式時,請確定 WebView2 Runtime 存在於用戶端電腦上。 此需求同時適用於 Evergreen 和固定版本發佈模式。

如需簡介資訊,請參閱 WebView2 執行階段的常青與修正版本

透過 WSUS) Windows Server Update Services (維護 WebView2 執行階段

請參閱Windows Server Update Services (WebView2 企業管理中的 WSUS)

開發或生產期間的執行階段或瀏覽器支援

在開發和測試期間,WebView2 應用程式可以使用其中一個選項做為支援 Web 平台:

  • WebView2 執行階段。 執行階段通常提供與 Microsoft Edge 瀏覽器的 Stable 通道相同的 Web 平台功能和更新發行頻率;請參閱 Microsoft Edge 發行排程。 在生產環境中使用 WebView2 Runtime,或針對使用者目前擁有的 Web 平台進行開發和測試。

  • 預覽 (測試人員) Microsoft Edge 瀏覽器通道。 這些 Microsoft Edge 預覽通道是 Beta、Dev 和 Canary。 使用此方法測試應用程式的回溯相容性,以便您知道是否即將發生需要更新應用程式的中斷性變更。 請參閱 切換到預覽通道以測試即將推出的 API 和功能

WebView2 應用程式的生產版本只能使用 WebView2 執行階段作為支援 Web 平台,而不能使用 Microsoft Edge。

WebView2 不支援 Microsoft Edge 穩定通道

不允許 WebView2 應用程式使用 Microsoft Edge 的穩定通道作為支援 Web 平台。 此限制可防止 WebView2 應用程式的生產版本依存於瀏覽器。 WebView2 應用程式在生產期間無法依賴瀏覽器,原因如下:

  • 不保證會在所有使用者裝置上都會有 Microsoft Edge。 企業和教育中的許多裝置已與 Windows Update 中斷連線,或不受 Microsoft 直接管理。 這類裝置可能尚未安裝 Microsoft Edge。 要求 WebView2 應用程式的生產版本使用 WebView2 執行階段而非 Microsoft Edge,可避免讓 Microsoft Edge 成為執行 WebView2 應用程式的必要條件。

  • 瀏覽器和應用程式有不同的使用案例。 如果 WebView2 應用程式需要用戶端上同時顯示 Microsoft Edge,可能會對 WebView2 應用程式產生非預期的副作用。 例如,IT 系統管理員可以防止從特定版本更新瀏覽器,以保持瀏覽器與內部網站的相容性。 要求 WebView2 應用程式的生產版本使用 WebView2 Runtime 而非瀏覽器,可讓 WebView2 應用程式保持常綠,即使用戶端的系統管理員禁止瀏覽器更新。

  • 與瀏覽器相反,WebView2 執行階段是針對應用程式案例進行開發和測試,在某些情況下,WebView2 執行階段可能包含瀏覽器中尚未提供的錯誤修正。

Evergreen WebView2 執行階段將會包含在 Windows 11 作業系統中。 各種 WebView2 應用程式已在作業系統低於 Windows 11 的裝置上安裝了 Evergreen 執行階段。 不過,某些裝置可能沒有預先安裝 Runtime,因此最好檢查用戶端上是否存在 Runtime。

在應用程式建立 WebView2 之前,應用程式應該檢查登錄機碼或呼叫 API () 來檢查 WebView2 Runtime 是否存在,如果缺少 Runtime,則安裝 Runtime。 應用程式可以在安裝或更新應用程式時 (建議) ,或在應用程式執行階段執行這項檢查。 若要檢查 Runtime 是否存在,請參閱下方的部署 Evergreen WebView2 Runtime

Evergreen 執行階段發佈模式

常青發佈模式可確保您的 WebView2 應用程式利用最新的 WebView2 功能和安全性更新。 如需簡介資訊,請參閱 Evergreen 與 WebView2 執行階段修正版本Evergreen 執行階段發佈模式

常青配送模式具有下列特點:

  • WebView2 執行階段會自動更新,而不需要您執行任何動作。 它會收到與 Microsoft Edge 穩定通道的版本資訊和 MicrosoftEdge 安全性更新的版本資訊中所述的相同 Microsoft Edge 匯報。

  • 所有使用 Evergreen 發佈模式的 WebView2 應用程式都使用 Evergreen WebView2 執行階段的共用複本,這樣可以節省磁碟空間。

  • 在合格的系統上,Microsoft Edge 和 Evergreen WebView2 執行階段的二進位檔位於同一版本時會硬連結在一起。 此連結可提升磁碟使用量、記憶體及效能。

當您使用 WebView2 執行階段的常青發佈模式時,WebView2 應用程式會假設用戶端有最新的執行階段。 您的應用程式無法針對用戶端上的所有應用程式要求特定版本的 WebView2 Runtime。 在發行新的 WebView2 SDK 套件時,相容的 WebView2 執行階段版本已經散發給用戶端。 因此,您的 WebView2 應用程式可以使用最新版 WebView2 SDK 中的 API。

Windows 11裝置和Windows 10裝置 (詳細資料)

如需簡介資訊,請參閱 Evergreen 中的 Windows 11 裝置和 Windows 10 裝置WebView2 執行階段修正版本

絕大多數 Windows 10 裝置都已安裝 WebView2 執行階段,如將 Microsoft Edge WebView2 執行階段傳遞到受管理的 Windows 10 裝置中所述。 少數 Windows 10 裝置未安裝 WebView2 執行階段。 建議您使用下列其中一種方法來處理此邊緣情況:

另請參閱:

部署 Evergreen WebView2 執行階段

裝置上的所有 Evergreen 應用程式只需要安裝一次 Evergreen WebView2 執行階段。 下載《下載 WebView2 Runtime》有數個工具可協助您部署 Evergreen Runtime。

  • 針對線上用戶端: WebView2 執行階段啟動安裝程式 是一個小型 (大約 2 MB) 安裝程式。 WebView2 執行階段啟動程序會從符合使用者裝置架構的 Microsoft 伺服器下載並安裝 Evergreen Runtime。

    • 在 WebView2 應用程式的安裝部分中,連結到啟動程序。 使用連結以程式設計方式下載啟動程序;選取上方下載頁面中的 [取得連結 ] 按鈕。

    • 或者,下載啟動程序,並將其與 WebView2 應用程式一起封裝。

  • 針對離線用戶端: WebView2 Runtime Standalone Installer 是在離線環境中安裝 Evergreen WebView2 Runtime 的完整安裝程式。

  • 如果您使用應用程式安裝程式來部署 MSIX 應用程式,您可以將 WebView2 執行階段指定為相依性,讓它與應用程式一起安裝。 如需如何執行這項操作的詳細資訊,請參閱應用程式套件資訊清單文件中的 win32dependencies:ExternalDependency (Windows 10 Windows 11) 。另請參閱:使用應用程式安裝程式安裝 Windows 10 應用程式

以每一機器或每一使用者方式安裝 Runtime

最新的啟動程序和獨立安裝程式支援 WebView2 執行階段的 每一機器每一使用者 安裝。

如果您從提升權限的進程或命令提示字元執行安裝程式,則 Runtime 會按照 每部機器進行安裝。 如果未從提升權限的進程或命令提示字元執行安裝程式,則會按照 每個使用者的方式安裝 Runtime。 不過,如果已安裝每部機器的 Microsoft Edge Updater,則自動將按每位使用者安裝替換為每部機器安裝。 除了 Microsoft Edge 的 Canary 預覽通道,每個 機器的 Microsoft Edge 更新程式都包含在 Microsoft Edge 中。

請使用下列線上部署工作流程或離線部署工作流程,確保在應用程式啟動之前已安裝 Runtime。 您可以根據案例調整工作流程。 範例程式碼可在 範例存放庫中找到。

偵測是否已安裝 WebView2 執行階段

若要確認已安裝 WebView2 Runtime,請使用下列其中一種方法:

  • 方法 1: pv (REG_SZ) 在下列兩個登錄位置檢查 WebView2 執行階段的登錄機碼。 HKEY_LOCAL_MACHINE註冊機碼用於每部機器的安裝。 HKEY_CURRENT_USER regkey 用於每位使用者安裝。

    對於 WebView2 應用程式,必須至少有一個這些登錄機碼存在,而且其定義版本大於 0.0.0.0。 如果兩個登錄機碼都不存在,或者只有其中一個登錄機碼存在,但其值為 null、空白字串或 0.0.0.0,這表示 WebView2 執行階段未安裝在用戶端上。 檢查這些登錄機碼以偵測是否已安裝 WebView2 Runtime,並取得 WebView2 Runtime 的版本。 您可以在 pv (REG_SZ) 下列兩個位置尋找。

    要在 64 位元 Windows 上檢查的兩個登錄位置:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
    
    HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
    

    要在 32 位元 Windows 上檢查的兩個登錄位置:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
    
    HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
    
  • 方法 2:執行 GetAvailableCoreWebView2BrowserVersionString ,並評估是否為 versionInfonullptrnullptr 表示尚未安裝 WebView2 Runtime。 此 API 會傳回 WebView2 執行階段或 Microsoft Edge (Beta、Dev 或 Canary) 的任何已安裝預覽通道的版本資訊。

僅限線上部署

如果您有假設使用者具有網際網路存取權的僅線上部署案例,請使用下列工作流程。

  1. 在應用程式設定期間,執行測試以確保已安裝 WebView2 Runtime。 請參閱上方的 偵測是否已安裝 WebView2 執行階段

  2. 如果尚未安裝 Runtime,請在您的應用程式設定程序中,使用下載頁面上 [ 取得連結 ] 按鈕的連結 () 以程式設計方式下載 WebView2 執行階段啟動程序。

  3. 發出下列命令,叫用 WebView2 執行階段啟動程序。

    如果您從提升權限的進程或命令提示字元執行下列命令,則會觸發 每一部機器的 安裝。 如果未從提升權限的進程或命令提示字元執行命令,則會進行 每位使用者 安裝。 不過,如果已安裝每部機器的 Microsoft Edge Updater,則自動將按每位使用者安裝替換為每部機器安裝。 除了 Microsoft Edge 的 Canary 預覽通道,每 部機器 的 Microsoft Edge 更新程式會作為 Microsoft Edge 的一部分提供。 如需詳細資訊,請參閱 以每一機器或每一使用者的方式安裝 Runtime

    MicrosoftEdgeWebview2Setup.exe /silent /install
    

上述工作流程有幾個優點:

  • 只有在需要時才會安裝 Runtime。

  • 您不需要將執行階段安裝程式與 WebView2 應用程式一起封裝。

  • WebView2 執行階段啟動程序會自動偵測裝置的架構 (平台) ,然後安裝匹配的 WebView2 執行階段。

  • 執行階段會以無訊息方式安裝。

或者,您可以將 WebView2 執行階段的 Evergreen Bootstrapper 與應用程式一起封裝,而不是透過取得連結以程式設計方式隨選下載啟動程序。

離線部署

如果您有離線部署案例,其中應用程式部署必須完全離線運作,請使用下列工作流程。

  1. 從以下位置下載 Evergreen Standalone 安裝程式: 將 WebView2 執行階段下載 到您的開發電腦。 Evergreen Standalone 安裝程式會在用戶端上安裝 Evergreen WebView2 Runtime。

  2. 在您的應用程式安裝程式或更新程式中包含 Evergreen Standalone 安裝程式。

  3. 在應用程式設定期間,執行測試以確保已安裝 WebView2 Runtime。 請參閱上方的 偵測是否已安裝 WebView2 執行階段

  4. 如果未安裝 WebView2 Runtime,請執行 Evergreen Standalone 安裝程式。 如果您想要執行無訊息安裝,可以執行以下命令。

    如果您從提升權限的進程或命令提示字元執行下列命令,則會觸發 每一部機器的 安裝。 如果未從提升權限的進程或命令提示字元執行命令,則會進行 每位使用者 安裝。 不過,如果已安裝每部機器的 Microsoft Edge Updater,則自動將按每位使用者安裝替換為每部機器安裝。 除了 Microsoft Edge 的 Canary 預覽通道,每 部機器 的 Microsoft Edge 更新程式會作為 Microsoft Edge 的一部分提供。 如需詳細資訊,請參閱 以每一機器或每一使用者的方式安裝 Runtime

    MicrosoftEdgeWebView2RuntimeInstaller{X64/X86/ARM64}.exe /silent /install
    

處理 Evergreen WebView2 執行階段更新

新版本的 Evergreen WebView2 執行階段會自動下載至用戶端。 重新啟動 WebView2 應用程式時,用戶端會使用新版的 WebView2 執行階段。 不過,如果您的應用程式持續執行,您的應用程式將會繼續使用舊版的 WebView2 Runtime。 這具有安全性問題,因為先前版本的 WebView2 執行階段可能存在安全性弱點,而新版本中已修正這些弱點。 您應該根據應用程式的威脅模型,考慮讓應用程式儘快採用最新版本的 WebView2 執行階段是否重要。 例如,如果您的 WebView2 應用程式存取協力廠商內容,該內容應視為不受信任,因此您的應用程式需要使用最新版本的 WebView2 Runtime。

若要使用新版 WebView2 執行階段,您必須釋放所有先前 WebView2 環境物件的參照,或重新啟動您的應用程式。 下次您的應用程式建立新的 WebView2 環境時,應用程式將會使用新版的 WebView2 Runtime。 若要這麼做,您可以為事件建立事件處理常式 NewBrowserVersionAvailable ,讓應用程式自動通知使用者重新啟動應用程式。 如果您的應用程式處理重新啟動應用程式,請考慮在 WebView2 應用程式結束之前儲存使用者狀態。

測試應用程式的回溯相容性

在 Evergreen 發佈模式中,WebView2 執行階段會自動在用戶端上保持最新狀態,以提供最新功能和安全性修正程式。 如果您使用 Evergreen 發佈,為了確保您的 WebView2 應用程式與 Web 保持相容,您應該設定測試基礎結構。

如需有關如何測試應用程式回溯相容性的最佳做法,請參閱透過部署預覽通道,使用 Microsoft Edge 和自我裝載的預覽通道進行發行前測試

使用最新的 API 時的功能偵測

在 WebView2 應用程式中使用常綠模式時,請務必使用類似 QueryInterfacetry-catch的方法檢查用戶端電腦上是否存在新的 API,因為用戶端電腦可能沒有包含新 API 的最新 WebView2 執行階段。 如果 IT 管理員停用更新或用戶端離線,可能不會對 WebView2 執行階段進行匯報。

如需詳細資料,請參閱 功能偵測,以測試已安裝的執行階段是否支援最近在WebView2 發行前版本和發行 SDK 中新增的 API。

Microsoft Edge 和 WebView2 執行階段有不同的更新原則。 停用 Microsoft Edge 的更新不會影響最新 WebView2 API 的可用性,因為除非 管理員) 停用更新 WebView2 Runtime,否則 WebView2 Runtime 仍然可以自動更新 (。

固定版本執行階段發佈模式

對於具有嚴格相容性需求的限制環境,請考慮使用固定版本發佈模式。 (固定版本發佈模式先前稱為自備。) 如需簡介資訊,請參閱 Evergreen 與 WebView2 執行階段固定版本的固定版本執行階段發佈模式

在固定版本發佈模式中,您可以控制應用程式的 WebView2 執行階段更新時間。 您下載特定版本的 WebView2 執行階段,然後將它與 WebView2 應用程式一起封裝。 用戶端上的 WebView2 執行階段不會自動更新。 相反地,您會定期更新與更新的應用程式一起封裝並發佈的 WebView2 執行階段。 固定版本方法不會針對 WebView2 Runtime 使用登錄機碼。

固定版本的二進位檔案超過 250 MB,會讓您的應用程式套件變大該數量。

若要使用固定版本發佈模式:

  1. 下載 WebView2 Runtime 作為套件下載 WebView2 Runtime 的修正版本。

    最新和第二新主要版本的修補版本最多,可在此網站上下載。 保留所需任何版本的封存複本。

  2. 使用命令列命令 expand {path to the package} -F:* {path to the destination folder} 或使用 WinRAR 之類的解壓縮工具,解壓縮 WebView2 執行階段套件。 避免透過檔案總管解壓縮,因為該方法可能無法產生正確的資料夾結構。

  3. 在應用程式套件中包含所有解壓縮的固定版本二進位檔,以便在應用程式安裝期間部署在目標電腦上。

  4. 建立 WebView2 環境時,指出固定版本二進位檔的路徑。

    • 針對 Win32 C/C++,您可以使用 CreateCoreWebView2EnvironmentWithOptions 函數建立環境。 使用 browserExecutableFolder 參數指出包含 WebView2 執行階段 (msedgewebview2.exe) 的資料夾路徑。

    • 如果是 .NET,您必須先指定環境,WebView2 Source 屬性才會生效。 針對 .NET,您可以使用下列其中一種方法來指定環境:

      • 在元素上WebView2設定 CreationProperties (WPF/WinForms) 屬性。 使用 BrowserExecutableFolder (WPF/WinForms) 類別中的CoreWebView2CreationProperties成員來指出固定版本二進位檔的路徑。

      • 或者,使用 EnsureCoreWebView2Async (WPF/WinForms) 來指定環境。 使用 browserExecutableFolderCoreWebView2Environment.CreateAsync 中的參數來指出固定版本二進位檔的路徑。

    • 針對 WinUI,請指定安裝位置並設定執行階段路徑的環境變數,以確保應用程式可以存取資料夾。 其中一個方法是將下列 C# 程式碼新增至您的應用程式:

      StorageFolder localFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
      String fixedPath = Path.Combine(localFolder.Path, "FixedRuntime\\(version number)");
      Debug.WriteLine($"Launch path [{localFolder.Path}]");
      Debug.WriteLine($"FixedRuntime path [{fixedPath}]");
      Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", fixedPath);
      
  5. 封裝並傳送固定版本二進位檔與您的應用程式一起。 視需要更新二進位檔。

    • 針對 WinUI,這可能包括在程式碼編輯器中開啟專案檔案 (.csproj) ,然後在專案標記中新增以下程式碼:

      <ItemGroup>
          <Content Include="FixedRuntime\(version number)\\**\*.*">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
          </Content>
      </ItemGroup>
      

      確認 bin\**designated architecture**\Release 資料夾具有符合 FixedRuntime\ (版本號碼) 其中包含執行階段檔案的資料夾。

  6. 在 Windows 10 裝置上,從修正版本 120 開始,使用固定版本的未封裝 Win32 應用程式開發人員必須執行下列命令,修正版本才能繼續運作。 這是因為 v120 中的安全性改進,以在應用程式容器內執行轉譯器程序。 這項變更不會影響 Windows 11 裝置、較舊的執行階段或封裝應用程式。

    1. 找到在使用者裝置上部署固定版本套件的路徑,例如以下位置:

      D:\myapp\Microsoft.WebView2.FixedVersionRuntime.87.0.664.8.x64
      
    2. 在使用者的裝置上執行下列命令:

      icacls {Fixed Version path} /grant *S-1-15-2-2:(OI)(CI)(RX)
      icacls {Fixed Version path} /grant *S-1-15-2-1:(OI)(CI)(RX)
      
    3. 確認已ALL APPLICATION PACKAGESALL RESTRICTED APPLICATION PACKAGES[固定版本] 資料夾的 [安全性] 索引標籤中授予權限,如下所示:

      PlayReady 權限

修正版本的已知問題

  • 目前無法從網路位置或 UNC 路徑執行固定版本。

應用程式隨附的 Files

WebView2Loader代碼必須隨 App 一起提供。 這可以透過靜態連結 WebView2Loader.lib 到應用程式二進位檔,或包含符合應用程式架構的來 WebView2Loader.dll 完成。 在 WebView2 SDK 中使用檔案時 .targets ,這通常由 Visual Studio 自動為您處理,但在某些情況下,您可能需要手動指定要隨應用程式發佈的檔案。 若要靜態連結 WebView2 載入器程式庫,請參閱 將 WebView2 應用程式發佈為單一可執行檔

WebView2Loader.dll 是原生且特定於架構的二進位檔,因此您必須包含您預期應用程式執行的此二進位檔的所有類型。 例如:

  • 針對 x86,您需要包含 的 x86 版本 WebView2Loader.dll

  • 對於使用 AnyCPU 的受管理應用程式,您可以包含 的 x86、x64 和 arm64 版本 WebView2Loader.dll。 的 WebView2Loader.dll 正確版本是從適當的特定於架構的資料夾載入。

原生應用程式資料夾結構範例:

\<myApp>
    \WebView2Loader.dll

對於 .NET 託管應用程式,您也需要包含 WebView2 .NET 組件,以實現) 的核心 WebView2 功能,以及 ( (Microsoft.Web.WebView2.Core.dllMicrosoft.Web.WebView2.Winforms.dllMicrosoft.Web.WebView2.WPF.dll) 的 WPF/WinForms 特定功能。

受管理應用程式資料夾結構範例:

\<myApp>
    \Microsoft.Web.WebView2.Core.dll
    \Microsoft.Web.WebView2.Winforms.dll
    \Microsoft.Web.WebView2.WPF.dll
    \runtimes
        \win-arm64\native\WebView2Loader.dll (arm64)
        \win-x64\native\WebView2Loader.dll (x64)
        \win-x86\native\WebView2Loader.dll (x86)

另請參閱

企業文件:

developer.microsoft.com:

部落格:

Windows:

GitHub:

Windows 執行階段 API:

API 參考: