Ridistribuzione dei componenti tramite moduli di merge

Importante

In Visual Studio 2019 e versioni successive i moduli di merge per i file Ridistribuibili di Visual C++ sono deprecati. Non è consigliabile usarli per la distribuzione delle applicazioni. I ridistribuibili installati tramite moduli di merge non possono essere aggiornati da Windows Update perché il meccanismo di rilevamento dipende dalla conoscenza dei dettagli del pacchetto di installazione. I pacchetti Ridistribuibili di Visual C++ sono noti per ogni versione, ma i pacchetti che usano MSM vengono generati dall'utente. Microsoft non è in grado di conoscere i dettagli dei pacchetti generati dall'utente. È invece consigliabile usare la distribuzione centrale del pacchetto Ridistribuibile di Visual C++. La distribuzione centrale installa i file ridistribuibili nella cartella Windows %SYSTEMROOT%\system32\ per l'uso da parte di tutte le applicazioni e gli utenti. La distribuzione centrale tramite un pacchetto Ridistribuibile consente a Microsoft di gestire i file della libreria di runtime in modo indipendente. Inoltre, una disinstallazione dell'app non può interrompere altre applicazioni che usano anche la distribuzione centrale. Quando si usa un pacchetto ridistribuibile per la distribuzione centrale, non si è responsabili del rilevamento e dell'aggiornamento delle librerie di runtime come parte della manutenzione dell'applicazione: il servizio Microsoft Update aggiorna automaticamente queste librerie. In caso contrario, per aggiornare e ridistribuire il programma di installazione è necessario aggiornare e ridistribuire i .msi file della libreria di runtime. L'app potrebbe essere vulnerabile a bug o problemi di sicurezza fino a quando non si esegue l'operazione.

Visual Studio include moduli di merge (.msm file) per ogni componente di Visual C++ concesso in licenza per la ridistribuzione con un'applicazione. Sono disponibili versioni separate dei moduli di merge per ogni piattaforma di destinazione. Quando un modulo di merge viene compilato in un file di installazione di Windows Installer, consente la distribuzione di file Ridistribuibili di Visual C++ in tale piattaforma specifica. Non è possibile includere moduli di merge per versioni diverse della stessa DLL in un programma di installazione. Nel file di installazione del programma di installazione specificare che i moduli di merge sono prerequisiti per l'applicazione.

È possibile usare i moduli di merge per la distribuzione centrale o la distribuzione locale. Gli utenti non possono installare i file distribuiti centralmente a meno che non dispongano dei diritti di amministratore. La distribuzione locale può consentire a un non amministratore di installare ed eseguire l'app, ma a costi di gestibilità indipendente.

Il servizio di installazione segnala un errore se si tenta di eseguire la distribuzione centrale di moduli di merge meno recenti su librerie esistenti più recenti. È consigliabile scrivere l'installazione del programma di installazione per gestire questo errore normalmente e non visualizzare un messaggio di errore. Il codice può comunque essere distribuito ed eseguito correttamente nonostante questo errore. Per altre informazioni, vedere Compatibilità binaria C++ tra le versioni di Visual Studio.

Se si distribuisce il codice solo come .msi programma di installazione, è consigliabile non includere i moduli di merge nel programma di installazione. Segnalare invece un errore all'utente quando le librerie Redistributable necessarie non vengono trovate. Nella finestra di dialogo di errore includere istruzioni su come trovare e installare il pacchetto Redistributable più recente. Per altre informazioni e collegamenti a Pacchetti ridistribuibili, vedere Download di Visual C++ supportati più recenti.

I pacchetti ridistribuibili e i moduli di merge più recenti sono compatibili con il codice compilato con Visual Studio 2015 e versioni successive. Il codice compilato dalle versioni di Visual Studio precedenti alla versione 2015 richiede un pacchetto ridistribuibile separato.

Quando usare i moduli di merge

I moduli di merge sono appropriati solo in circostanze limitate:

  • Non è possibile installare o richiedere un pacchetto ridistribuibile separato per motivi di criteri,
  • Il codice richiede una versione specifica compatibile con i bug delle librerie,
  • Il codice è destinato a una sola piattaforma e non si hanno dipendenze da più di una versione delle DLL.
  • Si intende gestire regolarmente il codice distribuito, in modo che le librerie rimangano aggiornate.

Quando si usano moduli di merge, è necessario tenere traccia e soddisfare regolarmente l'applicazione con gli aggiornamenti della libreria. In caso contrario, si forza infine i client a scegliere tra l'esecuzione del codice o la sicurezza rimanente.

Dove trovare i file di modulo di unione

In Visual Studio 2022 e 2019 i file di modulo di merge fanno parte di un componente installabile facoltativo denominato C++ <version> Redistributable MSMs (MSM ridistribuibile) nella Programma di installazione di Visual Studio. I moduli di merge vengono installati per impostazione predefinita come parte di un'installazione C++ in Visual Studio 2017 e Visual Studio 2015. Quando è installato in Visual Studio 2022, sono disponibili i moduli unione ridistribuibili di Visual C++ in %VCINSTALLDIR%Redist\MSVC\v143\MergeModules. Nella versione più recente di Visual Studio 2019 i moduli di merge si trovano in %VCINSTALLDIR%Redist\MSVC\v142\MergeModules. In Visual Studio 2019 e Visual Studio 2017 sono disponibili anche in %VCToolsRedistDir%MergeModules. In Visual Studio 2015 sono disponibili in Program Files [(x86)]\Common Files\Merge Modules. Per altre informazioni e un collegamento a un elenco di moduli di merge ridistribuibili, vedere Ridistribuzione dei file di Visual C++.

Vedi anche

Ridistribuzione dei file di Visual C++