¿Por qué ventanas en paralelo (WinSxS) instalar la política de actualización automática cuando hay problemas conocidos entre las versiones?

StackOverflow https://stackoverflow.com/questions/397196

  •  29-08-2019
  •  | 
  •  

Pregunta

Tenemos una aplicación compilada usando MSVC 2K5, SP1 (versión 762 msvcrt80)

Todo está bien, justo hasta que alguien se instala en la misma máquina .Net3.0SP1, y junto con él se instala msvcrt80 versión 1433 y una política para actualizar automáticamente.

Ahora tenemos bloqueos aleatorios por todo el lugar y clientes insatisfechos.

Yo entiendo que podemos ajustar nuestros archivos de manifiesto para forzar el uso de una versión específica, pero sólo he encontrado el camino realmente feo detalle de la copia que se genera automáticamente y modificar a mano. Esto es especialmente desagradable con un gran número de aplicaciones para fijar

¿Podemos en lugar de deshacerse de la política estúpida 'actualización' en el directorio WinSxS? ¿Hay una opción / bandera para compilar para una versión específica única y todavía generar automáticamente los manifiestos?

¿Fue útil?

Solución

Encuentra el manifiesto generado para su versión específica de la CRT. A continuación, añadir un pragma al archivo principal de la aplicación:

#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
        "processorArchitecture='x86' "                                  \
        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top