com4:Extension

앱 패키지 외부의 클라이언트에 COM 등록을 노출하는 기능을 제공합니다. com4 확장은 이전 COM 스키마 버전의 상위 집합 및 대체 버전인 새 버전입니다. 자세한 내용은 설명 부분을 참조하세요.

요소 계층 구조

<패키지>

    <애플리케이션>

         <애플리케이션>

              <확장>

                   <com4:Extension>

구문

<com4:Extension
  Category = 'A string that can have one of the following values: "windows.comServer" or "windows.comInterface".'
  Executable = 'An optional string with a value between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *.'
  EntryPoint = 'An optional string with a value between 1 and 256 characters in length that cannot start or end with a whitespace character.'
  RuntimeType = 'An optional string with a value between 1 and 255 characters in length that cannot start or end with a period or contain these characters: <, >, :, ", /, \, |, ?, or *.'
  StartPage = 'An optional string with a value between 1 and 256 characters in length that cannot contain these characters: <, >, :, ", |, ?, or *.'
  ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  TrustLevel = 'An optional string the can have one of the following values: "appContainer" or "mediumIL".'
  RuntimeBehavior = 'An optional string the can have one of the following values: "windowsApp", "packagedClassicApp", or "win32App".'
  HostId = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Id = 'An optional string with a value between 1 and 255 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Subsystem = 'An optional string that can have one of the following values: "console" or "windows".'
  uap11:SupportsMultipleInstances = 'An optional boolean value.'
  uap11:ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  uap11:CurrentDirectoryPath = 'An optional string that cannot contain these characters: <, >, |, ?, or *. >'
  uap11:Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  desktop7:CompatMode = 'An optional string the can have one of the following values: "classic" or "modern".'
  desktop7:Scope = 'An optional string that can have one of the following values: "machine" or "user".' />

  <!-- Child elements -->
  com4:ComServer
  com4:ComInterface

</com4:Extension>

특성 및 요소

특성

attribute 설명 데이터 형식 필수 기본값
범주 앱 확장성 지점의 유형입니다. windows.comServer 또는 windows.comInterface 값 중 하나를 가질 수 있는 문자열입니다.
실행 파일 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 1~256자 사이의 값이 있는 선택적 문자열로, 이 문자열은 다음 문자>*<?:|".exe 끝나야 하고 포함할 수 없습니다. 아니요
EntryPoint 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 공백 문자로 시작하거나 끝낼 수 없는 길이가 1~256자인 선택적 문자열입니다. 아니요
RuntimeType 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 마침표로 시작하거나 끝낼 수 없거나 다음 :\*>?"|/문자를 <포함할 수 없는 길이가 1~255자인 선택적 문자열입니다. 아니요
StartPage 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 1~256자 사이의 값이 있는 선택적 문자열로, 다음 ?>*:|"문자를 <포함할 수 없습니다. 아니요
ResourceGroup 리소스 관리 목적(예: CPU 및 메모리)을 위해 확장 활성화를 그룹화하기 위해 사용할 수 있는 태그입니다. ResourceGroup을 설정할 수 있는 값은 자유 형식이며 유연합니다. Application@ResourceGroup 참조하세요. 길이가 1~255자인 선택적 영숫자 문자열입니다. 문자로 시작해야 합니다. 아니요
uap10:TrustLevel 확장의 신뢰 수준을 지정합니다. 현재 릴리스에서 이 특성은 com4 확장에 지원되지 않습니다. "mediumIL" 값은 항상 사용됩니다. 선택적 문자열은 appContainer 또는 mediumIL 값 중 하나를 가질 수 있습니다. 아니요
uap10:RuntimeBehavior 확장의 런타임 동작을 지정합니다. 현재 릴리스에서 이 특성은 com4 확장에 지원되지 않습니다. "packagedClassicApp" 값은 항상 사용됩니다. 선택적 문자열은 windowsApp, packagedClassicApp 또는 win32App 값 중 하나를 가질 수 있습니다. 아니요
uap10:HostId 이 값은 확장에 대한 호스트 앱의 앱 ID를 지정합니다. 길이가 1~255자인 선택적 영숫자 문자열입니다. 문자로 시작해야 합니다. 아니요
uap10:Parameters 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 시작과 끝에 공백이 아닌 문자가 있는 길이가 1~32767자인 선택적 문자열입니다. 아니요
uap11:Id 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 시작과 끝에 공백이 아닌 문자가 있는 길이가 1~255자인 선택적 문자열입니다. 아니요
uap11:하위 시스템 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 콘솔 또는 값 중 하나를 가질 수 있는 선택적 문자열입니다. 아니요
uap11:SupportsMultipleInstances 인스턴스를 다른 작업 개체 및 프로세스에서 실행할지 여부를 지정합니다. 기본값은 false입니다. 선택적 부울 값입니다. 아니요
uap11:ResourceGroup 리소스 관리 목적(예: CPU 및 메모리)을 위해 확장 활성화를 그룹화하기 위해 사용할 수 있는 태그입니다. ResourceGroup을 설정할 수 있는 값은 자유 형식이며 유연합니다. Application@ResourceGroup 참조하세요. 길이가 1~255자인 선택적 영숫자 문자열입니다. 문자로 시작해야 합니다. 아니요
uap11:CurrentDirectoryPath 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 다음 *?|>문자를 <포함할 수 없는 선택적 문자열입니다. > 아니요
uap11:Parameters 이 특성은 기본 확장 구문에서 상속되며 com4 확장에는 적용되지 않습니다. 구문 유효성 검사 외에 이 값은 무시됩니다. 시작과 끝에 공백이 아닌 문자가 있는 길이가 1~32767자인 선택적 문자열입니다. 아니요
desktop7:CompatMode 이 확장의 등록이 COM 활성화 및 기타 COM/OLE API(최신)를 통해서만 다른 애플리케이션에 표시되는지 또는 클래식 형식(클래식)으로 레지스트리에 기록해야 하는지 여부를 지정합니다. 기본값은 "modern"입니다. 자세한 내용은 주의 섹션을 참조하세요. 선택적 문자열은 클래식 또는 최신 값 중 하나를 가질 수 있습니다. 아니요
desktop7:Scope 이 패키지가 등록된 사용자(사용자)로 실행되는 다른 애플리케이션에만 등록이 표시되는지 또는 컴퓨터(컴퓨터)의 모든 사용자 및 서비스에 표시되는지 여부를 지정합니다. 기본값은 사용자입니다. 자세한 내용은 이 항목의 설명 섹션을 참조하세요. 컴퓨터 또는 사용자 값 중 하나를 가질 수 있는 선택적 문자열입니다. 아니요

자식 요소

자식 요소 Description
com4:ComServer comServer 확장에는 이러한 클래스를 구현하는 서버에 대한 활성화 세부 정보를 비롯한 클래스 등록과 런타임에 이러한 클래스를 참조하는 데 사용되는 추가 식별자를 제공하는 ProgId 및 TreatAsClass 등록이 포함될 수 있습니다.
com4:ComInterface windows.comInterface(com4:ComInterface) 형식의 패키지 확장 지점을 선언합니다.

부모 요소

자식 요소 Description
확장 앱에 대한 확장성 지점을 하나 이상 정의합니다.

설명

com4 확장은 기본적으로 이전 windows.comServer/windows.comInterface 확장 구문의 재작성입니다. 이 확장은 상속된 구문에 대해 동일한 동작을 가진 이전 com 확장 기능의 상위 집합입니다. 패키징에 사용되는 새 구문에 대한 매니페스트 유효성 검사는 확장의 의미 체계 요구 사항에 더 적합합니다.

  • 이전 버전에서는 각 확장이 별도의 문서로 처리되어 고유하지 않은 키와 현수 참조의 유효성을 검사할 수 있었습니다.
  • 이전 버전에서는 중복된 특성이 확장의 동일한 인스턴스에 표시되는 경우에만 고유/키 제약 조건이 적용되는 특성의 중복이 매니페스트 유효성 검사에 의해 catch되었습니다. 이러한 특성을 복제한 패키지는 문제를 식별하기 위해 제한된 진단 정보를 사용하여 배포하지 못합니다.
  • 이전 버전에서 참조가 다른 확장 인스턴스에 있는 keyref는 매니페스트 유효성 검사에 의해 차단됩니다. 이는 배포/런타임 동작이 지원하는 항목에 상대적인 인위적인 제한입니다.

모든 windows.comServer/windows.comInterface 확장에 대해 새 com4 네임스페이스를 사용할 수 있는 Windows 11 대상으로 하는 애플리케이션은 이 네임스페이스를 사용해야 합니다. 다음과 같은 이유로 새 네임스페이스를 이전 네임스페이스와 혼합하는 것은 권장되지 않습니다.

  • 새 네임스페이스를 지원하는 버전에 패키지를 배포하면 모든 네임스페이스의 확장이 처리되고, 다른 네임스페이스 버전을 사용하는 확장 간에 중복된 고유 식별자는 오류가 발생합니다. 이전 네임스페이스를 사용하면 매니페스트 유효성 검사에서 이러한 오류를 검색할 수 없습니다.
  • 이전 네임스페이스 스키마의 제한으로 인해 이전 구문의 keyref는 확장의 다른 인스턴스에 있으므로 새 구문의 키를 참조할 수 없습니다.

다음 com4 구문 의미 체계를 사용하면 기능 요구 사항이 있습니다.

  • CompatMode="classic"에는 Microsoft.classicAppCompat_8wekyb3d8bbwe 필요합니다.
  • Scope="machine"에는 Microsoft.classicAppCompatElevated_8wekyb3d8bbwe 필요합니다.

다음 예제에서는 out-of-process 및 In-process 서버 구현을 동일한 클래스에 등록하는 방법을 보여줍니다.

<com4:Class Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx" DisplayName="CLSID_Foo"/> 
<com:ExeServer Executable="MyServer.exe" DisplayName="My server">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com:ExeServer> 
<com4:InProcessServer Path="MyServer.dll">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com4:InProcessServer> 

com4 확장의 새로운 기능

  • In Process 서버(관리되지 않음 및 관리형) 및 사용자 지정 In-Process 처리기(즉, OLE 기본 처리기가 아님)에 대한 지원 이 기능은 현재 기능적으로 제한되며 정책에 의해 제한됩니다.
    • 현재 외부 위치가 있는 패키지에서만 사용할 수 있습니다. 패키지의 dll이 패키지 외부에서 로드되지 않도록 하는 설치 위치의 ACL로 인해 대부분의 일반 패키지에서는 작동하지 않습니다. 외부 위치가 있는 패키지에 대한 자세한 내용은 외부 위치로 패키징하여 패키지 ID 부여를 참조하세요.
  • 이제 TypeLib을 클래스 등록과 연결할 수 있습니다.

요구 사항

Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4