MSIX를 사용하여 격리된 Win32 앱 패키징
기존 MSIX 또는 Win32 애플리케이션을 Win32 앱 격리 애플리케이션으로 패키징하는 작업은 MSIX 패키징 도구(MPT)를 통해 수행됩니다. Win32 앱 격리를 지원하는 MPT 버전은 이 프로젝트의 릴리스 자산에서 사용할 수 있는 v1.2023.517.0입니다. 이 MPT의 저장소 버전 은 Win32 앱 격리 기능의 목적에는 맞지 않게 오래되었습니다. MPT에 대한 추가 설명서는 여기에서 찾을 수 있습니다.
Win32 앱 격리 GitHub 리포지토리의 릴리스 섹션에서 MPT 및 프로파일러에 대한 다운로드를 찾을 수 있습니다.
Important
이 기능은 미리 보기 상태입니다. 일부 정보는 상업용으로 출시되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
기존 Win32 설치 관리자를 MSIX 앱으로 변환
맨 왼쪽에서 "애플리케이션 패키지"를 선택하고 패키지를 만들 위치를 선택합니다. 이 흐름은 "이 컴퓨터에서 패키지 만들기" 옵션을 따릅니다.
참고 항목
그러면 5단계를 완료한 후 앱이 일반 Win32 앱으로 설치됩니다.
"MSIX 패키징 도구 드라이버" 필드가 검사를 완료할 때까지 기다립니다.
찾아보기 단추를 사용하여 Win32 설치 관리자로 이동하여 선택합니다. 매니페스트를 편집하고 다시 서명해야 하므로 서명 기본 설정을 비워 둡니다.
패키지 정보를 입력합니다.
Win32 설치 관리자를 정상적으로 진행합니다.
주 진입점 외에 추가 진입점이 있는 경우 시작하거나 찾아봅니다. 앱에 설정/구성/기본 설정에서 파일 형식 연결에 대한 옵션이 있는 경우 이 단계에서 해당 옵션을 전환하여 MSIX에서 선택합니다.
패키지에 서비스가 있는 경우 동일한 프로세스를 반복합니다.
만들기를 클릭하면 패키지가 완전 신뢰 패키지로 저장됩니다. "패키지 편집기" 단추를 클릭하여 주 메뉴에서 "패키지 편집기" 흐름으로 이동합니다. 패키지 크기에 따라 최대 몇 분 정도 걸릴 수 있습니다.
격리된 실행을 위해 기존 MSIX 앱 변환
오른쪽 맨 오른쪽 옵션 "패키지 편집기"를 선택하고 .msix 파일로 이동하여 "패키지 열기" 단추를 클릭합니다.
"매니페스트 파일" 섹션까지 아래로 스크롤하고 "파일 열기"를 클릭합니다.
매니페스트에서 다음을 변경해야 합니다.
참고 항목
격리된 Win32 애플리케이션은 동일한 패키지 내의 다른 애플리케이션 유형과 호환되지 않습니다.
- 이
xmlns:previewsecurity2="http://schemas.microsoft.com/appx/manifest/preview/windows10/security/2"
가 아직 없는 경우<Package>
요소에 추가합니다.- 이
previewsecurity2
요소의 끝에 있는IgnorableNamespaces
에<Package>
를 추가합니다.
- 이
- 이
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
가 아직 없는 경우<Package>
요소에 추가합니다.- 이
uap10
요소의 끝에 있는IgnorableNamespaces
에<Package>
를 추가합니다.
- 이
- 이
<Dependencies>
에서TargetDeviceFamily
를<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.25357.0" MaxVersionTested="10.0.25357.0" />
으로 변경합니다.참고 항목
모든 기능을 최소 빌드에서 사용할 수 있는 것은 아닙니다. 자세한 내용은 릴리스 정보 를 확인하세요.
- 이
<Application>
에서 기존 entrypoint/trustlevel/runtimebehavior를uap10:TrustLevel="appContainer" previewsecurity2:RuntimeBehavior="appSilo"
로 대체합니다. - 이
<Application>
확장에서는 부모EntryPoints=*
에서 상속된Executable=*
또는<Application>
을 제거합니다. - 이
desktop7:Scope="user"
에 대한 확장 요소에windows.protocol
를 추가합니다.
참고 항목
기본적으로 앱이 패키지된 Win32이므로 MPT는
<rescap:Capability name="runFullTrust">
에<Capabilities>
를 자동으로 추가합니다. 앱에comServer
기능이 필요하기 때문에 사용자 전역 상태(예:FirewallRules
또는runFullTrust
)에 영향을 줄 수 있는 다른 매니페스트된 확장이 없으면 제거해야 합니다.- 이
이제 앱이 격리되었으므로 제대로 작동하려면 추가 기능이 필요할 수 있습니다.
이러한 기능은 격리된 앱에 기능을 직접 추가합니다.
-
isolatedWin32-print
- 문서 인쇄 -
isolatedWin32-sysTrayIcon
- Systray의 알림 표시 -
isolatedWin32-shellExtensionContextMenu
- COM 기반 컨텍스트 메뉴 항목 표시 -
isolatedWin32-promptForAccess
- 사용자에게 파일 액세스 프롬프트 -
isolatedWin32-accessToPublisherDirectory
- 게시자 ID로 끝나는 디렉터리에 대한 액세스
이러한 기능을 사용하면 메시지 표시를 지원하지 않는 애플리케이션에 대해 MSVC 런타임 또는 기타 Windows/타사 DLL과 같은 라이브러리에 대한 액세스를 최소화할 수 있습니다.
isolatedWin32-dotNetBreadcrumbStore
isolatedWin32-profilesRootMinimal
isolatedWin32-userProfileMinimal
isolatedWin32-volumeRootMinimal
-
매니페스트 창을 저장하고 닫습니다. 매니페스트에 오류가 있으면 MPT에서 오류가 표시됩니다. 만들기/저장을 선택하여 .msix 파일을 생성합니다. 패키지 크기에 따라 몇 분 정도 걸릴 수 있습니다.
- 매니페스트에 오류가 있는 경우
Application and Services/Microsoft/Windows/AppxPackagingOM/Microsoft-Windows-AppxPackaging/Operational
아래의 이벤트 뷰어에서 보다 실행 가능한 오류 메시지를 찾을 수 있습니다.
- 매니페스트에 오류가 있는 경우
애플리케이션 패키지 매니페스트에서 선언해야 할 수 있는 기능을 식별하는 방법에 대한 자세한 내용은 애플리케이션 기능 프로파일러 를 참조하세요.