Utilitaire InstallUtil .net - 32 bits vs 64 bits
-
22-07-2019 - |
Question
J'ai un service Windows compilé en tant que AnyCPU. J'essaie de le distribuer dans notre installateur. Cependant ... Je ne suis pas certain de la différence entre les versions 32 bits et 64 bits de InstallUtil. Est-ce que quelqu'un sait ce qu'il y en a (le cas échéant)?
Sur mon ordinateur 64 bits, je peux exécuter le $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727 ou le $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727.
Dans les deux cas, l'indicateur * 32 n'est pas appliqué au processus de service résultant dans le gestionnaire de tâches.
Seul InstallUtil 32 bits fonctionne sur des machines 32 bits (évidemment).
Faut-il utiliser la version \ Framework64 \ de InstallUtil? Que fait-il différemment?
La solution
Selon this , vous êtes censé utiliser le 64 bits version pour installer les assemblys 64 bits et MSIL, mais il ne dit pas pourquoi.
À partir de .NET Framework version 2.0, la version 32 bits de le common language runtime (CLR) est livré uniquement avec la version 32 bits de l'outil d'installation, mais la version 64 bits du CLR est livrée avec versions 32 bits et 64 bits de l'outil d'installation. Lorsque vous utilisez le CLR 64 bits, utilisez l'outil d'installation 32 bits pour installer le logiciel 32 bits assemblages, et l'outil d'installation 64 bits pour installer 64 bits et Assemblys de langage intermédiaire Microsoft (MSIL). Les deux versions de l'outil d'installation se comporte de la même manière.
Je crois que ici explique pourquoi. Si vous regardez au bas de l'article, cela explique certaines différences entre les deux et le moment d'utiliser intallutil 32 bits.
Installutil.exe est conçu pour une plate-forme spécifique. Par conséquent, il commencer en tant que processus 32 ou 64 bits et la ruche de registre associée sera mis à jour. Notez que si vous avez un composant logiciel enfichable construit avec la plate-forme changez, vous ne pourrez l’inscrire que dans l’une des ruches (32 bits ou 64 bits).
Autres conseils
Je suis tombé dessus aussi. Le problème était que mon projet VS2008 était défini sur Platform Target: Any CPU. Peu importe le fichier InstallUtil.exe (32 ou 64) que j'ai exécuté sur le système d'exploitation 64 bits, l'installation était en 64 bits.
J'ai modifié le paramètre de projet Target en x86, puis exécuté le fichier installutil.exe 32 bits et tout fonctionne correctement. Il affiche maintenant le drapeau * 32 dans le Gestionnaire des tâches.
Si vous installez un assembly 64 bits uniquement, InstallUtil 32 bits ne pourra pas le charger. Vous devrez utiliser la version 64 bits.