sexta-feira, 30 de janeiro de 2009

Falta de Permissão na Instalação do .Net 3.5

Resolvi escrever esse post por causa de um problema que tive na instalação do Framework .Net 3.5.

Para falar a verdade é um problema específico que acontece por falta de permissão do usuário que efetua a instalação, mas como esse cenário é comum nas empresas hoje em dia, tenho certeze que vai servir para alguém.

Para detalhar o problema, preciso explicar como funciona a rede na empresa onde trabalho. Lá os computadores ficam em baixo do piso. Os desenvolvedores não têm acesso físico à máquina. Não podemos nem desligar as benditas! Eu fiz isso no primeiro dia. No dia seguinte, tiveram que chamar o técnico. Que vergonha, o sujeito teve que levantar o piso e colocar metade do corpo dentro do chão para religar a máquina. Uma cena bizarra!

Bom, a rede não poderia ser diferente. Tudo é controlado de forma rígida. Tive que assinar dois documentos: um para autorizar a criação do meu usuário na rede; outro para justificar o motivo de meu usuário necessitar privilégios de administrador do computador.

Apesar de tudo isso, não tenho controle total sobre meu computador. Existem algumas normas configuradas no Active Directory (AD) que me impedem de acessar recursos como: adicionar e remover programas, papel de parede do desktop, entre outras configurações do Windows.

Para verificar se o Service Pack 2 (SP2) do Framework .Net 2.0 estava instalado, eu precisei criar um usuário no meu computador, com privilégios de administrador, sair da sessão (logoff) e entrar com esse usuário local. Só dessa forma consegui acessar a opção adicionar e remover programas do Windows.

Tendo esse cenário em vista, começam os problemas. Eu precisava instalar o Visual Studio 2008! E logo na primeira etapa, que é justamente a instalação do Framework .Net 3.5, o instalador abortava e saía da instalação com erro. Tentei primeiro diversas coisas como: reiniciar o computador, limpar o registro, logar com um usuário local, fora da rede etc.

Comecei a descobrir a solução quando baixei um pacote de instalação do .Net 3.5 separado da instalação do Visual Studio.

Download do pacote completo de redistribuição do Framework .Net 3.5
http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe

Pelo log do instalador, eu vi que o problema era em um componente chamado XPSEPSC que estava causando o erro. Eu descobri um link para baixar e instalar separadamente o tal componente problemático.

Instalador do XPSEPSC
http://www.download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsepsc-x86-en-us_f01c40d4ce7a451a51724bb2c44c164d063938e6.exe

Nesse momento eu vi uma mensagem de erro na instalação do XPSEPSC que me chamou a atenção. Alguma coisa dizendo que eu precisava de priviégios administrativos para continuar na instalação. Percebi então que o problema era de segurança e alguma norma do AD estava interferindo em minha instalação.

Nas pesquisas que fiz, descobri que este problema também se apresenta na forma de uma mensagem de erro que informa um termo "return value 3".

Para resolver, encontrei um pacote de ferramentas para administração e manutenção de servidores de forma remota. Chama PSTools. Nesse pacote tem uma ferramenta sensacional chamada PSExec.exe. Essa ferramenta faz uma impersonalização - se é que essa palavra existe - mas basicamente ela executa uma outra aplicação "por você" com identidade do usuário System, que é o usuário local com permissão total no Windows.

Instalador do PSTools
http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

O PSTools é um pacote de aplicativos, e o que nos interessa é o PSExec. Copie-o no diretório do Windows para ficar mais fácil de usar, pois ele é utilizado via linha de comando.

Utilize o comando abaixo para executar o instalador do XPSEPSC, por exemplo:
psexec -s -i "c:\exemplo\XPSEPSC-x86-en-US.exe"

Sempre digite o caminho absoluto. O PSExec não funciona com paths relativos.

Outro detalhe. Não se assuste se o seu anti-virus detectar esse aplicativo como um vírus. O próprio autor comenta no site do link acima que esse programa já foi usado por vários vírus para efetuar suas ações maliciosas, mas ele em si não é um vírus.

Até a próxima!
Renato Graccula

Nenhum comentário: