Пример разработки одного пакета
Образец PUASample.msi — это пакет установщика Windows 5.0 с двойным назначением, который может быть установлен в контексте установки для каждого пользователя или для всей системы на Windows Server 2008 R2 и Windows 7. Этот образец пакета следует руководящим принципам разработки, описанным в Разработка отдельных пакетов.
Получение копии примера
Копия этого примера и редактор таблицы базы данных установщика Windows Orca.exeнаходятся в компонентах пакета SDK для Windows для разработчиков установщика Windows. Пример и редактор таблиц предоставляются в комплекте средств разработки программного обеспечения Windows для Windows Server 2008 R2 и Windows 7 в качестве файлов установки установщика Windows 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 не настроена таким образом, который блокирует установку приложений.
Определение пакета Dual-Purpose
Пакеты двойного назначения должны инициализировать значение свойства MSIINSTALLPERUSER до 1. Это определяет пакет как способный устанавливаться в контексте для каждого компьютера или пользователя в Windows Server 2008 R2 и Windows 7. Задайте свойство MSIINSTALLPERUSER только в том случае, если оно было записано в соответствии с рекомендациями по разработке, описанными в Единое создание пакета, и если вы планируете предоставить пользователям возможность установить пакет либо для каждого пользователя, либо на весь компьютер. Пакет двойного назначения также должен инициализировать значение свойства ALLUSERS на 2. Это задает контекст установки для каждого пользователя по умолчанию для приложения. Если значение свойства ALLUSERS имеет значение, отличное от 2, установщик Windows игнорирует свойство MSIINSTALLPERUSER.
Используйте редактор базы данных установщика Windows, например Orca.exe, для проверки содержимого PUASample1.msi. Таблица свойств в примере пакета содержит следующие две записи.
Таблица свойств (частично)
Собственность | Ценность |
---|---|
ALLUSERS | 2 |
MSIINSTALLPERUSER | 1 |
Настраиваемое диалоговое окно для контекста установки
пользовательский интерфейс примера пакета включает в себя пример настраиваемого диалогового окна под названием VerifyReadyDialog, который позволяет пользователям во время установки выбрать контекст установки для отдельного пользователя или на весь компьютер. В таблице диалогового окна содержится запись, описывающая диалоговое окно VerifyReadyDialog. Значение, введенное в поле "Атрибуты", равно 39, так как это диалоговое окно использует стилевые биты msidbDialogAttributesVisible (1), msidbDialogAttributesModal (2), msidbDialogAttributesMinimize (4) и msidbDialogAttributesTrackDiskSpace (32) ,. В строке заголовка диалогового окна отображается название, заданное значением свойства ProductName.
Диалог Таблица (частично)
Диалог | HCentering | VCentering | Ширина | Высота | Атрибуты | Титул | Control_First | Управление_По умолчанию | Control_Отмена |
---|---|---|---|---|---|---|---|---|---|
Диалог проверки готовности | 50 | 50 | 480 | 280 | 39 | [ProductName] | InstallPerUser | Далее | Отмена |
Таблица элемента управления содержит записи для элементов управления , отображаемых в диалоговом окне VerifyReadyDialog. В диалоговом окне отображаются элементы управления PushButton и элемент управления Text. Все элементы управления используют атрибуты msidbControlAttributesEnabled (2) и msidbControlAttributesVisible (1) . Элемент управления InstallPerMachine также использует атрибут элемента управления ElevationShield, msidbControlAttributesElevationShield (8388608.) Этот атрибут элемента управления добавляет в элемент управления InstallPerMachine значок повышения прав(UAC)контроля учетных записей пользователей (UAC) и сообщает пользователю, что учетные данные UAC необходимы для установки приложения в контексте на компьютере. Значение в текстовом поле таблицы Control — это текстовый стиль и текст, отображаемый элементом управления. Дополнительные сведения о добавлении текста в элемент управления с помощью предопределенных стилей см. в описании поля "Текст" в разделе "Элемент управления".
Диалог_ | Контроль | Тип | Атрибут | Текст | Контроль_Далее |
---|---|---|---|---|---|
ДиалогПодтвержденияГотовности | Отмена | Кнопка | 3 | {\Tahoma10}&Отмена | Следующий |
ДиалогПроверкиГотовности | Предыдущий | Нажимная кнопка | 3 | {\Tahoma10}<<&назад | Отмена |
Диалог проверки готовности | Следующий | Кнопка | 3 | {\Tahoma10}&Далее >> | InstallPerUser |
ПроверкаГотовностиДиалога | Текст2 | Текст | 3 | Готовы ли вы завершить приостановленную установку? | |
Диалог проверки готовности | InstallPerUser | Кнопка | 3 | {\Tahoma10}Установка только для меня & | InstallPerMachine |
Диалог проверки готовности | InstallPerMachine | Кнопка | 8388611 | {\Tahoma10}Установить для каждого & | Предыдущий |
Проверка ReadyDialog | Отмена | Кнопка | 3 | {\Tahoma10}&Отмена | Следующий |
Таблица ControlEvent указывает на ControlEventsили действия, которые выполняет установщик, когда пользователь взаимодействует с контролем. Когда пользователь активирует push-кнопку InstallPerUser, пользовательский интерфейс отображает диалоговое окно OutOfDisk, если свойство OutOfDiskSpace равно 1, задает значение свойства MSIINSTALLPERUSER равным 1, задает значение свойства ALLUSERS равным 2, задает значение свойства MSIFASTINSTALL равным 1, и процесс возвращает управление. Так как свойство MSIFASTINSTALL задано, точка восстановления системы не создается для установки. Когда пользователь активирует pushbutton InstallPerMachine, пользовательский интерфейс отображает диалоговое окно OutOfDisk, если свойство OutOfDiskSpace равно 1, задает значение свойства ALLUSERS значение 1 и возвращает значение.
таблица ControlEvent (частичная)
Диалог_ | Контроль_ | Событие | Аргумент | Состояние | Заказ |
---|---|---|---|---|---|
Проверка ReadyDialog | InstallPerUser | SpawnDialog | OutOfDisk | OutOfDiskSpace = 1 | 1 |
Диалог готовности проверки | InstallPerUser | ЗавершитьДиалог | Вернуть | OutOfDiskSpace <> 1 | 5 |
ПроверкаГотовностиДиалог | InstallPerUser | [MSIINSTALLPERUSER] | 1 | 1 | 2 |
ДиалогПодтвержденияГотовности | InstallPerUser | [ALLUSERS] | 2 | 1 | 3 |
Диалог проверки готовности | InstallPerMachine | SpawnDialog | OutOfDisk | OutOfDiskSpace = 1 | 1 |
Диалог подтверждения готовности | InstallPerMachine | ЗавершитьДиалог | Назад | OutOfDiskSpace <> 1 | 3 |
Проверка готовности диалога | InstallPerMachine | [ALLUSERS] | 1 | 1 | 2 |
ПроверкаГотовностьДиалог | InstallPerUser | [MSIFASTINSTALL] | 1 | 1 | 4 |
Элемент управления InstallPerUser должен быть удален из пользовательского интерфейса любой установки, использующей версию установщика Windows, предыдущую версии Windows Installer 5.0. Таблица ControlCondition в образце пакета содержит четыре записи, которые отключают и скрывают элемент InstallPerUser, если текущая версия меньше, чем Windows Installer 5.0. В таблице используется значение свойства VersionMsi и синтаксис условного оператора для определения этого условия. Действие, указанное в поле «Действие», выполняется только в том случае, если условие в поле «Условие» истинно.
Таблица ControlCondition (частичная)
Диалог_ | Контроль_ | Действие | Состояние |
---|---|---|---|
ПроверкаГотовностиДиалога | InstallPerUser | Включить | VersionMsi >= "5.00" |
ДиалогПроверкиГотовности | InstallPerUser | Отключить | VersionMsi < "5.00" |
ПроверкаReadyDialog | InstallPerUser | Показывать | VersionMsi >= "5.00" |
ПроверкаReadyDialog | InstallPerUser | Скрыть | VersionMsi < "5.00" |
Указание структуры каталогов
Используйте редактор базы данных для проверки таблицы каталога PUASample1.msi. Запись в Таблице каталогов, в которой в поле Directory_Parent указана пустая строка, представляет корневой каталог как для дерева исходных, так и целевых каталогов. Если свойство TARGETDIR не определено, установщик задает во время установки значение свойства ROOTDRIVE. Если свойство SourceDir не определено, установщик задает его значение, указывающее на расположение каталога, содержащего пакет установщика Windows (файл.msi). Имена каталогов указываются в коротком или длинном формате.
таблица каталога (частичная)
Каталог | Родительский_Каталог | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
ПапкаПрограммныхФайлов | TARGETDIR | . |
ProgramMenuFolder | TARGETDIR | . |
МЕСТО УСТАНОВКИ | MyVendor | Пример1|MSDN-PUASample1 |
MyVendor | ПапкаProgramFiles | Msft|Корпорация Майкрософт |
В источнике эта каталог таблица разрешает следующие пути к каталогу.
- \[SourceDir\]\\Msft\\Sample1 \[SourceDir\]
В целевой системе таблица каталога , сопоставляет пути, указанные в следующей таблице. Установщик устанавливает значения свойств ProgramFilesFolder и ProgramMenuFolder в зависимости от контекста установки и от того, является ли система 32-битной или 64-битной версией Windows Server 2008 R2 и Windows 7. Путь к целевым папкам зависит от того, выбирает пользователь персональную установку или установку для всех пользователей на компьютере.
Контекст установки | Система | Примеры путей |
---|---|---|
Per-Machine | Windows Server 2008 R2 и Windows 7 32-разрядная версия |
%ProgramFiles%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Пуск меню\Программы |
Per-Machine | Windows Server 2008 R2 и Windows 7 64-разрядная версия |
%ProgramFiles(x86)%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Пуск меню\Программы |
Per-User | Windows Server 2008 R2 и Windows 7 32-разрядная или 64-разрядная версия |
%USERPROFILE%\AppData\Local\Programs\Msft\Sample1 %APPDATA%\Microsoft\Windows\Пуск меню\Программы |
Приложения для каждого пользователя должны храниться в вложенных папках в папке "Программы", указанной значением свойства ProgramFilesFolder. Как правило, путь к приложению принимает следующую форму.
%LOCALAPPDATA%\Programs\ISV name\AppName.
Данные конфигурации для каждого пользователя должны храниться в папке "Программы", указанной значением свойства ProgramMenuFolder. Как правило, эта папка расположена по следующему пути.
%APPDATA%\Microsoft\Windows\Пуск меню\Программы
При установке 32-разрядных компонентов пакета установщика Windows используйте свойства ProgramFilesFolder и CommonFilesFolder в таблице Directory. При установке 64-разрядных компонентов пакета установщика Windows используйте свойства ProgramFiles64Folder и CommonFiles64Folder. Если приложение содержит 32-разрядные и 64-разрядные версии одного компонента с одинаковым именем, убедитесь, что эти версии сохраняются в разных каталогах или присваивают им разные имена.
В следующей таблице каталог представлен пример макета каталога, совместимого с пакетом, который включает 32-разрядные и 64-разрядные компоненты и включает некоторые компоненты, которые совместно используются в приложениях.
Каталог | Каталог_Родитель | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
ПапкаProgramFiles | TARGETDIR | .:Prog32 |
ProgramFiles64Folder | TARGETDIR | .:Prog64 |
Папка общих файлов | TARGETDIR | .:Share32 |
CommonFiles64Folder | TARGETDIR | .:Share64 |
ProgramMenuFolder | TARGETDIR | .:Sample1|MSDN-PUASample1 |
МЕСТО УСТАНОВКИ | МайВендор | Пример1|MSDN-PUASample1 |
INSTALLLOCATIONX64 | Поставщикx64 | Пример1|MSDN-PUASample1 |
Общее местоположение | ShVendor | Пример1|MSDN-PUASample1 |
SHAREDLOCATIONX64 | ShVendorx64 | Пример1|MSDN-PUASample1 |
MyVendor | Папка для файлов программ | Msft|Корпорация Майкрософт |
Поставщикx64 | ProgramFiles64Folder | Msft|Корпорация Майкрософт |
ShVendor | ПапкаОбщихФайлов | Msft|Корпорация Майкрософт |
ShVendorx64 | CommonFiles64Folder | Msft|Корпорация Майкрософт |
Shrx86 | СовместноеМестоположение | Компоненты x32|32-разрядные |
Shrx64 | SHAREDLOCATIONX64 | Компоненты x64|64-разрядные |
Binx86 | МЕСТО УСТАНОВКИ | Компоненты x32|32-разрядные |
Binx64 | INSTALLLOCATIONX64 | Компоненты x64|64-разрядные |
App32 | Binx86 | myapp|unshared 32-разрядные компоненты |
App64 | Binx64 | myapp|неделимые 64-разрядные компоненты |
Share32 | Shrx86 | общие|общие 32-разрядные компоненты |
Share64 | Shrx64 | общие 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
В целевом объекте эта таблица каталога разрешает следующие пути к каталогу. Целевые пути зависят от контекста установки и системы.
Контекст установки | Система | Примеры путей |
---|---|---|
Per-Machine | 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 |
Per-Machine | 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 |
Per-User | 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 для приложения и выполняет регистрационные действия, которые позволяют сохранять сведения о приложении в реестре под этим ключом. Дополнительные сведения о путях приложений и регистрации приложений см. в разделе PerceivedTypes, SystemFileAssociations и регистрации приложений в разделе расширяемости оболочки в руководстве разработчика оболочки. Во время установки пользователь принимает решение установить приложение в контексте установки каждого пользователя или на компьютер. Во время разработки пакета двойного назначения разработчик пакета не может знать, следует ли выполнять регистрацию в HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER ключах.
Разработчик пакета определяет идентификатор файла исполняемого файла приложения в поле "Файл" таблицы файла.
файл таблица (частичная)
Файл | Компонент_ | Имя файла | РазмерФайла | Версия | Язык | Атрибуты | Последовательность |
---|---|---|---|---|---|---|---|
MyAppFile | КомпонентПродукта | PUASAMP1.EXE|PUASample1.exe | 81920 | 0 | 1 |
Значения, сохраненные в реестре, можно указать в поле "Значение" таблицы реестра в виде строки форматирования. Используйте идентификатор файла, определенный в поле "Файл" таблицы File, и соглашение [#filekey] типа Formatted, чтобы указать значение по умолчанию для ключа реестра App Paths. Действие верхнего уровня INSTALL выполняет действия в таблице InstallExecuteSequence. После завершения действий CostInitialize, FileCostи InstallFinalize в этой таблице, установщик Windows заменяет подстроку [#MyAppFile] в таблице реестра полным путем к файлу приложения.
В примере определяется пользовательское свойство RegRoot, чтобы содержать местоположение корневого ключа, и используется пользовательское действие для сброса значения этого свойства, если пользователь выбирает установку на уровне всей машины. Используйте настраиваемое свойство RegRoot в любых отформатированных строковых значениях, ссылающихся на корневое расположение. В таблице свойств пакет PUASample.msi определяет настраиваемое свойство и задает значение RegRoot для HKCU. Это инициализирует значение свойства для контекста установки для каждого пользователя, рекомендуемого контекста по умолчанию для пакетов двойного назначения.
Таблица атрибутов (частично)
Свойство | Ценность |
---|---|
RegRoot | HKCU |
В таблице CustomAction пакет определяет пользовательское действие с именем Set_RegRoot_HKLM. Значение в поле "Тип" идентифицирует это как Тип пользовательского действия 51 стандартное пользовательское действие. Значение полей Source и Target в таблице CustomAction зависит от типа пользовательского действия. Дополнительные сведения о стандартных типах настраиваемых действий см. в Типы настраиваемых действий. Поле Source для пользовательского действия Set_RegRoot_HKLM задаёт значение свойства RegRoot. Если установщик выполняет специальное действие Set_RegRoot_HKLM, это сбрасывает значение свойства RegRoot на HKLM.
ПользовательскоеДействие Таблица (частично)
Действие | Тип | Источник | Цель |
---|---|---|---|
Set_RegRoot_HKLM | 51 | [RegRoot] | HKLM |
Действие верхнего уровня INSTALL выполняет действия в таблице последовательности InstallExecuteSequence, в порядке, указанном в соответствующем поле этой таблицы. Значение, созданное в поле Последовательности для пользовательского действия Set_RegRoot_HKLM (1501), указывает, что это настраиваемое действие будет выполнено после действия InstallInitialize (1500) и до действия ProcessComponents (1600.) Эта последовательность гарантирует, что запись для Set_RegRoot_HKLM настраиваемого действия вычисляется во время установки. Дополнительные сведения о рекомендуемой последовательности действий в таблице InstallExecuteSequence см. в разделе предлагаемой версии InstallExecuteSequence. Синтаксис условной инструкции , созданный в поле "Условие", указывает, что действие Set_RegRoot_HKLM выполняется только в том случае, если значение свойства ALLUSERS оценивается как 1 во время установки. Значение свойства ALLUSERS, равное 1, указывает установку для всех пользователей.
InstallExecuteSequence Table (частично)
Действие | Состояние | Последовательность |
---|---|---|
Set_RegRoot_HKLM | ALLUSERS=1 | 1501 |
Следующие записи в таблице реестра выполняют регистрацию, если установлен компонент ProductComponent. Значение -1 в корневом поле необходимо для выполнения регистрации в HKEY_LOCAL_MACHINE и в HKEY_CURRENT_USER для установки для каждого пользователя. Запись с пустой строкой в поле "Реестр" добавляет подключ для приложения в разделе реестра AppPaths и устанавливает значение "(Default)" как полный путь к исполняемому файлу приложения. Регистрация MyAppPathAlias сопоставляет исполняемый файл с псевдонимом приложения и позволяет запускать приложение, если пользователь вводит псевдоним puapct в командной строке. Регистрация MyAppPathRegistration сопоставляет имя исполняемого файла с полным путем к файлу.
Регистратура | Корень | Ключ | Имя | Ценность | Компонент |
---|---|---|---|---|---|
-1 | Software\Microsoft\MyAppPathRegistrationLocation | [RegRoot]\Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | Компонент продукта | ||
MyAppPathAlias | -1 | Программное обеспечение\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | [#MyAppFile] | Компонент продукта | |
MyAppPathRegistration | -1 | Программное обеспечение\Microsoft\Windows\CurrentVersion\App Paths\PUASample1.exe | [#MyAppFile] | Компонент продукта |
Отмена регистрации автозапуска
PUASample.msi выполняет регистрацию, которая позволяет пользователю приложения предотвратить запуск аппаратного автозапуска для выбранных устройств. Информация о регистрации обработчика для отмены автоматического воспроизведения в ответ на событие находится в теме Подготовка оборудования и программного обеспечения для использования с автозапуском, которая расположена в разделе расширяемость оболочки Руководства разработчика оболочки . Следующая запись регистрирует обработчик, указанный в поле Name при установке компонента ProductComponent. Значение -1 в корневом поле является обязательным для указания Windows Installer, чтобы регистрация была перенаправлена в расположение, зависящее от контекста установки.
Таблица реестра
Регистратура | Корень | Ключ | Имя | Ценность | Компонент |
---|---|---|---|---|---|
ОтменаРегистрацииАвтовоспроизведения | -1 | SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID | 66A32FE6-229D-427b-A608-D273F40C034C | Компонент продукта |
Регистрация обработчика предварительного просмотра
В PUASample.msi выполняются регистрации, необходимые для установки обработчика предварительного просмотра , который позволяет просматривать .pua файлы в режиме только для чтения без запуска приложения. Сведения о регистрации обработчиков предварительной версии см. в разделе Регистрации обработчиков предварительной версии в разделе расширяемости оболочки руководства разработчика оболочки. Следующие записи в таблице реестра регистрируют обработчик при установке компонента "ProductComponent". Значение -1 в корневом поле требуется, чтобы указать Windows Installer, что регистрация должна быть перенаправлена в расположение, которое зависит от контекста установки.
Таблица реестра
Регистратура | Корень | Ключ | Имя | Ценность | Компонент |
---|---|---|---|---|---|
MyPreviewHandlerRegistration1 | -1 | Software\Classes\.pua | puafile | Компонент продукта | |
MyPreviewHandlerRegistration2 | -1 | Software\Microsoft\Windows\CurrentVersion\PreviewHandlers | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | Обработчик предварительного просмотра Microsoft Windows PUA TEST | Компонент продукта |
MyPreviewHandlerRegistration3 | -1 | Software\Classes\puafile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f} | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | КомпонентПродукта | |
MyPreviewHandlerRegistration4 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Per-User Пример обработчика предварительной версии 1 | Компонент продукта | |
MyPreviewHandlerRegistration5 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | AppID | {6d2b5079-2f0b-48ddd-ab7f-97cec514d30b} | Компонент продукта |
MyPreviewHandlerRegistration6 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | ОтображаемоеИмя | @shell32,-38242 | Компонент продукта |
MyPreviewHandlerRegistration7 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Икона | notepad.exe,2 | Компонент продукта |
MyPreviewHandlerRegistration8 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ThreadingModel | Квартира | Компонент продукта |
MyPreviewHandlerRegistration9 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | #%%SystemRoot%\system32\shell32.dll | КомпонентПродукта | |
MyPreviewHandlerRegistration10 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ProgID | puafile | КомпонентПродукта |