根據已封裝的應用程式目錄在任何位置建立目錄
為了滿足特定需求,應用程式可能需要檔案出現在其現有的安裝目錄中。 例如,如果特定應用程式預期資料夾中有檔案,例如 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>
投影的考慮
使用這項功能之前,以下是考慮清單:
考量 | 描述 |
---|---|
如何安裝能夠投影的套件? | 套件必須透過 ProvisionPackageForAllUsers API 安裝 |
神秘 可以安裝它(用戶或系統管理員)? | 管理 |
檔案可以投影到何處(鎖定的位置或任何地方)? | %pf%\windowsapps 或 %pf%\modifiablewindowsapps 以外的任何位置 |
如果我們建立 ACL,投影目錄上的 ACL 是什麼? | 繼承自父目錄 |
多個套件可以宣告相同的目錄嗎? | 我們不允許多個相關集合宣告相同的目錄。 換句話說,如果有多個封裝宣告相同的目錄,它們必須全部來自相同的相關集合。 |
一個以上的發行者呢? | No |
如何處理衝突? | 封裝和/或預先存在的檔案會合併。 衝突的檔案會依指定的優先順序或依字母順序依字母順序解析,如果未指定任何順序,則會依字母順序解析衝突的檔案 |