자산 패키지 소개

중요

스토어에 앱을 제출하려는 경우 Windows 개발자 지원에 문의하고 자산 패키지를 사용하도록 승인을 받아야 합니다.

자산 패키지는 애플리케이션의 공통 파일에 대한 중앙 집중식 위치 역할을 하는 패키지 유형으로, 아키텍처 패키지 전체에서 중복된 파일이 필요하지 않습니다. 자산 패키지는 앱 실행에 필요한 정적 콘텐츠를 포함하도록 설계되었지만 사용자의 시스템 아키텍처, 언어 또는 표시 규모에 관계없이 모든 자산 패키지가 항상 다운로드된다는 점에서 리소스 패키지와 비슷합니다.

자산 패키지 번들 다이어그램

자산 패키지는 모든 아키텍처, 언어 및 확장에 구애받지 않는 파일을 포함하므로 자산 패키지를 활용하면 패키지된 전체 앱 크기가 줄어듭니다(이러한 파일은 더 이상 중복되지 않으므로). 대규모 앱에 대한 로컬 개발 디스크 공간 사용량을 관리하고 일반적으로 앱의 패키지를 관리하는 데 도움이 됩니다.

자산 패키지는 게시에 어떤 영향을 미치나요?

자산 패키지의 가장 확실한 이점은 패키지된 앱의 크기를 줄이는 것입니다. 앱 패키지가 작을수록 Store에서 파일을 더 적게 처리할 수 있도록 하여 앱의 게시 프로세스 속도를 낮출 수 있습니다. 그러나 자산 패키지의 가장 중요한 이점은 아닙니다.

자산 패키지를 만들 때 패키지를 실행할 수 있는지 여부를 지정할 수 있습니다. 자산 패키지는 아키텍처에 구애받지 않는 파일만 포함해야 하므로 일반적으로 .dll 또는 .exe 파일을 포함하지 않으므로 자산 패키지의 경우 일반적으로 실행할 필요가 없습니다. 이러한 구분의 중요성은 게시 프로세스 중에 모든 실행 가능한 패키지를 검사하여 맬웨어가 포함되지 않도록 해야 하며, 이 검색 프로세스는 더 큰 패키지에 더 오래 걸립니다. 그러나 패키지가 실행 불가능으로 지정된 경우 앱을 설치하면 이 패키지에 포함된 파일을 실행할 수 없습니다. 이렇게 보장하면 전체 패키지 검색이 필요하지 않으며, 앱 게시 중(및 업데이트의 경우) 맬웨어 검색 시간이 크게 감소하므로 자산 패키지를 사용하는 앱의 게시 속도가 훨씬 빨라집니다. 이 경우 Store에서 각 .appx 또는 .msix 패키지 파일을 병렬로 처리할 수 있기 때문에 플랫 번들 앱 패키지도 이 게시 혜택을 얻는 데 사용해야 합니다.

자산 패키지를 사용해야 합니까?

자산 패키지의 사용을 활용하도록 앱의 파일 구조를 업데이트하면 패키지 크기 감소 및 간결한 개발 반복과 같은 실질적인 이점을 얻을 수 있습니다. 아키텍처 패키지에 공통적으로 상당한 양의 파일이 포함되어 있거나 대량의 앱이 실행하지 않는 파일로 구성된 경우 자산 패키지를 사용하여 변환하는 데 추가 시간을 투자하는 것이 좋습니다.

그러나 자산 패키지는 앱 콘텐츠 선택성을 달성하는 수단이 아니라는 주의를 기울여야 합니다. 자산 패키지 파일은 선택 사항이 없으며 대상 디바이스의 아키텍처, 언어 또는 규모에 관계없이 항상 다운로드됩니다. 앱에서 지원하려는 선택적 콘텐츠는 선택적 패키지를사용하여 구현해야 합니다.

자산 패키지를 만드는 방법

자산 패키지를 만드는 가장 쉬운 방법은 패키징 레이아웃을 사용하는 것입니다. 그러나 MakeAppx.exe 사용하여 자산 패키지를 수동으로 만들 수도 있습니다. 자산 패키지에 포함할 파일을 지정하려면 "매핑 파일"을 만들어야 합니다. 이 예제에서 자산 패키지의 유일한 파일은 "Video.mp4"이지만 모든 자산 패키지의 파일은 여기에 나열되어야 합니다. ResourceMetadata의ResourceDimensions 지정자는 자산 패키지에 대해 생략됩니다(리소스 패키지에 대한 매핑 파일과 비교).

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

MSIX 및 .appx의 경우 MakeAppx.exe 사용하여 자산 패키지를 만들려면 다음 명령 중 하나를 사용합니다.

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

여기서는 AppxManifest(로고 파일)에서 참조된 모든 파일을 자산 패키지로 이동할 수 없습니다. 이러한 파일은 아키텍처 패키지 간에 중복되어야 합니다.

자산 패키지에는 resources.pri도 포함되어서는 안 됩니다. MRT는 자산 패키지 파일에 액세스하는 데 사용할 수 없습니다. 자산 패키지 파일에 액세스하는 방법 및 자산 패키지에 앱을 NTFS 드라이브에 설치해야 하는 이유에 대한 자세한 내용은 자산 패키지 및 패키지 폴딩을사용하여 개발을 참조하세요.

자산 패키지를 실행할 수 있는지 여부를 제어하려면 AppxManifest의 Properties 요소에서 uap6:AllowExecution을 사용하여 최상위 Package 요소에 uap6을 추가하여 다음이 될 수 있습니다.

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

지정하지 않으면 AllowExecution의 기본값은 true입니다. 실행 파일 없이 자산 패키지에 대해 false로 설정하면 게시 속도가 빨라집니다.