단일 패키지 작성 예제

샘플 PUASample.msi는 Windows Server 2008 R2 및 Windows 7에 사용자 단위 또는 머신 단위로 설치할 수 있는 이중 용도의 Windows Installer 5.0 패키지의 예입니다. 이 샘플 패키지는 단일 패키지 작성에 설명된 개발 지침을 따릅니다.

샘플 복사본 가져오기

이 샘플의 복사본과 Windows Installer 데이터베이스 테이블 편집기(Orca.exe)는 Windows Installer 개발자를 위한 Windows SDK 구성 요소에 있습니다. 샘플 및 테이블 편집기는 Windows Server 2008 R2 및 Windows 7용 Windows 소프트웨어 개발 키트와 함께 Windows Installer 설치 파일 PUASample1.msi 및 Orca.msi로 제공됩니다.

시스템 요구 사항

데이터베이스 편집기인 Orca.exe에는 Windows Server 2008 R2 이하 및 Windows 7 이하가 필요합니다. 이중 용도 패키지인 PUASample1.msi는 Windows Server 2008 R2 및 Windows 7에 머신 단위 또는 사용자 단위로 설치할 수 있습니다. PUASample1.msi는 Windows Server 2008 이하 및 Windows Vista 이하에 머신 단위로만 설치할 수 있습니다. 샘플을 설치하지 않고 데이터베이스 편집기를 설치하여 PUASample1.msi의 내용을 검사할 수 있습니다. 샘플 또는 편집기 패키지를 설치하려면 DisableMSI 정책이 애플리케이션 설치를 차단하는 값으로 설정되면 안 됩니다.

이중 용도 패키지 식별

이중 용도 패키지는 MSIINSTALLPERUSER 속성 값을 1로 초기화해야 합니다. 이렇게 하면 패키지가 Windows Server 2008 R2 및 Windows 7에 머신 단위 또는 사용자 단위로 설치할 수 있는 것으로 식별됩니다. 단일 패키지 작성에 설명된 개발 지침에 따라 작성되었으며 사용자에게 사용자 단위 또는 머신 단위로 패키지를 설치하는 옵션을 제공하려는 경우에만 패키지에서 MSIINSTALLPERUSER 속성을 설정하세요. 또한 이중 용도 패키지는 ALLUSERS 속성 값을 2로 초기화해야 합니다. 이렇게 하면 애플리케이션의 기본 설치 컨텍스트가 사용자 단위로 지정됩니다. ALLUSERS 속성 값이 2가 아닌 다른 값이면 Windows Installer는 MSIINSTALLPERUSER 속성을 무시합니다.

Orca.exe와 같은 Windows Installer 데이터베이스 편집기를 사용하여 PUASample1.msi의 내용을 검사하세요. 샘플 패키지의 Property 테이블에는 다음 두 항목이 포함되어 있습니다.

Property 테이블(부분)

속성
ALLUSERS 2
MSIINSTALLPERUSER 1

 

설치 컨텍스트에 대한 사용자 지정 대화 상자

샘플 패키지의 사용자 인터페이스에는 사용자가 설치 시에 사용자 단위 또는 머신 단위 설치 컨텍스트를 선택할 수 있는 사용자 지정 대화 상자인 VerifyReadyDialog의 예제가 포함되어 있습니다. Dialog 테이블에는 VerifyReadyDialog 대화 상자를 설명하는 레코드가 포함되어 있습니다. 특성 필드에 입력된 값은 39입니다. 이 대화 상자는 msidbDialogAttributesVisible (1), msidbDialogAttributesModal (2), msidbDialogAttributesMinimize (4) 및 msidbDialogAttributesTrackDiskSpace (32) 대화 스타일 비트를 사용하기 때문입니다. 대화 상자의 제목 표시줄에는 ProductName 속성 값에서 제공한 제목이 표시됩니다.

Dialog 테이블(부분)

대화 상자 HCentering VCentering 너비 높이 특성 제목 Control_First Control_Default Control_Cancel
VerifyReadyDialog 50 50 480 280 39 [ProductName] InstallPerUser 다음 취소

 

Control 테이블에는 VerifyReadyDialog 대화 상자에 표시되는 컨트롤에 대한 항목이 포함됩니다. 대화 상자에는 PushButton 컨트롤과 Text 컨트롤이 표시됩니다. 모든 컨트롤은 msidbControlAttributesEnabled (2) 및 msidbControlAttributesVisible (1) 컨트롤 특성을 사용합니다. InstallPerMachine 컨트롤은 ElevationShield 컨트롤 특성인 msidbControlAttributesElevationShield(8388608)도 사용합니다. 이 컨트롤 특성은 InstallPerMachine 컨트롤에 UAC(사용자 계정 컨트롤) 권한 상승 아이콘(방패 아이콘)을 추가하며, 머신 단위로 애플리케이션을 설치하려면 UAC 자격 증명이 필요하다는 것을 사용자에게 알립니다. Control 테이블의 텍스트 필드에 있는 값은 컨트롤에 의해 표시되는 텍스트 스타일 및 텍스트입니다. 미리 정의된 스타일을 사용하여 컨트롤에 텍스트를 추가하는 방법에 대한 자세한 내용은 Control 테이블 토픽의 텍스트 필드에 대한 설명을 참조하세요.

Control 테이블(부분)

Dialog_ 컨트롤 Type attribute 텍스트 Control_Next
VerifyReadyDialog 취소 PushButton 3 {\Tahoma10}&Cancel 다음
VerifyReadyDialog 이전 PushButton 3 {\Tahoma10}<<이전(&P) 취소
VerifyReadyDialog 다음 PushButton 3 {\Tahoma10}&다음 >> InstallPerUser
VerifyReadyDialog Text2 텍스트 3 일시 중지된 설치를 완료할 준비가 되었나요?
VerifyReadyDialog InstallPerUser PushButton 3 {\Tahoma10} 설치 전용 (&I) InstallPerMachine
VerifyReadyDialog InstallPerMachine PushButton 8388611 {\Tahoma10} 모든 사용자용 설치 이전
VerifyReadyDialog 취소 PushButton 3 {\Tahoma10}&Cancel 다음

 

ControlEvent 테이블은 사용자가 컨트롤과 상호 작용할 때 설치 관리자가 수행하는 ControlEvents 또는 작업을 지정합니다. 사용자가 InstallPerUser 푸시버튼을 활성화하면 OutOfDiskSpace 속성이 1인 경우 사용자 인터페이스가 OutOfDisk 대화 상자를 표시하고, , MSIINSTALLPERUSER 속성 값을 1로 설정하고, ALLUSERS 속성 값을 2로 설정하고, MSIFASTINSTALL 속성을 1로 설정한 다음, 반환합니다. MSIFASTINSTALL 속성이 설정되었으므로 설치를 위한 시스템 복원 지점이 생성되지 않습니다. 사용자가 InstallPerMachine 푸시버튼을 활성화하면 OutOfDiskSpace 속성이 1인 경우 사용자 인터페이스가 OutOfDisk 대화 상자를 표시하고, ALLUSERS 속성 값을 1로 설정한 다음, 반환합니다.

ControlEvent 테이블(부분)

Dialog_ Control_ 이벤트 인수 조건 주문
VerifyReadyDialog InstallPerUser SpawnDialog OutOfDisk OutOfDiskSpace = 1 1
VerifyReadyDialog InstallPerUser EndDialog 반환 값 OutOfDiskSpace <> 1 5
VerifyReadyDialog InstallPerUser [MSIINSTALLPERUSER] 1 6 2
VerifyReadyDialog InstallPerUser [ALLUSERS] 2 1 3
VerifyReadyDialog InstallPerMachine SpawnDialog OutOfDisk OutOfDiskSpace = 1 1
VerifyReadyDialog InstallPerMachine EndDialog 반환 값 OutOfDiskSpace <> 1 3
VerifyReadyDialog InstallPerMachine [ALLUSERS] 1 6 2
VerifyReadyDialog InstallPerUser [MSIFASTINSTALL] 1 1 4

 

InstallPerUser 컨트롤은 Windows Installer Windows Installer 5.0 이전 버전의 Windows Installer를 사용하여 모든 설치의 사용자 인터페이스에서 제거되어야 합니다. 샘플 패키지의 ControlCondition 테이블에는 현재 버전이 Windows Installer 5.0보다 낮은 경우 InstallPerUser 컨트롤을 사용하지 않도록 설정하고 숨기는 4개 항목이 포함되어 있습니다. 이 테이블은 VersionMsi 속성 값과 조건문 구문을 사용하여 이 조건을 정의합니다. 작업 필드에 지정된 작업은 조건 필드의 문이 true인 경우에만 수행됩니다.

ControlCondition 테이블(부분)

Dialog_ Control_ 작업 조건
VerifyReadyDialog InstallPerUser 사용 VersionMsi >= "5.00"
VerifyReadyDialog InstallPerUser 사용 중지 VersionMsi < "5.00"
VerifyReadyDialog InstallPerUser 표시 VersionMsi >= "5.00"
VerifyReadyDialog InstallPerUser 숨기기 VersionMsi < "5.00"

 

디렉터리 구조 지정

데이터베이스 편집기를 사용하여 PUASample1.msi의 Directory 테이블을 검사합니다. Directory_Parent 필드에 빈 문자열이 있는 Directory 테이블의 레코드는 원본 및 대상 디렉터리 트리의 루트 디렉터리를 나타냅니다. TARGETDIR 속성이 정의되지 않으면 설치 관리자는 설치 시 이 값을 ROOTDRIVE 속성 값으로 설정합니다. SourceDir 속성이 정의되지 않으면 설치 관리자는 이 값을 Windows Installer 패키지(.msi 파일)가 포함된 디렉터리의 위치로 설정합니다. 디렉터리 이름은 short|long 형식을 사용하여 지정됩니다.

Directory 테이블(부분)

디렉터리 Directory_Parent DefaultDir
TARGETDIR SourceDir
ProgramFilesFolder TARGETDIR .
ProgramMenuFolder TARGETDIR .
INSTALLLOCATION MyVendor Sample1|MSDN-PUASample1
MyVendor ProgramFilesFolder Msft|Microsoft

 

원본에서 이 Directory 테이블은 다음 디렉터리 경로로 확인됩니다.

\[SourceDir\]\\Msft\\Sample1 \[SourceDir\]

대상에서 Directory 테이블은 다음 표의 경로로 확인됩니다. 설치 관리자는 ProgramFilesFolderProgramMenuFolder 속성의 값을 설치 컨텍스트와 시스템이 Windows Server 2008 R2 및 Windows 7의 32비트 또는 64비트 버전인지 여부에 따라 달라지는 위치로 설정합니다. 대상 폴더의 경로는 사용자가 사용자 단위 또는 머신 단위 설치 중 무엇을 선택하는지에 따라 달라집니다.

설치 컨텍스트 시스템 경로 예시
머신 단위 Windows Server 2008 R2 및 Windows 7
32비트 버전
%ProgramFiles%\Msft\Sample1
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
머신 단위 Windows Server 2008 R2 및 Windows 7
64비트 버전
%ProgramFiles(x86)%\Msft\Sample1
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
사용자 단위 Windows Server 2008 R2 및 Windows 7
32비트 또는 64비트 버전
%USERPROFILE%\AppData\Local\Programs\Msft\Sample1
%APPDATA%\Microsoft\Windows\Start Menu\Programs

 

사용자 단위 애플리케이션은 ProgramFilesFolder 속성 값으로 지정된 Programs 폴더 아래의 하위 폴더에 저장해야 합니다. 일반적으로 애플리케이션의 경로는 다음과 같은 형식입니다.

%LOCALAPPDATA%\Programs\ISV 이름\AppName.

사용자 단위 구성 데이터는 ProgramMenuFolder 속성 값으로 지정된 Programs 폴더에 저장해야 합니다. 일반적으로 이 폴더는 다음 경로에 있습니다.

%APPDATA%\Microsoft\Windows\Start Menu\Programs

32비트 Windows Installer 패키지 구성 요소를 설치하는 경우 Directory 테이블의 ProgramFilesFolderCommonFilesFolder 속성을 사용합니다. 64비트 Windows Installer 패키지 구성 요소를 설치하는 경우 ProgramFiles64FolderCommonFiles64Folder 속성을 사용합니다. 애플리케이션에 이름이 같은 32비트 및 64비트 버전의 동일한 구성 요소가 포함된 경우 이러한 버전을 다른 디렉터리에 저장하거나 다른 이름을 지정해야 합니다.

다음 Directory 테이블은 32비트 및 64비트 구성 요소를 포함하고 애플리케이션 간에 공유되는 일부 구성 요소를 포함하는 패키지와 호환되는 디렉터리 레이아웃 예제를 제공합니다.

디렉터리 Directory_Parent DefaultDir
TARGETDIR SourceDir
ProgramFilesFolder TARGETDIR .:Prog32
ProgramFiles64Folder TARGETDIR .:Prog64
CommonFilesFolder TARGETDIR .:Share32
CommonFiles64Folder TARGETDIR .:Share64
ProgramMenuFolder TARGETDIR .:Sample1|MSDN-PUASample1
INSTALLLOCATION MyVendor Sample1|MSDN-PUASample1
INSTALLLOCATIONX64 Vendorx64 Sample1|MSDN-PUASample1
SHAREDLOCATION ShVendor Sample1|MSDN-PUASample1
SHAREDLOCATIONX64 ShVendorx64 Sample1|MSDN-PUASample1
MyVendor ProgramFilesFolder Msft|Microsoft
Vendorx64 ProgramFiles64Folder Msft|Microsoft
ShVendor CommonFilesFolder Msft|Microsoft
ShVendorx64 CommonFiles64Folder Msft|Microsoft
Shrx86 SHAREDLOCATION x32|32비트 구성 요소
Shrx64 SHAREDLOCATIONX64 x64|64비트 구성 요소
Binx86 INSTALLLOCATION x32|32비트 구성 요소
Binx64 INSTALLLOCATIONX64 x64|64비트 구성 요소
App32 Binx86 myapp|unshared 32비트 구성 요소
App64 Binx64 myapp|unshared 64비트 구성 요소
Share32 Shrx86 shared|shared 32비트 구성 요소
Share64 Shrx64 shared|shared 64비트 구성 요소

 

원본에서 이 Directory 테이블은 다음 디렉터리 경로로 확인됩니다.

\[SourceDir\]Prog32\\Msft\\Sample1\\x32\\myapp \[SourceDir\]Share32\\Common Files\\Msft\\Sample1\\x32\\shared \[SourceDir \]Prog64\\Msft\\Sample1\\x64\\myapp \[SourceDir\]Share64\\Common Files\\Msft\\Sample1\\x64\\shared \[SourceDir\]Sample1

대상에서 이 Directory 테이블은 다음 디렉터리 경로로 확인됩니다. 대상 경로는 설치 컨텍스트 및 시스템에 따라 달라집니다.

설치 컨텍스트 시스템 경로 예시
머신 단위 Windows Server 2008 R2 및 Windows 7
32비트 버전
%ProgramFiles%\Msft\Sample1\x32\myapp
%ProgramFiles%\Common Files\Msft\Sample1\x32\shared
%ProgramFiles(x86)%\Msft\Sample1\x64\myapp
%ProgramFiles(x86)%\Common Files\Msft\Sample1\x64\shared
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Sample1
머신 단위 Windows Server 2008 R2 및 Windows 7
64비트 버전
%ProgramFiles(x86)%\Msft\Sample1\x32\myapp
%ProgramFiles(x86)%\Common Files\Msft\Sample1\x32\shared
%ProgramFiles%\Msft\Sample1\x64\myapp
%ProgramFiles%\Common Files\Msft\Sample1\x64\shared
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Sample1
사용자 단위 Windows Server 2008 R2 및 Windows 7
32비트 또는 64비트 버전
%LOCALAPPDATA%\Programs\Msft\Sample1\x32\myapp
%LOCALAPPDATA%\Programs\Common\Msft\Sample1\x32\shared
%LOCALAPPDATA%\Programs\Msft\Sample1\x64\myapp
%LOCALAPPDATA%\Programs\Common\Msft\Sample1\x64\shared
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Sample1

 

애플리케이션 등록

PUASample.msi는 애플리케이션의 App Paths 레지스트리 키에 하위 키를 추가하고, 이 키 아래의 레지스트리에 애플리케이션 정보를 저장할 수 있도록 등록을 수행합니다. App Paths 및 애플리케이션 등록에 대한 자세한 내용은 셸 개발자 가이드셸 확장성 섹션에서 PerceivedTypes, SystemFileAssociations 및 애플리케이션 등록을 참조하세요. 설치 시 사용자는 애플리케이션 설치 컨텍스트를 사용자 단위 또는 머신 단위 중에 선택합니다. 이중 용도 패키지를 제작할 때, 패키지 개발자는 HKEY_LOCAL_MACHINE 키에서 등록해야 하는지 아니면 HKEY_CURRENT_USER 키에서 등록해야 하는지 알 수 없습니다.

패키지 개발자는 File 테이블의 파일 필드에서 애플리케이션의 실행 파일에 대한 파일 식별자를 정의합니다.

File 테이블(부분)

파일 Component_ FileName FileSize 버전 언어 특성 시퀀스
MyAppFile ProductComponent PUASAMP1.EXE|PUASample1.exe 81920 0 1

 

레지스트리에 저장할 값은 Registry 테이블의 값 필드에 Formatted 문자열로 지정할 수 있습니다. File 테이블의 파일 필드에 정의된 파일 식별자와 Formatted 형식의 [#filekey] 규칙을 사용하여 App Paths 레지스트리 키의 기본값을 지정합니다. 최상위 INSTALL 작업은 InstallExecuteSequence 테이블의 작업을 수행합니다. 이 테이블의 CostInitialize, FileCostInstallFinalize 작업이 완료되면 Windows Installer는 Registry 테이블의 서식 있는 부분 문자열 [#MyAppFile]을 애플리케이션 파일의 전체 경로로 바꿉니다.

샘플에서는 루트 키의 위치를 포함하도록 사용자 지정 속성 RegRoot를 정의하고, 사용자가 머신 단위 설치를 선택하면 사용자 지정 작업을 사용하여 속성 값을 초기화합니다. 루트 위치를 참조하는 서식 있는 문자열 값에 사용자 지정 속성 RegRoot를 사용합니다. Property 테이블에서 PUASample.msi 패키지는 사용자 지정 속성을 정의하고 RegRoot 값을 HKCU로 설정합니다. 이렇게 하면 이중 용도 패키지에 권장되는 기본 컨텍스트인 사용자 단위 설치 컨텍스트의 속성 값이 초기화됩니다.

Property 테이블(부분)

속성
RegRoot HKCU

 

CustomAction 테이블에서 패키지는 Set_RegRoot_HKLM이라는 사용자 지정 작업을 정의합니다. 형식 필드의 값은 이 작업을 사용자 지정 작업 유형 51 표준 사용자 지정 작업으로 식별합니다. CustomAction 테이블에 있는 원본 및 대상 필드의 의미는 사용자 지정 작업 유형에 따라 달라집니다. 표준 유형의 사용자 지정 작업에 대한 자세한 내용은 사용자 지정 작업 유형을 참조하세요. Set_RegRoot_HKLM 사용자 지정 작업의 소스 필드는 RegRoot 속성 값을 지정합니다. 설치 관리자가 Set_RegRoot_HKLM 사용자 지정 작업을 수행하면 RegRoot 속성 값이 HKLM로 초기화됩니다.

CustomAction 테이블(부분)

작업 형식 원본 대상
Set_RegRoot_HKLM 51 [RegRoot] HKLM

 

최상위 INSTALL 작업은 InstallExecuteSequence 테이블의 작업을 해당 테이블의 시퀀스 필드에 지정된 순서대로 수행합니다. Set_RegRoot_HKLM 사용자 지정 작업(1501)의 시퀀스 필드에 작성된 값은 InstallInitialize 작업(1500) 후와 ProcessComponents 작업(1600) 전에 이 사용자 지정 작업을 수행하도록 지정합니다. 이 시퀀스를 사용하면 Set_RegRoot_HKLM 사용자 지정 작업의 레코드가 설치 시 평가됩니다. InstallExecuteSequence 테이블에서 권장하는 작업 시퀀스에 대한 자세한 내용은 Suggested InstallExecuteSequence 토픽을 참조하세요. 조건 필드에 작성된 조건문 구문은 설치 시 ALLUSERS 속성 값이 1로 평가되는 경우에만 Set_RegRoot_HKLM 작업을 수행하도록 지정합니다. ALLUSERS 속성 값 1은 머신 단위 설치를 지정합니다.

InstallExecuteSequence 테이블(부분)

작업 조건 시퀀스
Set_RegRoot_HKLM ALLUSERS=1 1501

 

ProductComponent 구성 요소가 설치된 경우 Registry 테이블의 다음 레코드는 등록을 수행합니다. 머신 단위 설치를 위한 HKEY_LOCAL_MACHINE 아래와 사용자 단위 설치를 위한 HKEY_CURRENT_USER 아래에서 등록을 수행하려면 루트 필드의 값이 -1이어야 합니다. 레지스트리 필드의 문자열이 비어 있는 레코드는 AppPaths 레지스트리 키 아래에 애플리케이션의 하위 키를 추가하고 "(Default)" 값을 애플리케이션 실행 파일의 전체 경로로 설정합니다. MyAppPathAlias를 등록하면 실행 파일이 애플리케이션 별칭에 매핑되고, 사용자가 명령줄 프롬프트에서 별칭 "puapct"를 입력하면 애플리케이션을 시작할 수 있습니다. MyAppPathRegistration을 등록하면 실행 파일의 이름이 파일의 전체 경로에 매핑됩니다.

레지스트리 Root 이름 구성 요소
-1 Software\Microsoft\MyAppPathRegistrationLocation [RegRoot]\Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe ProductComponent
MyAppPathAlias -1 Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe [#MyAppFile] ProductComponent
MyAppPathRegistration -1 Software\Microsoft\Windows\CurrentVersion\App Paths\PUASample1.exe [#MyAppFile] ProductComponent

 

자동 실행 등록 취소

PUASample.msi은 애플리케이션 사용자가 선택한 디바이스에 대해 하드웨어 자동 실행이 시작되지 않도록 설정할 수 있는 등록을 수행합니다. 이벤트에 대한 응답으로 자동 실행을 취소하는 처리기를 등록하는 방법에 대한 자세한 내용은 셸 개발자 가이드셸 확장성 섹션에서 자동 실행에서 사용할 하드웨어 및 소프트웨어 준비 토픽을 참조하세요. 다음 레코드는 ProductComponent 구성 요소가 설치될 때 이름 필드에 지정된 처리기를 등록합니다. 설치 컨텍스트에 따라 달라지는 위치로 등록을 리디렉션하도록 Windows Installer를 지정하려면 루트 필드의 값이 -1이어야 합니다.

Registry 테이블

레지스트리 Root 이름 구성 요소
MyAutoplayCancelRegistration -1 SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID 66A32FE6-229D-427b-A608-D273F40C034C ProductComponent

 

미리 보기 처리기 등록

PUASample.msi는 애플리케이션을 시작하지 않고 .pua 파일의 읽기 전용 미리 보기를 사용할 수 있는 미리 보기 처리기를 설치하는 데 필요한 등록을 수행합니다. 미리 보기 처리기를 등록하는 방법에 대한 자세한 내용은 셸 개발자 가이드셸 확장성 섹션에서 미리 보기 처리기 등록 토픽을 참조하세요. ProductComponent 구성 요소가 설치된 경우 Registry 테이블의 다음 레코드는 처리기를 등록합니다. 설치 컨텍스트에 따라 달라지는 위치로 등록을 리디렉션하도록 Windows Installer를 지정하려면 루트 필드의 값이 -1이어야 합니다.

Registry 테이블

레지스트리 Root 이름 구성 요소
MyPreviewHandlerRegistration1 -1 Software\Classes\.pua puafile ProductComponent
MyPreviewHandlerRegistration2 -1 Software\Microsoft\Windows\CurrentVersion\PreviewHandlers {1531d583-8375-4d3f-b5fb-d23bbd169f22} Microsoft Windows PUA TEST 미리 보기 처리기 ProductComponent
MyPreviewHandlerRegistration3 -1 Software\Classes\puafile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f} {1531d583-8375-4d3f-b5fb-d23bbd169f22} ProductComponent
MyPreviewHandlerRegistration4 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} 사용자 단위 애플리케이션 샘플 1 미리 보기 처리기 ProductComponent
MyPreviewHandlerRegistration5 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} AppID {6d2b5079-2f0b-48dd-ab7f-97cec514d30b} ProductComponent
MyPreviewHandlerRegistration6 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} DisplayName @shell32,-38242 ProductComponent
MyPreviewHandlerRegistration7 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} 아이콘 notepad.exe,2 ProductComponent
MyPreviewHandlerRegistration8 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 ThreadingModel Apartment ProductComponent
MyPreviewHandlerRegistration9 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 #%%SystemRoot%\system32\shell32.dll ProductComponent
MyPreviewHandlerRegistration10 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 ProgID puafile ProductComponent