共用方式為


使用 Visual Studio 封裝 Win32 應用程式隔離應用程式

此頁面將涵蓋封裝應用程式以利用 Win32 應用程式隔離所需的所有專案。

重要

這項功能處於預覽狀態: 某些資訊與發行前版本產品有關,在正式發行前可能會大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

必要條件

將應用程式封裝到隔離的 Win32 應用程式需要下列必要條件:

  • Visual Studio 17.10.2 版或更高版本

步驟 1 - 在 Visual Studio 中安裝必要的工作負載,包括 Windows 11 SDK 10.0.26100.0 (或更新版本)

開啟 Visual Studio 安裝程式並修改現有的安裝。 在 [工作負載] 索引標籤上核取 [Windows 應用程式開發] 方塊(並選擇性地核取 [C++ WinUI 應用程式開發工具] 方塊,以在 C++ 中開發)。 也需要 Windows 11 SDK 10.0.26100.0 (或更新版本)。

顯示 Visual Studio 中安裝必要工作負載的螢幕快照

步驟 2 - 建立您的應用程式專案

在 Visual Studio 中,使用範本 空白應用程式建立新的 C# 或C++專案,並封裝 Windows 應用程式封裝專案 (WinUI 3 in Desktop) 。 單擊 [ 建立 ],然後選取 [目標平臺版本][10.0.26100.0 ](或更新版本)和 [目標平臺最低版本] (TPMinV)。

螢幕快照,顯示 Visual Studio 中具有 Windows 封裝專案的空白應用程式範本

顯示 Visual Studio 中 [新增專案] 畫面的螢幕快照

顯示 Visual Studio 中新 WinUI 項目畫面的螢幕快照

步驟 3 - 使用 NuGet 安裝 Microsoft.Windows.SDK.BuildTools 10.0.26100.1742 版或更新版本

移至 [專案 -> 管理 NuGet 套件 ] 以安裝 Microsoft.Windows.SDK.BuildTools 10.0.26100.1 版(或更新版本)。

顯示 Visual Studio 中管理 NuGet 套件畫面的螢幕快照

顯示 Visual Studio 中 NuGet 畫面上Microsoft.Windows.SDK.BuildTools 套件的螢幕快照

螢幕快照,顯示 Visual Studio 中 NuGet 畫面上建置工具套件的資訊

步驟 4 - 編輯 Packaging.appxmanifest 和項目檔

在指令清單檔中,必須進行下列變更:

注意:隔離的 win32 應用程式與相同套件內的其他應用程式類型不相容。

  • 如果元素尚未存在,請新增 xmlns:uap18="http://schemas.microsoft.com/appx/manifest/uap/windows10/18"<Package> 專案。

    • 將 新增 uap18IgnorableNamespaces 元素的 <Package> 結尾。
  • 變更<Dependencies>TargetDeviceFamily<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.26100.0" MaxVersionTested="10.0.26226.0" />

    注意

    並非所有功能都可以在最低組建中使用,請查看 版本資訊 以取得更詳細的資訊。 此外,下列指令清單變更可讓應用程式成為隔離的應用程式,但它可以在不支援 Win32 應用程式隔離的作業系統中繼續以 Win32 應用程式的形式執行。

  • <Application> 中,將任何現有的 entrypoint/trustlevel/runtimebehavior 替換為 EntryPoint="Windows.FullTrustApplication"uap18:EntryPoint="Isolated.App"uap18:TrustLevel="appContainer" uap18:RuntimeBehavior="appSilo"

  • 在延伸模組中<Application>,移除繼承自父系的任何 EntryPoints=*Executable=*<Application>

  • 將 新增 desktop7:Scope="user" 至的 windows.protocol擴充專案。

    注意

    根據預設,由於應用程式是已封裝的 Win32,Visual Studio 會自動新增 <rescap:Capability name="runFullTrust"><Capabilities> 。 除非應用程式有其他可影響使用者全域狀態的指令清單延伸模組,例如 comServerFirewallRules,否則應該移除此專案,因為這些延伸模組需要 runFullTrust 功能。

顯示 Visual Studio 中封裝應用程式設定的螢幕快照

  • 在 wapproj 檔案中的目標平臺版本行之後新增 <AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>。螢幕截圖顯示 Visual Studio 中的專案檔組態

步驟 5 - 建置和發佈應用程式套件

建置 Visual Studio 方案。

顯示 Visual Studio 中解決方案建置的螢幕快照

使用 [建立應用程式套件... ] 精靈發佈應用程式套件。

顯示 Visual Studio 中建立應用程式套件精靈的螢幕快照

顯示 Visual Studio 中應用程式套件精靈中建立步驟的螢幕快照

發佈應用程式套件之後, 顯示的 [輸出位置 ] 會顯示 MSIX 套件依版本發佈的根目錄。 開啟版本資料夾,以尋找 Install.ps1 檔案以安裝應用程式。

顯示 Visual Studio 中精靈成功建立封裝的螢幕快照

應用程式隔離概觀

應用程式功能分析工具

使用 MSIX 封裝隔離的 Win32 應用程式