Pergunta

Eu tenho um serviço do Windows compilado como AnyCPU. Estou tentando obtê-lo em nosso instalador para distribuir. No entanto ... Eu sou claro sobre a diferença entre as versões de InstallUtil 32 bits e 64 bits. Alguém sabe o que (se houver) existem?

Na minha máquina de 64 bits, eu posso correr tanto o $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727 ou $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727.

Em ambos os casos, o processo de serviço, resultando em Task Manager não tem a * 32 flag aplicada a ele.

Apenas a 32 bit InstallUtil funciona em máquinas de 32 bits (obviamente).

Existe uma necessidade de usar o \ Framework64 \ versão do InstallUtil? O que ele faz de forma diferente?

Foi útil?

Solução

De acordo com a este , você deveria usar o bit 64 versão para instalar 64-bit e montagens MSIL, mas não diz porquê.

Começando com o .NET Framework versão 2.0, a versão de 32-bit O Common Language Runtime (CLR) vem com apenas a versão de 32 bits da ferramenta Installer, mas a versão de 64 bits dos navios CLR com ambas as versões de 32 bits e de 64 bits da ferramenta instalador. Ao usar o 64-bit CLR, use a ferramenta de instalação de 32 bits para instalar 32-bit montagens e a ferramenta de instalador de 64 bits para instalar 64-bit e Microsoft Intermediate Language (MSIL) assembléias. Ambas as versões do a ferramenta Installer se comportam da mesma.

Eu acredito aqui explica o porquê. Se você olhar para a parte inferior do post, ele explica algumas diferenças entre os dois e quando usar o 32-bit intallutil.

Installutil.exe é construído para uma plataforma específica, portanto, ele vai começar como um processo de 32 ou 64 bits e o ramo de registo relacionada será Atualizada. Note que se você tiver um snap-in construído com a plataforma switch, você só será capaz de registrá-lo em uma das colméias (32 bits ou 64 bits).

Outras dicas

Eu corri em toda esta bem. A questão era meu projeto VS2008 foi criado para a plataforma alvo: Qualquer CPU. Não importa qual InstallUtil.exe (32 ou 64) corri no sistema operacional de 64 bits foi a instalação de 64 bits.

Eu mudei meu projeto definição de metas para x86 e, em seguida, correu o installutil.exe 32 bits e tudo funciona bem. Ele agora mostra a bandeira * 32 no Gerenciador de tarefas.

Se você está instalando um 64-bit única assembleia, a 32-bit InstallUtil não será capaz de carregá-lo. Você vai precisar usar a versão de 64-bit.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top