Redistribuir componentes mediante módulos de combinación

Importante

En Visual Studio 2019 y versiones posteriores, los módulos de combinación para archivos de Visual C++ Redistributable están en desuso. No se recomienda usarlos para la implementación de aplicaciones. Los redistribuibles instalados mediante módulos de combinación no se pueden actualizar con Windows Update porque el mecanismo de detección depende del conocimiento de los detalles del paquete de instalación. Los paquetes Visual C++ Redistributable se conocen para cada versión, pero los paquetes que usan MSM los genera el usuario. Microsoft no puede conocer los detalles de los paquetes generados por el usuario. En su lugar, se recomienda la implementación central del paquete de Visual C++ Redistributable. La implementación central instala los archivos redistribuibles en la carpeta %SYSTEMROOT%\system32\ de Windows para su uso por parte de todas las aplicaciones y usuarios. La implementación central mediante un paquete redistribuible permite a Microsoft atender los archivos de la biblioteca en tiempo de ejecución de forma independiente. Además, una desinstalación de la aplicación no puede afectar a otras aplicaciones que también usen la implementación central. Cuando se usa un paquete redistribuible para la implementación central, no es responsable del seguimiento y la actualización de las bibliotecas en tiempo de ejecución como parte del mantenimiento de la aplicación: el servicio Microsoft Update actualiza estas bibliotecas automáticamente por usted. De lo contrario, una actualización de los archivos de biblioteca en tiempo de ejecución requiere que actualice y vuelva a implementar el instalador .msi. La aplicación podría ser vulnerable a errores o problemas de seguridad hasta que lo haga.

Visual Studio incluye módulos de combinación (archivos .msm) para cada componente de Visual C++ con licencia para redistribuirse con una aplicación. Hay versiones independientes de los módulos de combinación para cada plataforma de destino. Cuando se compila un módulo de combinación en un archivo de instalación de Windows Installer, habilita la implementación de archivos de Visual C++ Redistributable en esa plataforma específica. No se pueden incluir módulos de combinación para diferentes versiones del mismo archivo DLL en un instalador. En el archivo de configuración del instalador, especifique que los módulos de combinación son requisitos previos para la aplicación.

Puede usar módulos de combinación para la implementación central o la implementación local. Los usuarios no pueden instalar archivos implementados centralmente a menos que tengan derechos de administrador. La implementación local puede permitir que un no administrador instale y ejecute la aplicación, pero a costa de una capacidad de servicio independiente.

El servicio de instalación notifica un error si intenta realizar la implementación central de módulos de combinación más antiguos en bibliotecas existentes más recientes. Debe escribir la configuración del instalador para controlar este error correctamente y que no se muestre un mensaje de error. El código todavía puede implementarse y ejecutarse correctamente a pesar de este error. Para obtener más información, consulte Compatibilidad binaria de C++ entre versiones de Visual Studio.

Si implementa el código solo como un instalador .msi, se recomienda no incluir los módulos de combinación en el instalador. En su lugar, notifique del error al usuario cuando no se encuentren las bibliotecas redistribuibles necesarias. En el cuadro de diálogo de error, incluya instrucciones sobre cómo buscar e instalar el paquete redistribuible más reciente. Para obtener más información y vínculos a paquetes redistribuibles, consulte Descargas de las versiones más recientes admitidas de Visual C++.

Los paquetes redistribuibles y los módulos de combinación más recientes son compatibles con el código creado con Visual Studio 2015 y versiones posteriores. El código compilado por versiones de Visual Studio previas a la versión 2015 requiere un paquete redistribuible independiente.

Cuándo usar módulos de combinación

Los módulos de combinación solo son adecuados en circunstancias limitadas:

  • No se puede instalar ni requerir un paquete redistribuible independiente por motivos de directiva;
  • El código requiere una versión específica compatible con errores de las bibliotecas;
  • El código solo tiene como destino una plataforma y no tiene dependencias en más de una versión de los archivos DLL;
  • Tiene previsto atender periódicamente el código implementado, por lo que las bibliotecas permanecen actualizadas.

Al usar módulos de combinación, debe realizar un seguimiento y atender regularmente la aplicación con actualizaciones de biblioteca. De lo contrario, obligará a los clientes a elegir entre ejecutar el código o mantener la seguridad restante.

Dónde buscar archivos de módulo de combinación

En Visual Studio 2022 y 2019, los archivos de módulo de combinación forman parte de un componente instalable opcional denominado MSM redistribuible de la versión< de C++ > en el Instalador de Visual Studio. Los módulos de combinación se instalan de forma predeterminada como parte de una instalación de C++ en Visual Studio 2017 y Visual Studio 2015. Cuando se instala en Visual Studio 2022, encontrará los módulos de combinación redistribuibles de Visual C++ Redistributable en %VCINSTALLDIR%Redist\MSVC\v143\MergeModules. En la versión más reciente de Visual Studio 2019, los módulos de combinación se encuentran en %VCINSTALLDIR%Redist\MSVC\v142\MergeModules. En Visual Studio 2019 y Visual Studio 2017, también se encuentran en %VCToolsRedistDir%MergeModules. En Visual Studio 2015, se encuentran en Program Files [(x86)]\Common Files\Merge Modules. Para obtener más información y un vínculo a una lista de los módulos de combinación redistribuibles, vea Redistribuir archivos de Visual C++.

Consulte también

Redistribuir archivos de Visual C++