Contexto de instalação

O Windows Installer pode instalar um pacote em um computador em dois contextos de instalação: por computador e por usuário. Uma instalação por computador do pacote é necessária para permitir que todos os usuários do computador acessem e usem o aplicativo. Como uma instalação por computador faz alterações no sistema que afetam todos os usuários, os usuários padrão com privilégios limitados podem ser impedidos de instalar um pacote no contexto por computador sem antes obter permissão.

É possível especificar o contexto de instalação criando o pacote para instalação por usuário ou por computador e usando as propriedades ALLUSERS e MSIINSTALLPERUSER. Com base nessas propriedades, o Windows Installer redireciona automaticamente os valores das propriedades e registros da pasta para locais com o contexto por usuário ou por computador.

Observação

A propriedade MSIINSTALLPERUSER, disponível a partir do Windows Installer 5.0, Windows Server 2008 R2 e Windows 7, pode facilitar o desenvolvimento de um único pacote que pode ser instalado no contexto por computador ou por usuário. Para obter informações sobre como desenvolver um pacote de uso duplo que fornece ao usuário a capacidade de escolher o contexto de instalação no momento da instalação, consulte Criação de pacote único. O Windows Installer ignorará a propriedade MSIINSTALLPERUSER se o valor de ALLUSERS não for 2. O Windows Installer sempre redefine o valor de ALLUSERS para 1 quando ele é instalado no contexto por computador e redefine o valor de ALLUSERS para uma cadeia de caracteres vazia ("") quando ele é instalado no contexto por usuário.

 

Redirecionamento de atalho

A tabela a seguir compara os locais de atalhos para contextos de instalação por computador e por usuário.

Contexto de instalação por computador (ALLUSERS=1) Contexto de instalação por usuário (ALLUSERS="")
Os aplicativos aparecem em Adicionar/Remover Programas no Painel de Controle para todos os usuários do computador.
Os aplicativos aparecem somente em Adicionar/Remover Programas no Painel de Controle para os usuários que instalaram os aplicativos.
Os atalhos são instalados no perfil Todos os Usuários.
Os atalhos são instalados somente no perfil desse usuário.
Ícones e transformações são armazenados em %WINDOWS%\Installer\{ProductCode}.
Ícones e transformações são armazenados em %USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID}

 

Redirecionamento de registro

A tabela a seguir compara os locais de entradas de registro para os contextos de instalação por computador e por usuário.

Contexto de instalação por computador (ALLUSERS=1) Contexto de instalação por usuário (ALLUSERS="")
O Windows Installer grava ou remove valores de registro inseridos na tabela Registro e na tabela RemoveRegistry, com o valor -1 na coluna Root, em HKEY_LOCAL_MACHINE.
O Windows Installer grava ou remove valores de registro inseridos na tabela Registro e na tabela RemoveRegistry, com o valor -1 na coluna Root, em HKEY_CURRENT_USER.
O Windows Installer grava ou remove valores de registro inseridos na tabela Registro e na tabela RemoveRegistry, com o valor msidbRegistryRootClassesRoot (0) na coluna Root, em Classes de \Software\HKLM.
O Windows Installer grava ou remove valores de registro inseridos na tabela Registro e na tabela RemoveRegistry, com o valor msidbRegistryRootClassesRoot (0) na coluna Root, em Classes de \Software\HKCU.
O registro COM é gravado emClasses\de Software\HKLM.
O registro COM é gravado emClasses\de Software\HKCU.

 

Redirecionamento de pasta

O Windows Installer define os valores das propriedades da pasta como o caminho completo da respectiva pasta para o contexto de instalação.

Observação

As pastas são identificadas por suas constantes KNOWNFOLDERID e CSIDL. A partir do Windows Vista, os aplicativos devem usar a função SHGetKnownFolderPath e KNOWNFOLDERID para determinar o caminho completo para as pastas especiais. Os aplicativos existentes que usam a função SHGetFolderPath e as IDs de item especial constantes (CSIDL) continuarão funcionando.

 

A tabela a seguir compara os locais das pastas usadas quando o Windows Installer instala o pacote nos contextos de instalação por computador ou por usuário.

Contexto de instalação por computador (ALLUSERS=1) Contexto de instalação por usuário (ALLUSERS="")
DesktopFolder O caminho completo da pasta Área de Trabalho para todos os usuários.
FOLDERID_PublicDesktop (CSIDL_COMMON_DESKTOPDIRECTORY)
DesktopFolder O caminho completo da pasta Área de Trabalho para o usuário atual.
FOLDERID_Desktop (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY)
ProgramMenuFolder O caminho completo da pasta Menu de Programas para todos os usuários.
FOLDERID_CommonPrograms (CSIDL_COMMON_PROGRAMS)
ProgramMenuFolder O caminho completo da pasta Menu de Programas para o usuário atual.
FOLDERID_Programs (CSIDL_PROGRAMS)
StartMenuFolder O caminho completo da pasta Menu Iniciar para todos os usuários.
FOLDERID_CommonStartMenu (CSIDL_COMMON_STARTMENU)
StartMenuFolder O caminho completo da pasta Menu Iniciar para o usuário atual.
FOLDERID_StartMenu (CSIDL_STARTMENU)
Startupfolder O caminho completo da pasta Inicialização para todos os usuários.
FOLDERID_CommonStartup (CSIDL_COMMON_STARTUP)
Startupfolder O caminho completo da pasta Inicialização para o usuário atual.
FOLDERID_Startup (CSIDL_STARTUP)
TemplateFolder O caminho completo da pasta Modelos para todos os usuários.
FOLDERID_CommonTemplates (CSIDL_COMMON_TEMPLATES)
TemplateFolder O caminho completo da pasta Modelos para o usuário atual.
FOLDERID_Templates (CSIDL_TEMPLATES)
AdminToolsFolder O caminho completo da pasta Ferramentas de Administração para todos os usuários.
FOLDERID_CommonAdminTools (CSIDL_COMMON_ADMINTOOLS)
AdminToolsFolder O caminho completo da pasta Ferramentas de Administração para o usuário atual.
FOLDERID_AdminTools (CSIDL_ADMINTOOLS)
AppDataFolder O caminho completo da pasta Menu de Programas.
Windows Vista e posterior: O caminho completo da pasta Roaming.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
AppDataFolder O caminho completo da pasta Menu de Programas.
Windows Vista e posterior: O caminho completo da pasta Roaming.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
CommonAppDataFolder O caminho completo da pasta que contém dados de aplicativo para todos os usuários.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
CommonAppDataFolder O caminho completo da pasta que contém dados de aplicativo para todos os usuários.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
FavoritesFolder O caminho completo da pasta Favoritos para o usuário atual.
FOLDERID_Favorites (CSIDL_FAVORITES)
FavoritesFolder O caminho completo da pasta Favoritos para o usuário atual.
FOLDERID_Favorites (CSIDL_FAVORITES)
PersonalFolder O caminho completo da pasta Meus Documentos ou da pasta Pessoal para o usuário atual.
Windows Vista e posterior: O caminho completo da pasta Documentos para o usuário atual.

FOLDERID_Documents (CSIDL_PERSONAL)
PersonalFolder O caminho completo da pasta Meus Documentos ou da pasta Pessoal para o usuário atual.
Windows Vista e posterior: O caminho completo da pasta Documentos para o usuário atual.

FOLDERID_Documents (CSIDL_PERSONAL)
SendToFolder O caminho completo da pasta SendTo.
FOLDERID_SendTo (CSIDL_SENDTO)
SendToFolder O caminho completo da pasta SendTo.
FOLDERID_SendTo (CSIDL_SENDTO)
FontsFolder O caminho completo da pasta Fontes do Sistema.
FOLDERID_Fonts (CSIDL_FONTS)
FontsFolder O caminho completo da pasta Fontes do Sistema.
FOLDERID_Fonts (CSIDL_FONTS)
ProgramFilesFolderversão de 32 bits do Windows: o valor da propriedade é o caminho completo para a pasta Arquivos de Programas para todos os usuários (por exemplo, %ProgramFiles%). O identificador dessa pasta é FOLDERID_ProgramFiles (CSIDL_PROGRAM_FILES). Os identificadores FOLDERID_ProgramFiles e FOLDERID_ProgramFilesX86 representam a mesma pasta. Os arquivos nessa pasta podem ser acessados por todos os usuários.
Versão de 64 bits do Windows: o valor da propriedade é o caminho completo para a pasta Arquivos de Programas (x86) para todos os usuários (por exemplo, %ProgramFiles(x86)%.) O identificador dessa pasta é FOLDERID_ProgramFilesX86 (CSIDL_PROGRAM_FILESX86). Os arquivos nessa pasta podem ser acessados por todos os usuários.
ProgramFilesFolderWindows Server 2008 R2 e Windows 7: o valor da propriedade é o caminho completo da pasta Programas para o usuário atual (por exemplo, %LocalAppData%\Programs). O identificador dessa pasta é FOLDERID_UserProgramFiles em sistemas de 32 bits e 64 bits. Não há nenhum identificador CSIDL equivalente para FOLDERID_UserProgramFiles. Os arquivos nessa pasta podem ser acessados somente pelo usuário que a instalou.
Windows Server 2008 e anterior e Windows Vista e anterior: nenhuma pasta compatível com contexto por usuário está disponível. O caminho é o mesmo do contexto por computador (por exemplo, %ProgramFiles% ou %ProgramFiles(x86)%.) Os arquivos nessa pasta podem ser acessados por todos os usuários.

CommonFilesFolderversão de 32 bits do Windows: o valor da propriedade é o caminho completo para a pasta Arquivos Comuns para todos os usuários (por exemplo, %ProgramFiles%\Common Files). O identificador dessa pasta é FOLDERID_ProgramFilesCommon (CSIDL_PROGRAM_FILES_COMMON). Os identificadores FOLDERID_ProgramFilesCommon e FOLDERID_ProgramFilesCommonX86 representam a mesma pasta. Os arquivos nessa pasta podem ser acessados por todos os usuários.
Versão de 64 bits do Windows: o valor da propriedade é o caminho completo para a pasta Arquivos Comuns (x86) para todos os usuários (por exemplo, %ProgramFiles(x86)%\Common Files). O identificador dessa pasta é FOLDERID_ProgramFilesCommonX86 (CSIDL_PROGRAM_FILES_COMMONX86). Os arquivos nessa pasta podem ser acessados por todos os usuários.
CommonFilesFolderWindows Server 2008 R2 e Windows 7: o valor da propriedade é o caminho completo da pasta Comum para o usuário atual (por exemplo, %LocalAppData%\Common). O identificador dessa pasta é FOLDERID_UserProgramFilesCommon em sistemas de 32 bits e 64 bits. Não há nenhum identificador CSIDL equivalente para FOLDERID_UserProgramFilesCommon. Os arquivos nessa pasta podem ser acessados somente pelo usuário que a instalou.
Windows Server 2008 e anterior e Windows Vista e anterior: nenhuma pasta compatível com contexto por usuário está disponível. O caminho é o mesmo que o no contexto por computador (por exemplo, %ProgramFiles%\Common Files ou %ProgramFiles(x86)%\Common Files). Os arquivos nessa pasta podem ser acessados por todos os usuários.

ProgramFiles64Folder O valor da propriedade é o caminho completo para a pasta Arquivos de Programas para todos os usuários (por exemplo, %ProgramFiles%). O identificador dessa pasta é FOLDERID_ProgramFilesX64. Não há nenhum identificador CSIDL equivalente para FOLDERID_ProgramFilesX64. Essa é a pasta predefinida para componentes de 64 bits e se aplica a sistemas de 64 bits. Os arquivos nessa pasta podem ser acessados por todos os usuários.
ProgramFiles64FolderWindows Server 2008 R2 e Windows 7: o valor da propriedade é o caminho completo da pasta Programas para o usuário atual (por exemplo, %LocalAppData%\Programs). O identificador dessa pasta é FOLDERID_UserProgramFiles. Não há nenhum identificador CSIDL equivalente para FOLDERID_UserProgramFiles. Os arquivos nessa pasta podem ser acessados somente pelo usuário que a instalou.
Windows Server 2008 e anterior e Windows Vista e anterior: nenhuma pasta compatível com contexto por usuário está disponível. O caminho é o mesmo do contexto por computador (por exemplo, %ProgramFiles%.) Os arquivos nessa pasta podem ser acessados por todos os usuários.

CommonFiles64Folder O valor da propriedade é o caminho completo para a pasta Arquivos Comuns para todos os usuários (por exemplo, %ProgramFiles%\Common Files). Essa é a pasta predefinida para componentes de 64 bits e se aplica a sistemas de 64 bits. O identificador dessa pasta é FOLDERID_ProgramFilesCommonX64. Não há nenhum identificador CSIDL equivalente para FOLDERID_ProgramFilesCommonX64. Os arquivos nessa pasta podem ser acessados por todos os usuários.
CommonFiles64FolderWindows Server 2008 R2 e Windows 7: o valor da propriedade é o caminho completo da pasta Comum para o usuário atual (por exemplo, %LocalAppData%\Common). O identificador dessa pasta é FOLDERID_UserProgramFilesCommon. Não há nenhum identificador CSIDL equivalente para FOLDERID_UserProgramFilesCommon. Os arquivos nessa pasta podem ser acessados somente pelo usuário que a instalou.
Windows Server 2008 e anterior e Windows Vista e anterior: nenhuma pasta compatível com contexto por usuário está disponível. O caminho é o mesmo do contexto por computador (por exemplo, %ProgramFiles%\Common Files.) Os arquivos nessa pasta podem ser acessados por todos os usuários.

WindowsFolder O caminho completo da pasta do Windows.
FOLDERID_Windows (CSIDL_WINDOWS)
WindowsFolder O caminho completo da pasta do Windows.
FOLDERID_Windows (CSIDL_WINDOWS)
SystemFolder O caminho completo da pasta Sistema.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
SystemFolder O caminho completo da pasta Sistema.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
LocalAppDataFolder O caminho completo da pasta que contém aplicativos locais (não em roaming).
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
LocalAppDataFolder O caminho completo da pasta que contém aplicativos locais (não em roaming).
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
MyPicturesFolder O caminho completo da pasta Imagens ou Minhas Imagens.
FOLDERID_Pictures (CSIDL_MYPICTURES)
MyPicturesFolder O caminho completo da pasta Imagens ou Minhas Imagens.
FOLDERID_Pictures (CSIDL_MYPICTURES)
PrintHoodFolder O caminho completo da pasta PrintHood.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
PrintHoodFolder O caminho completo da pasta PrintHood.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
NetHoodFolder O caminho completo da pasta NetHood.
FOLDERID_NetHood (CSIDL_NETHOOD)
NetHoodFolder O caminho completo da pasta NetHood.
FOLDERID_NetHood (CSIDL_NETHOOD)
RecentFolder O caminho completo da pasta Recente.
FOLDERID_Recent (CSIDL_RECENT)
RecentFolder O caminho completo da pasta Recente.
FOLDERID_Recent (CSIDL_RECENT)

 

Observação

Um aplicativo pode chamar as funções MsiEnumProducts ou MsiEnumProductsEx para enumerar todos os produtos instalados no sistema. Em seguida, o aplicativo pode recuperar informações sobre o contexto de instalação desses produtos chamando as funções MsiGetProductInfoEx ou MsiGetProductInfo. Para obter informações, consulte Como determinar o contexto da instalação.