共用方式為


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

將現有的 MSIX 或 Win32 應用程式封裝成 Win32 應用程式隔離應用程式,將會透過 MSIX 封裝工具 (MPT) 來完成。 請注意,支援 Win32 應用程式隔離的 MPT 版本是 v1.2023.517.0,可在此專案的發行資產中使用。 MPT 的市集版本已過期,以用於 Win32 應用程式隔離功能。 您可以在這裡找到 MPT 的其他檔。

您可以在 Win32 應用程式隔離 GitHub 存放庫的版本區段中,找到 MPT 和分析工具的下載。

重要

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

將現有的 Win32 安裝程式轉換成 MSIX 應用程式

  1. 選取最左邊的 [應用程式套件],然後選擇將建立封裝的位置。 此流程會遵循 [在此計算機上建立套件] 選項。

    注意

    完成步驟 5 之後,這會導致應用程式安裝為一般 Win32 應用程式。

    顯示 MSIX 封裝工具主頁面的螢幕快照

  2. 等候 [MSIX 封裝工具驅動程式] 字段完成檢查。

    顯示 MSIX 封裝工具 [建立新封裝] 頁面的螢幕快照

  3. 使用瀏覽按鈕瀏覽至 並選取 Win32 安裝程式。 將簽署喜好設定保留空白,因為我們需要編輯指令清單,然後再簽署一次。

    顯示 MSIX 封裝工具中 [選取安裝程式] 頁面的螢幕快照

  4. 輸入套件資訊。

    顯示 MSIX 封裝工具中 [封裝資訊] 頁面的螢幕快照

  5. 如往常一樣流覽 Win32 安裝程式

  6. 如果除了主要進入點之外還有其他進入點,請啟動或流覽至它們。 如果應用程式在 [設定/設定/喜好設定] 中具有檔類型關聯的選項,請在此步驟中切換它們,以便 MSIX 會挑選它們。

  7. 如果封裝中有服務,請重複相同的程式。

  8. 按兩下 [建立] 會將套件儲存為完全信任套件。 點擊 [套件編輯器] 按鈕,從主功能表移至 [套件編輯器] 流程。 視套件大小而定,這最多可能需要幾分鐘的時間。

    螢幕快照,顯示 MSIX 封裝工具中建立封裝時的最終 [建立套件] 頁面

轉換現有的 MSIX 應用程式以執行隔離

  1. 選取最右邊的選項 [套件編輯器],並流覽至 .msix 檔案,然後按兩下 [開啟套件] 按鈕。

    顯示主頁面的螢幕快照,再按下 MSIX 封裝工具中的 [開啟套件]

  2. 向下卷動至 [指令清單檔案] 區段,然後按兩下 [開啟檔案]。

    螢幕快照,顯示 MSIX 封裝工具中按兩下 [開啟封裝] 之後的 [封裝資訊] 頁面

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

    注意

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

    • 如果元素尚未存在,請新增 xmlns:previewsecurity2="http://schemas.microsoft.com/appx/manifest/preview/windows10/security/2"<Package> 專案。
      • 將 新增 previewsecurity2IgnorableNamespaces 元素的 <Package> 結尾。
    • 如果元素尚未存在,請新增 xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"<Package> 專案。
      • 將 新增 uap10IgnorableNamespaces 元素的 <Package> 結尾。
    • 變更<Dependencies>TargetDeviceFamily<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.25357.0" MaxVersionTested="10.0.25357.0" />

      注意

      並非所有功能都可以在最低組建中使用,請查看 版本資訊 以取得更詳細的資訊。

    • 在 中 <Application> ,將任何現有的 entrypoint/trustlevel/runtimebehavior 取代為 uap10:TrustLevel="appContainer" previewsecurity2:RuntimeBehavior="appSilo"
    • 在延伸模組中<Application>,移除繼承自父系的任何 EntryPoints=*Executable=*<Application>
    • 將 新增 desktop7:Scope="user" 至的 windows.protocol擴充專案。

    注意

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

    顯示應用程式指令清單檔案內容的螢幕快照

  3. 應用程式可能需要額外的功能,才能正確運作,因為它已經隔離。 如有需要,請參閱 支援的功能 頁面。

  4. 儲存並關閉指令清單視窗。 如果指令清單中有任何錯誤,MPT 將會顯示它們。 選取 [建立/儲存] 以產生 .msix 檔案。 視套件大小而定,這可能需要幾分鐘的時間。

    • 如果指令清單發生錯誤,您可以在 下方的 事件檢視器 中找到更可採取動作的錯誤訊息Application and Services/Microsoft/Windows/AppxPackagingOM/Microsoft-Windows-AppxPackaging/Operational
  5. 如需識別可能需要在應用程式套件指令清單中宣告的功能的相關信息,請參閱 應用程式功能分析工具

Win32 應用程式隔離概觀

應用程式功能分析工具

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