Diretrizes para pacotes
Como o Controle de Conta de Usuário (UAC) no Windows Vista restringe os privilégios durante uma instalação, os desenvolvedores de pacotes do Windows Installer não devem presumir que a instalação sempre terá acesso a todas as partes do sistema.
Um pacote do instalador que pode ser implantado com êxito para usuários padrão por meio da Política de Grupo deve, na maioria dos casos, também funcionar com o UAC no Windows Vista. Exceções a isso poderão ocorrer se a tabela InstallUISequence contiver a ação LaunchConditions ou a tabela LaunchCondition contiver uma condição baseada na propriedade Privileged. Os desenvolvedores de pacotes do Windows Installer devem, portanto, seguir estas diretrizes para garantir que o pacote funcione com o UAC e o Windows Vista.
- Ao incluir uma condição de contexto de instalação com uma ação na tabela InstallUISequence, use uma instrução condicional com base na propriedade Privileged. Não use uma condição baseada na propriedade AdminUser.
- Ao incluir o contexto de instalação com as condições de inicialização da instalação, use um Tipo de Ação Personalizada 19 na tabela InstallExecuteSequence e torne a ação personalizada condicional à propriedade Privileged. Não use uma ação na tabela LaunchCondition com uma condição baseada na propriedade AdminUser ou na propriedade Privileged.
- Para ler ou modificar a configuração do sistema, use uma ação personalizada de execução adiada na tabela InstallExecuteSequence. Não use ações personalizadas de execução imediata na tabela InstallUISequence para modificar a configuração do sistema.
- Para modificar partes do sistema que não são específicas do usuário, use uma ação personalizada adiada na tabela InstallExecuteSequence. Você deve incluir o bit msidbCustomActionTypeNoImpersonate no tipo de ação personalizada.
- Omita o Bit 3 do valor da Propriedade de Resumo de Contagem de Palavras para indicar que o pacote pode ser necessário para ser elevado. Não inclua esse bit, a menos que privilégios elevados não sejam necessários para instalar este pacote.
- Inclua um manifesto com o Nível de Execução Solicitado do aplicativo.
- Inclua um certificado na tabela MsiPatchCertificate do pacote original e assine todos os patches com o mesmo certificado.
- Se privilégios elevados forem necessários para instalar um pacote do Windows Installer, o autor do pacote deverá incluir o atributo ElevationShield para o controle PushButton usado para iniciar a instalação. Isso alertará o usuário que clicar no botão exibirá a caixa de diálogo do UAC solicitando autorização do administrador para continuar a instalação.
- Defina a propriedade MSIDEPLOYMENTCOMPLIANT como 1 para indicar ao Windows Installer que o pacote foi criado e testado para estar em conformidade com o UAC no Windows Vista. Se essa propriedade não estiver definida, o instalador determinará se o pacote está em conformidade com o UAC.
Fora da Política de Grupo, a verificação a seguir de conformidade com o UAC pode ser usada no Windows XP.
Para verificar a conformidade com o UAC fora da Política de Grupo
Faça logon no computador como administrador.
Anuncie o pacote para uma instalação por máquina:
msiexec /jm package.msi
Desligue o computador.
Faça login no computador como um usuário padrão.
Tente instalar o pacote anunciado:
msiexec /i package.msi
Na maioria dos casos, se a instalação for bem-sucedida, o pacote será compatível com o UAC.
Defina a propriedade MSIDEPLOYMENTCOMPLIANT no pacote como 1.
Teste a instalação correta do pacote usando o Windows Vista.