Falhas de arquivo/registro MSI no Windows Server 2008/Windows 7 (x64)
-
28-09-2019 - |
Pergunta
Estou tentando implantar um aplicativo no Windows Server 2008 (SP2 X64) e Windows 7 (x64), usando o projeto do instalador VS2005. A versão MSI (eu acho) é o 2.0.
Tudo funciona bem, exceto que algumas chaves do registro e alguns arquivos não são copiados na máquina de instalação. O sistema MSI não notifica nada (e não sei se o MSI registra suas operações).
Existem incompatibilidades entre o meu projeto de instalador MSI e esses novos sistemas operacionais? Parece -me que o sistema operacional se protege por ser modificado em alguma parte.
Por exemplo, estou tentando definir as chaves do registro:
Hkey_local_machine software microsoft windows nt winlogon specialAccounts userlist user
mas não é criado. No mesmo instalador, existem muitas outras teclas, que são criadas como o esperado (como sempre fizeram antes no Windows XP e Windows Server 2003).
Para fornecer outro exemplo, estou tentando instalar o arquivo
%SystemFolder% oobe info Backgrounds BackgroundDefault.jpg
(onde % SystemFolder % é tipicamente "C: Windows System32"), mas o arquivo não é copiado !!!
O que está acontecendo?
Eu encontrei o BackgroundDefault.jpg O arquivo está localizado em outro diretório: %Systemroot % syswow64 oobe info.
Mas não especifiquei nada sobre uma pasta do sistema (64 bits). Como posso copiar o arquivo no lugar certo?
Solução
Primeiro, em relação ao registro, você pode solicitar que a MSI crie um arquivo de log de suas operações como esta:
msiexec.exe -i my_msi_file.msi -l*vx logfile.txt
Isso criará um arquivo de log chamado logfile.txt
.
Segundo, parece que você está criando um MSI de 32 bits e executando-o em janelas de 64 bits. Não há nada de errado com isso, mas esteja ciente de que o Windows está usando Redirecionamento do sistema de arquivos. O Windows possui um SystemFolder separado e as chaves HKLM/Software para hospedar aplicativos de 32 bits. Se você procurar no registro no HKLM/Software, provavelmente verá uma sub-chave chamada WOW6432NODE-é aqui que os aplicativos de 32 bits escrevem seus dados de registro.