Domanda

Ho un servizio Windows compilato come AnyCPU. Sto cercando di farlo distribuire nel nostro programma di installazione. Tuttavia ... Non sono chiaro la differenza tra le versioni a 32 bit e 64 bit di InstallUtil. Qualcuno sa cosa (se presente) ci sono?

Sul mio computer a 64 bit, posso eseguire $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727 o $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727.

In entrambi i casi, al processo di servizio risultante in Task Manager non è stato applicato il flag * 32.

Solo InstallUtil a 32 bit funziona su macchine a 32 bit (ovviamente).

È necessario utilizzare la versione \ Framework64 \ di InstallUtil? Che cosa fa diversamente?

È stato utile?

Soluzione

Secondo questo , si suppone che si usi il 64 bit versione per installare assembly a 64 bit e MSIL, ma non dice perché.

  

A partire da .NET Framework versione 2.0, la versione a 32 bit di   Common Language Runtime (CLR) viene fornito solo con la versione a 32 bit   dello strumento di installazione, ma viene fornita la versione a 64 bit del CLR   entrambe le versioni a 32 e 64 bit dello strumento di installazione. Quando si utilizza il   CLR a 64 bit, utilizzare lo strumento di installazione a 32 bit per installare a 32 bit   assembly e lo strumento di installazione a 64 bit per l'installazione a 64 bit e   Assiemi di lingua intermedia Microsoft (MSIL). Entrambe le versioni di   lo strumento Installer si comporta allo stesso modo.

Credo che qui spiega perché. Se guardi in fondo al post, vengono spiegate alcune differenze tra i due e quando usare intallutil a 32 bit.

  

Installutil.exe è creato per una piattaforma specifica, quindi lo farà   iniziare come un processo a 32 o 64 bit e il relativo hive del registro sarà   aggiornato. Nota che se hai uno snap-in integrato con la piattaforma   switch, sarai in grado di registrarlo solo in uno degli alveari   (32-bit o 64-bit).

Altri suggerimenti

Mi sono imbattuto anche in questo. Il problema era che il mio progetto VS2008 era impostato su Platform Target: Any CPU. Non importa quale InstallUtil.exe (32 o 64) ho eseguito sul sistema operativo a 64 bit che stava installando come 64 bit.

Ho cambiato l'impostazione del mio progetto Target su x86 e poi ho eseguito installutil.exe a 32 bit e tutto funziona bene. Ora mostra il flag * 32 in Task Manager.

Se si sta installando un assembly solo a 64 bit, InstallUtil a 32 bit non sarà in grado di caricarlo. Dovrai utilizzare la versione a 64 bit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top