Bagikan melalui


Contoh Penulisan Paket Tunggal

Sampel PUASample.msi adalah contoh paket Windows Installer 5.0 tujuan ganda yang mampu diinstal dalam konteks penginstalan per pengguna atau per mesin pada Windows Server 2008 R2 dan Windows 7. Paket sampel ini mengikuti panduan pengembangan yang dijelaskan dalam Penulisan Paket Tunggal.

Mendapatkan salinan sampel

Salinan sampel ini dan editor tabel database Penginstal Windows, Orca.exe, ada di Komponen Windows SDK untuk Pengembang Penginstal Windows. Editor sampel dan tabel disediakan dengan Windows Software Development Kit untuk Windows Server 2008 R2 dan Windows 7 sebagai file penginstalan Windows Installer PUASample1.msi dan Orca.msi.

Persyaratan Sistem

Editor database, Orca.exe, memerlukan Windows Server 2008 R2 dan yang lebih lama dan Windows 7 dan yang lebih lama. Paket tujuan ganda, PUASample1.msi, dapat diinstal dalam konteks penginstalan per mesin atau per pengguna pada Windows Server 2008 R2 dan Windows 7. PUASample1.msi hanya dapat diinstal dalam konteks per komputer pada Windows Server 2008 dan yang lebih lama dan Windows Vista dan yang lebih lama. Anda dapat menginstal editor database untuk memeriksa konten PUASample1.msi tanpa menginstal sampel. Untuk menginstal paket sampel atau editor, pastikan bahwa kebijakan DisableMSI tidak diatur ke nilai yang memblokir penginstalan aplikasi.

Mengidentifikasi Paket Tujuan Ganda

Paket tujuan ganda harus menginisialisasi nilai properti MSIINSTALLPERUSER ke 1. Ini mengidentifikasi paket sebagai mampu diinstal dalam konteks per mesin atau per pengguna pada Windows Server 2008 R2 dan Windows 7. Atur properti MSIINSTALLPERUSER dalam paket hanya jika telah ditulis mengikuti panduan pengembangan yang dijelaskan dalam Penulisan Paket Tunggal dan jika Anda ingin memberi pengguna opsi untuk menginstal paket dalam konteks per pengguna atau per mesin. Paket tujuan ganda juga harus menginisialisasi nilai properti ALLUSERS menjadi 2. Ini menentukan per pengguna sebagai konteks penginstalan default untuk aplikasi. Jika nilai properti ALLUSERS adalah nilai apa pun selain 2, Penginstal Windows mengabaikan properti MSIINSTALLPERUSER .

Gunakan editor database Penginstal Windows, seperti Orca.exe, untuk memeriksa konten PUASample1.msi. Tabel Properti dalam paket sampel berisi dua entri berikut.

Tabel Properti (parsial)

Properti Nilai
ALLUSERS 2
MSIINSTALLPERUSER 1

 

Kotak Dialog Kustom untuk Konteks Penginstalan

Antarmuka pengguna paket sampel menyertakan contoh kotak dialog kustom, VerifyReadyDialog, yang memungkinkan pengguna untuk memilih konteks penginstalan per pengguna atau per mesin pada waktu penginstalan. Tabel Dialog berisi rekaman yang menjelaskan kotak dialog VerifyReadyDialog. Nilai yang dimasukkan di bidang Atribut adalah 39 karena kotak dialog ini menggunakan msidbDialogAttributesVisible (1), msidbDialogAttributesModal (2), msidbDialogAttributesMinimize (4), dan msidbDialogAttributesTrackDiskSpace (32) bit gaya dialog. Bilah judul kotak dialog menampilkan judul yang diberikan oleh nilai properti ProductName .

Tabel Dialog (parsial)

Dialog HCentering VCentering Width Height Atribut Judul Control_First Control_Default Control_Cancel
VerifyReadyDialog 50 50 480 280 39 [ProductName] InstallPerUser Berikutnya Batalkan

 

Tabel Kontrol berisi entri untuk kontrol yang ditampilkan oleh kotak dialog VerifyReadyDialog. Kotak dialog menampilkan kontrol PushButton dan kontrol Teks . Semua kontrol menggunakan atribut kontrol msidbControlAttributesEnabled (2) dan msidbControlAttributesVisible (1). Kontrol InstallPerMachine juga menggunakan atribut kontrol ElevationShield, msidbControlAttributesElevationShield (8388608.) Atribut kontrol ini menambahkan ikon elevasi Kontrol Akun Pengguna (ikon perisai) ke kontrol InstallPerMachine dan memberi tahu pengguna bahwa kredensial UAC diperlukan untuk menginstal aplikasi dalam konteks per komputer. Nilai di bidang Teks tabel Kontrol adalah gaya teks dan teks yang ditampilkan oleh kontrol. Lihat deskripsi bidang Teks dalam topik tabel Kontrol untuk informasi selengkapnya tentang menambahkan teks ke kontrol menggunakan gaya yang telah ditentukan sebelumnya.

Tabel Kontrol (parsial)

Dialog_ Menguasai Jenis Atribut Teks Control_Next
VerifyReadyDialog Batalkan Tombol Dorong 3 {\Tahoma10}&Batal Berikutnya
VerifyReadyDialog Sebelumnya Tombol Dorong 3 {\Tahoma10}<<&Sebelumnya Batalkan
VerifyReadyDialog Berikutnya Tombol Dorong 3 {\Tahoma10}&Next >> InstallPerUser
VerifyReadyDialog Text2 Teks 3 Apakah Anda siap untuk menyelesaikan penginstalan yang ditangguhkan?
VerifyReadyDialog InstallPerUser Tombol Dorong 3 {\Tahoma10} Instal Hanya untuk &Saya InstallPerMachine
VerifyReadyDialog InstallPerMachine Tombol Dorong 8388611 {\Tahoma10} Instal untuk &Semua Orang Sebelumnya
VerifyReadyDialog Batalkan Tombol Dorong 3 {\Tahoma10}&Batal Berikutnya

 

Tabel ControlEvent menentukan ControlEvents, atau tindakan, penginstal dilakukan saat pengguna berinteraksi dengan kontrol. Saat pengguna mengaktifkan tombol push InstallPerUser, antarmuka pengguna menampilkan kotak dialog OutOfDisk jika properti OutOfDiskSpace adalah 1, mengatur nilai properti MSIINSTALLPERUSER ke 1, mengatur nilai properti ALLUSERS ke 2, mengatur properti MSIFASTINSTALL ke 1, dan mengembalikan . Karena properti MSIFASTINSTALL diatur, tidak ada titik Pemulihan Sistem yang dihasilkan untuk penginstalan. Saat pengguna mengaktifkan tombol push InstallPerMachine, antarmuka pengguna menampilkan kotak dialog OutOfDisk jika properti OutOfDiskSpace adalah 1, mengatur nilai properti ALLUSERS ke 1, dan mengembalikan.

Tabel ControlEvent (parsial)

Dialog_ Kontrol_ Aktivitas Argumen Kondisi Pesanan
VerifyReadyDialog InstallPerUser SpawnDialog OutOfDisk OutOfDiskSpace = 1 1
VerifyReadyDialog InstallPerUser EndDialog Tampilkan OutOfDiskSpace <> 1 5
VerifyReadyDialog InstallPerUser [MSIINSTALLPERUSER] 1 1 2
VerifyReadyDialog InstallPerUser [ALLUSERS] 2 1 3
VerifyReadyDialog InstallPerMachine SpawnDialog OutOfDisk OutOfDiskSpace = 1 1
VerifyReadyDialog InstallPerMachine EndDialog Tampilkan OutOfDiskSpace <> 1 3
VerifyReadyDialog InstallPerMachine [ALLUSERS] 1 1 2
VerifyReadyDialog InstallPerUser [MSIFASTINSTALL] 1 1 4

 

Kontrol InstallPerUser harus dihapus dari antarmuka pengguna penginstalan apa pun menggunakan versi Windows Installer yang lebih lama dari Windows Installer Windows Installer 5.0. Tabel ControlCondition dalam paket sampel berisi empat entri yang menonaktifkan dan menyembunyikan kontrol InstallPerUser jika versi saat ini kurang dari Windows Installer 5.0. Tabel menggunakan nilai properti VersionMsi dan sintaks pernyataan kondisi untuk menentukan kondisi ini. Tindakan yang ditentukan di bidang Tindakan dilakukan hanya jika pernyataan di bidang Kondisi benar.

Tabel ControlCondition (parsial)

Dialog_ Kontrol_ Perbuatan Kondisi
VerifyReadyDialog InstallPerUser Aktifkan VersionMsi >= "5.00"
VerifyReadyDialog InstallPerUser Nonaktifkan VersionMsi < "5.00"
VerifyReadyDialog InstallPerUser Tampilkan VersionMsi >= "5.00"
VerifyReadyDialog InstallPerUser Sembunyikan VersionMsi < "5.00"

 

Menentukan Struktur Direktori

Gunakan editor database untuk memeriksa tabel Direktori PUASample1.msi. Rekaman Tabel Direktori yang memiliki string kosong di bidang Directory_Parent mewakili direktori akar pohon direktori sumber dan target. Jika properti TARGETDIR tidak terdefinisi, alat penginstal menetapkan nilainya pada waktu penginstalan ke nilai properti ROOTDRIVE. Jika properti SourceDir tidak terdefinisi, alat penginstal mengatur nilainya ke lokasi direktori yang berisi paket Penginstal Windows (file.msi.) Nama direktori ditentukan menggunakan format pendek|panjang.

Tabel Direktori (parsial)

Direktori Directory_Parent DefaultDir
TARGETDIR SourceDir
ProgramFilesFolder TARGETDIR .
ProgramMenuFolder TARGETDIR .
INSTALLLOCATION MyVendor Sampel1|MSDN-PUASample1
MyVendor ProgramFilesFolder Msft|Microsoft

 

Di sumbernya, tabel Direktori ini diselesaikan ke jalur direktori berikut.

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

Pada target, tabel Direktori diselesaikan ke jalur dalam tabel berikut. Alat penginstal mengatur nilai properti ProgramFilesFolder dan ProgramMenuFolder ke lokasi yang bergantung pada konteks penginstalan dan apakah sistem adalah Windows Server 2008 R2 dan Windows 7 versi 32-bit atau 64-bit. Jalur ke folder target bergantung pada apakah pengguna memilih penginstalan per pengguna atau per komputer.

Konteks Penginstalan Sistem Contoh Jalur
Per-Mesin Windows Server 2008 R2 dan Windows 7
Versi 32-bit
%ProgramFiles%\Msft\Sample1
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
Per-Mesin Windows Server 2008 R2 dan Windows 7
Versi 64-bit
%ProgramFiles(x86)%\Msft\Sample1
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
Per Pengguna Windows Server 2008 R2 dan Windows 7
Versi 32-bit atau 64-bit
%USERPROFILE%\AppData\Local\Programs\Msft\Sample1
%APPDATA%\Microsoft\Windows\Start Menu\Programs

 

Aplikasi per pengguna harus disimpan dalam subfolder di bawah folder Program yang ditentukan oleh nilai properti ProgramFilesFolder. Biasanya, jalur ke aplikasi mengambil formulir berikut.

%LOCALAPPDATA%\Programs\ISV name\AppName.

Data konfigurasi per pengguna harus disimpan di folder Program yang ditentukan oleh nilai properti ProgramMenuFolder. Biasanya, folder ini terletak di jalur berikut.

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

Jika menginstal komponen Paket Penginstal Windows 32-bit, gunakan properti ProgramFilesFolder dan CommonFilesFolder di tabel Direktori. Jika menginstal komponen Paket Penginstal Windows 64-bit, gunakan properti ProgramFiles64Folder dan CommonFiles64Folder. Jika aplikasi Anda berisi versi 32-bit dan 64-bit dari komponen yang sama, dengan nama yang sama, pastikan bahwa versi ini disimpan di direktori yang berbeda atau beri nama yang berbeda.

Tabel Direktori berikut ini menyediakan contoh tata letak direktori yang kompatibel dengan paket yang menyertakan komponen 32-bit dan 64-bit dan mencakup beberapa komponen yang dibagikan di seluruh aplikasi.

Direktori Directory_Parent DefaultDir
TARGETDIR SourceDir
ProgramFilesFolder TARGETDIR .:P rog32
ProgramFiles64Folder TARGETDIR .:P rog64
CommonFilesFolder TARGETDIR .:Share32
CommonFiles64Folder TARGETDIR .:Share64
ProgramMenuFolder TARGETDIR .:Sample1|MSDN-PUASample1
INSTALLLOCATION MyVendor Sampel1|MSDN-PUASample1
INSTALLLOCATIONX64 Vendorx64 Sampel1|MSDN-PUASample1
SHAREDLOCATION ShVendor Sampel1|MSDN-PUASample1
SHAREDLOCATIONX64 ShVendorx64 Sampel1|MSDN-PUASample1
MyVendor ProgramFilesFolder Msft|Microsoft
Vendorx64 ProgramFiles64Folder Msft|Microsoft
ShVendor CommonFilesFolder Msft|Microsoft
ShVendorx64 CommonFiles64Folder Msft|Microsoft
Shrx86 SHAREDLOCATION x32|komponen 32-bit
Shrx64 SHAREDLOCATIONX64 x64|Komponen 64-bit
Binx86 INSTALLLOCATION x32|komponen 32-bit
Binx64 INSTALLLOCATIONX64 x64|Komponen 64-bit
App32 Binx86 myapp|komponen 32-bit yang tidak dibagikan
App64 Binx64 myapp|komponen 64-bit yang tidak dibagikan
Bagikan32 Shrx86 berbagi|komponen 32-bit bersama
Bagi64 Shrx64 berbagi|komponen 64-bit bersama

 

Di sumbernya, tabel Direktori ini diselesaikan ke jalur direktori berikut.

\[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

Pada target, tabel Direktori ini diselesaikan ke jalur direktori berikut. Jalur target bergantung pada konteks dan sistem penginstalan.

Konteks Penginstalan Sistem Contoh Jalur
Per-Mesin Windows Server 2008 R2 dan Windows 7
Versi 32-bit
%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
Per-Mesin Windows Server 2008 R2 dan Windows 7
Versi 64-bit
%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
Per Pengguna Windows Server 2008 R2 dan Windows 7
Versi 32-bit atau 64-bit
%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

 

Pendaftaran Aplikasi

PUASample.msi menambahkan subkunci ke kunci registri Jalur Aplikasi untuk aplikasi dan melakukan pendaftaran yang memungkinkan informasi aplikasi disimpan di registri di bawah kunci ini. Untuk informasi selengkapnya tentang Jalur Aplikasi dan pendaftaran aplikasi, lihat PerceivedTypes, SystemFileAssociations, dan Pendaftaran Aplikasi di bagian ekstensibilitas shell dari Panduan Pengembang Shell. Pada waktu penginstalan, pengguna membuat keputusan untuk menginstal aplikasi dalam konteks penginstalan per pengguna atau per mesin. Pada saat paket tujuan ganda ditulis, pengembang paket tidak dapat mengetahui apakah pendaftaran harus dilakukan di bawah kunci HKEY_LOCAL_MACHINE atau HKEY_CURRENT_USER.

Pengembang paket menentukan pengidentifikasi file untuk file yang dapat dieksekusi aplikasi di bidang File Tabel File .

Tabel File (parsial)

File Komponen_ FileName FileSize Versi Bahasa Atribut Sequence
MyAppFile ProductComponent PUASAMP1.EXE|PUASample1.exe 81920 0 1

 

Nilai yang akan disimpan dalam registri dapat ditentukan di bidang Nilai tabel Registri sebagai string Yang Diformat . Gunakan pengidentifikasi file yang ditentukan di bidang File tabel File , dan konvensi [#filekey] dari jenis Yang Diformat, untuk menentukan nilai default untuk kunci registri Jalur Aplikasi. Tindakan INSTALL tingkat atas melakukan tindakan dalam tabel InstallExecuteSequence. Setelah tindakan CostInitialize, FileCost, dan InstallFinalize dalam tabel ini selesai, Penginstal Windows menggantikan substring yang diformat [#MyAppFile] dalam tabel Registri dengan jalur lengkap ke file aplikasi.

Sampel mendefinisikan properti kustom, RegRoot, untuk berisi lokasi kunci akar dan menggunakan tindakan kustom untuk mengatur ulang nilai properti jika pengguna memilih penginstalan per komputer. Gunakan properti kustom, RegRoot, dalam nilai string berformat apa pun yang mereferensikan lokasi akar. Dalam tabel Properti, paket PUASample.msi menentukan properti kustom dan mengatur nilai RegRoot ke HKCU. Ini menginisialisasi nilai properti untuk konteks penginstalan per pengguna, konteks default yang direkomendasikan untuk paket tujuan ganda.

Tabel Properti (parsial)

Properti Nilai
RegRoot HKCU

 

Dalam tabel CustomAction, paket menentukan tindakan kustom bernama Set_RegRoot_HKLM. Nilai di bidang Jenis mengidentifikasi ini sebagai tindakan kustom standar Tipe Tindakan Kustom 51 . Arti bidang Sumber dan Target dalam tabel CustomAction bergantung pada jenis tindakan kustom. Untuk informasi selengkapnya tentang jenis standar tindakan kustom, lihat Jenis Tindakan Kustom. Bidang Sumber untuk tindakan kustom Set_RegRoot_HKLM menentukan bahwa nilai properti RegRoot. Jika alat penginstal melakukan tindakan kustom Set_RegRoot_HKLM, ini mengatur ulang nilai properti RegRoot ke HKLM.

Tabel CustomAction (parsial)

Perbuatan Jenis Sumber Target
Set_RegRoot_HKLM 51 [RegRoot] HKLM

 

Tindakan INSTALL tingkat atas melakukan tindakan dalam tabel InstallExecuteSequence, dalam urutan yang ditentukan dalam bidang Urutan tabel tersebut. Nilai yang ditulis di bidang Urutan untuk tindakan kustom Set_RegRoot_HKLM (1501) menentukan bahwa tindakan kustom ini dilakukan setelah tindakan InstallInitialize (1500) dan sebelum tindakan ProcessComponents (1600.) Urutan ini memastikan bahwa rekaman untuk tindakan kustom Set_RegRoot_HKLM dievaluasi pada waktu penginstalan. Untuk informasi selengkapnya tentang urutan tindakan yang direkomendasikan dalam tabel InstallExecuteSequence, lihat topik InstallExecuteSequence yang Disarankan. Sintaks pernyataan kondisional yang ditulis di bidang Kondisi menentukan bahwa tindakan Set_RegRoot_HKLM dilakukan hanya jika nilai properti ALLUSERS dievaluasi ke 1 pada waktu penginstalan. Nilai properti ALLUSERS 1 menentukan penginstalan per komputer.

Tabel InstallExecuteSequence (parsial)

Perbuatan Kondisi Sequence
Set_RegRoot_HKLM ALLUSERS=1 1501

 

Rekaman berikut dalam tabel Registri melakukan pendaftaran jika komponen ProductComponent diinstal. Nilai -1 di bidang Akar diperlukan untuk melakukan pendaftaran di bawah HKEY_LOCAL_MACHINE untuk penginstalan per pengguna dan di bawah HKEY_CURRENT_USER untuk penginstalan per pengguna. Rekaman dengan string kosong di bidang Registri menambahkan subkuntang untuk aplikasi di bawah kunci registri AppPaths dan mengatur nilai "(Default)" ke jalur lengkap file yang dapat dieksekusi aplikasi. Pendaftaran MyAppPathAlias memetakan file yang dapat dieksekusi ke alias aplikasi dan memungkinkan aplikasi diluncurkan jika pengguna mengetik alias "puapct" pada prompt baris perintah. Pendaftaran MyAppPathRegistration memetakan nama file yang dapat dieksekusi ke jalur lengkap file.

Registri Akar Tombol Nama Nilai Komponen
-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

 

Pendaftaran Pembatalan Pemutaran Otomatis

PUASample.msi melakukan pendaftaran yang memungkinkan pengguna aplikasi mencegah Pemutaran Otomatis Perangkat Keras diluncurkan untuk perangkat yang dipilih. Untuk informasi tentang mendaftarkan handler untuk membatalkan Pemutaran Otomatis sebagai respons terhadap suatu peristiwa, lihat topik Menyiapkan Perangkat Keras dan Perangkat Lunak untuk Digunakan dengan AutoPlay di bagian ekstensibilitas shell dari Panduan Pengembang Shell. Catatan berikut mendaftarkan handler yang ditentukan di bidang Nama saat komponen ProductComponent diinstal. Nilai -1 di bidang Akar diperlukan untuk menentukan ke Penginstal Windows bahwa pendaftaran harus dialihkan ke lokasi yang bergantung pada konteks penginstalan.

Tabel Registri

Registri Akar Tombol Nama Nilai Komponen
MyAutoplayCancelRegistration -1 SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID 66A32FE6-229D-427b-A608-D273F40C034C ProductComponent

 

Pendaftaran Handler Pratinjau

PUASample.msi melakukan pendaftaran yang diperlukan untuk menginstal handler pratinjau yang memungkinkan pratinjau file .pua baca-saja tanpa meluncurkan aplikasi. Untuk informasi tentang mendaftarkan penangan pratinjau, lihat topik Mendaftarkan Penangan Pratinjau di bagian ekstensibilitas shell dari Panduan Pengembang Shell. Rekaman berikut dalam tabel Registri mendaftarkan handler saat komponen ProductComponent diinstal. Nilai -1 di bidang Akar diperlukan untuk menentukan ke Penginstal Windows bahwa pendaftaran harus dialihkan ke lokasi yang bergantung pada konteks penginstalan.

Tabel Registri

Registri Akar Tombol Nama Nilai Komponen
MyPreviewHandlerRegistration1 -1 Software\Classes\.pua puafile ProductComponent
MyPreviewHandlerRegistration2 -1 Software\Microsoft\Windows\CurrentVersion\PreviewHandlers {1531d583-8375-4d3f-b5fb-d23bbd169f22} Microsoft Windows PUA TEST Preview Handler 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} Penangan Pratinjau Sampel Applicaton Per Pengguna 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} Icon notepad.exe,2 ProductComponent
MyPreviewHandlerRegistration8 -1 Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 ThreadingModel Apartemen 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