다음을 통해 공유


위젯 공급자 패키지 매니페스트 XML 형식

위젯 호스트에 표시되려면 Windows 위젯을 지원하는 앱이 시스템에 위젯 제공업체를 등록해야 합니다. Win32 앱의 경우 패키지된 앱만 현재 지원되며 위젯 공급자는 앱 패키지 매니페스트 파일에 등록 정보를 지정합니다. 이 문서에서는 위젯 등록을 위한 XML 형식을 문서화합니다. Win32 위젯 공급자에 대한 예제 패키지 매니페스트의 코드 목록은 예제 섹션을 참조하세요.

앱 확장

앱 패키지 매니페스트 파일은 Windows 앱에 대한 다양한 확장 및 기능을 지원합니다. 앱 패키지 매니페스트 형식은 패키지 매니페스트 스키마 참조에 설명된 스키마 집합에 의해 정의됩니다. 위젯 공급자는 uap3:AppExtension 내에서 등록 정보를 선언합니다. 확장의 이름 특성은 "com.microsoft.windows.widgets"로 설정해야 합니다.

위젯 공급자는 uap3:AppExtension의 자식으로 uap3:Properties를 포함해야 합니다. 패키지 매니페스트 스키마는 올바른 형식의 XML을 요구하는 것 외에는 uap3:Properties 요소의 구조를 적용하지 않습니다. 이 문서의 나머지 부분에는 위젯 호스트가 위젯 공급자를 성공적으로 등록하기 위해 기대하는 XML 형식에 대해 설명합니다.

<uap3:Extension Category="windows.appExtension">
  <uap3:AppExtension Name="com.microsoft.windows.widgets" DisplayName="WidgetTestApp" Id="ContosoWidgetApp" PublicFolder="Public">
    <uap3:Properties>
    <!-- Widget provider registration content goes here -->
    </uap3:Properties>
  </uap3:AppExtension>
</uap3:Extension>

요소 계층 구조

WidgetProvider

  ProviderIcons

    Icon

  활성화

    CreateInstance

    ActivateApplication

  정의

    정의

      기능

        기능

          크기

      ThemeResources

        아이콘

          Icon

        스크린샷

          스크린샷

        DarkMode

          아이콘

            Icon

          스크린샷

            스크린샷

        LightMode

          아이콘

            Icon

          스크린샷

            스크린샷

WidgetProvider

위젯 공급자 등록 정보의 루트 요소입니다.

위젯 보드의 위젯 추가 대화 상자 스크린샷 위젯을 추가할 수 있음을 나타내는 더하기 기호가 있는 아이콘과 앱 이름이 있는 두 개의 항목 열이 표시됩니다.

WidgetProviderIcons

위젯 공급자 앱을 나타내는 아이콘을 지정합니다.

활성화

위젯 공급자에 대한 활성화 정보를 지정합니다. 매니페스트에 CreateInstanceActivateApplication을 모두 지정하면 CreateInstance가 우선합니다.

CreateInstance

IWidgetProvider 인터페이스를 구현하는 Win32 기반 위젯 공급자에 대해 CreateInstance를 지정해야 합니다. 시스템은 CoCreateInstance를 호출하여 인터페이스를 활성화합니다. ClassId 특성은 IWidgetProvider 인터페이스를 구현하는 CreateInstance 서버에 대한 CLSID를 지정합니다.

특성 Type 필수 설명 기본값
ClassId GUID 위젯 공급자를 구현하는 CreateInstance 서버의 CLSID입니다. 해당 없음

ActivateApplication

ActivateApplication을 지정하면 위젯 공급자가 명령줄을 통해 활성화되고 인수는 base64url로 인코딩된 JSON 문자열로 제공됩니다. 위젯 공급자는 CreateInstance 활성화 유형을 사용하는 것이 좋습니다. ActivateApplication 명령줄 형식에 대한 자세한 내용은 위젯 공급자 ActivateApplication 프로토콜을 참조하세요.

정의

하나 이상의 위젯 등록에 대한 컨테이너 요소입니다.

정의

단일 위젯에 대한 등록을 나타냅니다.

특성 Type 필수 설명 기본값
ID string 위젯을 식별하는 ID입니다. 이 값은 위젯 선택기의 탐색 모음에도 표시됩니다. 위젯 공급자 구현은 이 문자열을 사용하여 각 작업에 대해 참조되는 앱의 위젯을 결정하거나 지정합니다. 이 문자열은 앱 매니페스트 파일 내에 정의된 모든 위젯에 대해 고유해야 합니다. 해당 없음
DisplayName string 위젯 호스트에 표시되는 위젯의 이름입니다. 해당 없음
설명 string 위젯에 대한 간단한 설명입니다. 해당 없음
AllowMultiple 부울 값 아니요 이 위젯의 인스턴스가 하나만 지원되는 경우 false로 설정합니다. 이 속성은 선택 사항이며 기본값은 true입니다. true
IsCustomizable 부울 값 아니요 Windows 앱 SDK 1.4에 도입되었습니다. 앱이 위젯 사용자 지정을 지원하는 경우 true로 설정합니다. 이렇게 하면 위젯의 줄임표 메뉴에 위젯 사용자 지정 단추가 표시됩니다. false

기능

선택 사항. 단일 위젯에 대한 기능을 지정합니다. 기능을 선언하지 않으면 기본적으로 '큰' 크기를 지정하는 하나의 기능이 추가됩니다.

기능

위젯에 대한 기능을 지정합니다.

크기

연결된 위젯에 대해 지원되는 크기를 지정합니다.

특성 Type 필수 설명 기본값
이름 string 위젯에 대해 지원되는 크기를 지정합니다. 값은 "small", "medium", "large" 중 하나여야 합니다. 해당 없음

ThemeResources

위젯의 테마 리소스를 지정합니다.

아이콘

하나 이상의 Icon 요소에 대한 컨테이너 요소입니다.

Icon

필수입니다. 위젯의 특성 영역에 표시되는 아이콘을 지정합니다.

특성 Type 필수 설명 기본값
Path string 아이콘 이미지 파일의 패키지 상대 경로입니다. 해당 없음

스크린샷

필수입니다. 위젯의 스크린샷을 하나 이상 지정합니다.

스크린샷

필수입니다. 위젯의 스크린샷을 지정합니다. 이 스크린샷은 위젯 호스트에 추가할 위젯을 선택할 때 위젯 대화 상자 추가의 위젯 호스트에 표시됩니다. 아래에 나열된 선택적 DarkMode 또는 LightMode 요소에 대한 스크린샷을 제공하는 경우 위젯 호스트는 현재 디바이스 테마와 일치하는 스크린샷을 사용합니다. 현재 디바이스 테마에 대한 스크린샷을 제공하지 않으면 이 스크린샷 요소에 제공된 이미지가 사용됩니다. 스크린샷 이미지의 디자인 요구 사항 및 지역화된 스크린샷의 명명 규칙에 대한 자세한 내용은 위젯 선택기와 통합을 참조하세요.

참고 항목

현재 미리 보기 릴리스에서는 위젯 스크린샷이 위젯 보드의 위젯 추가 대화 상자에 표시되지 않습니다.

특성 Type 필수 설명 기본값
Path string 스크린샷 이미지 파일의 패키지 상대 경로입니다. 해당 없음
DisplayAltText string 아니요 접근성을 위한 이미지의 대체 텍스트입니다. 해당 없음

DarkMode

선택 사항. 디바이스에서 어둡게 모드가 활성화된 경우의 테마 리소스를 지정합니다. 선택적 DarkMode 요소에서 하나 이상의 스크린샷 이미지를 지정하는 경우 디바이스가 어둡게 모드인 경우 위젯 호스트가 이러한 스크린샷을 선택합니다. 다크 모드 이미지를 제공하지 않으면 위젯 호스트는 위에서 설명한 필수 최상위 스크린샷 요소를 사용합니다. 스크린샷 이미지의 디자인 요구 사항 및 지역화된 스크린샷의 명명 규칙에 대한 자세한 내용은 위젯 선택기와 통합을 참조하세요.

LightMode

선택 사항. 디바이스에서 라이트 모드가 활성화된 경우의 테마 리소스를 지정합니다. 선택적 LightMode 요소에 하나 이상의 스크린샷 이미지를 제공하는 경우 위젯 호스트는 디바이스가 라이트 모드에 있을 때 이러한 스크린샷을 선택합니다. 라이트 모드 이미지를 제공하지 않으면 위젯 호스트는 위에서 설명한 필수 최상위 스크린샷 요소를 사용합니다. 스크린샷 이미지의 디자인 요구 사항 및 지역화된 스크린샷의 명명 규칙에 대한 자세한 내용은 위젯 선택기와 통합을 참조하세요.

예시

다음 코드 예제에서는 위젯 패키지 매니페스트 XML 형식의 사용을 보여줍니다.

<uap3:Extension Category="windows.appExtension">
  <uap3:AppExtension Name="com.microsoft.windows.widgets" DisplayName="Widget Test App" Id="ContosoWidgetApp" PublicFolder="Public">
    <uap3:Properties>
      <WidgetProvider>
        <ProviderIcons>
            <Icon Path="Images\StoreIcon.png" />
        </ProviderIcons>
        <Activation>
          <!-- App exports COM interface which implements IWidgetProvider -->
          <CreateInstance ClassId="XXXXXXXX-XXXX-XXXX-XXXX-D3397A3FF15C" />
        </Activation>
        <Definitions>
          <Definition
            Id="Weather_Widget"
            DisplayName="Microsoft Weather Widget"
            Description="Weather Widget Description"
            AllowMultiple="true">
            <Capabilities>
              <Capability>
                 <Size Name="small" />
              </Capability>
              <Capability>
                 <Size Name="medium" />
              </Capability>
              <Capability>
                 <Size Name="large" />
              </Capability>
            </Capabilities>

            <ThemeResources>
              <Icons>
                <Icon Path="Assets\icon.png" />
                <Icon Path="Assets\icon.gif" />
              </Icons>
              <Screenshots>
                <Screenshot Path="Assets\background.png" DisplayAltText ="For accessibility"/>
              </Screenshots>

              <!-- DarkMode and LightMode are optional -->
              <DarkMode>
                <Icons>
                  <Icon Path="Assets\dark.png" />
                </Icons>
                <Screenshots>
                  <Screenshot Path="Assets\darkBackground.png" DisplayAltText ="For accessibility"/>
                </Screenshots>
              </DarkMode>

              <LightMode>
                <Icons>
                  <Icon Path="Assets\light.png" />
                </Icons>
                <Screenshots>
                  <Screenshot Path="Assets\lightBackground.png"/>
                </Screenshots>
              </LightMode>
            </ThemeResources>
          </Definition>
        </Definitions>
      </WidgetProvider>
    </uap3:Properties>
  </uap3:AppExtension>
</uap3:Extension>