Redistribuir componentes usando módulos de mesclagem

Importante

No Visual Studio 2019 e versões posteriores, os módulos de mesclagem para arquivos Pacote Redistribuível do Visual C++ estão preteridos. Não é recomendável usá-los para a implantação de aplicativo. Os redistribuíveis instalados usando módulos de mesclagem não podem ser atualizados pelo Windows Update porque o mecanismo de detecção depende de saber detalhes do pacote de instalação. Os Pacotes Redistribuíveis do Visual C++ são conhecidos para cada versão, mas os pacotes que usam MSMs são gerados pelo usuário. A Microsoft não tem como saber os detalhes dos pacotes gerados pelo usuário. Em vez disso, recomendamos o uso da implantação central do Pacote Redistribuível do Visual C++. A implantação central instala os arquivos redistribuíveis na pasta do Windows %SYSTEMROOT%\system32\ para uso por todos os aplicativos e usuários. A implantação central por um Pacote Redistribuível possibilita à Microsoft executar arquivos de biblioteca de runtime de forma independente. E uma desinstalação do aplicativo não poderá interromper os outros aplicativos que também utilizam a implantação central. Quando você usa um pacote redistribuível para implantação central, não é responsável por acompanhar e atualizar as bibliotecas de runtime como parte da manutenção do aplicativo: o serviço Microsoft Update atualiza essas bibliotecas para você. Caso contrário, uma atualização dos arquivos da biblioteca de runtime exigirá a atualização e reimplantação do instalador .msi. O aplicativo poderá ficar vulnerável a bugs ou a problemas de segurança até você fazer isso.

O Visual Studio inclui módulos de mesclagem (.msm arquivos) para cada componente do Visual C++ licenciado para redistribuição com um aplicativo. Há versões separadas dos módulos de mesclagem para cada plataforma de destino. Quando um módulo de mesclagem é compilado em um arquivo de instalação do Windows Installer, ele habilita a implantação de arquivos Pacote Redistribuível do Visual C++ nessa plataforma específica. Você não pode incluir módulos de mesclagem para versões diferentes da mesma DLL em um instalador. No arquivo de configuração do instalador, especifique que os módulos de mesclagem são pré-requisitos para seu aplicativo.

Você pode usar módulos de mesclagem para implantação central ou implantação local. Os usuários não podem instalar arquivos implantados centralmente, a menos que tenham direitos de administrador. A implantação local pode permitir que um não administrador instale e execute seu aplicativo, mas à custa da capacidade de serviço independente.

O serviço de instalação relatará um erro se você tentar a implantação central de módulos de mesclagem mais antigos em bibliotecas existentes mais recentes. Você deve escrever a configuração do instalador para lidar com essa falha normalmente e não exibir uma mensagem de erro. Seu código ainda pode ser implantado e executado com êxito, apesar dessa falha. Para obter mais informações, consulte Compatibilidade binária do C++ entre versões do Visual Studio.

Se você implantar seu código apenas como um instalador .msi, recomendamos que você não inclua os módulos de mesclagem no instalador. Em vez disso, relate uma falha ao usuário quando as bibliotecas redistribuíveis necessárias não forem encontradas. No diálogo de falha, inclua instruções sobre como localizar e instalar o pacote redistribuível mais recente. Para obter mais informações e links para pacotes redistribuíveis, confira Downloads mais recentes do Visual C++ com suporte.

Os pacotes redistribuíveis mais recentes e os módulos de mesclagem são compatíveis com o código criado usando o Visual Studio 2015 e versões posteriores. O código criado por versões do Visual Studio antes de 2015 exige um pacote redistribuível separado.

Quando usar módulos de mesclagem

Os módulos de mesclagem só são apropriados em circunstâncias limitadas:

  • Você não pode instalar nem exigir um pacote redistribuível separado por motivos de política,
  • Seu código requer uma versão das bibliotecas específica e compatível com bugs,
  • Seu código tem como destino apenas uma plataforma, e você não tem dependências em mais de uma versão das DLLs,
  • Você pretende fazer manutenção do código implantado regularmente para que as bibliotecas permaneçam atualizadas.

Ao usar módulos de mesclagem, você deve acompanhar e fazer manutenção regular do seu aplicativo com atualizações de biblioteca. Caso contrário, você acabará forçando seus clientes a escolher entre executar seu código ou permanecer seguros.

Onde localizar arquivos de módulo de mesclagem

No Visual Studio 2022 e no 2019, os arquivos do módulo de mesclagem fazem parte de um componente instalável opcional nomeado C++ <versão> MSMs Redistribuíveis no Instalador do Visual Studio. Os módulos de mesclagem são instalados por padrão como parte de uma instalação C++ no Visual Studio 2017 e no Visual Studio 2015. Quando instalados no Visual Studio 2022, os módulos de mesclagem de Pacote Redistribuível do Visual C++ estão localizados em %VCINSTALLDIR%Redist\MSVC\v143\MergeModules. Na versão mais recente do Visual Studio 2019, os módulos de mesclagem estão em %VCINSTALLDIR%Redist\MSVC\v142\MergeModules. No Visual Studio 2019 e no Visual Studio 2017, eles também estão em %VCToolsRedistDir%MergeModules. No Visual Studio 2015, são encontrados em Program Files [(x86)]\Common Files\Merge Modules. Para obter mais informações e um link para uma lista de módulos de mesclagem redistribuíveis, confira Redistribuir arquivos do Visual C++.

Confira também

Redistribuindo arquivos do Visual C++