학습
모듈
Manage Universal Windows Platform apps - Training
This module explores using Microsoft Store to manage Universal Windows Platform apps.
이 문서에서는 Windows MDM(모바일 장치 관리) 기능의 주요 기능 중 하나인 모든 Windows 디바이스에서 앱의 수명 주기를 관리하는 기능에 대해 설명합니다. 여기에는 MDM을 통해 기본적으로 관리할 수 있는 스토어 및 비 스토어 앱이 모두 포함됩니다.
관리자는 Windows MDM을 사용하여 앱 수명 주기를 관리함으로써 업데이트를 배포 및 관리하고, 오래되었거나 사용되지 않은 앱을 제거하고, 모든 디바이스에 organization 요구 사항을 충족하는 데 필요한 앱을 설치하도록 할 수 있습니다. 이 기능은 앱 관리 프로세스를 간소화하고 IT 전문가를 위한 시간과 노력을 절약합니다.
Windows는 관리 서버에서 다음을 수행할 수 있는 기능을 제공합니다.
Windows를 사용하면 사용자에게 배포된 모든 앱을 인벤토리하고 Windows 디바이스의 모든 사용자에 대한 모든 앱을 인벤토리할 수 있습니다. EnterpriseModernAppManagement CSP(구성 서비스 공급자) 인벤토리는 패키지된 앱을 포함하고 MSI 또는 실행 파일을 통해 설치된 기존 Win32 앱을 포함하지 않습니다. 앱이 인벤토리에 추가되면 다음 앱 분류에 따라 구분됩니다.
각 앱은 하나의 패키지 패밀리 이름과 하나 이상의 패키지 전체 이름으로 식별되며 앱은 원본에 따라 그룹화됩니다. 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 Store에 없는 앱을 배포하려면 ApplicationManagement/AllowAllTrustedApps 정책을 구성해야 합니다. 이 정책을 사용하면 디바이스에 인증서 체인이 있는 경우 디바이스에 비 스토어 앱을 설치할 수 있습니다. 앱은 디바이스의 루트 인증서(예: Symantec Enterprise), 엔터프라이즈 소유 루트 인증서 또는 디바이스에 배포된 피어 트러스트 인증서로 서명할 수 있습니다. 사용자 라이선스 배포에 대한 자세한 내용은 사용자에게 오프라인 라이선스 배포를 참조하세요.
AllowAllTrustedApps 정책을 사용하면 디바이스의 신뢰할 수 있는 사람 인증서 또는 디바이스의 신뢰할 수 있는 루트에 루트 인증서로 신뢰할 수 있는 앱을 설치할 수 있습니다. 정책은 기본적으로 구성되지 않으므로 Microsoft Store의 앱만 설치할 수 있습니다. 관리 서버가 암시적으로 값을 해제로 설정하면 디바이스의 설정 패널에서 설정이 비활성화됩니다.
예를 들면 다음과 같습니다.
<!-- 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 Store 앱만 설치할 수 있습니다. 관리 서버가 명시적으로 값을 해제로 설정하면 디바이스의 설정 패널에서 설정이 비활성화됩니다.
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 Store에서 직접 설치됩니다. 또는 로컬 디스크, UNC 경로 또는 HTTPS 위치와 같은 호스트 위치에서 설치됩니다. EnterpriseModernAppManagement CSP의 AppInstallation 노드를 사용하여 앱을 설치합니다.
Microsoft Store에서 사용자에게 직접 앱을 배포하기 위해 관리 서버는 EnterpriseModernAppManagement CSP의 AppInstallation 노드에서 추가 및 Exec 명령을 실행합니다. 이 기능은 사용자 컨텍스트에서만 지원되며 디바이스 컨텍스트에서는 지원되지 않습니다.
비즈니스용 스토어에서 앱을 구입했고 앱이 온라인 라이선스에 대해 지정된 경우 Microsoft Store에서 직접 앱과 라이선스를 획득해야 합니다.
참고
비즈니스용 Microsoft Store 및 교육용 Microsoft Store 사용 중지됩니다. 자세한 내용은 2023년 3월 31일 비즈니스용 Microsoft Store 및 교육 사용 중지를 참조하세요.
이 시나리오에 대한 요구 사항은 다음과 같습니다.
예를 들면 다음과 같습니다.
<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}
업데이트해야 합니다. 이 값은 비즈니스용 스토어 관리 도구의 일부로 획득됩니다.skuid
필요한 새 매개 변수입니다. 이 값은 비즈니스용 스토어에서 관리 도구 동기화의 일부로 획득됩니다.비즈니스용 스토어에서 앱을 구매한 경우 앱 라이선스를 디바이스에 배포해야 합니다. 앱 라이선스는 앱 초기 설치의 일부로만 배포해야 합니다. 업데이트하는 동안 앱만 사용자에게 배포됩니다.
SyncML에서 명령에서 Exec
다음 정보를 지정해야 합니다.
오프라인 라이선스 설치의 예는 다음과 같습니다.
<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>
비즈니스용 스토어에서 앱을 구입했고 앱이 오프라인 라이선스에 대해 지정되었거나 앱이 스토어가 아닌 앱인 경우 호스트된 위치에서 앱을 배포해야 합니다.
이 시나리오에 대한 요구 사항은 다음과 같습니다.
https://contoso.com/app1.appx
)일 수 있습니다.참고
비스토어 앱을 배포하려면 디바이스의 잠금을 해제하거나 오프라인 앱을 배포하기 전에 앱 라이선스를 배포해야 합니다. 자세한 내용은 사용자에게 오프라인 라이선스 배포를 참조하세요.
등록 취소 시 앱을 적절하게 제거하려면 패키지 패밀리 이름에 대한 추가 명령이 필요합니다.
다음은 기간 업무 앱 설치의 예입니다.
<!-- 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>
프로비저닝을 사용하면 디바이스에 앱을 스테이징할 수 있으며 디바이스의 모든 사용자는 다음 로그인 시 앱을 등록할 수 있습니다. 이 기능은 비즈니스용 스토어에서 구매한 앱에 대해서만 지원되며, 앱은 오프라인 라이선스에 대해 지정되거나 앱은 비 스토어 앱입니다. 호스트된 위치에서 앱을 제공해야 합니다. 앱이 로컬 시스템으로 설치됩니다. 로컬 파일 공유에 설치하려면 디바이스의 '로컬 시스템'에 공유에 대한 액세스 권한이 있어야 합니다.
이 시나리오에 대한 요구 사항은 다음과 같습니다.
https://contoso.com/app1.appx\
)일 수 있습니다.호스트된 위치에서 디바이스의 모든 사용자에 대한 앱을 프로비전하기 위해 관리 서버는 디바이스 컨텍스트의 AppInstallation 노드에서 추가 및 Exec 명령을 실행합니다. 등록 취소 시 앱을 적절하게 제거하려면 패키지 패밀리 이름에 대한 추가 명령이 필요합니다.
참고
프로비전된 앱을 제거하면 이미 앱을 설치한 사용자에서 제거되지 않습니다.
앱 설치의 예는 다음과 같습니다.
<!-- 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에 대한 요구 사항은 다음과 같습니다.
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 노드를 사용하는 상태 쿼리할 수도 있습니다. 쿼리에서 다시 가져올 수 있는 정보 목록은 다음과 같습니다.
앱이 성공적으로 설치되면 노드가 정리되고 더 이상 존재하지 않습니다. 앱의 상태 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(0)은 성공을 나타냅니다. 그렇지 않으면 오류 코드입니다. 오류가 발생하면 AppInstallation 노드에서 자세한 내용을 확인할 수 있습니다.
참고
현재 스토어 앱 설치에 대한 경고를 사용할 수 없습니다.
Windows 디바이스에서 사용자의 앱을 제거할 수 있습니다. 앱을 제거하려면 CSP의 AppManagement 노드에서 앱을 삭제합니다. AppManagement 노드 내에서 패키지는 다음 노드에 따라 원본에 따라 구성됩니다.
앱을 제거하려면 원본 노드, 패키지 패밀리 이름 및 패키지 전체 이름 아래에서 앱을 삭제합니다. 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 Store에서 앱을 업데이트하려면 디바이스에 스토어 서비스와의 연결이 필요합니다.
다음은 업데이트 검사의 예입니다.
<!- 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(끄기, 기본값) 및 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>
학습
모듈
Manage Universal Windows Platform apps - Training
This module explores using Microsoft Store to manage Universal Windows Platform apps.