Partilhar via


Redistribuir componentes utilizando módulos de fusão

Importante

No Visual Studio 2019 e posteriores, os módulos de fusão para ficheiros redistribuíveis Visual C++ estão obsoletos. Não recomendamos que os utilize para implementação de aplicações. O Windows Update não pode atualizar ficheiros redistribuíveis instalados usando módulos de fusão porque o mecanismo de deteção depende de conhecer os detalhes do pacote de instalação.

Os pacotes Visual C++ Redistributable são conhecidos para cada lançamento, mas os pacotes que usam módulos de fusão são gerados pelo utilizador. A Microsoft não pode saber os detalhes dos pacotes gerados pelo usuário. Em vez disso, recomendamos que utilize a implementação central do pacote Visual C++ Redistributable. A implementação central instala os ficheiros redistribuíveis na pasta Windows %SYSTEMROOT%\system32\ para uso por todas as aplicações e utilizadores. A implementação centralizada por um pacote redistribuível permite à Microsoft gerir ficheiros de biblioteca em tempo de execução de forma independente. Uma desinstalação da sua aplicação não pode quebrar outras aplicações que também usam implantação central.

Quando usas um pacote redistribuível para implementação central, não és responsável por acompanhar e atualizar as bibliotecas de runtime como parte da manutenção da tua aplicação. O serviço Microsoft Update atualiza estas bibliotecas por si. Caso contrário, uma atualização das bibliotecas de execução exige que deva atualizar e reinstalar o seu instalador . Seu aplicativo pode estar vulnerável a bugs ou problemas de segurança até que você o faça.

Visual Studio inclui módulos de mesclagem (.msm ficheiros) para cada componente do Visual C++ que é licenciado para redistribuição com uma aplicação. Existem versões separadas dos módulos de mesclagem para cada plataforma de destino. Quando um módulo de fusão é compilado num ficheiro de instalação do Windows Installer, permite a implementação de ficheiros redistribuíbles em Visual C++ para essa plataforma específica. Não podes incluir módulos de fusão para diferentes versões da mesma biblioteca de ligação dinâmica (DLL) num único 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 implementação local pode permitir que um não-administrador instale e execute a sua aplicação, mas à custa de uma funcionalidade independente.

O serviço de instalação relata 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 mais informações, veja C++ compatibilidade binária entre Visual Studio versões.

Se implementa o seu código apenas como instalador, recomendamos que não inclua os módulos de fusão no instalador. Em vez disso, reporte uma falha ao utilizador quando as bibliotecas redistribuíveis necessárias não forem encontradas. No diálogo de falhas, inclua instruções sobre como encontrar e instalar o pacote redistribuível mais recente. Para mais informações e ligações para pacotes redistribuíveles, consulte os downloads mais recentes suportados de Visual C++.

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

Quando usar módulos de mesclagem

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

  • Não pode instalar nem exigir um pacote redistribuível separado por razões de política.
  • O teu código requer uma versão específica, compatível com os erros, das bibliotecas.
  • O teu código direciona-se apenas a uma plataforma, e não tens dependências de mais do que uma versão das DLLs.
  • Pretende fazer a manutenção regular do seu código implementado para que as bibliotecas se mantenham atualizadas.

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

Onde encontrar arquivos de módulo de mesclagem

Em Visual Studio de 2022 e 2019, os ficheiros de módulos de fusão fazem parte de um componente opcional instalável chamado C++ <version> Redistributable MSM no Visual Studio Installer. Os módulos de fusão são instalados por defeito como parte de uma instalação em C++ no Visual Studio 2017 e no Visual Studio 2015. Quando os módulos de fusão são instalados no Visual Studio 2022, pode encontrar os módulos de fusão do Visual C++ Redistributable em %VCINSTALLDIR%Redist\MSVC\v143\MergeModules.

Na versão mais recente de Visual Studio 2019, os módulos de fusão estão em %VCINSTALLDIR%Redist\MSVC\v142\MergeModules. Tanto Visual Studio 2019 como Visual Studio 2017, também se encontram em %VCToolsRedistDir%MergeModules. Em Visual Studio 2015, são encontradas em Program Files [(x86)]\Common Files\Merge Modules. Para mais informações e um link para uma lista de módulos de fusão redistribuíveis, veja Redistribuir ficheiros Visual C++.

  • Redistribuir ficheiros Visual C++