Share via


DISM을 사용하여 앱 사전 설치

참고

Microsoft Store 앱을 사전 설치하는 데 관심이 있지만 OEM이 아닌가요? 조직용 앱을 사이드로드하는 방법에 대한 내용은 DISM을 사용하여 앱을 테스트용으로 로드를 참조하세요.

이 항목에서는 Windows 이미지의 일부로 포함되도록 앱을 사전 설치하는 방법에 대해 설명합니다.

HSA(하드웨어 지원 앱)는 Microsoft Store 앱이며 다음 지침이 적용됩니다.

앱 패키지 작업

DISM을 사용하여 앱을 이미지에 오프라인으로 프로비전합니다. 명령 프롬프트에서 DISM을 사용하거나 Windows PowerShell에서 DISM cmdlet을 사용할 수 있습니다.

이전 버전의 Windows 10에서는 사전 설치된 유니버설 앱과 Microsoft Store 앱을 시작 메뉴에 고정해야 했습니다. Windows는 사전 설치되었지만 시작 메뉴에 고정되지 않은 앱을 제거합니다.

Windows 10 버전 1803부터 /region 옵션과 함께 DISM /add-provisionedappxpackage를 사용하면 앱을 시작 메뉴에 고정하지 않고 사전 설치할 수 있습니다. 앱을 사전 설치하는 경우 LayoutModification.xml에서 앱을 제외하도록 선택할 수 있으며 앱이 시작 메뉴 타일로 표시되지 않고 성공적으로 설치됩니다. 지역 목록이 지정되지 않으면 앱이 시작 레이아웃에 고정된 경우에만 앱이 프로비전됩니다.

패키지 파일 추출

  1. 파트너 대시보드에서 다운로드한 앱 패키지를 저장한 폴더를 찾습니다.

  2. 마우스 오른쪽 단추로 앱 패키지 파일이 포함된 각 .zip 폴더를 클릭합니다. 모두 추출을 클릭하고, 패키지 파일 폴더를 저장할 위치를 선택합니다.

    폴더에는 기본 패키지, 종속성 패키지 및 라이선스 파일을 포함하여 압축이 풀린 모든 패키지 파일이 포함됩니다.

중요

패키지 파일을 추출한 후에는 폴더를 수정하지 마세요. 폴더의 파일이 변경, 추가 또는 제거되면 설치 또는 시작 중에 앱이 실패합니다. 폴더를 검색해도 문제가 발생할 수 있습니다.

패키지 파일의 라이선스 파일을 사용하여 프로비전된 이미지를 테스트해야 합니다. 사용자 고유의 사용자 지정 데이터 파일을 만들면 OEM에서 사전 설치한 앱을 정확하게 테스트할 수 없습니다.

앱을 이미지에 오프라인으로 프로비전하는 경우 Dism.exe 도구 또는 Windows PowerShell의 DISM cmdlet을 사용하여 압축을 푼 파일 폴더에서 앱을 추가할 수 있습니다.

DISM을 사용하여 Microsoft Store 서명 앱 사전 설치

  1. 명령 프롬프트를 관리자 권한으로 엽니다.

  2. 서비스하려는 Windows 이미지를 탑재합니다.

    Dism /Mount-Image /ImageFile:c:\images\myimage.wim /Index:1 /mountdir:c:\test\offline
    
  3. 앱을 탑재된 이미지에 추가합니다. /PackagePath/DependencyPackagePath 옵션을 사용합니다.

    • Packagepath는 .appx 번들 또는 패키지 파일의 경로입니다.
    • DependencyPackagePath는 각 종속성 패키지를 지정하는 경로입니다. 명령당 둘 이상의 종속성이 있을 수 있습니다.
    • Windows 10 버전 1803의 새로운 기능: 앱을 추가할 때 Region 옵션을 사용합니다. Region을 사용하면 앱을 시작 메뉴에 고정하지 않고도 앱을 추가할 수 있습니다.
    Dism /Image:c:\test\offline /Add-ProvisionedAppxPackage /PackagePath:c:\downloads\package.appxbundle /DependencyPackagePath:c:\downloads\dependency1.appx /DependencyPackagePath:c:\downloads\dependency2.appx /LicensePath=c:\downloads\package_License1.xml /region=all"
    

    새 /region 옵션을 포함하여 앱 패키지 작업에 대한 자세한 내용은 DISM 앱 패키지 서비스 명령줄 옵션을 참조하세요.

  4. 앱을 시작 메뉴에 고정합니다.

    • 앱을 사전 설치할 때 /region을 지정하지 않은 경우 LayoutModification.xml을 사용하여 앱을 시작 메뉴에 고정합니다.

      or

    • 앱을 사전 설치할 때 /region을 지정했고 앱을 특정 지역의 시작 메뉴에 고정하려는 경우 LayoutModification.xml의 RequiredStartGroups Region="region1|region2" 요소를 사용하여 앱을 표시하려는 지역을 지정합니다.

  5. 변경 내용을 저장하고 이미지를 분리합니다. 명령 프롬프트에 다음을 입력합니다.

    Dism /Unmount-Image /mountdir:c:\test\offline /commit
    

참고

Microsoft Store 앱은 감사 모드에서 실행되지 않습니다. 배포를 테스트하려면 Windows를 실행하고 새 사용자 프로필을 만듭니다. 감사 모드에 대한 자세한 내용은 감사 모드 개요를 참조하세요.

중요 모바일 광대역 디바이스 앱을 사전 설치하는 경우 Sysprep의 specialize 단계를 실행하기 전에 SIM 카드를 PC에 삽입해야 합니다. 모바일 광대역 디바이스 앱을 사전 설치하는 방법에 대한 자세한 내용은 모바일 광대역 애플리케이션 환경에 필요한 구성 요소 사전 설치를 참조하세요.

패키지 업데이트 또는 제거

DISM.exe 도구 또는 Windows PowerShell의 DISM cmdlet을 사용하여 Windows 이미지에서 사전 설치된 앱(라이선스 및 사용자 지정 데이터 파일 포함)을 제거할 수 있습니다. 새 앱을 설치하려면 먼저 이전 버전의 앱을 제거해야 합니다.

DISM을 사용하여 사전 설치된 앱 제거

  1. Windows ADK와 함께 설치된 배포 도구 명령 프롬프트를 관리자 권한으로 엽니다. 시작 화면에서 배포 및 이미징 도구 환경을 입력하고, 마우스 오른쪽 단추로 아이콘을 클릭한 다음, 관리자 권한으로 실행을 선택합니다.

  2. 서비스를 위해 오프라인 이미지를 탑재합니다. 명령 프롬프트에 다음을 입력합니다.

    Dism /Mount-Image /ImageFile:c:\images\myimage.wim /Index:1 /mountdir:c:\test\offline
    
  3. 제거하려는 앱의 전체 패키지 이름을 찾습니다. 명령 프롬프트에 다음을 입력합니다.

    Dism /Image:C:\test\offline /Get-ProvisionedAppxPackages
    
  4. 탑재된 이미지에서 앱을 제거합니다. 예를 들어 명령 프롬프트에서 다음을 입력합니다.

    Dism /Image:c:\test\offline /Remove-ProvisionedAppxPackage /PackageName:microsoft.devx.appx.app1_1.0.0.0_neutral_en-us_ac4zc6fex2zjp
    
  5. 앱을 업데이트하려는 경우 업데이트된 버전의 Microsoft Store 서명 앱을 사전 설치할 수 있습니다. 명령 프롬프트에서 다음을 입력합니다.

    Dism /Image:c:\test\offline /Add-ProvisionedAppxPackage/FolderPath:c:\downloads\appxpackage
    
  6. 변경 내용을 저장하고 이미지를 분리합니다. 명령 프롬프트에 다음을 입력합니다.

    Dism /Unmount-Image /mountdir:c:\test\offline /commit
    

사용자 지정 데이터 파일 사용

PC에 사전 설치된 앱은 설치와 관련된 사용자 지정 데이터에 액세스할 수 있습니다. 이 사용자 지정 데이터는 사전 설치 중에 앱에 추가되고 런타임에 사용할 수 있게 됩니다. 사용자 지정 데이터를 사용하면 개발자가 보고 기능 제공을 포함하여 앱의 기능을 사용자 지정할 수 있습니다.

Windows 이미지에 사용자 지정 데이터 파일 추가

DISM 도구를 사용하고 Add-AppxProvisionedPackage cmdlet을 사용하는 Windows PowerShell을 통해 앱을 사전 설치할 때 사용자 지정 데이터 파일을 지정해야 합니다. 다음 명령은 DISM 도구를 사용하여 이 작업을 수행하는 방법을 보여 줍니다.

Dism /Image:C:\test\offline /Add-ProvisionedAppxPackage / FolderPath:f:\Apps\Fabrikam_KnowMyPC /CustomDataPath:f:\Contoso_Promotion.xml

사용자 지정 데이터 파일이 앱의 데이터 저장소에 이미 있는 경우(예: 패키지가 이미 이미지에 추가된 경우) 기존 파일을 덮어씁니다. 설치가 실패하면 파일이 복원되지 않습니다.

참고 사용자 지정 데이터 파일을 잃지 않고 Microsoft Store를 통해 앱에 대한 업데이트를 릴리스할 수 있습니다. 그러나 사용자가 앱을 삭제하면 사용자가 앱을 다시 설치하더라도 사용자 지정 데이터 파일을 더 이상 사용할 수 없습니다.

사전 설치된 앱에 대한 사용자 지정 데이터 테스트

PC에 사전 설치된 앱은 설치와 관련된 사용자 지정 데이터에 액세스할 수 있습니다. 이 사용자 지정 데이터는 사전 설치 중에 앱에 추가되고 런타임에 앱에서 사용할 수 있게 됩니다. 사용자 지정 데이터를 사용하면 개발자가 보고 기능 제공을 포함하여 앱의 기능을 사용자 지정할 수 있습니다.

Custom.data 파일은 앱이 설치된 위치에 나타납니다. Custom.data라는 이름은 하드 코딩되어 있으며 수정할 수 없습니다. 앱에서 이 파일이 있는지 확인하여 앱이 PC에 사전 설치되었는지 확인할 수 있습니다. Custom.data 파일에 액세스하는 방법의 예제는 다음과 같습니다.

var outputDiv = document.getElementById("CustomData");
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync
     ("microsoft.system.package.metadata\\Custom.data").then(function (file) {
         // Read the file
         Windows.Storage.FileIO.readTextAsync(file).done(function (fileContent) {
            outputDiv.innerHTML = 
                 "App is preinstalled. CustomData contains:<br /><br />"
                 + fileContent;
         },
         function (error) {
             outputDiv.innerText = "Error reading CustomData " + error;
         });
     },
     function (error) {
         outputDiv.innerText = "CustomData was not available. App not preinstalled";
     });

Custom.data 파일은 모든 콘텐츠를 포함할 수 있으며 앱에 필요한 모든 형식이 될 수 있습니다. 사전 설치 프로세스는 단순히 앱에서 사용할 수 있도록 합니다. 개발자는 사전 설치 파트너에게 데이터 파일을 제공하거나 파트너가 콘텐츠를 생성할 수 있도록 하는 형식에 동의할 수 있습니다.

사용자 지정 데이터 테스트

Microsoft Visual Studio에서 앱을 빌드하고 디버그하는 경우 앱이 아직 사전 설치되지 않았으므로 앱이 설치된 위치에서 Custom.data 파일에 액세스할 수 없습니다. 테스트 Custom.data 파일을 앱 자체에 배치한 다음, 앱 로컬 파일을 로드하고 테스트하여 Custom.data 파일 사용을 시뮬레이션할 수 있습니다. 이렇게 하려면 다음과 같은 코드 샘플을

("microsoft.system.package.metadata\\Custom.data").then(function (file) {

다음과 같이 수정합니다.

("Custom.data").then(function (file) {

파일 형식과 콘텐츠를 확인한 후에는 위의 원래 예제와 같이 Custom.data 파일의 위치를 ​​최종 위치로 변경할 수 있습니다.

Custom.data 파일을 테스트하려면

  1. Windows ADK와 함께 설치된 배포 도구 명령 프롬프트를 관리자 권한으로 엽니다. 시작 화면에서 배포 및 이미징 도구 환경을 입력하고, 마우스 오른쪽 단추로 아이콘을 클릭한 다음, 관리자 권한으로 실행을 선택합니다.

  2. 사용자 지정 데이터 파일을 사용하여 애플리케이션을 추가합니다.

    dism /online /Add-ProvisionedAppxPackage /PackagePath:.\CustomData_1.0.0.1_AnyCPU_Debug.appx /CustomDataPath:.\Test.txt /SkipLicense
    

    여기서 /PackagePath:.\CustomData_1.0.0.1_AnyCPU_Debug.appx는 로컬 앱 테스트 패키지를 가리키고, /CustomDataPath:.\Test.txt는 Custom.data 파일을 가리킵니다. 데이터가 앱에 설치된 후에는 여기서 제공한 파일 이름이 사용되지 않습니다.

    이제 앱에는 앱을 테스트하는 데 사용되는 PC의 시작 화면에 대한 앱 타일이 있습니다. 앱에서 Custom.data 파일에 액세스할 수 있습니다. 추가 디버깅이 필요한 경우 시작 화면에서 앱을 시작한 후 디버거를 연결합니다.

    참고시작 화면에서 앱을 보려면 로그아웃한 후 다시 로그인해야 할 수 있습니다.

  3. 앱 테스트를 완료한 후에는 Dev 환경을 계속 사용하기 위해 사전 설치된 패키지를 제거해야 합니다. Windows PowerShell을 사용하여 사전 설치된 패키지를 제거하려면 Get-AppxPackage cmdlet을 사용하여 파이프라인을 통해 전체 앱 패키지 이름을 Remove-ProvisionedAppxPackage cmdlet에 제공하면 됩니다.

    Get-AppxPackage *CustomData* | Remove-ProvisionedAppxPackage

    여기서 *CustomData*는 앱 이름의 알려진 부분입니다.

Microsoft Store 디바이스 앱 또는 모바일 광대역 앱 사전 설치

DISM(배포 이미지 서비스 및 관리) 플랫폼을 사용하여 Microsoft Store 디바이스 앱 또는 모바일 광대역 앱에 필요한 구성 요소를 사전 설치할 수 있습니다.

참고 이 문서는 디바이스에서 Microsoft Store 디바이스 앱 또는 모바일 광대역 앱을 지원할 OEM을 위한 것입니다.

각 앱 유형에 대해 올바른 Microsoft Store 디바이스 앱 또는 모바일 광대역 앱을 제공하기 위해 다음 두 가지를 사전 설치해야 합니다.

  • Microsoft Store 디바이스 앱의 경우 다음을 사전 설치합니다.
    1. 디바이스 메타데이터 패키지
  • Microsoft Store 모바일 광대역 앱의 경우 다음을 사전 설치합니다.
    1. 서비스 메타데이터 패키지

중요 OOBE 프로세스가 완료된 직후에 메타데이터 패키지와 해당 앱이 구문 분석되지만, 메타데이터 패키지가 구문 분석되기 전에 사용자가 앱을 실행할 수 있습니다. 이 경우 사용자에게 액세스 거부 오류가 표시됩니다. 이를 방지하려면 메타데이터 패키지와 앱을 모두 시스템 이미지에 적용합니다.

디바이스 메타데이터 또는 서비스 메타데이터 패키지 사전 설치

디바이스 메타데이터 또는 서비스 메타데이터 패키지를 사전 설치하려면

  1. Microsoft Store 디바이스 앱을 사전 설치하는 경우 디바이스 메타데이터 패키지를 획득해야 합니다. 모바일 광대역 앱을 사전 설치하는 경우 서비스 메타데이터 패키지를 획득해야 합니다.

    참고 디바이스 메타데이터 패키지와 서비스 메타데이터 패키지는 동일한 파일 이름 확장명(.devicemetadata-ms)을 사용합니다.

  2. 디바이스 메타데이터 또는 서비스 메타데이터 패키지(devicemetadata-ms 파일)를 시스템 이미지의 %ProgramData%\Microsoft\Windows\DeviceMetadataStore 폴더에 복사합니다. 다음 방법 중 하나로 해당 작업을 수행할 수 있습니다.

    • Sysprep을 실행하기 전에 온라인

    • Sysprep을 실행한 후에 DISM을 사용하여 오프라인 가상 하드 디스크 파일에 대한 중요 정보를 제공하려면

      1. 서비스를 위해 오프라인 이미지를 탑재합니다.

        Dism /Mount-Image /ImageFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
        
      2. 메타데이터 패키지 파일을 탑재된 이미지의 디바이스 메타데이터 저장소에 복사합니다. 예를 들어, 0ECF2029-2C6A-41AE-9E0A-63FFC9EAD877.devicemetadata-ms 메타데이터 패키지 파일을 ProgramData\Microsoft\Windows\DeviceMetadataStore디바이스 메타데이터 저장소에 복사합니다.

        copy 0ECF2029-2C6A-41AE-9E0A-63FFC9EAD877.devicemetadata-ms C:\test\offline\ProgramData\Microsoft\Windows\DeviceMetadataStore
        
      3. 변경 내용을 저장하고 이미지를 분리합니다.

        dism /Unmount-Image /mountdir: c:\test\offline /commit
        

      오프라인 이미지 서비스에 대한 자세한 내용은 DISM 개요를 참조하세요.

서비스 메타데이터에 대한 자세한 내용은 서비스 메타데이터를 참조하세요.

Microsoft Store 디바이스 앱 또는 모바일 광대역 앱 사전 설치

Microsoft Store 디바이스 앱 또는 모바일 광대역 앱을 사전 설치하려면

  1. 서비스를 위해 오프라인 이미지를 탑재합니다.

    Dism /Mount-Image /ImageFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
    
  2. Microsoft Store 디바이스 앱 또는 모바일 광대역 앱을 이미지에 추가합니다.

    dism /Image:<mounted folder> /Add-ProvisionedAppxPackage /FolderPath:<appxpackage path>
    
  3. 변경 내용을 저장하고 이미지를 분리합니다.

    dism /Unmount-Image /mountdir: c:\test\offline /commit