Partilhar via


Criação de pacote único

Um pacote de dupla finalidade é um pacote do Windows Installer 5.0 que foi criado para ser capaz de instalar um aplicativo no contexto de instalação por usuário ou por máquina . Os desenvolvedores de instalação que usam um pacote de dupla finalidade para seus aplicativos podem fornecer aos usuários uma escolha de contexto de instalação no momento da instalação e podem remover prompts de credenciais UAC de instalações por usuário no Windows 7 ou Windows Server 2008 R2. O desenvolvimento de um pacote de dupla finalidade do Windows Installer 5.0 para instalação no Windows 7 e no Windows Server 2008 R2 é conhecido como criação de pacote único.

Você pode começar a desenvolver pacotes de dupla finalidade para Windows 7 e Windows Server 2008 R2 usando o Windows Installer 5.0, a propriedade MSIINSTALLPERUSER, a propriedade ALLUSERS e as pastas conhecidas e registros com capacidade por usuário do do Shell do Windows. Quando o Windows Installer 5.0 instala um pacote de dupla finalidade no contexto por usuário no Windows 7 ou no Windows Server 2008 R2, o instalador direciona entradas de arquivo e registro para locais por usuário e não exibe solicitações de credenciais do UAC. Quando o Windows Installer 5.0 instala um pacote de dupla finalidade no contexto por máquina, o instalador direciona arquivos e entradas do Registro para locais por máquina e solicita credenciais do UAC para confirmar que o usuário tem privilégios suficientes para instalar software para todos os usuários do computador. Depois que o Windows Installer 5.0 instala um aplicativo, ele usa o mesmo contexto de instalação para todas as atualizações, reparos ou remoção subsequentes do aplicativo.

Windows Installer 4.5 ou anterior: A propriedade MSIINSTALLPERUSER e as versões por utilizador das pastas referenciadas pela propriedade ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Foldere CommonFiles64Folder não são suportadas. As pastas FOLDERID_UserProgramFiles e FOLDERID_UserProgramFilesCommon estão disponíveis a partir do Windows 7 e do Windows Server 2008 R2. Isso significa que as instalações desenvolvidas para o Windows Installer 4.5 ou anteriores direcionam arquivos e entradas do Registro para FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 e FOLDERID_ProgramFilesCommonX64. Como esses são locais acessíveis a outros usuários do computador, o Windows Vista e sistemas posteriores exigem a exibição de solicitações de credenciais do UAC.

Quando um utilizador instala um pacote de duplo propósito criado para o Windows Installer 5.0 com o Windows Installer 4.5 ou anterior, o instalador ignora a propriedade MSIINSTALLPERUSER. Nesse caso, a instalação pode direcionar arquivos e entradas do Registro para locais acessíveis a outros usuários e exigir que o sistema exiba solicitações de credenciais do UAC. O Windows Installer 5.0 pode instalar um pacote que foi desenvolvido para o Windows Installer 4.5 ou anterior, no entanto, a instalação direciona arquivos e entradas do Registro para locais acessíveis a outros usuários e requer que o sistema exiba solicitações de credenciais do UAC.

Diretrizes de Desenvolvimento

Siga as seguintes diretrizes de criação de pacote único para garantir que o pacote possa ser instalado no contexto por usuário ou por máquina. Siga estas diretrizes para permitir que o usuário escolha no momento da instalação uma instalação por usuário ou por máquina e remova os prompts do UAC das instalações por usuário.

  • A instalação por usuário requer o Windows Installer 5.0 no Windows 7 ou Windows Server 2008 R2. Você deve informar ao usuário que o pacote suporta a instalação por máquina do aplicativo em versões anteriores do sistema.

  • Inicialize os valores para as propriedades ALLUSERS e MSIINSTALLPERUSER no Tabela de Propriedades do seu pacote de dupla finalidade. Use ALLUSERS valor de 2 e um MSIINSTALLPERUSER valor de 1 como os valores iniciais. Isso especifica a instalação por usuário como o padrão para o pacote de dupla finalidade.

  • Considere a criação de uma caixa de diálogo da interface de utilizador do seu pacote de uso duplo que permita ao utilizador escolher o contexto durante a instalação. Crie os controlos nesta caixa de diálogo personalizada para definir os valores das propriedades ALLUSERS e MSIINSTALLPERUSER. Para o valor 2 de ALLUSERS, defina MSIINSTALLPERUSER para 1 para especificar uma instalação por usuário e defina MSIINSTALLPERUSER para uma cadeia de caracteres vazia ("") para especificar uma instalação por máquina. Os usuários também podem definir o ALLUSERS e MSIINSTALLPERUSER na linha de comando se instalarem o pacote a partir da linha de comando.

  • Valide o pacote usando Avaliadores de Consistência Interna - ICEs. O pacote deve ser capaz de passar na validação realizada por ICE105 para ser considerado um pacote válido de dupla finalidade.

  • Use o Tabela do Registro e Tabela RemoveRegistry para redirecionar as entradas do Registro para as partes por usuário do Registro durante as instalações por usuário. Em uma instalação por usuário, as entradas do Registro que têm -1 na coluna Raiz são redirecionadas para HKEY_CURRENT_USERe, em uma instalação por máquina, são direcionadas para HKEY_LOCAL_MACHINE. Em uma instalação por usuário, as entradas do Registro que têm msidbRegistryRootClassesRoot (0) na coluna Root são redirecionadas para HKCU\Software\Classese, em uma instalação por máquina, elas são direcionadas para HKLM\Software\Classes.

  • Use a propriedade ProgramFilesFolder na tabela Directory de de Pacotes do Windows Installer de 32 bits para especificar os locais de diretórios que contêm componentes de 32 bits não compartilhados entre aplicativos. Quando um usuário instala o pacote de dupla finalidade usando o contexto por máquina, esses componentes são salvos na pasta Arquivos de Programas em versões de 32 bits do Windows e na pasta Arquivos de Programas (x86) em versões de 64 bits do sistema. Os componentes nesses diretórios podem ser acessados por todos os usuários. Quando um usuário instala o pacote de dupla finalidade no Windows 7 ou no Windows Server 2008 R2 usando o contexto por usuário, esses componentes são salvos na pasta Programas do usuário atual (por exemplo, em %LocalAppData%\Programs) e podem ser acessados somente por esse usuário.

  • Use a propriedade CommonFilesFolder na tabela Directory de de Pacotes do Windows Installer de 32 bits para especificar os locais de diretórios que contêm componentes de 32 bits compartilhados entre aplicativos. Quando um usuário instala o pacote de dupla finalidade usando o contexto por máquina, esses componentes são salvos na pasta Arquivos comuns e podem ser acessados por todos os usuários. Quando um usuário instala o pacote de dupla finalidade no Windows 7 ou Windows Server 2008 R2 usando o contexto por usuário, esses componentes são salvos na pasta Common do usuário atual (por exemplo, em %LocalAppData%\Programs\Common) e podem ser acessados somente por esse usuário.

  • Use a propriedade ProgramFiles64Folder na tabela Directory de Pacotes do Windows Installer de 64 bits para especificar os locais de diretórios que contêm componentes de 64 bits não compartilhados entre aplicativos. Quando um usuário instala o pacote de dupla finalidade usando o contexto por máquina, esses componentes são salvos na pasta Arquivos de Programas. Os componentes nesses diretórios podem ser acessados por todos os usuários. Quando um usuário instala o pacote de dupla finalidade no Windows 7 ou no Windows Server 2008 R2 usando o contexto por usuário, esses componentes são salvos na pasta Programas do usuário atual (por exemplo, em %LocalAppData%\Programs) e podem ser acessados somente por esse usuário. Para obter mais informações sobre como criar um pacote para instalar um aplicativo em sistemas operacionais de 64 bits, consulte Windows Installer em sistemas operacionais de 64 bits.

  • Use a propriedade CommonFiles64Folder na tabela Directory de Pacotes do Windows Installer de 64 bits para especificar os locais de diretórios que contêm componentes de 64 bits compartilhados entre aplicativos. Quando um usuário instala o pacote de dupla finalidade usando o contexto por máquina, esses componentes são salvos na pasta Arquivos comuns e podem ser acessados por todos os usuários. Quando um usuário instala o pacote de dupla finalidade no Windows 7 ou Windows Server 2008 R2 usando o contexto por usuário, esses componentes são salvos na pasta Common do usuário atual (por exemplo, em %LocalAppData%\Programs\Common) e podem ser acessados somente por esse usuário.

  • Use as propriedades ProgramFilesFolder e CommonFilesFolder na tabela Directory de de pacotes do Windows Installer de 64 bits para especificar o local dos diretórios que contêm componentes de 32 bits. Use nomes diferentes para as versões de 32 bits e 64 bits de quaisquer componentes fornecidos com o mesmo nome ou, alternativamente, salve as versões em pastas diferentes. Por exemplo, adicione informações à tabela Directory para especificar o local do diretório que contém a versão de 32 bits como [ProgramFilesFolder]\Nome do ISV\Nome do Aplicativo\x86 e o local do diretório que contém a versão de 64 bits como [Program64FilesFolder]\Nome do ISV\Nome do Aplicativo\x64. Em seguida, uma instalação por máquina salva a versão de 32 bits em Arquivos de Programas(x86)\Nome do ISV\Nome do Aplicativo\x86 e salva a versão de 64 bits em Arquivos de Programas\Nome do ISV\Nome do Aplicativo\x64. Uma instalação por usuário salva a versão de 32 bits em %LocalAppData%\Programs\Nome do ISV\Nome do Aplicativo\x86 e instala a versão de 64 bits no %LocalAppData%\Programs\Nome do ISV\Nome do Aplicativo\x64.

  • Armazene dados de configuração por usuário para o aplicativo em \Users\nome de usuário\AppData.

  • Armazene modelos e arquivos gerados pelo aplicativo em subpastas em \Users\nome de usuário.

  • Se seu aplicativo usa extensões de shell, você deve usar os pontos de extensibilidade de shell por usuário que estão disponíveis a partir do Windows 7 ou Windows Server 2008 R2.

  • Não use ações personalizadas em seu pacote que exijam privilégios elevados para serem executados. A tabela CustomAction não deve conter ações personalizadas que tenham sido marcadas para serem executadas com privilégios elevados. Para obter mais informações sobre ações personalizadas elevadas, consulte Segurança de Ações Personalizadas.

  • Não escreva em nenhuma pasta global do sistema. A tabela Directory não deve conter uma referência a nenhuma das seguintes propriedades da pasta do sistema.

AdminToolsFolder
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume

Exemplo

Um exemplo de um pacote de dupla finalidade é fornecido no Windows SDK Components for Windows Installer Developers como o arquivo PUASample1.msi. Se você tiver o SDK atual, terá acesso a todas as ferramentas e dados necessários para reproduzir o pacote de instalação de exemplo. Para obter mais informações sobre este exemplo, consulte exemplo de criação de pacote único.