Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O exemplo PUASample.msi é um exemplo de um pacote do Windows Installer 5.0 de dupla finalidade que pode ser instalado no contexto de instalação por usuário ou por máquina no Windows Server 2008 R2 e no Windows 7. Este pacote de exemplo segue as diretrizes de desenvolvimento descritas em Single Package Authoring.
Obtenção de uma cópia da amostra
Uma cópia deste exemplo e um editor de tabela de banco de dados do Windows Installer, Orca.exe, estão no Windows SDK Components for Windows Installer Developers. O exemplo e o editor de tabela são fornecidos com o Windows Software Development Kit para Windows Server 2008 R2 e Windows 7 como os arquivos de instalação do Windows Installer PUASample1.msi e Orca.msi.
Requisitos do sistema
O editor de banco de dados, Orca.exe, requer o Windows Server 2008 R2 e versões anteriores e o Windows 7 e versões anteriores. O pacote de dupla finalidade, PUASample1.msi, pode ser instalado no contexto de instalação por máquina ou por usuário no Windows Server 2008 R2 e no Windows 7. PUASample1.msi pode ser instalado somente no contexto por máquina no Windows Server 2008 e versões anteriores e no Windows Vista e versões anteriores. Você pode instalar o editor de banco de dados para examinar o conteúdo do PUASample1.msi sem instalar o exemplo. Para instalar os pacotes de exemplo ou de editor, certifique-se de que a política de DisableMSI não esteja definida como um valor que bloqueie as instalações de aplicativos.
Identificando um pacote Dual-Purpose
Os pacotes de dupla finalidade devem inicializar o valor da propriedade MSIINSTALLPERUSER para 1. Isso identifica o pacote como capaz de ser instalado no contexto por máquina ou por usuário no Windows Server 2008 R2 e no Windows 7. Defina a propriedade MSIINSTALLPERUSER no pacote apenas se ela tiver sido configurada seguindo as diretrizes de desenvolvimento descritas em Criação de Pacote Único e se pretender oferecer aos utilizadores a opção de instalar o pacote no modo por utilizador ou por máquina. Um pacote de dupla função também deve inicializar o valor da propriedade ALLUSERS para 2. O contexto de instalação padrão para a aplicação é especificado por utilizador. Se o valor da propriedade ALLUSERS for qualquer valor diferente de 2, o Windows Installer ignorará a propriedade MSIINSTALLPERUSER.
Use um editor de banco de dados do Windows Installer, como Orca.exe, para examinar o conteúdo do PUASample1.msi. A tabela Property no pacote de exemplo contém as duas entradas a seguir.
Tabela de Propriedade (parcial)
| Propriedade | Valor |
|---|---|
| TODOS OS UTILIZADORES | 2 |
| MSIINSTALLPERUSER | 1 |
Caixa de diálogo personalizada para contexto de instalação
O da interface do usuário do pacote de exemplo inclui um exemplo de uma caixa de diálogo personalizada, VerifyReadyDialog, que permite aos usuários selecionar o contexto de instalação por usuário ou por máquina no momento da instalação. A tabela Dialog contém um registo que descreve a caixa de diálogo VerifyReadyDialog. O valor inserido no campo Atributos é 39 porque esta caixa de diálogo usa os bits de estilo de diálogo msidbDialogAttributesVisible (1), msidbDialogAttributesModal (2), msidbDialogAttributesMinimize (4) e msidbDialogAttributesTrackDiskSpace (32) . A barra de título da caixa de diálogo exibe um título dado pelo valor da propriedade ProductName.
Diálogo Tabela (parcial)
| Caixa de diálogo | HCentrando | VCentering | Largura | Altura | Atributos | Título | Control_First | Controlo_Padrão | Control_Cancel |
|---|---|---|---|---|---|---|---|---|---|
| VerifyReadyDialog | 50 | 50 | 480 | 280 | 39 | [Nome do produto] | InstallPerUser | Seguinte | Cancelar |
A tabela Control contém entradas para os controles exibidos pela caixa de diálogo VerifyReadyDialog. A caixa de diálogo exibe os controles PushButton e um controle Texto. Todos os controles usam os atributos de controle msidbControlAttributesEnabled (2) e msidbControlAttributesVisible (1) . O controlo InstallPerMachine também usa o atributo de controlo ElevationShield, msidbControlAttributesElevationShield (8388608). Este atributo de controlo adiciona o ícone de elevação do User Account Control (UAC) (ícone de escudo) ao controlo InstallPerMachine e informa o utilizador de que são necessárias as credenciais do UAC para instalar a aplicação no contexto por máquina. O valor no campo Texto da tabela Controlo é o estilo de texto e o texto exibido pelo controlo. Consulte a descrição do campo Texto no tópico Tabela de controle para obter mais informações sobre como adicionar texto a um controle usando estilos predefinidos.
Tabela de Controlo (parcial)
| Dialog_ | Controlo | Tipo | Atributo | Texto | Controlar_Seguinte |
|---|---|---|---|---|---|
| VerifyReadyDialog | Cancelar | Botão | 3 | {\Tahoma10}&Cancelar | Seguinte |
| VerifyReadyDialog | Anterior | Botão de pressão | 3 | {\Tahoma10}<<&Anterior | Cancelar |
| VerifyReadyDialog | Seguinte | Botão de Pressão | 3 | {\Tahoma10}&Próxima >> | InstallPerUser |
| VerifyReadyDialog | Texto2 | Texto | 3 | Está pronto para concluir a instalação suspensa? | |
| VerifyReadyDialog | InstallPerUser | Botão de Pressão | 3 | {\Tahoma10}Instalar apenas para &mim | InstallPerMachine |
| VerifyReadyDialog | InstallPerMachine | Botão de Pressão | 8388611 | {\Tahoma10}Instalar para &todos | Anterior |
| VerifyReadyDialog | Cancelar | Botão de Pressão | 3 | {\Tahoma10}&Cancelar | Seguinte |
A tabela ControlEvent especifica os ControlEvents, ou ações, que o instalador executa quando o utilizador interage com um controlo. Quando um utilizador ativa o botão InstallPerUser, a interface do utilizador exibe uma caixa de diálogo OutOfDisk se a propriedade OutOfDiskSpace for 1, define o valor da propriedade MSIINSTALLPERUSER como 1, define o valor da propriedade ALLUSERS como 2, define a propriedade MSIFASTINSTALL como 1 e retorna. Como a propriedade MSIFASTINSTALL está definida, nenhum ponto de restauração do sistema é gerado para a instalação. Quando um usuário ativa o botão InstallPerMachine, a interface do usuário exibe uma caixa de diálogo OutOfDisk se a propriedade OutOfDiskSpace for 1, define o valor da propriedade ALLUSERS como 1 e retorna.
ControlEvent Tabela (parcial)
| Diálogo_ | Controlo_ | Evento | Argumento | Condição | Encomenda |
|---|---|---|---|---|---|
| VerifyReadyDialog | InstallPerUser | SpawnDialog | Sem espaço em disco | OutOfDiskSpace = 1 | 1 |
| VerifyReadyDialog | InstallPerUser | TerminarDiálogo | Regresso | OutOfDiskSpace <> 1 | 5 |
| VerifyReadyDialog | InstallPerUser | [MSIINSTALLPERUSER] | 1 | 1 | 2 |
| VerifyReadyDialog | InstallPerUser | [TODOS OS UTILIZADORES] | 2 | 1 | 3 |
| VerifyReadyDialog | InstallPerMachine | SpawnDialog | Sem espaço no disco | OutOfDiskSpace = 1 | 1 |
| VerifyReadyDialog | InstallPerMachine | FinalizarDiálogo | Regresso | OutOfDiskSpace <> 1 | 3 |
| VerifyReadyDialog | InstallPerMachine | [TODOS OS UTILIZADORES] | 1 | 1 | 2 |
| VerifyReadyDialog | InstallPerUser | [MSIFASTINSTALL] | 1 | 1 | 4 |
O controle InstallPerUser deve ser removido da interface do usuário de qualquer instalação usando uma versão do Windows Installer anterior ao Windows Installer Windows Installer 5.0. A tabela ControlCondition no pacote de exemplo contém quatro entradas que desabilitam e ocultam o controle InstallPerUser se a versão atual for menor que o Windows Installer 5.0. A tabela usa o valor da propriedade VersionMsi e a sintaxe da instrução condicional para definir esta condição. A ação especificada no campo Ação é executada somente se a instrução no campo Condição for verdadeira.
Tabela (parcial) ControlCondition
| Diálogo_ | Controlo_ | Ação | Condição |
|---|---|---|---|
| VerifyReadyDialog | InstallPerUser | Ativar | VersionMsi >= "5.00" |
| VerifyReadyDialog | InstallPerUser | Desativar | VersionMsi < "5.00" |
| VerifyReadyDialog | InstallPerUser | Programa | VersionMsi >= "5.00" |
| VerifyReadyDialog | InstallPerUser | Ocultar | VersionMsi < "5.00" |
Definindo a Estrutura de Diretórios
Use o editor de base de dados para examinar a tabela de Diretório de PUASample1.msi. O registro da Tabela de Diretórios com uma cadeia de caracteres vazia em seu campo Directory_Parent representa o diretório raiz das árvores de diretório de origem e de destino. Se a propriedade TARGETDIR estiver indefinida, o instalador definirá seu valor no momento da instalação para o valor da propriedade ROOTDRIVE. Se a propriedade SourceDir estiver indefinida, o instalador definirá seu valor para o local do diretório que contém o pacote do Windows Installer (arquivo.msi). Os nomes dos diretórios são especificados usando o formato short|long.
Diretório Tabela (parcial)
| Diretório | Diretório_Pai | DefaultDir |
|---|---|---|
| TARGETDIR | SourceDir | |
| ProgramFilesFolder | TARGETDIR | . |
| ProgramMenuFolder | TARGETDIR | . |
| LOCAL DE INSTALAÇÃO | Meu fornecedor | Amostra1|MSDN-PUASample1 |
| Meu fornecedor | ProgramFilesFolder | Msft|Microsoft |
Na origem, esta tabela de diretório é resolvida para os seguintes caminhos de diretório.
- \[SourceDir\]\\Msft\\Sample1 \[SourceDir\]
No destino, a tabela Directory resolve para os caminhos na tabela a seguir. O instalador define os valores das propriedades ProgramFilesFolder e ProgramMenuFolder para locais que dependem do contexto de instalação e se o sistema é das versões de 32-bit ou 64-bit do Windows Server 2008 R2 e Windows 7. Os caminhos para as pastas de destino dependem se o usuário seleciona uma instalação por usuário ou por máquina.
| Contexto de instalação | Sistema | Caminhos de exemplo |
|---|---|---|
| Per-Machine | Windows Server 2008 R2 e Windows 7 Versão de 32 bits |
%ProgramFiles%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Menu Iniciar\Programas |
| Per-Machine | Windows Server 2008 R2 e Windows 7 Versão de 64 bits |
%ProgramFiles(x86)%\Msft\Sample1 %ALLUSERSPROFILE%\Microsoft\Windows\Menu Iniciar\Programas |
| Per-User | Windows Server 2008 R2 e Windows 7 Versão de 32 bits ou 64 bits |
%USERPROFILE%\AppData\Local\Programs\Msft\Sample1 %APPDATA%\Microsoft\Windows\Menu Iniciar\Programas |
As aplicações por utilizador devem ser armazenadas em subpastas na pasta Programas, conforme especificada pelo valor da propriedade ProgramFilesFolder . Normalmente, o caminho para o aplicativo assume a seguinte forma.
%LOCALAPPDATA%\Programs\nome ISV\AppName.
Os dados de configuração por usuário devem ser armazenados na pasta Programas especificada pelo valor da propriedadeProgramMenuFolder. Normalmente, essa pasta está localizada no caminho a seguir.
%APPDATA%\Microsoft\Windows\Menu Iniciar\Programas
Se estiver instalando Pacote do Windows Installer de 32 bits componentes, use oProgramFilesFolder e propriedade CommonFilesFolder na tabela Directory. Se estiver instalando pacote do Windows Installer de 64 bits componentes, use o ProgramFiles64Folder e CommonFiles64Folder propriedades. Se o seu aplicativo contiver versões de 32 bits e 64 bits do mesmo componente, com o mesmo nome, certifique-se de que essas versões sejam salvas em diretórios diferentes ou dê a eles nomes diferentes.
A tabela Directory a seguir fornece um exemplo de um layout de diretório compatível com um pacote que inclui componentes de 32 bits e 64 bits e inclui alguns componentes que são compartilhados entre aplicativos.
| Diretório | Diretório_Pai | DefaultDir |
|---|---|---|
| TARGETDIR | SourceDir | |
| ProgramFilesFolder | TARGETDIR | .:Prog32 |
| Pasta de Programas (x64) | TARGETDIR | .:Prog64 |
| CommonFilesFolder | TARGETDIR | .:Partilha32 |
| FicheirosComuns64Pasta | TARGETDIR | .:Partilha64 |
| ProgramMenuFolder | TARGETDIR | .:Amostra1|MSDN-PUASample1 |
| LOCAL DE INSTALAÇÃO | Meu fornecedor | Amostra1|MSDN-PUASample1 |
| INSTALLLOCATIONX64 | Vendedorx64 | Amostra1|MSDN-PUASample1 |
| LOCALIZAÇÃO PARTILHADA | ShVendor | Amostra1|MSDN-PUASample1 |
| SHAREDLOCATIONX64 | ShVendorx64 | Amostra1|MSDN-PUASample1 |
| Meu fornecedor | ProgramFilesFolder | Msft|Microsoft |
| Vendedorx64 | Pasta de Ficheiros de Programas (64 bits) | Msft|Microsoft |
| ShVendor | CommonFilesFolder | Msft|Microsoft |
| ShVendorx64 | PastaFicheirosComuns64 | Msft|A Microsoft |
| Shrx86 | LOCALIZAÇÃO PARTILHADA | Componentes x32|32-bit |
| Shrx64 | SHAREDLOCATIONX64 | Componentes x64|64-bit |
| Binx86 | LOCAL DE INSTALAÇÃO | Componentes x32|32-bit |
| Binx64 | INSTALLLOCATIONX64 | Componentes x64 | 64 bits |
| App32 | Binx86 | myapp|componentes de 32 bits não compartilhados |
| App64 | Binx64 | myapp|componentes de 64 bits não compartilhados |
| Partilhar 32 | Shrx86 | componentes de 32 bits compartilhados|compartilhados |
| Partilha64 | Shrx64 | componentes de 64 bits compartilhados|compartilhados |
Na origem, esta tabela de diretório é resolvida para os seguintes caminhos de diretório.
- \[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
No destino, essa tabela de diretório é resolvida para os seguintes caminhos de diretório. Os caminhos de destino dependem do contexto de instalação e do sistema.
| Contexto de instalação | Sistema | Caminhos de exemplo |
|---|---|---|
| Per-Machine | Windows Server 2008 R2 e Windows 7 Versão de 32 bits |
%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\Menu Iniciar\Programas\Exemplo1 |
| Per-Machine | Windows Server 2008 R2 e Windows 7 Versão de 64 bits |
%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\Menu Iniciar\Programas\Exemplo1 |
| Per-User | Windows Server 2008 R2 e Windows 7 Versão de 32 bits ou 64 bits |
%LOCALAPPDATA%\Programas\Msft\Sample1\x32\myapp %LOCALAPPDATA%\Programas\Common\Msft\Sample1\x32\shared %LOCALAPPDATA%\Programas\Msft\Sample1\x64\myapp %LOCALAPPDATA%\Programas\Comum\Msft\Sample1\x64\shared %APPDATA%\Microsoft\Windows\Menu Iniciar\Programas\Exemplo1 |
Registo de Candidaturas
O PUASample.msi adiciona uma subchave à chave de registo dos caminhos da aplicação para o aplicativo e executa registos que permitem que as informações da aplicação sejam guardadas no registo sob esta chave. Para obter mais informações sobre caminhos de aplicativo e registro de aplicativo, consulte o PerceivedTypes, SystemFileAssociations e de registro de aplicativo na seção de extensibilidade do shell do Guia do desenvolvedor do Shell. No momento da instalação, o usuário toma a decisão de instalar o aplicativo no contexto de instalação por usuário ou por máquina. No momento em que o pacote de dupla finalidade é criado, o desenvolvedor do pacote não pode saber se os registros devem ser realizados sob as chaves HKEY_LOCAL_MACHINE ou HKEY_CURRENT_USER.
O desenvolvedor do pacote define o identificador de arquivo para o arquivo executável do aplicativo no campo Arquivo da Tabela de Arquivos .
Ficheiro Tabela (parcial)
| Ficheiro | Componente_ | Nome do arquivo | Tamanho do arquivo | Versão | Idioma | Atributos | Sequência |
|---|---|---|---|---|---|---|---|
| MyAppFile | Componente do Produto | PUASAMP1.EXE|PUASample1.exe | 81920 | 0 | 1 |
Os valores a serem salvos no Registro da tabela podem ser especificados no campo Valor como uma cadeia formatada de . Use o identificador de arquivo definido no campo Arquivo da tabela File e a convenção [#filekey] do tipo Formatted para especificar o valor padrão para a chave do Registro App Paths. A ação de nível superior INSTALL executa as ações na tabela InstallExecuteSequence. Após a conclusão das ações CostInitialize, FileCoste InstallFinalize nesta tabela, o Windows Installer substitui a substring formatada [#MyAppFile] na tabela do Registro pelo caminho completo para o arquivo do aplicativo.
O exemplo define uma propriedade personalizada, RegRoot, para conter o local da chave raiz e usa uma ação personalizada para redefinir o valor da propriedade se o usuário escolher uma instalação por máquina. Use a propriedade personalizada, RegRoot, em qualquer valor de cadeia de caracteres formatada que faça referência ao local da raiz. Na tabela Property, o pacote PUASample.msi define a propriedade personalizada e define o valor de RegRoot como HKCU. Isso inicializa o valor da propriedade para o contexto de instalação por usuário, o contexto padrão recomendado para pacotes de dupla finalidade.
Tabela de Propriedades (parcial)
| Propriedade | Valor |
|---|---|
| RegRoot | HKCU |
Na tabela CustomAction, o pacote define uma ação personalizada chamada set_RegRoot_HKLM. O valor no campo Tipo identifica isso como uma ação personalizada Tipo 51 ação personalizada padrão. O significado dos campos Origem e Destino na tabela CustomAction depende do tipo de ação personalizada. Para obter mais informações sobre os tipos padrão de ações personalizadas, consulte Custom Action Types. O campo Source para a ação personalizada Set_RegRoot_HKLM especifica o valor da propriedade RegRoot. Se o instalador executar a set_RegRoot_HKLM ação personalizada, isso redefinirá o valor da propriedade RegRoot como HKLM.
Tabela de Ação Personalizada (parcial)
| Ação | Tipo | Fonte | Público-alvo |
|---|---|---|---|
| Set_RegRoot_HKLM | 51 | [RegRoot] | HKLM |
A ação de nível superior INSTALL executa as ações na tabela InstallExecuteSequence, na sequência especificada no campo Sequence dessa tabela. O valor criado no campo Sequência para a ação personalizada set_RegRoot_HKLM (1501) especifica que essa ação personalizada seja executada após a ação InstallInitialize (1500) e antes da ação ProcessComponents (1600). Essa sequência garante que o registro para a ação personalizada set_RegRoot_HKLM seja avaliado no momento da instalação. Para obter mais informações sobre a sequência recomendada de ações na tabela InstallExecuteSequence, consulte o tópico Suggested InstallExecuteSequence . A sintaxe da instrução condicional criada no campo Condição especifica que a ação Set_RegRoot_HKLM seja executada somente se o valor da propriedade ALLUSERS for avaliado como 1 no momento da instalação. Um ALLUSERS valor de propriedade de 1 especifica uma instalação por máquina.
Tabela de InstallExecuteSequence (parcial)
| Ação | Condição | Sequência |
|---|---|---|
| Set_RegRoot_HKLM | TODOS OS UTILIZADORES=1 | 1501 |
Os registros a seguir na tabela do Registro do executam os registros se o componente ProductComponent estiver instalado. O valor -1 no campo Raiz é necessário para executar o registro em HKEY_LOCAL_MACHINE para uma instalação por usuário e em HKEY_CURRENT_USER para uma instalação por usuário. O registro com uma cadeia de caracteres vazia no campo Registro adiciona uma subchave para o aplicativo sob a chave do Registro AppPaths e define o valor "(Default)" para o caminho completo do arquivo executável do aplicativo. O registro MyAppPathAlias mapeia o arquivo executável para um alias de aplicativo e permite que o aplicativo seja iniciado se o usuário digitar o alias "puapct" em um prompt de linha de comando. O registro MyAppPathRegistration mapeia o nome do arquivo executável para o caminho completo do arquivo.
| Registo | Raiz | Chave | Nome | Valor | Componente |
|---|---|---|---|---|---|
| -1 | Software\Microsoft\MyAppPathRegistrationLocation | [RegRoot]\Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | Componente de Produto | ||
| MyAppPathAlias | -1 | Software\Microsoft\Windows\CurrentVersion\App Paths\PUAPCT.exe | [#MyAppFile] | Componente do Produto | |
| MyAppPathRegistration | -1 | Software\Microsoft\Windows\CurrentVersion\App Paths\PUASample1.exe | [#MyAppFile] | Componente do Produto |
Reprodução Automática Cancelar Registo
O PUASample.msi realiza registos que permitem ao utilizador da aplicação impedir que a Reprodução Automática de Hardware seja iniciada para dispositivos selecionados. Para obter informações sobre como registar um manipulador para cancelar a Reprodução Automática em resposta a um evento, consulte o tópico Preparação de Hardware e Software para Utilização com a Reprodução Automática na seção Extensibilidade do Shell do Guia do Desenvolvedor do Shell . O registro a seguir registra o manipulador especificado no campo Name quando o componente ProductComponent é instalado. O valor -1 no campo Raiz é necessário para especificar ao Windows Installer que o registro deve ser redirecionado para um local que depende do contexto de instalação.
| Registo | Raiz | Chave | Nome | Valor | Componente |
|---|---|---|---|---|---|
| CancelamentoDaInscriçãoDeAutoplay | -1 | SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\CLSID | 66A32FE6-229D-427b-A608-D273F40C034C | Componente de Produto |
Registo do Manipulador de Pré-visualização
O PUASample.msi executa os registos necessários para instalar um manipulador de visualização que permite uma visualização somente leitura de ficheiros .pua sem iniciar a aplicação. Para obter informações sobre como registrar manipuladores de visualização, consulte o tópico Registrando manipuladores de visualização na seção de extensibilidade do shell do Guia do desenvolvedor do Shell. Os registros a seguir na tabela Registry registram o manipulador quando o componente ProductComponent é instalado. O valor -1 no campo Raiz é necessário para especificar ao Windows Installer que o registro deve ser redirecionado para um local que depende do contexto de instalação.
Tabela do Registo
| Registo | Raiz | Chave | Nome | Valor | Componente |
|---|---|---|---|---|---|
| MyPreviewHandlerRegistration1 | -1 | Software\Classes\.pua | puafile | Componente do Produto | |
| MyPreviewHandlerRegistration2 | -1 | Software\Microsoft\Windows\CurrentVersion\PreviewHandlers | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | Gestor de Pré-visualização PUA TEST do Microsoft Windows | Componente de Produto |
| MyPreviewHandlerRegistration3 | -1 | Software\Classes\puafile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f} | {1531d583-8375-4d3f-b5fb-d23bbd169f22} | Componente do Produto | |
| MyPreviewHandlerRegistration4 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Per-User Application Exemplo 1 Manipulador de Pré-visualização | Componente do Produto | |
| MyPreviewHandlerRegistration5 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | ID do aplicativo | {6d2b5079-2f0b-48dd-ab7f-97cec514d30b} | Componente do Produto |
| MyPreviewHandlerRegistration6 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Nome de Exibição | @shell32,-38242 | Componente do Produto |
| MyPreviewHandlerRegistration7 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22} | Ícone | notepad.exe,2 | Componente do Produto |
| MyPreviewHandlerRegistration8 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ThreadingModel | Apartamento | ComponenteDoProduto |
| MyPreviewHandlerRegistration9 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | #%%SystemRoot%\system32\shell32.dll | Componente de Produto | |
| MyPreviewHandlerRegistration10 | -1 | Software\Classes\CLSID\{1531d583-8375-4d3f-b5fb-d23bbd169f22}\InProcServer32 | ProgID | puafile | Componente do Produto |