다음을 통해 공유


응용 프로그램 게시 및 클라이언트 상호 작용

업데이트 날짜: 2014년 12월

적용 대상: Application Virtualization 5.0, Application Virtualization 5.0 SP1, Application Virtualization 5.0 SP2, Application Virtualization 5.0 SP3

이 문서에서는 다음과 같은 일반적인 App-V 클라이언트 작업 및 이러한 작업이 로컬 운영 체제와 통합되는 방식에 대해 설명합니다.

  • Sequencer가 만든 App-V 패키지 파일

  • appv 파일의 내용

  • App-V 클라이언트 데이터 저장소 위치

  • 패키지 레지스트리

  • App-V 패키지 저장소 동작

  • 레지스트리 및 데이터 로밍

  • App-V 클라이언트 응용 프로그램 수명 주기 관리

  • App-V 패키지 통합

  • 동적 구성 처리

  • Side by Side 어셈블리

  • 클라이언트 로깅

추가 참조 정보는 Microsoft App-V(Application Virtualization) 문서 리소스 다운로드 페이지를 참조하세요.

Sequencer가 만든 App-V 패키지 파일

Sequencer는 App-V 패키지를 만들고 가상화된 응용 프로그램을 생성합니다. 시퀀싱 프로세스는 다음 파일을 만듭니다.

파일 설명

.appv

  • 시퀀싱 프로세스에서 캡처된 자산 및 상태 정보를 포함하는 기본 패키지 파일입니다.

  • 컴퓨터 및 특정 사용자(배포 시)에게 다시 적용할 수 있는 토큰화된 형식의 패키지 파일, 게시 정보 및 레지스트리 아키텍처입니다.

.MSI

수동으로 또는 타사 배포 플랫폼을 통해 .appv 파일을 배포하는 데 사용할 수 있는 실행 가능 배포 래퍼입니다.

_DeploymentConfig.XML

App-V Client를 실행하는 컴퓨터의 모든 사용자에게 전역적으로 배포된 패키지의 모든 응용 프로그램에 대한 기본 게시 매개 변수를 사용자 지정하는 데 사용되는 파일입니다.

_UserConfig.XML

App-V Client를 실행하는 컴퓨터의 특정 사용자에게 배포된 패키지의 모든 응용 프로그램에 대한 게시 매개 변수를 사용자 지정하는 데 사용되는 파일입니다.

Report.xml

생략된 드라이버, 파일 및 레지스트리 위치를 포함하는 시퀀싱 메시지의 요약입니다.

.CAB

선택 사항: 이전에 시퀀싱된 가상 응용 프로그램 패키지를 자동으로 다시 빌드하는 데 사용되는 패키지 가속기 파일입니다.

.appvt

선택 사항: 일반적으로 다시 사용되는 Sequencer 설정을 보존하는 데 사용되는 Sequencer 템플릿 파일입니다.

시퀀싱에 대한 자세한 내용은 Application Virtualization 5.0 시퀀싱 가이드를 참조하세요.

appv 파일의 내용

appv 파일은 XML 및 비 XML 파일을 단일 엔터티에 함께 저장하는 데 사용되는 컨테이너입니다. 이 파일은 OPC(Open Packaging Conventions) 표준을 기반으로 하는 AppX 형식에서 빌드됩니다.

appv 파일 내용을 보려면 패키지 복사본을 만든 다음 복사한 파일 이름을 ZIP 확장명으로 바꿉니다.

appv 파일에는 가상 응용 프로그램을 만들고 게시할 때 사용되는 다음 폴더 및 파일이 포함되어 있습니다.

이름 유형 설명

루트

파일 폴더

시퀀싱 중에 캡처한 가상화된 응용 프로그램의 파일 시스템을 포함하는 디렉터리입니다.

[Content_Types].xml

XML 파일

appv 파일의 핵심 콘텐츠 형식을 나열합니다(예: DLL, EXE, BIN).

AppxBlockMap.xml

XML 파일

App-V 패키지 내 파일의 위치 및 유효성 검사를 사용할 수 있도록 하는 File, Block 및 BlockMap 요소를 사용하는 appv 파일의 레이아웃입니다.

AppxManifest.xml

XML 파일

패키지 추가, 게시 및 시작을 위한 필수 정보가 포함된 패키지의 메타데이터입니다. 패키지와 연결된 이름 및 GUID와 확장점(파일 형식 연결 및 바로 가기)을 포함합니다.

FilesystemMetadata.xml

XML 파일

특성(예: 디렉터리, 파일, 불투명 디렉터리, 빈 디렉터리, 긴 이름/짧은 이름)을 포함하여 시퀀싱 중에 캡처된 파일의 목록을 포함합니다.

PackageHistory.xml

XML 파일

시퀀싱 컴퓨터(OS 버전, IE 버전, .NET Framework 버전) 및 프로세스(업그레이드, 패키지 버전)에 대한 정보입니다.

Registry.dat

DAT 파일

패키지의 시퀀싱 프로세스 중에 캡처된 레지스트리 키 및 값입니다.

StreamMap.xml

XML 파일

주요 및 게시 기능 블록용 파일 목록을 포함합니다. 게시 기능 블록은 ICO 파일 및 패키지 게시를 위한 파일(EXE 및 DLL)의 필수 부분을 포함합니다. 주요 기능 블록(있는 경우)은 시퀀싱 프로세스 중 스트리밍용으로 최적화된 파일을 포함합니다.

App-V 클라이언트 데이터 저장소 위치

App-V Client는 가상 응용 프로그램이 정상적으로 실행되고 로컬로 설치된 응용 프로그램처럼 작동하도록 하기 위해 다양한 작업을 수행합니다. 가상 응용 프로그램을 열고 실행하는 프로세스에서는 가상 파일 시스템에서 레지스트리로의 매핑을 수행하여 응용 프로그램이 사용자에게 필요한 기존 응용 프로그램의 필수 구성 요소를 제공할 수 있도록 해야 합니다. 이 섹션에서는 가상 응용 프로그램을 실행하는 데 필요한 자산을 설명하고 App-V가 자산을 저장하는 위치를 나열합니다.

이름 위치 설명

패키지 저장소

%ProgramData%\App-V

읽기 전용 패키지 파일의 기본 위치입니다.

컴퓨터 카탈로그

%ProgramData%\Microsoft\AppV\Client\Catalog

컴퓨터 구성 문서별로 포함됩니다.

사용자 카탈로그

%AppData%\Microsoft\AppV\Client\Catalog

사용자 구성 문서별로 포함됩니다.

바로 가기 백업

%AppData%\Microsoft\AppV\Client\Integration\ShortCutBackups

패키지 게시 취소 시 복원할 수 있도록 이전 통합 지점을 저장합니다.

COW(기록 중 복사) 로밍

%AppData%\Microsoft\AppV\Client\VFS

패키지 수정을 위한 쓰기 가능 로밍 위치입니다.

COW(기록 중 복사) 로컬

%LocalAppData%\Microsoft\AppV\Client\VFS

패키지 수정을 위한 쓰기 가능 로밍 외 위치입니다.

컴퓨터 레지스트리

HKLM\Software\Microsoft\AppV

컴퓨터 또는 전역 게시 패키지(컴퓨터 하이브)용 VReg를 비롯한 패키지 상태 정보를 포함합니다.

사용자 레지스트리

HKCU\Software\Microsoft\AppV

VReg를 비롯한 사용자 패키지 상태 정보를 포함합니다.

사용자 레지스트리 클래스

HKCU\Software\Classes\AppV

추가 사용자 패키지 상태 정보를 포함합니다.

테이블에 대한 추가 세부 정보는 아래 섹션과 문서 전체에서 제공됩니다.

패키지 저장소

App-V 클라이언트는 패키지 저장소에 탑재된 응용 프로그램 자산을 관리합니다. 이 기본 저장소 위치는 %ProgramData%\App-V이지만 로컬 레지스트리(HKLM\Software\Microsoft\AppV\Client\Streaming 키 아래의 PackageInstallationRoot 값)를 수정하는 Set-AppVClientConfiguration PowerShell 명령을 통해 설치 중이나 설치 후에 구성할 수 있습니다. 패키지 저장소는 클라이언트 운영 체제의 로컬 경로에 있어야 합니다. 개별 패키지는 패키지 저장소에서 패키지 GUID 및 버전 GUID용으로 명명된 하위 디렉터리에 저장됩니다.

특정 응용 프로그램 경로의 예는 다음과 같습니다.

C:\ProgramData\App-V\PackGUID\VersionGUID 

설치 중에 패키지 저장소의 기본 위치를 변경하려면 App-V 클라이언트를 배포하는 방법을 참조하세요.

공유 콘텐츠 저장소

App-V Client가 공유 콘텐츠 저장소 모드로 구성된 경우에는 스트림 폴트 수행 시 디스크에 데이터가 기록되지 않습니다. 따라서 패키지는 최소한의 로컬 디스크 공간만을 차지합니다(게시 데이터). 이러한 방식은 로컬 저장소가 제한될 수 있으며 SAN과 같은 고성능 네트워크 위치에서 응용 프로그램을 스트리밍하는 것이 적합한 VDI 환경에서 매우 효율적입니다. 공유 콘텐츠 저장소 모드에 대한 자세한 내용은 https://go.microsoft.com/fwlink/p/?LinkId=392750을 참조하세요.

참고

App-V Client용 공유 콘텐츠 저장소 구성을 사용하더라도 컴퓨터 및 패키지 저장소는 로컬 드라이브에 있어야 합니다.

패키지 카탈로그

App-V 클라이언트는 다음 두 개의 파일 기반 위치를 관리합니다.

  • 카탈로그(사용자 및 컴퓨터)

  • 레지스트리 위치(게시를 위해 패키지를 대상으로 지정하는 방법에 따라 달라짐). 컴퓨터용 카탈로그(데이터 저장소)가 하나 있고 각 사용자용 카탈로그가 하나씩 있습니다. 컴퓨터 카탈로그에는 모든 사용자나 임의의 사용자에게 적용되는 전역 정보가 저장되고, 사용자 카탈로그에는 특정 사용자에게 적용되는 정보가 저장됩니다. 카탈로그는 동적 구성 및 매니페스트 파일의 컬렉션이며, 패키지 버전별로 파일과 레지스트리에는 모두 고유한 데이터가 포함됩니다.

컴퓨터 카탈로그

설명

패키지를 추가 및 게시할 때 컴퓨터의 사용자에게 제공되는 패키지 문서를 저장합니다. 그러나 패키지가 게시 시에 "전역"인 경우에는 모든 사용자가 통합을 사용할 수 있습니다.

전역 패키지가 아닌 경우에는 특정 사용자에게만 통합이 게시되지만, 클라이언트 컴퓨터의 모든 사용자가 보고 수정할 수 있는 전역 리소스는 계속 제공됩니다(패키지 디렉터리가 공유 디스크 위치에 있음).

컴퓨터의 사용자가 패키지를 사용할 수 있는 경우(전역 또는 비전역 패키지) 매니페스트는 컴퓨터 카탈로그에 저장됩니다. 패키지를 전역으로 게시하면 동적 구성 파일이 컴퓨터 카탈로그에 저장되므로, 패키지가 전역인지 여부는 컴퓨터 카탈로그에 정책 파일(UserDeploymentConfiguration file)이 있는지 여부에 따라 정의됩니다.

기본 저장소 위치

%programdata%\Microsoft\AppV\Client\Catalog\

이 위치는 패키지 저장소 위치와 다릅니다. 패키지 저장소는 패키지 파일의 골든 또는 초기 복사본입니다.

컴퓨터 카탈로그의 파일

  • Manifest.xml

  • DeploymentConfiguration.xml

  • UserManifest.xml(전역 게시된 패키지)

  • UserDeploymentConfiguration.xml(전역 게시된 패키지)

패키지가 연결 그룹의 일부인 경우에 사용되는 추가 컴퓨터 카탈로그 위치

다음 위치는 위에 언급된 특정 패키지 위치에 추가로 제공됩니다.

%programdata%\Microsoft\AppV\Client\Catalog\PackageGroups\ConGroupGUID\ConGroupVerGUID

패키지가 연결 그룹의 일부인 경우 컴퓨터 카탈로그의 추가 파일

  • PackageGroupDescriptor.xml

  • UserPackageGroupDescriptor.xml(전역 게시된 연결 그룹)

사용자 카탈로그

설명

게시 프로세스 중에 생성됩니다. 패키지를 게시하는 데 사용되고, 패키지가 특정 사용자에게 프로비전되도록 시작 시에도 사용되는 정보를 포함합니다. 로밍 위치에 생성되며 사용자별 게시 정보를 포함합니다.

패키지가 사용자에게 게시되면 정책 파일은 사용자 카탈로그에 저장됩니다. 그와 동시에 매니페스트 복사본이 사용자 카탈로그에도 저장됩니다. 사용자에 대한 패키지 권한 부여가 제거되면 관련 패키지 파일이 사용자 카탈로그에서 제거됩니다. 관리자는 사용자 카탈로그를 확인하여 해당 사용자에게 패키지 권한이 부여되었음을 나타내는 동적 구성 파일 유무를 파악할 수 있습니다.

로밍 사용자의 경우에는 기본적으로 대상 사용자의 레거시 App-V 동작을 유지하기 위해 사용자 카탈로그가 로밍 또는 공유 위치에 있어야 합니다. 권한 부여 및 정책은 컴퓨터가 아닌 사용자에게 연결되므로, 프로비전된 후에는 사용자와 함께 로밍되어야 합니다.

기본 저장소 위치

ppdata\roaming\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID

사용자 카탈로그의 파일

  • UserManifest.xml

  • DynamicConfiguration.xml 또는 UserDeploymentConfiguration.xml

패키지가 연결 그룹의 일부인 경우에 사용되는 추가 사용자 카탈로그 위치

다음 위치는 위에 언급된 특정 패키지 위치에 추가로 제공됩니다.

appdata\roaming\Microsoft\AppV\Client\Catalog\PackageGroups\PkgGroupGUID\PkgGroupVerGUID

패키지가 연결 그룹의 일부인 경우 컴퓨터 카탈로그의 추가 파일

UserPackageGroupDescriptor.xml

바로 가기 백업

게시 프로세스 동안 App-V Client는 모든 바로 가기 및 통합 지점을 %AppData%\Microsoft\AppV\Client\Integration\ShortCutBackups.에 백업합니다. 이 백업을 통해 패키지의 게시가 취소된 경우 이러한 통합 지점을 이전 버전으로 복원할 수 있습니다.

COW(기록 중 복사) 파일

패키지 저장소에는 게시 서버에서 스트리밍된 패키지 파일의 초기 복사본이 포함됩니다. App-V의 응용 프로그램이 정상 작동하는 동안 사용자 또는 서비스가 파일을 변경해야 할 수 있습니다. 이러한 변경은 해당 변경 내용을 제거하는 응용 프로그램 복구 기능을 보존하기 위해 패키지 저장소에서 수행되지 않습니다. COW(기록 중 복사)라고 불리는 이 위치는 로밍 위치와 로밍되지 않는 위치를 모두 지원합니다. 수정 내용이 저장되는 위치는 응용 프로그램이 기본 환경에서 변경 내용을 쓰도록 프로그래밍된 위치에 따라 달라집니다.

COW 로밍

위에서 설명한 것처럼 COW 로밍 위치에는 일반적인 %AppData% 위치 또는 \Users\{username}\AppData\Roaming 위치를 대상으로 하는 파일 및 디렉터리에 대한 변경 내용이 저장됩니다. 이러한 디렉터리 및 파일은 운영 체제 설정에 따라 로밍됩니다.

COW 로컬

COW 로컬 위치는 로밍 위치와 비슷하지만, 로밍 지원이 구성된 경우에도 디렉터리 및 파일은 다른 컴퓨터로 로밍되지 않습니다. 위에서 설명한 COW 로컬 위치에는 %AppData% 위치가 아닌 일반적인 Windows에 적용되는 변경 내용이 저장됩니다. 나열되는 디렉터리는 경우에 따라 다르지만, 일반적인 Windows 위치(일반 AppData 및 일반 AppDataS)에 해당하는 두 개의 위치가 제공됩니다. S는 가상 서비스가 로그온한 사용자에서 다른 관리자 권한 사용자로 변경을 요청할 때의 제한된 위치를 나타냅니다. S가 아닌 위치에는 사용자 기반 변경 내용이 저장됩니다.

패키지 레지스트리

응용 프로그램이 패키지 레지스트리 데이터에 액세스하려면 App-V 클라이언트가 패키지 레지스트리 데이터를 응용 프로그램에 제공해야 합니다. App-V 클라이언트는 모든 레지스트리 데이터에 대한 백업 저장소로 실제 레지스트리를 사용합니다.

새 패키지를 App-V 클라이언트에 추가하면 패키지의 REGISTRY.DAT 파일 복사본이 %ProgramData%\Microsoft\AppV\Client\VREG\{Version GUID}.dat에 생성됩니다. 파일의 이름은 확장명이 .DAT인 버전 GUID입니다. 이 복사본은 패키지의 실제 하이브 파일이 사용되지 않도록 하기 위해 작성됩니다. 따라서 나중에 패키지 제거를 방지할 수 있습니다.

패키지 저장소의 Registry.dat

 > 

%ProgramData%\Microsoft\AppV\Client\Vreg\{VersionGuid}.dat

패키지의 첫 번째 응용 프로그램을 클라이언트에서 시작하면, 클라이언트가 하이브 파일에서 콘텐츠를 준비 또는 복사하여 대체 위치인 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\Packages\PackageGuid\Versions\VersionGuid\REGISTRY에 패키지 레지스트리 데이터를 다시 만듭니다. 준비된 레지스트리 데이터에는 두 가지 고유한 유형의 컴퓨터 데이터 및 사용자 데이터가 있습니다. 컴퓨터 데이터는 컴퓨터의 모든 사용자가 공유합니다. 사용자 데이터는 사용자별 위치인 HKCU\Software\Microsoft\AppV\Client\Packages\PackageGuid\Registry\User에서 각 사용자를 위해 준비됩니다. 컴퓨터 데이터는 패키지 제거 시에 최종적으로 제거되며, 사용자 데이터는 사용자 게시 취소 작업 시에 제거됩니다.

패키지 레지스트리 준비와 연결 그룹 레지스트리 준비 비교

연결 그룹이 있으면 앞에서 설명한 레지스트리 준비 프로세스가 수행되지만, 이 경우에는 하이브 파일이 하나가 아닌 여러 개입니다. 파일은 연결 그룹 XML에 표시되는 순서대로 처리되며, 내용이 충돌하는 경우 첫 번째 작성자가 작성한 내용이 적용됩니다.

준비된 레지스트리는 단일 패키지의 경우와 마찬가지로 영구 보존됩니다. 준비된 사용자 레지스트리 데이터는 사용하지 않도록 설정할 때까지 연결 그룹에 대해 유지되며, 준비된 컴퓨터 레지스트리 데이터는 연결 그룹 제거 시에 제거됩니다.

가상 레지스트리

VREG(가상 레지스트리)는 패키지 레지스트리와 기본 레지스트리의 병합된 단일 보기를 응용 프로그램에 제공하는 데 사용됩니다. 또한 가상 프로세스의 컨텍스트에서 레지스트리에 적용된 변경 내용이 별도의 COW 위치에도 저장되는 COW(기록 중 복사) 기능도 제공됩니다. 즉, VREG는 레지스트리 COW -> 패키지 -> 기본 위치의 채워진 위치를 기준으로 최대 3개의 개별 레지스트리 위치를 단일 보기에 결합해야 합니다. 레지스트리 데이터를 요청하면 VREG는 요청된 데이터를 찾을 때까지 이러한 위치를 순서대로 찾습니다. 따라서 COW 위치에 값이 저장되어 있으면 다른 위치에 대한 찾기는 진행되지 않습니다. 그러나 COW 위치에 데이터가 없으면, 해당하는 데이터를 찾을 때까지 패키지와 기본 위치로 찾기를 계속 진행합니다.

레지스트리 위치

패키지가 개별적으로 게시되었는지 아니면 연결 그룹의 일부분으로 게시되었는지에 따라 App-V 클라이언트는 레지스트리 정보를 두 개의 패키지 레지스트리 위치와 두 개의 연결 그룹 위치에 저장합니다. 그리고 VREG에서 만들고 관리하는 패키지용 COW 위치와 연결 그룹용 COW 위치가 각각 3개 있습니다. 패키지 및 연결 그룹에 대한 설정은 공유되지 않습니다.

단일 패키지 VReg:

위치

설명

COW

  • Machine Registry\Client\Packages\PkgGUID\REGISTRY(관리자 권한 프로세스에서만 쓸 수 있음)

  • User Registry\Client\Packages\PkgGUID\REGISTRY(Software\Classes를 제외한 HKCU 아래에 쓰는 모든 사용자 로밍)

  • User Registry Classes\Client\Packages\PkgGUID\REGISTRY(HKCU\Software\Classes 쓰기 및 관리자 권한이 아닌 프로세스용 HKLM)

패키지

  • Machine Registry\Client\Packages\PkgGUID\Versions\VerGuid\Registry\Machine

  • User Registry Classes\Client\Packages\PkgGUID\Versions\VerGUID\Registry

기본

  • 기본 응용 프로그램 레지스트리 위치

 

연결 그룹 VReg:

위치

설명

COW

  • Machine Registry\Client\PackageGroups\GrpGUID\REGISTRY(관리자 권한 프로세스에서만 쓸 수 있음)

  • User Registry\Client\PackageGroups\GrpGUID\REGISTRY(Software\Classes를 제외한 HKCU 아래에 쓰는 모든 내용)

  • User Registry Classes\Client\PackageGroups\GrpGUID\REGISTRY

패키지

  • Machine Registry\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY

  • User Registry Classes\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY

기본

  1. 기본 응용 프로그램 레지스트리 위치

 

두 개의 HKLM용 COW 위치(관리자 권한 프로세스 및 관리자 권한이 아닌 프로세스)가 있습니다. 관리자 권한 프로세스에서는 HKLM 변경 내용을 항상 HKLM 아래의 보안 COW에 씁니다. 관리자 권한이 아닌 프로세스는 HKLM 변경 내용을 항상 HKCU\Software\Classes 아래의 비보안 COW에 씁니다. 응용 프로그램이 HKLM에서 변경 내용을 읽으면, 관리자 권한 프로세스는 HKLM 아래의 보안 COW에서 변경 내용을 읽습니다. 관리자 권한이 아닌 프로세스는 두 위치에서 모두 변경 내용을 읽으며, 비보안 COW에서 수행된 변경 내용을 우선적으로 적용합니다.

통과 키

관리자는 통과 키를 사용하여 특정 키를 기본 레지스트리에서만 읽을 수 있도록 구성하여 패키지 및 COW 위치를 무시할 수 있습니다. 통과 위치는 패키지별로 다른 것이 아니라 컴퓨터에서 전역으로 적용되며 키에 경로를 추가하여 구성할 수 있습니다. 이러한 위치는 HKLM\Software\Microsoft\AppV\Subsystem\VirtualRegistry 키의 REG_MULTI_SZ 값(PassThroughPaths)으로 전달되는 것으로 처리해야 합니다. 이 다중 문자열 값과 해당 자식 아래에 표시되는 모든 키는 통과로 처리됩니다.

다음 위치는 기본적으로 통과 위치로 구성됩니다.

  • HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

  • HKEY_LOCAL_MACHINE\SOFTWARE\Policies

  • HKEY_CURRENT_USER\SOFTWARE\Policies

통과 키는 비가상 응용 프로그램이 작업이나 통합을 정상적으로 수행하는 데 필요한 VReg에 가상 응용 프로그램이 레지스트리 데이터를 쓰지 않도록 하는 데 사용됩니다. 정책 키를 사용하면 패키지별 설정이 아닌 관리자가 설정한 그룹 정책 기반 설정을 사용할 수 있습니다. Windows의 최신 UI 기반 응용 프로그램과 통합하려면 AppModel 키가 필요합니다. 관리자는 기본 통과 키를 수정하지 않는 것이 좋습니다. 그러나 응용 프로그램 동작에 따라 통과 키를 더 추가해야 하는 경우도 있습니다.

App-V 패키지 저장소 동작

App-V 5는 appv 파일의 확장된 자산 파일이 저장되는 위치인 패키지 저장소를 관리합니다. 기본적으로 이 위치는 %ProgramData%\App-V에 저장되며, 사용 가능한 디스크 공간만을 기준으로 하는 저장소 기능에 따라 제한됩니다. 패키지 저장소는 이전 섹션에서 설명한 것처럼 패키지 및 버전의 GUID로 구성됩니다.

패키지 추가

App-V 패키지는 App-V 클라이언트와 함께 컴퓨터에 추가할 때 준비됩니다. App-V 클라이언트는 요청 시 준비 기능을 제공합니다. 게시 또는 수동 Add-AppVClientPackage 실행 중에 데이터 구조가 패키지 저장소(c:\programdata\App-V\{PkgGUID}\{VerGUID})에 작성됩니다. StreamMap.xml에 정의된 게시 블록에서 식별되는 패키지 파일이 시스템에 추가되며, 시작 시 적절한 응용 프로그램 자산을 사용할 수 있도록 최상위 폴더 및 자식 파일이 준비됩니다.

패키지 탑재

PowerShell Mount-AppVClientPackage 또는 App-V 클라이언트 UI를 사용하여 패키지를 다운로드하면 명시적으로 패키지를 로드할 수 있습니다. 이 작업에서는 전체 패키지가 패키지 저장소에 완전히 로드됩니다.

패키지 스트리밍

스트리밍의 기본 동작을 변경하도록 App-V 클라이언트를 구성할 수 있습니다. 모든 스트리밍 정책은 HKEY_LOCAL_MAcHINE\Software\Microsoft\AppV\Client\Streaming 레지스트리 키 아래에 저장됩니다. PowerShell cmdlet Set-AppvClientConfiguration을 사용하여 정책을 설정합니다. 스트리밍에는 다음 정책이 적용됩니다.

정책 설명

AllowHighCostLaunch

Windows 8에서 3G 및 셀룰러 네트워크를 통한 스트리밍을 허용합니다.

AutoLoad

백그라운드 로드 설정을 지정합니다.

  • 0 - 사용 안 함

  • 1 – 이전에 사용한 패키지만

  • 2 – 모든 패키지

PackageInstallationRoot

로컬 컴퓨터의 패키지 저장소 루트 폴더입니다.

PackageSourceRoot

패키지 스트리밍을 시작해야 하는 루트 재정의입니다.

SharedContentStoreMode

VDI 시나리오에 대해 공유 콘텐츠 저장소를 사용하도록 설정합니다.

 

이러한 설정은 클라이언트로 App-V 패키지 자산을 스트리밍하는 동작에 영향을 줍니다. 기본적으로 App-V는 초기 게시 및 주요 기능 블록을 다운로드한 후 필요한 자산만 다운로드합니다. 아래에서는 스트리밍 패키지의 세 가지 특정 동작에 대해 설명합니다.

  • 백그라운드 스트리밍

  • 최적화된 스트리밍

  • 스트림 폴트

백그라운드 스트리밍

PowerShell cmdlet Get-AppvClientConfiguration을 사용하면 자동 로드 설정을 사용한 백그라운드 스트리밍의 현재 모드를 결정하는 데 사용할 수 있으며, Set-AppvClientConfiguration cmdlet을 사용하거나 레지스트리(HKLM\SOFTWARE\Microsoft\AppV\ClientStreaming key)에서 수정할 수 있습니다. 백그라운드 스트리밍은 자동 로드 설정이 이전에 사용한 패키지를 다운로드하도록 설정된 경우의 기본 설정입니다. 기본 설정(값=1)을 기준으로 하는 동작은 응용 프로그램을 시작한 후 백그라운드에서 App-V 데이터 블록을 다운로드합니다. 패키지 시작 여부에 관계없이 이 설정을 완전히 사용하지 않도록 설정하거나(값=0) 모든 패키지에 대해 사용하도록 설정할 수 있습니다(값=2).

최적화된 스트리밍

시퀀싱 중에 주요 기능 블록을 사용하여 App-V 패키지를 구성할 수 있습니다. 시퀀싱 엔지니어는 이 설정을 통해 하나 이상의 특정 응용 프로그램에 대해 시작 파일을 모니터링할 수 있으며, 패키지의 모든 응용 프로그램을 처음 시작할 때 스트리밍을 위해 App-V 패키지의 데이터 블록을 표시할 수 있습니다.

스트림 폴트

게시 데이터 및 주요 기능 블록의 초기 스트리밍 이후 추가 파일에 대한 요청에서는 스트림 폴트를 수행합니다. 이러한 데이터 블록은 필요할 때 패키지 저장소에 다운로드됩니다. 따라서 사용자는 대개 패키지를 시작하고 일반 작업을 실행하는 데 충분한 패키지의 일부분만 다운로드할 수 있습니다. 다른 모든 블록은 사용자가 현재 패키지 저장소에 없는 데이터를 필요로 하는 작업을 시작하면 다운로드됩니다.

App-V 패키지 스트리밍에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=392770을 참조하세요.

스트리밍 최적화를 위한 시퀀싱 관련 내용은 https://go.microsoft.com/fwlink/?LinkId=392771에서 확인할 수 있습니다.

패키지 업그레이드

App-V 패키지는 응용 프로그램의 수명 주기 전체에 걸쳐 업데이트해야 합니다. App-V 패키지 업그레이드는 각 버전이 자체 PackageRoot 위치인 %ProgramData%\App-V\{PkgGUID}\{newVerGUID}에 작성된다는 점에서 패키지 게시 작업과 비슷합니다. 같은 패키지의 다른 버전에서 동일한 파일과 스트리밍된 파일에 대한 하드 링크를 만들어 업그레이드 작업을 최적화합니다.

패키지 제거

패키지를 제거할 때의 App-V 클라이언트 동작은 제거에 사용하는 방법에 따라 다릅니다. App-V 전체 인프라를 사용하여 응용 프로그램 게시를 취소하면, 사용자 카탈로그(전역 게시된 응용 프로그램의 컴퓨터 카탈로그)가 제거되지만 패키지 저장소 위치 및 COW 위치는 유지됩니다. PowerShell cmdlet Remove-AppVClientPackge를 사용하여 App-V 패키지를 제거하면 패키지 저장소 위치가 정리됩니다. 관리 서버에서 App-V 패키지의 게시를 취소해도 제거 작업은 수행되지 않습니다. 이 두 작업에서는 모두 패키지 저장소 패키지 파일이 제거되지 않습니다.

레지스트리 및 데이터 로밍

App-V 5는 사용 중인 응용 프로그램이 작성된 방법에 따라 로밍 시 기본에 가까운 환경을 제공할 수 있습니다. 기본적으로 App-V는 운영 체제의 로밍 구성에 따라 로밍 위치에 저장된 AppData를 로밍합니다. 파일 기반 데이터 저장소의 다른 위치는 로밍되지 않는 위치이므로 컴퓨터 간에 로밍되지 않습니다.

로밍 요구 사항 및 사용자 카탈로그 데이터 저장소

App-V는 사용자 카탈로그의 상태를 나타내는 데이터를 다음과 같은 형식으로 저장합니다.

  • %appdata%\Microsoft\AppV\Client\Catalog 아래의 파일

  • HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages 아래의 레지스트리 설정

이러한 파일과 레지스트리 설정은 사용자 카탈로그를 나타내므로, 특정 사용자에 대해 모두 로밍하거나 로밍하지 않아야 합니다. App-V는 %AppData% 로밍을 지원하지 않지만, 사용자 프로필(레지스트리)은 로밍하지 않으며 그 반대의 경우도 마찬가지입니다.

참고

Repair-AppvClientPackage cmdlet은 HKEY_CURRENT_USER 아래에서 사용자의 App-V 상태가 누락되었거나 %appdata%의 데이터와 일치하지 않는 경우 패키지 게시 상태를 복구하지 않습니다.

레지스트리 기반 데이터

App-V 레지스트리 로밍은 다음 테이블에 나와 있는 두 가지 시나리오에 해당됩니다.

시나리오 설명

표준 사용자로 실행하는 응용 프로그램

표준 사용자가 App-V 응용 프로그램을 시작하면, App-V 응용 프로그램의 HKLM 및 HKCU가 모두 컴퓨터의 HKCU 하이브에 저장됩니다. 따라서 아래와 같은 두 개의 고유 경로가 제공됩니다.

  • HKLM: HKCU\SOFTWARE\Classes\AppV\Client\Packages\{PkgGUID}\REGISTRY\MACHINE\SOFTWARE

  • HKCU: HKCU\SOFTWARE\Microsoft\AppV\Client\Packages\{PkgGUID}\REGISTRY\USER\{UserSID}\SOFTWARE

이러한 위치는 운영 체제 설정에 따라 로밍에 사용할 수 있도록 설정됩니다.

관리자 권한으로 실행되는 응용 프로그램

관리자 권한으로 응용 프로그램을 시작하면 다음 작업이 수행됩니다.

  • 로컬 컴퓨터의 HKLM 하이브에 HKLM 데이터가 저장됩니다.

  • 사용자 레지스트리 위치에 HKCU 데이터가 저장됩니다.

이 시나리오에서는 이러한 설정이 일반 운영 체제 로밍 구성을 사용하여 로밍되지 않으며, 결과 레지스트리 키와 값은 다음 위치에 저장됩니다.

  • HKLM\SOFTWARE\Microsoft\AppV\Client\Packages\{PkgGUID}\{UserSID}\REGISTRY\MACHINE\SOFTWARE

  • HKCU\SOFTWARE\Microsoft\AppV\Client\Packages\{PkgGUID}\Registry\User\{UserSID}\SOFTWARE

App-V 및 폴더 리디렉션

App-V 5.0 SP2는 로밍 AppData 폴더(%AppData%)의 폴더 리디렉션을 지원합니다. 가상 환경을 시작할 때는 사용자 로밍 AppData 디렉터리의 로밍 AppData 상태가 로컬 캐시로 복사됩니다. 반대로 가상 환경을 종료할 때는 특정 사용자의 로밍 AppData와 연결된 로컬 캐시가 해당 사용자의 로밍 AppData 디렉터리의 실제 위치로 전송됩니다.

일반적인 패키지에는 AppData\Local 및 AppData\Roaming 모두의 설정에 대해 사용자 백업 저장소에서 매핑되는 여러 위치가 있습니다. 이러한 위치는 사용자 프로필에서 사용자별로 저장되며, 패키지 VFS 디렉터리에 대한 변경 내용을 저장하고 기본 패키지 VFS를 보호하는 데 사용되는 COW(기록 중 복사) 위치입니다.

다음 테이블에는 폴더 리디렉션을 구현하지 않은 경우의 로컬 및 로밍 위치가 나와 있습니다.

패키지의 VFS 디렉터리 백업 저장소의 매핑된 위치

ProgramFilesX86

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\ProgramFilesX86

SystemX86

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\SystemX86

Windows

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\Windows

appv_ROOT

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\appv_ROOT

AppData

C:\users\jsmith\AppData\Roaming\Microsoft\AppV\Client\VFS\<GUID>\AppData

 

다음 테이블에는 %AppData%에 대해 폴더 리디렉션을 구현했으며 위치를 리디렉션한 경우(일반적으로 네트워크 위치로)의 로컬 및 로밍 위치가 나와 있습니다.

패키지의 VFS 디렉터리 백업 저장소의 매핑된 위치

ProgramFilesX86

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\ProgramFilesX86

SystemX86

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\SystemX86

Windows

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\Windows

appv_ROOT

C:\users\jsmith\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\appv_ROOT

AppData

\\Fileserver\users\jsmith\roaming\Microsoft\AppV\Client\VFS\<GUID>\AppData

 

현재 App-V 클라이언트 VFS 드라이버는 네트워크 위치에 쓸 수 없으므로, 가상 환경을 시작할 때와 게시 중에 App-V 클라이언트는 폴더 리디렉션 유무를 검색하여 로컬 드라이브에서 데이터를 복사합니다. 사용자가 App-V 응용 프로그램을 닫고 App-V 클라이언트가 가상 환경을 닫고 나면, VFS AppData의 로컬 저장소가 네트워크로 다시 복사되므로 추가 컴퓨터로의 로밍이 가능합니다. 이 경우 프로세스가 반복됩니다. 이 프로세스의 자세한 단계는 다음과 같습니다.

  1. 게시 또는 가상 환경 시작 중에 App-V 클라이언트가 AppData 디렉터리의 위치를 검색합니다.

  2. 로밍 AppData 경로가 로컬이거나 AppData\Roaming 위치가 매핑되지 않은 경우에는 아무 작업도 수행되지 않습니다.

  3. 로밍 AppData 경로가 로컬이 아니면 VFS AppData 디렉터리가 로컬 AppData 디렉터리에 매핑됩니다.

이 프로세스를 수행하면 App-V 클라이언트 VFS 드라이버에서 지원하지 않는 비 로컬 %AppData%의 문제를 해결할 수 있습니다. 그러나 이 새 위치에 저장되는 데이터는 폴더 리디렉션과 함께 로밍되지 않습니다. 응용 프로그램을 실행하는 중에 수행한 모든 변경은 로컬 AppData 위치에 대해 수행되며, 리디렉션된 위치로 복사되어야 합니다. 이 프로세스의 자세한 단계는 다음과 같습니다.

  1. App-V 응용 프로그램이 종료되면 가상 환경도 종료됩니다.

  2. 로밍 AppData 위치의 로컬 캐시가 압축되어 ZIP 파일에 저장됩니다.

  3. ZIP 패키징 프로세스 종료 시의 타임스탬프는 파일 이름을 지정하는 데 사용됩니다.

  4. 해당 타임스탬프는 마지막으로 확인된 AppData 타임스탬프로 HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages\<GUID>\AppDataTime 레지스트리에 기록됩니다.

  5. 폴더 리디렉션 프로세스를 호출하여 로밍 AppData 디렉터리에 업로드된 ZIP 파일을 평가하고 시작합니다.

타임스탬프는 충돌하는 내용이 있는 경우 "마지막 작성자의 변경 내용 적용" 시나리오를 확인하는 데 사용되며, App-V 응용 프로그램이 게시되거나 가상 환경이 시작될 때 데이터 다운로드를 최적화하는 데 사용됩니다. 폴더 리디렉션을 통해 지원 정책이 적용되는 다른 클라이언트에서 데이터를 사용할 수 있으며, 클라이언트의 로컬 AppData 위치에 AppData\Roaming 데이터를 저장하는 프로세스가 시작됩니다. 자세한 프로세스는 다음과 같습니다.

  1. 사용자가 응용 프로그램을 시작하여 가상 환경을 시작합니다.

  2. 응용 프로그램의 가상 환경이 가장 최근에 타임스탬프가 지정된 ZIP 파일(있는 경우)을 확인합니다.

  3. 레지스트리에서 마지막으로 확인된 업로드된 타임스탬프(있는 경우)를 확인합니다.

  4. 마지막으로 확인된 로컬의 업로드 타임스탬프가 ZIP 파일의 타임스탬프 이상이 아니면, 가장 최근의 ZIP 파일을 다운로드합니다.

  5. 마지막으로 확인된 로컬의 업로드 타임스탬프가 로밍 AppData 위치의 가장 최근 ZIP 파일 타임스탬프보다 이전이면, ZIP 파일이 사용자 프로필의 로컬 임시 디렉터리로 추출됩니다.

  6. ZIP 파일이 정상적으로 추출되고 나면, 로밍 AppData 디렉터리의 로컬 캐시 이름이 바뀌고 새 데이터가 해당 위치에 배치됩니다.

  7. 이름이 바뀐 디렉터리는 삭제되며, 가장 최근에 저장된 로밍 AppData 데이터를 사용하여 응용 프로그램이 열립니다.

그러면 AppData\Roaming 위치에 있는 응용 프로그램 설정의 정상적인 로밍이 완료됩니다. 이제 충족되어야 하는 다른 조건은 패키지 복구 작업뿐입니다. 프로세스의 세부 정보는 다음과 같습니다.

  1. 복구 중에 사용자 로밍 AppData 디렉터리의 경로가 로컬이 아닌지를 검색합니다.

  2. 로컬이 아닌 로밍 AppData 경로를 매핑하고 필요한 로밍 및 로컬 AppData 위치에 대상을 다시 만듭니다.

  3. 레지스트리에 저장된 타임스탬프가 있는 경우 삭제합니다.

이 프로세스에서는 AppData의 로컬 위치와 네트워크 위치가 모두 다시 만들어지며, 타임스탬프의 레지스트리 레코드가 제거됩니다.

App-V 클라이언트 응용 프로그램 수명 주기 관리

App-V 전체 인프라에서 응용 프로그램은 시퀀싱된 후 App-V 관리 및 게시 서버를 통해 관리되며 사용자나 컴퓨터에 게시됩니다. 이 섹션에서는 일반적인 App-V 응용 프로그램 수명 주기 작업 중에 수행되는 작업(추가, 게시, 시작, 업그레이드, 제거)과 App-V 클라이언트 측면에서 변경되고 수정되는 파일 및 레지스트리 위치에 대해 자세히 설명합니다. App-V 클라이언트 작업은 App-V 클라이언트를 실행하는 컴퓨터에서 시작되는 일련의 PowerShell 명령으로 수행됩니다.

이 문서에서는 App-V 전체 인프라 솔루션에 대해 중점적으로 설명합니다. Configuration Manager 2012와 App-V 통합에 대한 구체적인 정보를 확인하려면 https://go.microsoft.com/fwlink/?LinkId=392773을 방문하세요.

App-V 응용 프로그램 수명 주기 작업은 사용자 로그인 시(기본값), 컴퓨터 시작 시 또는 백그라운드의 시간 제한 작업으로 트리거됩니다. 게시 서버, 새로 고침 간격, 패키지 스크립트 사용 등을 비롯한 App-V 클라이언트 작업의 설정은 클라이언트 설치 중이나 설치 후(PowerShell 명령 사용)에 구성됩니다. TechNet의 클라이언트를 배포하는 방법 섹션(App-V 클라이언트를 배포하는 방법)을 참조하거나 PowerShell을 사용하세요.

get-command *appv*

게시 새로 고침

게시 새로 고침 프로세스는 App-V 클라이언트에서 수행되는 여러 작은 작업으로 구성됩니다. App-V는 작업 예약 기술이 아닌 응용 프로그램 가상화 기술입니다. Windows 작업 스케줄러를 통해 사용자 로그인 시, 컴퓨터 시작 시, 그리고 예약된 간격으로 프로세스를 사용하도록 설정합니다. 올바른 설정을 사용하여 클라이언트를 대규모 컴퓨터 그룹에 배포할 때는 위에 나와 있는 설치 도중에 클라이언트를 구성하는 것이 기본 방법입니다. 다음 PowerShell cmdlet을 통해 이러한 클라이언트 설정을 구성할 수 있습니다.

  • Add-AppVPublishingServer: App-V 패키지를 제공하는 App-V 게시 서버를 사용하여 클라이언트를 구성합니다.

  • Set-AppVPublishingServer: App-V 게시 서버의 현재 설정을 수정합니다.

  • Set-AppVClientConfiguration: App-V 클라이언트의 현재 설정을 수정합니다.

  • Sync-AppVPublishingServer: App-V 게시 새로 고침 프로세스를 수동으로 시작합니다. 이 cmdlet은 게시 서버를 구성하는 동안 작성되는 예약 작업에도 사용됩니다.

다음 섹션에서는 App-V 게시 새로 고침의 여러 단계 중에 수행되는 작업에 대해 자세히 설명합니다. 관련 항목은 다음과 같습니다.

  • App-V 패키지 추가

  • App-V 패키지 게시

App-V 패키지 추가

게시 새로 고침 프로세스의 첫 번째 단계에서는 클라이언트에 App-V 패키지를 추가합니다. 이 작업의 최종 결과는 PowerShell에서 Add-AppVClientPackage cmdlet을 사용하는 경우와 같습니다. 단, 게시 새로 고침의 추가 프로세스 중에는 구성된 게시 서버에 연결한 다음 간략한 응용 프로그램 목록을 클라이언트로 다시 전달하여 단일 패키지 추가 작업이 아닌 보다 상세한 정보를 가져옵니다. 해당 프로세스에서는 계속해서 패키지 또는 연결 그룹 추가나 업데이트용으로 클라이언트를 구성하고 appv 파일에 액세스합니다. 그런 다음 appv 파일의 내용이 확장되어 로컬 운영 체제의 적절한 위치에 배치됩니다. 아래에는 패키지가 폴트 스트리밍용으로 구성되었다고 가정할 때의 자세한 프로세스 워크플로가 나와 있습니다.

App-V 패키지를 추가하는 방법

  1. PowerShell 또는 작업 시퀀스 시작을 통해 게시 새로 고침 프로세스를 수동으로 시작합니다.

    1. App-V 클라이언트는 HTTP 연결을 설정하고 대상에 따라 응용 프로그램의 목록을 요청합니다. 게시 새로 고침 프로세스에서는 컴퓨터 또는 사용자를 대상으로 지정할 수 있습니다.

    2. App-V 게시 서버는 시작 대상, 사용자 또는 컴퓨터의 ID를 사용하며 데이터베이스에서 권한이 있는 응용 프로그램의 목록을 쿼리합니다. 응용 프로그램 목록은 XML 응답으로 제공되며, 클라이언트는 이 응답을 사용하여 패키지별로 자세한 정보를 받기 위한 추가 요청을 서버로 보냅니다.

  2. App-V 클라이언트의 게시 에이전트가 아래의 모든 작업을 직렬화하여 수행합니다.

    연결 그룹의 일부분인 패키지 버전 업데이트는 처리할 수 없으므로, 게시 취소되었거나 사용하지 않도록 설정된 연결 그룹을 평가합니다.

  3. 추가 또는 업데이트 작업을 식별하여 패키지를 구성합니다.

    1. App-V Client는 Windows의 AppX API를 사용하며 게시 서버에서 appv 파일에 액세스합니다.

    2. 패키지 파일이 열리고 AppXManifest.xml 및 StreamMap.xml이 패키지 저장소에 다운로드됩니다.

    3. StreamMap.xml에 정의된 게시 블록 데이터를 완전히 스트리밍하고 Package Store\PkgGUID\VerGUID\Root에 게시 블록 데이터를 저장합니다.

      • 아이콘: 확장점의 대상입니다.

      • PE 헤더(이식 가능 파일 헤더): 디스크의 이미지 요구 사항에 대한 기본 정보를 포함하는 확장점 대상으로, 직접 또는 파일 형식을 통해 액세스합니다.

      • 스크립트: 게시 프로세스 전체에서 사용하기 위해 스크립트 디렉터리를 다운로드합니다.

    4. 패키지 저장소를 채웁니다.

      1. 나열된 모든 디렉터리에 대해 추출된 패키지를 나타내는 스파스 파일을 디스크에 만듭니다.

      2. 최상위 파일과 루트 아래의 디렉터리를 준비합니다.

      3. 다른 모든 파일은 디스크에서 디렉터리를 스파스로 나열할 때 작성되며 요청 시 스트리밍됩니다.

    5. 컴퓨터 카탈로그 항목을 만듭니다. 패키지 파일에서 Manifest.xml 및 DeploymentConfiguration.xml을 만듭니다. 패키지에 DeploymentConfiguration.xml 파일이 없으면 자리 표시자가 작성됩니다.

    6. HKLM\Software\Microsoft\AppV\Client\Packages\PkgGUID\Versions\VerGUID\Catalog 레지스트리에 패키지 저장소의 위치를 만듭니다.

    7. 패키지 저장소에서 %ProgramData%\Microsoft\AppV\Client\VReg\{VersionGUID}.dat에 Registry.dat 파일을 만듭니다.

    8. App-V 커널 모드 드라이버 HKLM\Microsoft\Software\AppV\MAV에 패키지를 등록합니다.

    9. 패키지 추가 타이밍을 설정하기 위해 AppxManifest.xml 또는 DeploymentConfig.xml 파일에서 스크립팅를 호출합니다.

  4. 추가 및 사용/사용 안 함을 통해 연결 그룹을 구성합니다.

  5. 대상(사용자 또는 컴퓨터)에 게시되지 않은 개체를 제거합니다.

    참고

    이때 패키지 삭제는 수행되지 않으며, 특정 대상(사용자 또는 컴퓨터)의 통합 지점과 사용자 카탈로그 파일(전역 게시된 경우 컴퓨터 카탈로그 파일)이 제거됩니다.

  6. 클라이언트 구성에 따라 백그라운드 로드 탑재를 호출합니다.

  7. 컴퓨터 또는 사용자에 대한 게시 정보를 이미 포함하는 패키지는 즉시 복원됩니다.

    참고

    이러한 상황은 패키지 백그라운드 추가를 통해 게시를 취소하지 않고 제거를 수행하는 경우의 결과로 발생합니다.

그러면 게시 새로 고침 프로세스의 App-V 패키지 추가가 완료됩니다. 다음 단계에서는 특정 대상(컴퓨터 또는 사용자)에 패키지를 게시합니다.

패키지 추가 파일 및 레지스트리 데이터

App-V 패키지 게시

게시 새로 고침 작업 중에는 특정 게시 작업(Publish-AppVClientPackage)에서 사용자 카탈로그에 항목이 추가되고, 사용자에 대한 권한 부여가 매핑되며, 로컬 저장소가 식별되고, 모든 통합 단계를 수행하여 게시 작업이 완료됩니다. 자세한 단계는 다음과 같습니다.

App-V 패키지를 게시하는 방법

  1. 패키지 항목이 사용자 카탈로그에 추가됩니다.

    1. 사용자 대상 패키지: UserDeploymentConfiguration.xml 및 UserManifest.xml이 컴퓨터의 사용자 카탈로그에 배치됩니다.

    2. 컴퓨터 대상(전역) 패키지: UserDeploymentConfiguration.xml이 컴퓨터 카탈로그에 배치됩니다.

  2. HKLM\Software\Microsoft\AppV\MAV에서 사용자에 대한 커널 모드 드라이버에 패키지를 등록합니다.

  3. 통합 작업을 수행합니다.

    1. 확장점을 만듭니다.

    2. 사용자 레지스트리 및 로밍 프로필(바로 가기 백업)에 백업 정보를 저장합니다.

      참고

      그러면 패키지 게시를 취소하는 경우 확장점을 복원할 수 있습니다.

    3. 게시 타이밍을 대상으로 하는 스크립트를 실행합니다.

연결 그룹의 일부인 App-V 패키지를 게시하는 것은 위의 프로세스와 매우 비슷합니다. 연결 그룹의 경우 특정 카탈로그 정보를 저장하는 경로에는 카탈로그 디렉터리의 자식으로 PackageGroups가 포함됩니다. 자세한 내용은 위의 컴퓨터 및 사용자 카탈로그 정보를 검토하세요.

패키지 추가 파일 및 레지스트리 데이터 - 전역

응용 프로그램 시작

게시 새로 고침 프로세스 후에 사용자는 App-V 응용 프로그램을 시작하며, 그 이후에 App-V 응용 프로그램을 다시 시작합니다. 이 프로세스는 매우 간단하며 최소한의 네트워크 트래픽으로 빠르게 시작되도록 최적화되어 있습니다. App-V 클라이언트가 사용자 카탈로그 경로에서 게시 중에 만들어진 파일을 확인합니다. 패키지 시작 권한이 설정되고 나면, App-V 클라이언트가 가상 환경을 만들고, 필요한 데이터 스트리밍을 시작하며, 가상 환경 작성 중에 적절한 매니페스트 및 배포 구성 파일을 적용합니다. 가상 환경이 만들어져 특정 패키지 및 응용 프로그램용으로 구성되면 응용 프로그램이 시작됩니다.

App-V 응용 프로그램을 시작하는 방법

  1. 사용자가 바로 가기를 클릭하거나 파일 형식을 호출하여 응용 프로그램을 시작합니다.

  2. App-V 클라이언트가 사용자 카탈로그에서 다음 파일의 유무를 확인합니다.

    • UserDeploymentConfiguration.xml

    • UserManifest.xml

  3. 파일이 있는 경우, 응용 프로그램은 해당 특정 사용자에 대한 권한을 부여받으며 시작 프로세스를 시작합니다. 이 시점에는 네트워크 트래픽이 발생하지 않습니다.

  4. 다음으로 App-V 클라이언트가 App-V 클라이언트 서비스에 대해 등록된 패키지의 경로를 레지스트리에서 찾을 수 있는지 확인합니다.

  5. 패키지 저장소의 경로를 찾으면 가상 환경이 만들어집니다. 응용 프로그램을 처음 시작하는 경우에는 주요 기능 블록(있는 경우)이 다운로드됩니다.

  6. 기능 블록을 다운로드한 후 App-V 클라이언트 서비스는 매니페스트 및 배포 구성 파일을 사용하여 가상 환경을 구성하며 모든 App-V 하위 시스템이 로드됩니다.

  7. 응용 프로그램이 시작됩니다. 패키지 저장소에서 누락된 파일(스파스 파일)에 대해 App-V가 필요에 따라 파일을 폴트 스트리밍합니다.

    패키지 추가 파일 및 레지스트리 데이터 - 스트림

App-V 패키지 업그레이드

App-V 5 패키지 업그레이드 프로세스는 App-V의 이전 버전과는 다릅니다. App-V는 각기 다른 사용자에게 권한이 부여된 컴퓨터에 있는 동일 패키지의 여러 버전을 지원합니다. 패키지 저장소 및 카탈로그가 새 리소스로 업데이트되면 언제든지 패키지 버전을 추가할 수 있습니다. 새 버전 리소스 추가와 관련된 프로세스는 저장소 최적화뿐입니다. 업그레이드 중에는 새 파일만 새 버전 저장소 위치에 추가되며, 변경되지 않은 파일에 대해서는 하드 링크가 만들어집니다. 따라서 디스크 위치 한 곳에만 파일을 표시한 후 디스크의 파일 위치 항목을 사용하여 모든 폴더에 프로젝션함으로써 전체 저장소 공간을 줄일 수 있습니다. App-V 패키지 업그레이드의 구체적인 세부 정보는 다음과 같습니다.

App-V 패키지를 업그레이드하는 방법

  1. App-V 클라이언트가 게시 새로 고침을 수행하고 App-V 패키지의 최신 버전을 검색합니다.

  2. 패키지 항목이 새 버전의 해당 카탈로그에 추가됩니다.

    1. 사용자 대상 패키지: UserDeploymentConfiguration.xml 및 UserManifest.xml이 컴퓨터의 사용자 카탈로그 appdata\roaming\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID에 배치됩니다.

    2. 컴퓨터 대상(전역) 패키지: UserDeploymentConfiguration.xml이 컴퓨터 카탈로그의 %programdata%\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID에 배치됩니다.

  3. HKLM\Software\Microsoft\AppV\MAV에서 사용자에 대한 커널 모드 드라이버에 패키지를 등록합니다.

  4. 통합 작업을 수행합니다.

    1. 매니페스트 및 동적 구성 파일에서 EP(확장점)를 통합합니다.
    1. 패키지 저장소의 연결 지점을 사용하여 파일 기반 EP 데이터를 AppData 폴더에 저장합니다.

    2. 새 버전을 사용할 수 있는 경우에는 버전 1 EP가 이미 있습니다.

    3. 최신 또는 업데이트된 확장점의 경우 컴퓨터 또는 사용자 카탈로그에서 확장점이 버전 2 위치로 전환됩니다.

  5. 게시 타이밍을 대상으로 하는 스크립트를 실행합니다.

  6. 필요에 따라 Side by Side 어셈블리를 설치합니다.

사용 중인 App-V 패키지 업그레이드

App-V 5 SP2에서 시작: 최종 사용자가 사용 중인 패키지를 업그레이드하려고 하면 업그레이드 작업이 보류 중 상태로 설정됩니다. 업그레이드는 다음 규칙에 따라 나중에 실행됩니다.

작업 유형 적용 가능한 규칙

사용자 기반 작업(예: 사용자에게 패키지 게시)

보류 중인 작업은 사용자가 로그오프했다가 다시 로그온한 후에 수행됩니다.

전역 기반 작업(예: 연결 그룹을 전역으로 사용하도록 설정)

보류 중인 작업은 컴퓨터를 종료했다가 다시 시작하면 수행됩니다.

작업이 보류 중 상태로 설정되면, App-V 클라이언트는 다음과 같이 보류 중인 작업에 대한 레지스트리 키도 생성합니다.

사용자 기반 또는 전역 기반 작업 레지스트리 키 생성 위치

사용자 기반 작업

KEY_CURRENT_USER\Software\Microsoft\AppV\Client\PendingTasks

전역 기반 작업

HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\PendingTasks

다음 작업을 완료해야 사용자가 패키지의 최신 버전을 사용할 수 있습니다.

작업 세부 정보

컴퓨터에 패키지 추가

이 작업은 컴퓨터별로 다르며, 위의 패키지 추가 섹션에 나와 있는 단계를 완료하여 언제든지 수행할 수 있습니다.

패키지 게시

게시 단계는 위의 패키지 게시 섹션을 참조하세요. 이 프로세스를 수행하려면 시스템에서 확장점을 업데이트해야 합니다. 이 작업을 완료해도 최종 사용자가 응용 프로그램을 사용할 수는 없습니다.

다음 예제 시나리오를 참조하여 패키지를 업데이트합니다.

시나리오 요구 사항

업그레이드 시 App-V 패키지를 사용하고 있지 않은 경우

패키지 가상 응용 프로그램, COM 서버 또는 셸 확장 구성 요소가 사용 중이어서는 안 됩니다.

관리자가 패키지의 최신 버전을 게시하며, 다음 번에 패키지 내의 구성 요소 또는 응용 프로그램을 시작하면 업그레이드가 작동합니다. 새 버전의 패키지가 스트리밍 및 실행됩니다. App-V 5 SP2에서는 이 시나리오가 이전 App-V 5 릴리스에서 변경되지 않았습니다.

관리자가 최신 버전의 패키지를 게시할 때 App-V 패키지가 사용 중인 경우

App-V 클라이언트가 업그레이드 작업을 보류 중으로 설정합니다. 즉, 해당 작업이 대기되며 나중에 패키지가 사용되지 않을 때 수행됩니다.

응용 프로그램 패키지가 사용 중이면 사용자가 가상 응용 프로그램을 종료합니다. 그 후에 업그레이드를 수행할 수 있습니다.

Windows 탐색기에서 영구적으로 로드하는 셸 확장(Office 2013)이 패키지에 포함되어 있으면 사용자가 로그인할 수 없으므로, 로그오프했다가 다시 로그인해야 App-V 패키지 업그레이드를 시작할 수 있습니다.

전역 게시와 사용자 게시 비교

두 가지 방법 중 하나로 App-V 패키지를 게시할 수 있습니다. 그 중 한 가지 방법은 특정 사용자 또는 사용자 그룹에 대해 App-V 패키지의 권한을 부여하는 사용자 게시이고, 다른 하나는 컴퓨터의 모든 사용자가 사용할 수 있도록 전체 컴퓨터에 대해 App-V 패키지의 권한을 부여하는 전역 게시입니다. 패키지 업그레이드가 보류되었으며 App-V 패키지가 사용 중이지 않으면, 다음의 두 가지 게시 유형을 사용할 수 있습니다.

  • 전역 게시: 컴퓨터에 응용 프로그램이 게시되며, 해당 컴퓨터의 모든 사용자가 응용 프로그램을 사용할 수 있습니다. App-V 클라이언트 서비스가 시작되면 업그레이드가 수행됩니다. 이 경우 컴퓨터가 다시 시작됩니다.

  • 사용자 게시: 응용 프로그램이 사용자에게 게시됩니다. 컴퓨터에 여러 사용자가 있는 경우 사용자의 하위 집합으로 응용 프로그램을 게시할 수 있습니다. 사용자가 로그인하거나 응용 프로그램을 다시 게시하면(정기 게시, ConfigMgr 정책 새로 고침 및 평가, App-V 정기 게시/새로 고침 또는 PowerShell 명령을 통해 명시적으로 게시) 업그레이드가 수행됩니다.

App-V 패키지 제거

전체 인프라에서 App-V 응용 프로그램을 제거하는 것은 게시 취소 작업이며, 이 경우 패키지 제거는 수행되지 않습니다. 해당 프로세스는 위의 게시 프로세스와 같지만, 제거 프로세스에서는 패키지가 추가되는 것이 아니라 App-V 패키지에 대해 적용된 변경 내용이 제거됩니다.

App-V 패키지 복구

복구 작업은 매우 간단하지만 컴퓨터의 여러 위치에 영향을 줄 수 있습니다. 앞에서 설명한 COW(기록 중 복사) 위치가 제거되며, 확장점의 통합이 취소되었다가 다시 통합됩니다. 레지스트리의 등록 위치를 검토하여 COW 데이터 배치 위치를 파악하세요. 이 작업은 자동으로 수행되며, App-V 클라이언트 콘솔에서 또는 PowerShell을 통해(Repair-AppVClientPackage) 복구 작업을 시작하는 것 외에는 관리자의 제어가 필요하지 않습니다.

App-V 패키지 통합

App-V 클라이언트 및 패키지 아키텍처는 패키지 추가 및 게시 중에 로컬 운영 체제와의 특정 통합을 제공합니다. App-V 패키지의 통합 지점 또는 확장점은 3개 파일을 통해 정의됩니다.

  • AppXManifest.xml: 패키지 저장소 및 사용자 프로필에 저장된 대체 복사본과 함께 패키지 내부에 저장됩니다. 시퀀싱 프로세스 중에 만들어지는 옵션을 포함합니다.

  • DeploymentConfig.xml: 컴퓨터 및 사용자 기반 통합 확장점의 구성 정보를 제공합니다.

  • UserConfig.xml: 사용자 기반 구성만 제공하며 사용자 기반 확장점만 대상으로 하는 Deploymentconfig.xml의 하위 집합입니다.

통합 규칙

App-V 응용 프로그램은 App-V 클라이언트를 통해 컴퓨터에 게시되며, 아래 목록에서 설명하는 것처럼 일부 특정 작업이 수행됩니다.

  • 전역 게시: 바로 가기는 모든 사용자 프로필 위치에 저장되며, 기타 확장점은 레지스트리의 HKLM 하이브에 저장됩니다.

  • 사용자 게시: 바로 가기는 현재 사용자 계정 프로필에 저장되며, 기타 확장점은 레지스트리의 HKCU 하이브에 저장됩니다.

  • 백업 및 복원: 기존 네이티브 응용 프로그램 데이터 및 레지스트리(예: FTA 등록)는 게시 중에 백업됩니다.

    1. 게시된 최신 App-V 응용 프로그램으로 소유권이 전달되는 마지막 통합 패키지를 기준으로 App-V 패키지에 소유권이 부여됩니다.

    2. 소유 App-V 패키지의 게시를 취소하면 소유권이 App-V 패키지 간에 전송됩니다. 데이터나 레지스트리 복원은 시작되지 않습니다.

    3. 확장점별로 마지막 패키지를 제거하거나 패키지의 게시를 취소할 때 백업된 데이터를 복원하세요.

확장점

App-V 게시 파일(매니페스트 및 동적 구성)은 응용 프로그램을 로컬 운영 체제와 통합될 수 있도록 하는 여러 확장점을 제공합니다. 이러한 확장점은 바로 가기 배치, 파일 형식 연결 만들기, 구성 요소 등록 등 일반적인 응용 프로그램 설치 작업을 수행합니다. 이러한 응용 프로그램은 가상 응용 프로그램이므로 기존 응용 프로그램과 같은 방식으로 설치되지는 않으며, 설치 방식이 다소 다릅니다. 아래에는 이 섹션에서 다루는 확장점 목록이 나와 있습니다.

  • 바로 가기

  • 파일 형식 연결

  • 셸 확장

  • COM

  • 소프트웨어 클라이언트

  • 응용 프로그램 기능

  • URL 프로토콜 처리기

  • AppPath

  • 가상 응용 프로그램

바로 가기

바로 가기는 OS와의 통합 시 사용되는 기본 요소 중 하나이며, App-V 응용 프로그램 게시 및 게시 취소 중에 사용자가 직접 App-V 응용 프로그램을 시작하기 위한 인터페이스입니다.

패키지 매니페스트 및 동적 구성 XML 파일의 다음과 같은 섹션에서 특정 응용 프로그램 실행 파일의 경로를 찾을 수 있습니다.

<Extension Category="AppV.Shortcut">
          <Shortcut>
            <File>[{Common Desktop}]\Adobe Reader 9.lnk</File>
            <Target>[{AppVPackageRoot}]\Reader\AcroRd32.exe</Target>
            <Icon>[{Windows}]\Installer\{AC76BA86-7AD7-1033-7B44-A94000000001}\SC_Reader.ico</Icon>
            <Arguments />
            <WorkingDirectory />
            <ShowCommand>1</ShowCommand>
            <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
          </Shortcut>
        </Extension>

앞에서 설명한 것처럼 App-V 바로 가기는 기본적으로 새로 고침 작업에 따라 사용자 프로필에 배치됩니다. 전역 새로 고침에서는 바로 가기를 모든 사용자 프로필에 배치하며, 사용자 새로 고침에서는 바로 가기를 특정 사용자 프로필에 저장합니다. 실제 실행 파일은 패키지 저장소에 저장됩니다. ICO 파일의 위치는 App-V 패키지의 토큰화된 위치입니다.

파일 형식 연결

App-V 클라이언트는 게시 중에 로컬 운영 체제 파일 형식 연결을 관리합니다. 따라서 사용자가 파일 형식 호출을 사용하거나 구체적으로 등록된 확장명(.docx)의 파일을 열어 App-V 응용 프로그램을 시작할 수 있습니다. 파일 형식 연결은 아래 예제에 나와 있는 것처럼 매니페스트 및 동적 구성 파일에 표시됩니다.

<Extension Category="AppV.FileTypeAssociation">
          <FileTypeAssociation>
            <FileExtension MimeAssociation="true">
              <Name>.xdp</Name>
              <ProgId>AcroExch.XDPDoc</ProgId>
              <ContentType>application/vnd.adobe.xdp+xml</ContentType>
            </FileExtension>
            <ProgId>
              <Name>AcroExch.XDPDoc</Name>
              <Description>Adobe Acrobat XML Data Package File</Description>
              <EditFlags>65536</EditFlags>
              <DefaultIcon>[{Windows}]\Installer\{AC76BA86-7AD7-1033-7B44-A94000000001}\XDPFile_8.ico</DefaultIcon>
              <ShellCommands>
                <DefaultCommand>Read</DefaultCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Open</Name>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine>
                </ShellCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Printto</Name>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe"  /t "%1" "%2" "%3" "%4"</CommandLine>
                </ShellCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Read</Name>
                  <FriendlyName>Open with Adobe Reader 9</FriendlyName>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine>
                </ShellCommand>
              </ShellCommands>
            </ProgId>
          </FileTypeAssociation>
        </Extension>

참고

이 예제에서 각 항목의 의미는 다음과 같습니다.

  • <Name>.xdp</Name>는 확장명입니다.

  • <Name>AcroExch.XDPDoc</Name>는 인접한 ProgId를 가리키는 ProgId 값입니다.

  • <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine>은 응용 프로그램 실행 파일을 가리키는 명령줄입니다.

셸 확장

셸 확장은 시퀀싱 프로세스 동안 자동으로 패키지에 포함됩니다. 패키지가 전역 게시되면, 셸 확장은 응용 프로그램을 로컬로 설치한 것과 같은 기능을 사용자에게 제공합니다. 셸 확장 기능을 사용하기 위해 클라이언트에서 응용 프로그램에 대한 추가 설정 또는 구성을 수행할 필요는 없습니다.

셸 확장을 사용하기 위한 요구 사항

  • 포함된 셸 확장이 들어 있는 패키지는 전역 게시해야 합니다.

  • 응용 프로그램, Sequencer 및 App-V 클라이언트의 "비트"가 일치해야 합니다. 그렇지 않으면 셸 확장이 작동하지 않습니다. 예:

    • 응용 프로그램의 버전은 64비트입니다.

    • Sequencer는 64비트 컴퓨터에서 실행됩니다.

    • 패키지는 64비트 App-V 클라이언트 컴퓨터로 배달되고 있습니다.

다음 테이블에는 지원되는 셸 확장이 표시되어 있습니다.

처리기 설명

상황이 맞는 메뉴 처리기

상황이 맞는 메뉴에 메뉴 항목을 추가하며, 상황이 맞는 메뉴가 표시되기 전에 호출됩니다.

끌어서 놓기 처리기

마우스 오른쪽 클릭 및 끌어서 놓기 시의 작업을 제어하며, 이때 표시되는 상황에 맞는 메뉴를 수정합니다.

놓기 대상 처리기

놓기 대상(예: 파일) 위에 데이터 개체를 끌어서 놓은 후의 동작을 제어합니다.

데이터 개체 처리기

파일을 클립보드로 복사하거나 놓기 대상 위에 끌어서 놓은 후의 동작을 제어합니다. 이 처리기는 놓기 대상에 추가 클립보드 형식을 제공할 수 있습니다.

속성 시트 처리기

개체의 속성 시트 대화 상자에 페이지를 추가하거나 대화 상자의 페이지를 바꿉니다.

정보 팁 처리기

항목을 마우스로 가리킬 때 항목에 대한 플래그 및 정보 팁 정보를 검색하여 팝업 도구 설명 내에 표시할 수 있습니다.

열 처리기

Windows 탐색기 자세히 보기에 사용자 지정 열을 만들고 표시할 수 있습니다. 이 처리기는 정렬 및 그룹화를 확장하는 데 사용할 수 있습니다.

미리 보기 처리기

Windows 탐색기 미리 보기 창에 파일의 미리 보기를 표시할 수 있습니다.

COM

App-V 클라이언트는 COM 통합 및 가상화를 지원하는 응용 프로그램 게시를 지원합니다. COM 통합을 통해 App-V 클라이언트는 로컬 운영 체제에서 COM 개체를 등록하고 해당 개체를 가상화할 수 있습니다. 이 문서에서는 COM 개체를 통합하려면 추가 세부 정보가 필요합니다.

App-V에서는 Out-Of-Process와 In-Process의 두 가지 프로세스 유형을 사용하여 패키지에서 로컬 운영 체제로 COM 개체를 등록할 수 있습니다. COM 개체를 등록할 때는 특정 App-V 패키지에 대한 여러 작업 모드 중 하나 또는 여러 모드의 조합을 사용합니다. 이러한 모드에는 해제, 격리, 통합 등이 있습니다. 통합 모드는 Out-Of-Process 또는 In-Process 유형용으로 구성됩니다. 동적 구성 파일(deploymentconfig.xml 또는 userconfig.xml)을 사용하여 COM 모드 및 유형을 구성합니다.

App-V 통합에 대한 세부 정보는 https://go.microsoft.com/fwlink/?LinkId=392834에서 확인할 수 있습니다.

소프트웨어 클라이언트 및 응용 프로그램 기능

App-V는 가상화된 응용 프로그램을 운영 체제의 소프트웨어 클라이언트에 등록할 수 있도록 하는 특정 소프트웨어 클라이언트 및 응용 프로그램 기능 확장점을 지원합니다. 따라서 사용자가 전자 메일, 인스턴트 메시징, 미디어 플레이어 등의 작업을 위한 기본 프로그램을 선택할 수 있습니다. 이 작업은 제어판에서 이 컴퓨터의 기본 프로그램 설정을 사용하여 수행하며 매니페스트 또는 동적 구성 파일의 시퀀싱 중에 구성합니다. 응용 프로그램 기능은 App-V 응용 프로그램이 전역 게시된 경우에만 지원됩니다.

App-V 기반 메일 클라이언트의 소프트웨어 클라이언트 등록 예제는 다음과 같습니다.

    <SoftwareClients Enabled="true">
      <ClientConfiguration EmailEnabled="true" />
      <Extensions>
        <Extension Category="AppV.SoftwareClient">
          <SoftwareClients>
            <EMail MakeDefault="true">
              <Name>Mozilla Thunderbird</Name>
              <Description>Mozilla Thunderbird</Description>
              <DefaultIcon>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe,0</DefaultIcon>
              <InstallationInformation>
                <RegistrationCommands>
                  <Reinstall>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /SetAsDefaultAppGlobal</Reinstall>
                  <HideIcons>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /HideShortcuts</HideIcons>
                  <ShowIcons>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /ShowShortcuts</ShowIcons>
                </RegistrationCommands>
                <IconsVisible>1</IconsVisible>
                <OEMSettings />
              </InstallationInformation>
              <ShellCommands>
                <ApplicationId>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe</ApplicationId>
                <Open>"[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe" -mail</Open>
              </ShellCommands>
              <MAPILibrary>[{ProgramFilesX86}]\Mozilla Thunderbird\mozMapi32_InUse.dll</MAPILibrary>
              <MailToProtocol>
                <Description>Thunderbird URL</Description>
                <EditFlags>2</EditFlags>
                <DefaultIcon>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe,0</DefaultIcon>
                <ShellCommands>
                  <ApplicationId>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe</ApplicationId>
                  <Open>"[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe" -osint -compose "%1"</Open>
                </ShellCommands>
              </MailToProtocol>
            </EMail>
          </SoftwareClients>
        </Extension>
      </Extensions>
    </SoftwareClients>

참고

이 예제에서 각 항목의 의미는 다음과 같습니다.

  • <ClientConfiguration EmailEnabled="true" />는 전자 메일 클라이언트를 통합하기 위한 전체 소프트웨어 클라이언트 설정입니다.

  • <EMail MakeDefault="true">는 특정 전자 메일 클라이언트를 기본 전자 메일 클라이언트로 설정하는 플래그입니다.

  • <MAPILibrary>[{ProgramFilesX86}]\Mozilla Thunderbird\mozMapi32_InUse.dll</MAPILibrary>은 MAPI dll 등록입니다.

URL 프로토콜 처리기

응용 프로그램이 항상 파일 형식 호출을 사용하는 가상 응용 프로그램인 것은 아닙니다. 예를 들어, 문서나 웹 페이지 내에 mailto: 링크를 포함할 수 있는 응용 프로그램에서는 사용자가 mailto: 링크를 클릭하면 등록된 메일 클라이언트가 실행됩니다. App-V에서는 로컬 운영 체제에 패키지별로 등록할 수 있는 URL 프로토콜 처리기를 지원합니다. 시퀀싱 중에 URL 프로토콜 처리기는 패키지에 자동으로 추가됩니다.

특정 URL 프로토콜 처리기를 등록할 수 있는 응용 프로그램이 둘 이상인 경우에는 동적 구성 파일을 사용하여 동작을 수정해 기본적으로 시작되는 응용 프로그램이어서는 안 되는 응용 프로그램에 대해 이 기능을 표시하지 않거나 사용하지 않도록 설정할 수 있습니다.

AppPath

AppPath 확장점은 운영 체제에서 직접 App-V 응용 프로그램을 호출할 수 있도록 지원합니다. 이러한 호출은 운영 체제에 따라 대개 실행 또는 시작 화면에서 수행됩니다. 따라서 관리자는 실행 파일의 구체적인 경로를 호출하지 않고도 운영 체제 명령 또는 스크립트에서 App-V 응용 프로그램에 대한 액세스를 제공할 수 있습니다. 따라서 시스템 경로 환경 변수가 게시 중에 수정되므로 모든 시스템에서 해당 변수를 수정할 필요가 없습니다.

AppPath 확장점은 매니페스트 또는 동적 구성 파일에서 구성되며, 사용자에 대한 게시 중에 로컬 컴퓨터의 레지스트리에 저장됩니다. AppPath에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=392835를 검토하세요.

가상 응용 프로그램

이 하위 시스템은 보통 다른 App-V 구성 요소에서 사용하는 응용 프로그램 목록(시퀀싱 중에 캡처됨)을 제공합니다. 동적 구성 파일을 사용하면 특정 응용 프로그램에 속하는 확장점의 통합을 사용하지 않도록 설정할 수 있습니다. 예를 들어, 패키지에 응용 프로그램이 두 개 포함되어 있으면 다른 응용 프로그램의 확장점 통합만 허용하도록 응용 프로그램 하나에 속하는 모든 확장점을 사용하지 않도록 설정할 수 있습니다.

확장점 규칙

위에서 설명한 확장점은 패키지가 게시된 방식에 따라 운영 체제에 통합됩니다. 전역 게시에서는 확장점이 공용 컴퓨터 위치에 배치되며, 사용자 게시에서는 확장점이 사용자 위치에 게시됩니다. 예를 들어, 바로 가기를 바탕 화면에 만들어 전역 게시하면 해당 바로 가기의 파일 데이터(%Public%\Desktop)와 레지스트리 데이터(HKLM\Software\Classes)가 생성됩니다. 동일한 바로 가기에 파일 데이터(%UserProfile%\Desktop)와 레지스트리 데이터(HKCU\Software\Classes)도 포함됩니다.

확장점이 모두 같은 방식으로 게시되지는 않으며, 전역 게시해야 하는 확장점도 있고 배달되는 특정 운영 체제 및 아키텍처에서 시퀀싱해야 하는 확장점도 있습니다. 아래 테이블에서는 이러한 두 가지 주요 규칙에 대해 설명합니다.

가상 확장 대상 OS 시퀀싱 필요 전역 게시 필요

Shortcut

파일 형식 연결

URL 프로토콜

X

AppPaths

X

COM 모드

소프트웨어 클라이언트

X

응용 프로그램 기능

X

X

상황에 맞는 메뉴 처리기

X

X

끌어서 놓기 처리기

X

데이터 개체 처리기

X

속성 시트 처리기

X

정보 팁 처리기

X

열 처리기

X

셸 확장

X

브라우저 도우미 개체

X

X

ActiveX 개체

X

X

동적 구성 처리

컴퓨터 한 대나 사용자 한 명에게 App-V를 배포하는 작업은 매우 간단합니다. 그러나 조직에서는 여러 비즈니스 라인과 지역 및 국가에 걸쳐 AppV 응용 프로그램을 배포하므로, 설정 집합 하나를 사용해 응용 프로그램을 한 번 시퀀싱하는 기능은 사용할 수가 없게 되었습니다. 매니페스트 파일에서 시퀀싱하는 동안 특정 설정과 구성을 캡처하는 동시에 동적 구성 파일을 사용하는 수정도 지원하는 App-V는 이러한 시나리오에 사용할 수 있습니다.

App-V 동적 구성을 수행하면 컴퓨터 수준이나 사용자 수준에서 패키지에 대해 정책을 지정할 수 있습니다. 시퀀싱 엔지니어는 동적 구성 파일을 사용하여 시퀀싱 후에 패키지 구성을 수정해 개별 사용자 또는 컴퓨터 그룹의 요구 사항을 충족할 수 있습니다. 경우에 따라서는 App-V 환경 내에서 적절한 기능을 제공하도록 응용 프로그램을 수정해야 할 수도 있습니다. 예를 들어, 응용 프로그램 실행 중에 지정된 시간에 특정 작업이 수행되도록 _*config.xml 파일을 수정해야 할 수 있습니다. 이러한 특정 작업으로는 가상화된 응용 프로그램이 다른 응용 프로그램에서 mailto 확장을 덮어쓰지 못하도록 해당 확장을 사용하지 않도록 설정하는 작업 등이 있습니다.

App-V 패키지의 appv 패키지 파일 내에는 시퀀싱 작업을 대표하는 매니페스트 파일이 포함되어 있습니다. 동적 구성 파일이 특정 패키지에 할당되는 경우가 아니면 이 파일을 정책으로 선택합니다. 시퀀싱 후에는 동적 구성 파일을 수정하여 다른 확장점을 사용해 다른 데스크톱이나 사용자에게 응용 프로그램을 게시하도록 허용할 수 있습니다. 두 동적 구성 파일은 DDC(동적 배포 구성)과 DUC(동적 사용자 구성) 파일입니다. 이 섹션에서는 매니페스트 및 동적 구성 파일의 조합을 중점적으로 설명합니다.

동적 구성 파일 예제

아래 예제에서는 게시 후와 일반 작업 중의 매니페스트, 배포 구성 및 사용자 구성 파일 조합을 보여 줍니다. 이러한 예제는 각 파일의 축약된 예제입니다. 여기서는 각 파일에서 사용 가능한 특정 범주에 대한 전체 설명을 제공하지는 않으며 파일 조합만을 보여 줍니다. 자세한 내용은 다음의 App-V 5 시퀀싱 가이드를 참조하세요. https://go.microsoft.com/fwlink/?LinkID=269810

매니페스트

<appv:Extension Category="AppV.Shortcut">
     <appv:Shortcut>
          <appv:File>[{Common Programs}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot}]\7zFM exe.O.ico</appv:Icon>
     </appv:Shortcut>
</appv:Extension>

배포 구성

<MachineConfiguration>
     <Subsystems>
          <Registry>
               <Include>
                    <Key Path= "\REGISTRY\Machine\Software\7zip">
                    <Value Type="REG_SZ" Name="Config" Data="1234"/>
                    </Key>
               </Include>
          </Registry>
     </Subsystems>

사용자 구성

<UserConfiguration>
     <Subsystems>
<appv:ExtensionCategory="AppV.Shortcut">
     <appv:Shortcut>
          <appv:File>[{Desktop}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot}]\7zFM exe.O.ico</appv:Icon>
     </appv:Shortcut>
</appv:Extension>
     </Subsystems>
<UserConfiguration>
     <Subsystems>
<appv:Extension Category="AppV.Shortcut">
     <appv:Shortcut>
          <appv:Fìle>[{Desktop}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:lcon>[{AppVPackageRoot}]\7zFM.exe.O.ico</appv:Icon>
     </appv:Shortcut>
     <appv:Shortcut>
          <appv:File>[{Common Programs}]\7-Zip\7-Zip File Manager.Ink</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:lcon>[{AppVPackageRoot)]\7zFM.exe.O.ico</appv: Icon>
     </appv:Shortcut>
</appv:Extension>
     </Subsystems>
<MachineConfiguration>
     <Subsystems>
          <Registry>
               <Include>
                    <Key Path="\REGISTRY\Machine\Software\7zip">
                    <Value Type=”REG_SZ" Name="Config" Data="1234"/>
               </Include>
          </Registry>
     </Subsystems>

Side by Side 어셈블리

App-V는 가상 응용 프로그램 게시 중에 클라이언트에서 시퀀싱 및 배포를 수행하는 동안 SxS(Side by Side) 어셈블리의 자동 패키징을 지원합니다. App-V 5 SP2에서는 시퀀싱 컴퓨터에 없는 어셈블리에 대해 시퀀싱 중에 SxS 어셈블리를 캡처할 수 있습니다. 또한 Visual C++(버전 8 이상) 및/또는 MSXML 런타임으로 구성된 어셈블리의 경우 Sequencer는 모니터링 중에 이러한 종속성이 설치되지 않았더라도 해당 종속성을 자동으로 검색 및 캡처합니다. Side by Side 어셈블리 기능을 사용하면 이전 App-V 버전의 제한이 적용되지 않습니다. 이전 버전에서는 App-V Sequencer가 시퀀싱 워크스테이션에 이미 있는 어셈블리를 캡처하지 않았으며, 어셈블리가 개인화되어 패키지당 1비트 버전으로 제한되었습니다. 이 동작으로 인해 클라이언트로 배포된 App-V 응용 프로그램에서 필요한 SxS 어셈블리가 누락되어 응용 프로그램 시작 오류가 발생했습니다. 이로 인해 패키징 프로세스에서 가상 응용 프로그램을 지원하기 위해 패키지에 필요한 모든 어셈블리가 사용자의 클라이언트 운영 체제에 로컬로 설치되었는지를 문서화한 다음 확인해야 했습니다. 어셈블리의 수가 많고 필요한 종속성에 대한 응용 프로그램 문서가 없는 경우 이 작업은 관리 및 구현상 수행하기가 어려웠습니다.

App-V의 Side by Side 어셈블리 지원에서는 다음과 같은 기능이 제공됩니다.

  • 어셈블리가 시퀀싱 워크스테이션에 이미 설치되었는지 여부에 관계없이 시퀀싱 중에 SxS 어셈블리를 자동으로 캡처합니다.

  • App-V 클라이언트는 게시할 때 필요한 SxS 어셈블리가 없으면 클라이언트 컴퓨터에 해당 어셈블리를 자동으로 설치합니다.

  • Sequencer는 Sequencer 보고 메커니즘에서 VC 런타임 종속성을 보고합니다.

  • Sequencer에서는 Sequencer에 이미 설치된 어셈블리를 패키지하지 않도록 설정할 수 있으므로, 이전에 어셈블리를 대상 컴퓨터에 설치한 시나리오가 지원됩니다.

SxS 어셈블리 자동 게시

SxS 어셈블리를 사용하여 App-V 패키지를 게시하는 동안 App-V 클라이언트는 컴퓨터에 어셈블리가 있는지를 확인합니다. 어셈블리가 없으면 클라이언트는 컴퓨터에 어셈블리를 배포합니다. 연결 그룹은 어셈블리 설치에 대한 정보를 포함하지 않으므로, 연결 그룹에 포함된 패키지는 기본 패키지의 일부분인 Side by Side 어셈블리 설치를 사용합니다.

참고

어셈블리가 포함된 패키지를 게시 취소하거나 제거해도 해당 패키지의 어셈블리는 제거되지 않습니다.

클라이언트 로깅

App-V 클라이언트는 표준 ETW 형식으로 Windows 이벤트 로그에 정보를 기록합니다. 특정 App-V 이벤트는 이벤트 뷰어의 Applications and Services Logs\Microsoft\AppV\Client에서 확인할 수 있습니다.

참고

App-V 5.0 SP3에서는 일부 로그가 통합되어 다음 위치로 이동되었습니다.

Event logs/Applications and Services Logs/Microsoft/AppV/ServiceLog

이동된 로그의 목록은 App-V event logs have been consolidated을 참조하세요.

아래에서는 기록되는 세 가지 특정 이벤트 범주에 대해 설명합니다.

관리: App-V 클라이언트에 적용되는 구성에 대한 이벤트를 기록하며, 기본적인 경고 및 오류를 포함합니다.

운영: App-V 클라이언트에서 완료된 App-V 작업의 감사 로그를 만드는 개별 구성 요소의 사용과 일반 App-V 실행을 기록합니다.

가상 응용 프로그램: 가상 응용 프로그램 시작 및 가상화 하위 시스템 사용을 기록합니다.

App-V에 대한 제안 사항이 있으신가요?

여기에서 제안 사항을 추가하거나 투표해 보세요. App-V 문제가 있는 경우 App-V TechNet 포럼을 사용하세요.

-----
TechNet 라이브러리에서 MDOP에 대해 자세히 알아보거나 TechNet 위키에서 문제 해결을 검색하거나 Facebook 또는 Twitter에서 Microsoft를 팔로우할 수 있습니다.
-----