基于打包应用目录在任何位置创建目录
为了满足某些要求,应用程序可能需要文件显示在其现有的安装目录中。 例如,如果特定应用程序需要文件夹中的文件,例如 C:\Program Files\Contoso;管理员可以修改该目录。 从 Windows 11 开始,应用可指定 WindowsApps 目录之外的目录,操作系统将确保文件将显示在该位置,并从父目录继承适当的 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 安装 |
Who 可以 (用户或管理员) 安装它? | 管理员 |
在哪里可以将文件投影到 (锁定位置或所有) ? | 除%pf%\windowsapps 或%pf%\modifiablewindowsapps 以外的任何位置 |
如果创建目录,则投影目录有哪些 Acl? | 从父目录继承 |
多个包是否可以声明同一个目录? | 不允许多个相关集声明同一目录。 换言之,如果有多个包声明同一目录,它们必须都来自相同的相关集。 |
有多个发布者? | 否 |
如何处理冲突? | 合并包和/或预先存在的文件。 如果未指定顺序,则冲突的文件将按指定的优先级顺序或包名称进行解析 |