Elegir un método de implementación

En la mayoría de los casos, la implementación de aplicaciones de Visual C++ se realiza con la implementación de Windows Installer.Para obtener más información sobre los métodos de implementación admitidos dentro de Visual Studio y los alternativos, vea Elegir una estrategia de implementación y Deployment Alternatives.La implementación de ClickOnce para aplicaciones nativas de Visual C++ no se admite en Visual Studio 2010; sin embargo, es posible implementar aplicaciones de Visual C++ a través de ClickOnce desde la línea de comandos.Para obtener más información, consulte Implementación de ClickOnce para aplicaciones de Visual C++.

Las bibliotecas de Visual C++ son archivos DLL compartidos

Visual Studio 2010 instala las bibliotecas de Visual C++ como archivos DLL compartidos en el directorio %windir%\system32.Para asegurarse de que la aplicación de Visual C++ se ejecutará en un equipo que no tenga instalado Visual C++, puede que tenga que redistribuir los archivos DLL de Visual C++ con la aplicación y comprobar que están instalados en el equipo de destino.

Redistribuir bibliotecas de Visual C++

Existen tres formas de redistribuir archivos DLL de Visual C++:

  • Se recomienda usar el paquete redistribuible de Visual C++ (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) para instalar en %windir%\system32 todas las bibliotecas de Visual C++ como archivos DLL compartidos.Visual Studio instala este paquete en la carpeta %WindowsSdkDir%\Bootstrapper\Packages.También puede descargarlo del Centro de descarga de Microsoft.Para obtener un ejemplo de cómo usar este paquete, vea Tutorial: Implementar una aplicación de Visual C++ mediante el paquete redistribuible de Visual C++.

  • Use los módulos de combinación redistribuibles de Visual C++ para instalar una biblioteca concreta de Visual C++ como archivos DLL compartidos en la carpeta %windir%\system32.El acceso a esta carpeta requiere que la aplicación de instalación la ejecute un usuario con derechos administrativos.Para obtener más información, vea Redistribuir mediante módulos de combinación.Puede encontrar un ejemplo de esta implementación en Tutorial: Implementar una aplicación de Visual C++ mediante un proyecto de instalación.

  • Puede instalar un archivo DLL concreto de Visual C++ en la misma carpeta que la aplicación mediante los archivos incluidos en el directorio Archivos de programa\Microsoft Visual Studio 10.0\VC\Redist.Este es el procedimiento recomendado para habilitar la instalación de aplicaciones por parte de usuarios que no tienen derechos administrativos o cuando debería ser posible ejecutar una aplicación desde un recurso compartido.

Cuando se instalan las bibliotecas de Visual C++ mediante los módulos de combinación redistribuibles, los archivos DLL se implementan como archivos DLL compartidos en la carpeta %windir%\system32.El acceso a esta carpeta requiere que la aplicación de instalación la ejecute un usuario con derechos administrativos.

Si la instalación la ejecuta un usuario que no tiene derechos administrativos, no se podrán implementar los archivos DLL de Visual C++ y la aplicación no se ejecutará.Además, algunos productos pueden permitir la instalación de cada usuario, pero los módulos de combinación instalan bibliotecas en ubicaciones compartidas y afectarán a todos los usuarios del sistema.En estos escenarios y otros similares, la técnica admitida consiste en instalar los archivos DLL necesarios en el directorio de la aplicación de un usuario concreto.

Con esta técnica, basta con copiar los archivos DLL en la carpeta local de la aplicación.El cargador del sistema operativo, al ejecutar la aplicación, utiliza el orden de búsqueda descrito en LoadLibraryEx.

La redistribución incorrecta de las bibliotecas de Visual C++ puede dar lugar a errores en tiempo de ejecución cuando se ejecuta una aplicación que dependa de ellas.

Es preferible la vinculación dinámica a la vinculación estática

No se recomienda redistribuir aplicaciones de C/C++ que estén vinculadas estáticamente a bibliotecas de Visual C++.A menudo se supone por error que vincular estáticamente el programa a bibliotecas de Visual C++ mejora significativamente el rendimiento de una aplicación.Sin embargo, el impacto en el rendimiento de las bibliotecas de Visual C++ cargadas dinámicamente es insignificante en casi todos los casos.Además, la vinculación estática no está permitida a la hora de mantener la aplicación y sus bibliotecas dependientes, ya sea por parte del autor de la aplicación o de Microsoft.Por ejemplo, piense en una aplicación que está vinculada estáticamente a una biblioteca particular, que se ejecuta en el equipo cliente con una nueva versión de esta biblioteca.La aplicación todavía sigue utilizando código de la versión anterior de esta biblioteca y no se beneficia de las mejoras de la biblioteca, como pueden ser las mejoras de seguridad.Se recomienda encarecidamente a los creadores de aplicaciones de C/C++ que estudien el escenario de mantenimiento antes de vincularlas estáticamente a bibliotecas dependientes, y utilizar la vinculación dinámica siempre que sea posible.

Vea también

Conceptos

Elegir una estrategia de implementación

Seguridad e implementación ClickOnce

Ejemplos de implementación

Otros recursos

Aplicaciones de escritorio de implementación (Visual C++)

Windows Installer Deployment Overview