在任何位置根據封裝的應用程式目錄建立目錄

為了滿足特定需求,應用程式可能會要求檔案出現在其現有的安裝目錄中。 例如,如果特定應用程式預期資料夾中有檔案,例如 C:\Program Files\Contoso;系統管理員可以修改該目錄。 從 Windows 11 開始,應用程式可以指定 WindowsApps 目錄之外的目錄,而 OS 將可確保檔案會顯示在該位置中,並從父目錄繼承適當的 acl。

在資訊清單中宣告目錄的位置

若要啟用這項功能,套件將需要宣告要將封裝中的檔案投射到何處。 以下是範例

<Package...> 
  <Extensions> 
    <desktop8:Extension Category="windows.MutablePackageDirectories"> 
      <desktop8:MutablePackageDirectories> 
        <desktop8:MutablePackageDirectory target="$(package.volumeroot)\Program Files\<Folder>" Shared=”true”> 
      </desktop8:MutablePackageDirectories> 
    </Extension> 
  </Extensions> 
</Package> 

投射的考慮

使用這項功能之前,請注意下列事項清單:

考量 Description
如何安裝具有專案功能的套件? 套件必須透過 ProvisionPackageForAllUsers API 安裝
神秘可以將它安裝 (使用者或系統管理員) 嗎? 管理
在哪裡可以將檔案投射到 (鎖定的位置,或所有) 的任何地方? 除了%pf%\windowsapps 或%pf%\modifiablewindowsapps 以外的任何位置
如果我們建立了投影目錄上的 Acl,會有什麼? 繼承自父目錄
有多個套件可以宣告相同的目錄嗎? 我們不允許有多個相關的集合宣告相同的目錄。 換句話說,如果有多個宣告相同目錄的封裝,它們必須全部來自相同的相關集合。
那麼一個以上的發行者呢? No
衝突的處理方式為何? 合併封裝和/或預先存在的檔案。 如果未指定順序,則會以指定的優先順序或依字母順序來解析衝突的檔案