MSIX SDK를 사용하여 비 Windows 10 플랫폼에 MSIX 패키지 배포

MSIX SDK는 클라이언트 디바이스의 OS 플랫폼에 관계없이 패키지 콘텐츠를 클라이언트 디바이스에 배포하는 범용 방법을 개발자에게 제공합니다. 이를 통해 개발자는 각 플랫폼에 대해 패키지하지 않고 앱 콘텐츠를 한 번 패키지할 수 있습니다.

MSIX SDK와 패키지 콘텐츠를 여러 플랫폼에 배포하는 기능을 활용하기 위해 패키지를 추출할 대상 플랫폼을 지정하는 방법을 제공합니다. 즉, 원하는 대로 패키지 콘텐츠가 패키지에서 추출되도록 할 수 있습니다.

다음 표에서는 매니페스트에서 선언할 대상 디바이스 패밀리를 보여 줍니다.

플랫폼 가족 대상 디바이스 패밀리 주의
Windows 10 전화





















Platform.All























Windows.Universal Windows.Mobile 모바일 장치
바탕 화면 Windows.Desktop PC
Xbox Windows.Xbox Xbox 콘솔
Surface Hub Windows.Team 큰 화면 Win 10 디바이스
HoloLens Windows.Holographic VR/AR 헤드셋
IoT Windows.IoT IoT 디바이스
iOS 전화 Apple.Ios.All Apple.Ios. 전화 i전화, Touch
태블릿 Apple.Ios.Tablet iPad mini, iPad, iPad Pro
TV Apple.Ios.TV Apple TV
시청 Apple.Ios.Watch iWatch
MacOS 바탕 화면 Apple.MacOS.All MacBook Pro, MacBook Air, Mac Mini, iMac
Android 전화 Google.Android.All Google.Android. 전화 Android의 모든 버전을 대상으로 하는 모바일 디바이스
태블릿 Google.Android.Tablet Android 태블릿
바탕 화면 Google.Android.Desktop Chromebooks
TV Google.Android.TV Android 대형 화면 디바이스
시청 Google.Android.Watch Google 기어 장치
Windows 7 Windows7.Desktop Windows 7 디바이스
8 Windows8.Desktop Windows 8/8.1 디바이스
Microsoft Web.All Web.Edge.All Edge 웹 엔진 앱
Android Web.Blink.All 웹 엔진 앱 깜박임
Chrome Web.Chromium.All Chrome 웹 엔진 앱
iOS Web.Webkit.All Webkit 웹 엔진 앱
MacOS Web.Safari.All Safari 웹 엔진 앱
Linux 모두/모두 Linux.All 모든 Linux 배포

특정 플랫폼 및 디바이스에서만 패키지 콘텐츠를 추출하려면 앱 패키지 매니페스트 파일에서 적절한 대상 디바이스 패밀리를 포함해야 합니다. 패키지가 모든 플랫폼 및 디바이스 유형에서 지원되는 방식으로 bulid를 원하는 경우 Platform.All을 대상 디바이스 패밀리로 선택합니다. 마찬가지로 웹앱에서만 지원되는 패키지를 원하는 경우 Web.All을 선택합니다.

샘플 매니페스트 파일(AppxManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
         xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
         xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
         IgnorableNamespaces="mp uap uap3">

  <Identity Name="BestAppExtension"
            Publisher="CN=awesomepublisher"
            Version="1.0.0.0" />

  <mp:PhoneIdentity PhoneProductId="56a6ecda-c215-4864-b097-447edd1f49fe" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

  <Properties>
    <DisplayName>Best App Extension</DisplayName>
    <PublisherDisplayName>Awesome Publisher</PublisherDisplayName>
    <Description>This is an extension package to my app</Description>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>

  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Dependencies>
    <TargetDeviceFamily Name="Platform.All" MinVersion="0.0.0.0" MaxVersionTested="0.0.0.0"/>
  </Dependencies>

  <Applications>
    <Application Id="App">
      <uap:VisualElements
          DisplayName="Best App Extension"
          Description="This is the best app extension"
          BackgroundColor="white"
          Square150x150Logo="images\squareTile-sdk.png"
          Square44x44Logo="images\smallTile-sdk.png"
          AppListEntry="none">
      </uap:VisualElements>

      <Extensions>
        <uap3:Extension Category="Windows.appExtension">
          <uap3:AppExtension Name="add-in-contract" Id="add-in" PublicFolder="Public" DisplayName="Sample Add-in" Description="This is a sample add-in">
            <uap3:Properties>
               <!--Free form space-->
            </uap3:Properties>
          </uap3:AppExtension>
        </uap3:Extension>
      </Extensions>

    </Application>
  </Applications>
</Package>

플랫폼 버전

위의 샘플 매니페스트 파일에는 플랫폼 이름과 함께 MinVersionMaxVersionTested를 지정하는 매개 변수도 있습니다. 이러한 매개 변수는 Windows 10 플랫폼에서 사용됩니다. Windows 10에서는 패키지가 MinVersion보다 큰 Windows 10 OS 버전에만 배포됩니다. 다른 비 Windows 10 플랫폼에서는 MinVersion 및 MaxVersionTested 매개 변수를 사용하여 패키지 콘텐츠를 추출할지 여부를 선언하지 않습니다.

모든 플랫폼(Windows 10 및 비 Windows 10)에 패키지를 사용하려는 경우 MinVersion 및 MaxVersionTested 매개 변수를 사용하여 앱이 작동할 Windows 10 OS 버전을 지정하는 것이 좋습니다. 따라서 매니페스트의 종속성 섹션은 다음과 같습니다.

  <Dependencies>
    <TargetDeviceFamily Name="Platform.All" MinVersion="0.0.0.0" MaxVersionTested="0.0.0.0"/>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.14393.0" MaxVersionTested="10.0.16294.0"/>
  </Dependencies>

MinVersionMaxVersionTested 는 매니페스트의 필수 필드이며 쿼드 표기법(#.#.#.#)을 준수해야 합니다. 비 Windows 10 플랫폼에 대해서만 MSIX 패키징 SDK를 사용하는 경우 MinVersionMaxVersionTested 버전으로 '0.0.0.0'을 사용할 수 있습니다.

모든 플랫폼에서 동일한 패키지를 효과적으로 사용하는 방법(Windows 10 및 비 Windows 10)

MSIX 패키징 SDK를 최대한 활용하려면 Windows 10에서 앱 패키지처럼 배포되고 동시에 다른 플랫폼에서 지원되는 방식으로 패키지를 빌드해야 합니다. Windows 10에서는 패키지를 앱 확장으로 빌드할 수 있습니다. 앱 확장 및 앱 확장에 대한 자세한 내용은 앱 확장 소개 블로그 게시물을 참조하세요.

이 문서의 앞부분에 표시된 매니페스트 파일 예제에서는 AppExtension 요소 내의 Properties 요소를 확인할 수 있습니다. 매니페스트 파일의 이 섹션에서는 유효성 검사가 수행되지 않습니다. 이를 통해 개발자는 확장 및 호스트/클라이언트 앱 간에 필요한 메타데이터를 지정할 수 있습니다.