企业应用管理
本文讨论 Windows 移动版设备管理 (MDM) 功能的主要功能之一:能够管理所有 Windows 设备上的应用生命周期。 这包括应用商店和非应用商店应用,这些应用可以通过 MDM 进行本机管理。
通过使用 Windows MDM 管理应用生命周期,管理员可以部署和管理更新、删除过时或未使用的应用,并确保所有设备都安装了必要的应用以满足组织的需求。 此功能可简化应用管理过程,并为 IT 专业人员节省时间和精力。
应用程序管理目标
Windows 使管理服务器能够:
- 部署脱机应用商店应用和许可证
- ) 非应用商店应用 (部署业务线 (LOB) 应用
- 列出用户 (应用商店和非应用商店应用的所有应用)
- 清点设备 (应用商店和非应用商店应用的所有应用)
- 卸载用户的所有应用 (应用商店和非应用商店应用)
- 预配应用,以便为运行 Windows 桌面版的设备的所有用户安装应用, (家庭版、专业版、企业版和教育版)
- 删除运行 Windows 桌面版的设备上的预配应用
清单应用
Windows 允许你清点部署到用户的所有应用,并清点 Windows 设备所有用户的所有应用。 EnterpriseModernAppManagement 配置服务提供商 (CSP) 清单打包的应用,不包括通过 MSI 或可执行文件安装的传统 Win32 应用。 列出应用清单时,会根据以下应用分类来分隔这些应用:
- 应用商店:从 Microsoft 应用商店获取的应用。
- nonStore:未从 Microsoft Store 获取的应用。
- 系统:属于操作系统且无法卸载的应用。 此分类是只读的,只能列出清单。
每个应用由一个包系列名称和一个或多个包全名标识,并且应用根据其来源进行分组。 EnterpriseModernAppManagement CSP 将这些分类显示为节点。
可以通过包全名在 AppManagement 节点的任何级别递归运行清单。 还可以选择仅列出特定属性的清单。 清单特定于包全名,并在包系列名称下列出捆绑包和资源包(如果适用)。
有关每个节点的详细信息,请参阅 EnterpriseModernAppManagement CSP 中提供的详细说明。
应用清单
可以使用 EnterpriseModernAppManagement CSP 查询为用户或设备安装的所有应用。 查询返回所有应用,即使它们是使用 MDM 或其他方法安装的。 清单可以在用户或设备级别运行。 设备级别的清单返回设备上的所有用户的信息。
根据硬件和已安装的应用数量,对设备执行完整清单可能会占用大量资源。 返回的数据也可能很大。 你可能希望对这些请求进行分块,以减少对客户端和网络流量的影响。
设备上所有应用的示例查询。
<!-- Get all apps under AppManagement --> <Get> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement?list=StructData</LocURI> </Target> </Item> </Get>
针对用户的特定应用的示例查询。
<!-- Get all information of a specific app for a user --> <Get> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}?list=StructData</LocURI> </Target> </Item> </Get>
应用商店许可证清单
可以使用 EnterpriseModernAppManagement CSP 查询为用户或设备安装的所有应用许可证。 查询返回所有应用许可证,如果它们是通过 MDM 或其他方法安装的,则返回事件。 清单可以在用户或设备级别运行。 设备级别的清单返回设备上的所有用户的信息。
有关每个节点的详细说明,请参阅 EnterpriseModernAppManagement CSP。
注意
CSP 中的 LicenseID 是许可证的内容 ID。
下面是设备上所有应用许可证的查询示例。
<!-- Get all app licenses for the device --> <Get> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses?list=StructData</LocURI> </Target> </Item> </Get>
下面是针对用户的所有应用许可证的查询示例。
<!-- Get a specific app license for a user --> <Get> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}?list=StructData</LocURI> </Target> </Item> </Get>
启用设备以安装非应用商店应用
可以部署两种基本类型的应用:
- 应用商店应用。
- 企业签名的应用。
若要部署企业签名的应用,必须在设备上启用设置以允许受信任的应用。 应用可由Microsoft批准的根 ((例如 Symantec) 、企业部署的根或自签名的应用)进行签名。 本部分介绍为非存储应用部署配置设备的步骤。
解锁非应用商店应用的设备
若要部署非Microsoft应用商店中的应用,必须配置 ApplicationManagement/AllowAllTrustedApps 策略。 如果设备上存在证书链,则此策略允许在设备上安装非应用商店应用。 可以使用设备上的根证书对应用进行签名, (例如 Symantec Enterprise) 、企业拥有的根证书或设备上部署的对等信任证书。 有关部署用户许可证的详细信息,请参阅 将脱机许可证部署到用户。
AllowAllTrustedApps 策略允许在设备上的受信任人员中安装证书信任的应用,或者在设备的受信任根目录中安装根证书。 默认情况下未配置策略,这意味着只能安装Microsoft应用商店中的应用。 如果管理服务器隐式将值设置为 off,则会在设备上的设置面板中禁用该设置。
下面是一个示例:
<!-- Get policy (Default)-->
<Get>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowAllTrustedApps?list=StructData</LocURI>
</Target>
</Item>
</Get>
<!-- Update policy -->
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowAllTrustedApps</LocURI>
</Target>
<Meta>
<Format>int</Format>
<Type>text/plain</Type>
</Meta>
<Data>1</Data>
</Item>
</Replace>
解锁设备以使用开发人员模式
在 Windows 设备上开发应用不再需要特殊许可证。 可以在策略 CSP 中使用 ApplicationManagement/AllowDeveloperUnlock 策略启用非打包应用的调试和部署。
AllowDeveloperUnlock 策略在设备上启用开发模式。 默认情况下,未配置 AllowDeveloperUnlock,这意味着只能安装Microsoft应用商店应用。 如果管理服务器将值显式设置为 off,则会在设备上的设置面板中禁用该设置。
将应用部署到 Windows 设备要求设备上有证书链。 可以使用设备上的根证书对应用进行签名, (例如 Symantec Enterprise) 、企业拥有的根证书或设备上部署的对等信任证书。
下面提供了一个示例。
<!-- Get policy (Default)-->
<Get>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowDeveloperUnlock?list=StructData</LocURI>
</Target>
</Item>
</Get>
<!-- Update policy -->
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowDeveloperUnlock</LocURI>
</Target>
<Meta>
<Format>int</Format>
<Type>text/plain</Type>
</Meta>
<Data>1</Data>
</Item>
</Replace>
安装应用
可以将应用安装到特定用户或设备的所有用户。 应用直接从 Microsoft 应用商店安装。 或者,它们是从主机位置(例如本地磁盘、UNC 路径或 HTTPS 位置)安装的。 使用 EnterpriseModernAppManagement CSP 的 AppInstallation 节点安装应用。
从应用商店将应用部署到用户
若要直接从 Microsoft Store 将应用部署到用户,管理服务器在 EnterpriseModernAppManagement CSP 的 AppInstallation 节点上运行 Add and Exec 命令。 此功能仅在用户上下文中受支持,在设备上下文中不受支持。
如果你从适用于企业的应用商店购买了应用,并且该应用是为在线许可证指定的,则必须直接从 Microsoft Store 获取该应用和许可证。
注意
适用于企业的 Microsoft Store和适用于教育的 Microsoft Store已停用。 有关详细信息,请参阅 2023 年 3 月 31 日停用适用于企业的 Microsoft Store和教育版。
下面是此方案的要求:
- 应用将分配给适用于企业的应用商店中的Microsoft Entra标识的用户。 可以直接在适用于企业的应用商店中或通过管理服务器进行分配。
- 设备需要连接到 Microsoft 存储。
- Microsoft必须在设备上启用应用商店服务。 Microsoft应用商店的 UI 可由企业管理员禁用。
- 用户必须使用其Microsoft Entra标识登录。
下面是一个示例:
<Exec>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/StoreInstall</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">xml</Format>
</Meta>
<Data>
<Application id="{ProductID}" flags="0" skuid=" " />
</Data>
</Item>
</Exec>
下面是上一版本的更改:
- 引用
{CatID}
应更新为{ProductID}
。 此值作为适用于企业的应用商店管理工具的一部分获取。 - 标志的值可以是 0 或 1。
- 0:管理工具回调到适用于企业的应用商店同步,以向用户分配应用程序的席位。
- 1:管理工具不会回调到适用于企业的应用商店同步,以向用户分配应用程序的席位。 CSP 会认领一个席位(如果可用)。
-
skuid
是所需的新参数。 此值作为适用于企业的应用商店管理工具同步的一部分获取。
向用户部署脱机许可证
如果你从适用于企业的应用商店购买了应用,则必须将应用许可证部署到设备。 只需在应用初始安装过程中部署应用许可证。 在更新期间,仅将应用部署到用户。
在 SyncML 中,需要在 命令中 Exec
指定以下信息:
- 许可证 ID - 此 ID 在 LocURI 中指定。 脱机许可证的许可证 ID 在许可证文件中称为“内容 ID”。 可以从适用于企业的 Store 下载 Base 64 编码许可证中检索此信息。
- 许可证内容 - 此内容在数据部分中指定。 许可证内容是许可证的 Base 64 编码 Blob。
下面是脱机许可证安装的示例。
<Exec>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{LicenseID}/AddLicense</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">xml</Format>
</Meta>
<Data><License Content="{LicenseBlob}"></Data>
</Item>
</Exec>
从托管位置将应用部署到用户
如果你从适用于企业的应用商店购买了应用,并且该应用是为脱机许可证指定的,或者该应用是非应用商店应用,则必须从托管位置部署该应用。
下面是此方案的要求:
- 应用的位置可以是本地文件系统 (C:\StagedApps\app1.appx) 、UNC 路径 (\\server\share\app1.apx) ,也可以是 HTTPS 位置 (
https://contoso.com/app1.appx
) 。 - 用户必须具有访问内容位置的权限。 对于 HTTP,可以使用服务器身份验证,或使用与注册关联的证书进行证书身份验证。 HTTP 位置受支持,但不建议这样做,因为缺少身份验证要求。
- 设备无需连接到Microsoft应用商店、存储服务或启用Microsoft应用商店 UI。
- 用户必须登录,但不需要与Microsoft Entra标识关联。
注意
必须解锁设备才能部署非应用商店应用,或者必须在部署脱机应用之前部署应用许可证。 有关详细信息,请参阅 将脱机许可证部署到用户。
需要包系列名称的 Add 命令,以确保在取消注册时正确删除应用。
下面是业务线应用安装的示例。
<!-- Add PackageFamilyName --> <Add> <CmdID>0</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}</LocURI> </Target> </Item> </Add> <!-- Install appx --> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> </Meta> <Data><Application PackageUri="\\server\share\HelloWorld10.appx" /></Data> </Item> </Exec>
下面是具有依赖项的应用安装示例。
<!-- Add PackageFamilyName --> <Add> <CmdID>0</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI> </Target> </Item> </Add> <!-- Install appx with deployment options and framework dependencies--> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> </Meta> <Data> <Application PackageUri="\\server\share\HelloWorld10.appx" DeploymentOptions="0" > <Dependencies> <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" /> <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx" /> </Dependencies> </Application> </Data> </Item> </Exec>
下面是包含依赖项和可选包的应用安装示例。
<!-- Add PackageFamilyName --> <Add> <CmdID>0</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI> </Target> </Item> </Add> <!-- Install appx with deployment options and framework dependencies--> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> </Meta> <Data> <Application PackageUri="\\server\share\HelloWorld10.appx" DeploymentOptions="0" > <Dependencies> <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" /> <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx" /> </Dependencies> <OptionalPackages> <Package PackageUri="\\server\share\OptionalPackage1.appx" PackageFamilyName="/{PackageFamilyName}" /> <Package PackageUri="\\server2\share\OptionalPackage2.appx" PackageFamilyName="/{PackageFamilyName}" /> </OptionalPackages> </Application> </Data> </Item> </Exec>
为设备的所有用户预配应用
预配允许你将应用暂存到设备,并且设备的所有用户都可以在下次登录时注册该应用。 此功能仅支持从适用于企业的应用商店购买的应用,并且该应用是为脱机许可证指定的,或者该应用是非应用商店应用。 必须从托管位置提供应用。 应用作为本地系统安装。 若要安装到本地文件共享,设备的“本地系统”必须有权访问共享。
下面是此方案的要求:
- 应用的位置可以是本地文件系统 (C:\StagedApps\app1.appx) 、UNC 路径 (\\server\share\app1.apx) 或 HTTPS 位置 (
https://contoso.com/app1.appx\
) - 用户必须具有访问内容位置的权限。 对于 HTTP,可以使用服务器身份验证,或使用与注册关联的证书进行证书身份验证。 HTTP 位置受支持,但不建议这样做,因为缺少身份验证要求。
- 设备无需连接到 Microsoft Store,也不需要启用存储服务。
- 设备不需要任何Microsoft Entra标识或域成员身份。
- 对于 nonStore 应用,设备必须解锁。
- 对于 Microsoft Store 脱机应用,必须在部署应用之前部署所需的许可证。
若要从托管位置为设备的所有用户预配应用,管理服务器在设备上下文中的 AppInstallation 节点上运行 Add and Exec 命令。 需要包系列名称的 Add 命令,以确保在取消注册时正确删除应用。
注意
删除预配的应用时,不会从已安装该应用的用户中删除该应用。
下面是应用安装的示例:
<!-- Add PackageFamilyName --> <Add> <CmdID>0</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI> </Target> </Item> </Add> <!-- Provision appx to device --> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> </Meta> <Data><Application PackageUri="\\server\share\HelloWorld10.appx" /></Data> </Item> </Exec>
HostedInstall Exec 命令包含需要嵌入 XML 的数据节点。 下面是数据 XML 的要求:
- 应用程序节点具有必需的参数 PackageURI,可以是本地文件位置、UNC 或 HTTPS 位置。
- 如果需要,可以指定依赖项,以便随包一起安装。 此操作可选。
DeploymentOptions 参数仅在用户上下文中可用。
下面是使用依赖项安装应用的示例。
<!-- Add PackageFamilyName --> <Add> <CmdID>0</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI> </Target> </Item> </Add> <!-- Provision appx with framework dependencies--> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> </Meta> <Data> <Application PackageUri="\\server\share\HelloWorld10.appx" /> <Dependencies> <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" /> <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx"/> </Dependencies> </Application> </Data> </Item> </Exec>
获取应用安装的状态
应用安装完成后,将发送 Windows 通知。 还可以使用 AppInstallation 节点查询 的状态。 下面是可在查询中返回的信息列表:
- 状态 - 指示应用安装的状态。
- NOT_INSTALLED (0) - 已添加节点,但未完成执行。
- 安装 (1) - 执行已开始,但部署尚未完成。 如果部署完成而不考虑成功,则此值将更新。
- 失败 (2) - 安装失败。 错误的详细信息可以在 LastError 和 LastErrorDescription 下找到。
- 安装 (3) - 安装成功后,将清理此节点。 如果清理操作尚未完成,则此状态可能会短暂出现。
- LastError - 应用部署服务器报告的最后一个错误。
- LastErrorDescription - 描述应用部署服务器报告的最后一个错误。
- 状态 - 指示应用安装进度的整数。 对于 HTTPS 位置,此状态会显示估计的下载进度。 状态不可用于预配,仅用于基于用户的安装。 对于预配,该值始终为 0。
成功安装应用后,节点将被清理且不再存在。 可以在 AppManagement 节点下报告应用的状态。
下面是特定应用安装的查询示例。
<!-- Get all app status under AppInstallation for a specific app--> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}?list=StructData</LocURI> </Target> </Item> </Get>
下面是所有应用安装的查询示例。
<!-- Get all app status under AppInstallation--> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation?list=StructData</LocURI> </Target> </Item> </Get>
安装完成警报
应用程序安装可能需要一些时间才能完成。 因此,它们是异步完成的。 Exec 命令完成后,客户端会向管理服务器发送一条通知,其中包含状态,无论它是失败还是成功。
下面是警报的示例。
<Alert>
<CmdID>4</CmdID>
<Data>1226</Data>
<Item>
<Source>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
</Source>
<Meta>
<Type xmlns="syncml:metinf">Reversed-Domain-Name:com.microsoft.mdm.EnterpriseHostedAppInstall.result</Type>
<Format xmlns="syncml:metinf">int</Format>
</Meta>
<Data>0</Data>
</Item>
</Alert>
对于基于用户的安装,请使用 ./User
路径;对于预配应用,请使用 ./Device
路径。
“数据”字段值为 0 (零) 表示成功。 否则为错误代码。 如果出现故障,可以从 AppInstallation 节点获取更多详细信息。
注意
目前,应用商店应用安装警报不可用。
卸载应用
你可以从 Windows 设备中卸载用户的应用。 若要卸载应用,请从 CSP 的 AppManagement 节点将其删除。 在 AppManagement 节点中,包根据其源根据以下节点进行组织:
- AppStore - 这些应用适用于 Microsoft 应用商店。 应用可以直接从应用商店安装,也可以从适用于企业的应用商店交付到企业。
- nonStore - 这些应用不是从 Microsoft Store 获取的。
- 系统 - 这些应用是操作系统的一部分。 无法卸载这些应用。
若要卸载应用,请在源节点、包系列名称和包全名下将其删除。 若要卸载 XAP,请使用产品 ID 代替包系列名称和包全名。
下面是为用户卸载应用的所有版本的示例。
<!-- Uninstall App for a Package Family-->
<Delete>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}</LocURI>
</Target>
</Item>
</Delete>
-下面是一个为用户卸载特定版本的应用的示例。
<!-- Uninstall App for a specific package full name-->
<Delete>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/{PackageFullName}</LocURI>
</Target>
</Item>
</Delete>
从设备中删除了预配的应用
可以从设备中删除特定版本或包系列的所有版本的预配应用。 删除预配的应用后,该设备的未来用户无法使用该应用。 已注册应用的已登录用户继续有权访问该应用。 如果要删除这些用户的应用,则必须显式卸载这些用户的应用。
注意
只能删除清单值为 IsProvisioned = 1 的应用。
删除预配的应用发生在设备上下文中。
下面是从设备中删除预配应用的示例。
<!- Remove Provisioned App for a Package Family--> <Delete> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}</LocURI> </Target> </Item> </Delete>
下面是从设备中删除预配应用的特定版本的示例:
<!-- Remove Provisioned App for a specific package full name--> <Delete> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/{PackageFullName}</LocURI> </Target> </Item> </Delete>
删除应用商店应用许可证
可以根据内容 ID 从每个应用的设备中删除应用许可证。
下面是删除用户应用许可证的示例。
<!-- Remove App License for a User--> <Delete> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}</LocURI> </Target> </Item> </Delete>
下面是删除预配包的应用许可证的示例, (设备上下文) 。
<!-- Remove App License for a provisioned package (device) --> <Delete> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}</LocURI> </Target> </Item> </Delete>
应用卸载警报
卸载应用可能需要一段时间才能完成。 因此,卸载以异步方式运行。 Exec 命令完成后,客户端会向管理服务器发送一条通知,其中包含状态,无论它是失败还是成功。
对于基于用户的卸载,请在 LocURI 中使用 ./User;对于预配,请在 LocURI 中使用 ./Device。
下面提供了一个示例。 托管和存储应用只有一次卸载。
<Alert>
<Data>1226</Data>
<Item>
<Source>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/{PackageFamilyName}</LocURI>
</Source>
<Meta>
<Type xmlns="syncml:metinf">Reversed-Domain-Name:com.microsoft.mdm.EnterpriseAppUninstall.result</Type>
<Format xmlns="syncml:metinf">int</Format>
</Meta>
<Data>0</Data>
</Item>
</Alert>
更新应用
可以使用管理服务器更新设备上安装的应用。 可以直接从应用商店更新应用,也可以从托管位置安装应用。
直接从应用商店更新应用
若要从 Microsoft 应用商店更新应用,设备需要与应用商店服务联系。
下面是更新扫描的示例。
<!- Initiate a update scan for a user--> <Exec> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI> </Target> </Item> </Exec>
下面是状态检查的示例。
<!- Get last error related to the update scan--> <Get> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/LastScanError</LocURI> </Target> </Item> </Get>
从托管位置更新应用
更新现有应用的过程与初始安装过程相同。 有关详细信息,请参阅 从托管位置将应用部署到用户。
更新预配的应用
将应用更新发送给用户时,预配的应用会自动更新。 还可以使用与初始预配相同的过程更新预配的应用。 有关初始预配的详细信息,请参阅 为设备的所有用户预配应用。
阻止应用自动更新
可以阻止特定应用自动更新。 此功能允许你为应用启用自动更新,其中排除了 IT 管理员定义的特定应用。
关闭更新仅适用于设备级别的 Microsoft Store 中的更新。 此功能在用户级别不可用。 如果从托管安装位置推送脱机包,你仍然可以更新应用。
下面提供了一个示例。
<!- Prevent app from being automatically updated-->
<Replace>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/DoNotUpdate</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">int</Format>
<Type xmlns="syncml:metinf">text/plain</Type>
</Meta>
<Data>1</Data></Item>
</Replace>
更多应用管理方案
以下小节提供了有关更多设置配置的信息。
启用共享用户应用数据
通用 Windows 应用可以在设备的用户之间共享应用程序数据。 可以在包系列级别或每个设备设置共享数据的功能。
注意
这仅适用于多用户设备。
ApplicationManagement/AllowSharedUserAppData 策略启用或禁用应用包,以便在有多个用户时在应用包之间共享数据。 如果启用此策略,应用程序可以在其包系列中的包之间共享数据。 可以通过该包系列和本地计算机的 ShareLocal 文件夹共享数据。 此文件夹可通过 Windows.Storage API 使用。
如果禁用此策略,应用程序无法在多个用户之间共享用户应用程序数据。 但是,预写共享数据仍然存在。 若要清理预写共享数据,请使用 DISM (/Get-ProvisionedAppxPackage
检测是否存在任何共享数据,并 /Remove-SharedAppxData
) 将其删除。
有效值为 0 (off、默认值) 和 1 () 。
下面提供了一个示例。
<!-- Get policy (Default)-->
<Get>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowSharedUserAppData?list=StructData</LocURI>
</Target>
</Item>
</Get>
<!-- Update policy -->
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowSharedUserAppData</LocURI>
</Target>
<Meta>
<Format>int</Format>
<Type>text/plain</Type>
</Meta>
<Data>1</Data>
</Item>
</Replace>