Perché finestre affiancate (WinSxS) installare la politica per l'aggiornamento automatico quando non ci sono problemi noti tra le versioni?
-
29-08-2019 - |
Domanda
Abbiamo un app compilato utilizzando MSVC 2K5, SP1 (versione 762 msvcrt80)
Tutto va bene, fino a quando qualcuno viene installato sulla stessa macchina di .Net3.0SP1, e con essa è installata la versione msvcrt80 1433 e una politica per l'aggiornamento automatico.
Ora abbiamo crash casuali in tutto il luogo e clienti infelici.
ho capito che possiamo regolare i nostri file manifesto per forzare l'utilizzo di una versione specifica, ma ho trovato solo il modo davvero brutto di dettagli la copia che viene generato automaticamente e modificando a mano. Questo è particolarmente sgradevole con un gran numero di applicazioni per risolvere
Possiamo invece sbarazzarci del 'aggiornamento' della politica stupida nella directory WinSxS? C'è la possibilità / bandierina per compilare per una versione specifica solo e ancora generare i manifesti? Automaticamente
Soluzione
Trova il manifesto generato per la versione specifica del CRT. Quindi aggiungere un pragma al file principale dell'applicazione:
#pragma comment(linker,"/manifestdependency:\"type='win32' " \
"name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \
"version='" _CRT_ASSEMBLY_VERSION "' " \
"processorArchitecture='x86' " \
"publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")