2009-10-30 17 views
13

Ho un servizio Windows compilato come AnyCPU. Sto cercando di inserirlo nel nostro programma di installazione da distribuire. Tuttavia ... Non sono chiara la differenza tra le versioni a 32 bit e 64 bit di InstallUtil. Qualcuno sa cosa (se esiste) ci sono?.net Utilità InstallUtil - 32 bit vs 64 bit

Sulla mia macchina a 64 bit, posso eseguire il $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727 o $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727.

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

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

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

risposta

14

Secondo this, si suppone che si utilizzi la versione a 64 bit per installare assiemi a 64 bit e MSIL, ma non viene spiegato il motivo.

partire con .NET Framework versione 2.0, la versione a 32 bit di Common Language Runtime (CLR) navi con solo la versione a 32 bit dello strumento di installazione, ma la versione a 64 bit di il CLR viene fornito con 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 gli assembly a 32 bit e lo strumento di installazione a 64 bit per installare gli assembly MSIL (Microsoft intermediate language) 64-bit e . Entrambe le versioni di lo strumento Installer si comportano allo stesso modo.

Credo che here spieghi perché. Se guardi in fondo al post, spiega alcune differenze tra i due e quando usare l'intallutil a 32 bit.

Installutil.exe è costruito per una piattaforma specifica, pertanto sarà iniziare come un processo a 32 o 64 bit e il relativo registro alveare sarà aggiornate. Si noti che se si dispone di uno snap-in integrato con lo switch della piattaforma , sarà possibile registrarlo solo in uno degli alveari (a 32 o 64 bit).

+0

Perfetto, il secondo spiega un'intuizione che non ho potuto confermare. Grazie! –

2

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 modificato l'impostazione di progetto Target su x86 e poi ho eseguito il file installutil.exe a 32 bit e tutto funziona correttamente. Ora mostra il flag * 32 in Task Manager.

1

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