Scelta di un metodo di distribuzione

Nella maggior parte dei casi la distribuzione di applicazioni Visual C++ viene eseguita mediante Windows Installer. Per ulteriori informazioni sui metodi di distribuzione supportati da Visual Studio e su metodi alternativi, vedere Scelta di una strategia di distribuzione e Alternative di distribuzione. La distribuzione ClickOnce per applicazioni native di Visual C++ non è supportata in Visual Studio 2010. È possibile tuttavia distribuire applicazioni Visual C++ tramite ClickOnce dalla riga di comando. Per ulteriori informazioni, vedere Distribuzione ClickOnce per applicazioni Visual C++.

Le librerie di Visual C++ sono DLL condivise

In Visual Studio 2010 le librerie Visual C++ vengono installate come DLL condivise nella directory %windir%\system32. Per garantire la possibilità di eseguire l'applicazione Visual C++ in un computer senza Visual C++, può essere necessario ridistribuire le DLL di Visual C++ con l'applicazione e verificare che siano installate nel computer di destinazione.

Ridistribuzione delle librerie di Visual C++

È possibile ridistribuire le DLL di Visual C++ in tre modi diversi:

  • Si consiglia di utilizzare il pacchetto ridistribuibile di Visual C++ (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) per installare tutte le librerie di Visual C++ come DLL condivise in %windir%\system32. In Visual Studio questo pacchetto viene installato nella cartella %WindowsSdkDir%\Bootstrapper\Packages. È anche possibile scaricarlo dall'Area Download Microsoft. Per un esempio relativo all'utilizzo di questo pacchetto, vedere Procedura dettagliata: distribuire un'applicazione Visual C++ tramite Visual C++ Redistributable Package.

  • Utilizzare i modelli unione ridistribuibili di Visual C++ per installare una determinata libreria di Visual C++ come DLL condivisa in %windir%\system32. Per accedere a questa cartella è necessario che il programma di installazione venga eseguito da un utente con diritti amministrativi. Per ulteriori informazioni, vedere Ridistribuzione tramite modelli unione. Per un esempio di questa distribuzione, vedere Procedura dettagliata: distribuire un'applicazione Visual C++ tramite un progetto di installazione.

  • Installare una determinata DLL di Visual C++ nella stessa cartella come applicazione utilizzando i file disponibili nella directory Programmi\Microsoft Visual Studio 10.0\VC\Redist. Questo metodo è consigliato per consentire l'installazione di applicazioni da parte di utenti che non dispongono di diritti amministrativi o quando deve essere possibile eseguire un'applicazione da una condivisione.

In caso di installazione di librerie Visual C++ utilizzando moduli unione ridistribuibili, le DLL vengono distribuite come DLL condivise in %windir%\system32. Per accedere a questa cartella è necessario che il programma di installazione venga eseguito da un utente con diritti amministrativi.

Se un'installazione viene eseguita da un utente che non dispone di diritti amministrativi, la distribuzione delle DLL di Visual C++ ha esito negativo e l'applicazione non verrà eseguita. Inoltre, alcuni prodotti possono consentire l'installazione su base utente, ma i moduli unione installano le librerie in percorsi condivisi e hanno un impatto su tutti gli utenti del sistema. In questi scenari e in altri scenari simili, la tecnica supportata consiste nell'installazione delle DLL necessarie nella directory di una determinata applicazione utente.

Con questa tecnica, è sufficiente copiare le DLL nella cartella locale dell'applicazione. Quando viene eseguita l'applicazione, il caricatore del sistema operativo utilizza l'ordine di ricerca descritto in LoadLibraryEx.

L'errata ridistribuzione delle librerie di Visual C++ può causare errori di runtime durante l'esecuzione di un'applicazione che dipende da tali librerie

Vantaggi del collegamento dinamico rispetto a quello statico

Non è consigliabile ridistribuire applicazioni C/C++ collegate alle librerie di Visual C++ in modo statico. Spesso si ritiene erroneamente che il collegamento statico dell'applicazione alle librerie di Visual C++ consenta di migliorare sensibilmente le prestazioni dell'applicazione stessa. L''impatto sulle prestazioni risultante dal caricamento dinamico delle librerie di Visual C++ è tuttavia insignificante nella quasi totalità dei casi. Inoltre, il collegamento statico non consente la possibilità di assistenza e intervento sull'applicazione e sulle librerie dipendenti da parte dell'autore dell'applicazione o di Microsoft. Si consideri ad esempio un'applicazione collegata in modo statico a una determinata libreria, in esecuzione su un computer client con una nuova versione della libreria. L'applicazione utilizza ancora il codice della versione precedente della libreria e non beneficia pertanto dei miglioramenti apportati alla libreria, ad esempio di quelli relativi alla sicurezza. È consigliabile che gli autori di applicazioni C/C++ riflettano attentamente sulle implicazioni relative all'assistenza prima di decidere di collegare le applicazioni in modo statico a librerie dipendenti e utilizzino il collegamento dinamico appena possibile.

Vedere anche

Concetti

Scelta di una strategia di distribuzione

Sicurezza e distribuzione di ClickOnce

Esempi di distribuzione

Altre risorse

Distribuzione (Visual C++)

Cenni preliminari sulla distribuzione con Windows Installer