Pregunta

Estoy desarrollando en un entorno que está severamente restringido, pero los desarrolladores también tienen un control estricto.

VCRedist_x86.exe - Un redistribuible de 4Mb - no es divertido (cuatro horas para transferir). Realmente preferiría simplemente redistribuir MFC90.dll, msvcm90.dll, msvcp90.dll y msvcr90.dll, eso es más como 2Mb. Sin embargo, Redistribución de archivos de Visual C ++ dice:

  

No es compatible para redistribuir aplicaciones C / C ++ que se crean sin un manifiesto. Las aplicaciones de C / C ++ no pueden usar las bibliotecas de Visual C ++ sin un manifiesto que vincule la aplicación a estas bibliotecas. Para obtener más información, consulte Elección de un método de implementación .

Mi plan original de copiar las DLL en el directorio de trabajo del programa no parece trabaja en este valiente nuevo mundo de manifiestos.

Mi siguiente suposición es reunir las entradas de registro necesarias para llenar los archivos en el directorio WinSxS y llenarlo yo mismo (en lugar de usar el programa 4 meg).

[editar] El software se actualiza con frecuencia, por lo que las DLL son muy preferidas a los enlaces estáticos. [/ edit]

¿Cómo puedo distribuir con éxito los archivos necesarios pero mantener bajos los gastos generales?

¿Fue útil?

Solución

Usamos esto: Cómo: Implementar aplicaciones VC2008 sin instalar vcredist_x86.exe

Esencialmente

  • No incruste un manifiesto en sus archivos exe.
  • Copie las DLL de C ++ y sus manifiestos en el directorio de su aplicación.
  • Eliminar el " publicKeyToken " De todos los manifiestos (tuyos y de Microsoft).
  • Si es necesario, cambie la información de la versión en los archivos de manifiesto de su aplicación para que coincida con los archivos de manifiesto de Microsoft (o viceversa)

Otros consejos

[Soy el actual mantenedor de SxS en Microsoft]

Sugeriría encarecidamente contra eliminar el atributo publicKeyToken de los manifiestos. El despliegue privado de las dlls funcionará bien con este atributo intacto. Sin embargo, eliminarlo evitará que su aplicación se beneficie de las actualizaciones de seguridad en caso de que haya una versión más nueva del CRT instalada centralmente en la máquina de destino, ya que las dependencias ya no coincidirán.

Entonces, para resumir: es seguro incrustar su manifiesto, con el valor predeterminado. Copie los archivos de manifiesto + DLL de CRT directamente en el directorio de su ejecutable, sin modificaciones. Eso es. Compatible con Win2k +.

Especifique / MT (multiproceso) para la biblioteca de tiempo de ejecución Configuración en la página de propiedades del compilador. Esto enlaza estáticamente con la biblioteca de tiempo de ejecución para que no tenga que instalar el redistribuible.

Instálelos como ensamblados privados. Ver aquí:

http://msdn.microsoft.com/en-us/library /ms235291.aspx

Tenga en cuenta que si no necesita todas las DLL proporcionadas, puede modificar los archivos de manifiesto para que solo hagan referencia a los que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top