2015-08-04 11 views
13

Fino a Visual Studio 2013 tutto ciò di cui si aveva bisogno era msvcr [versione] .dll e msvcp [versione] .dll. Ora hanno cambiato le DLL con 2015. Cosa devo includere per evitare un programma di installazione redist?DLL ridistribuibili di Visual C++ 2015 per distribuzione app-locale

EDIT:

sembra essere impossibile oggi: "distribuzione App-locale della CRT Universale non è supportato" http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx

UPDATE:

Il contenuto del link sopra è stato aggiornato il 11 settembre 2015. Ora è possibile effettuare la distribuzione app-locale.

+2

Sembra [hanno cambiato idea] (http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs- 2015-rtm.aspx? PageIndex = 2 # commenti) dopo che quasi tutti si sono lamentati di questo (cerca il commento da STL - è evidenziato). Tuttavia, non sono stato in grado di trovare alcuna documentazione ufficiale su questo finora. Gli articoli MSDN non sono stati ancora aggiornati. La directory 'redist' non include' ucrtbase.dll', che è in 'system32' invece (come hanno detto inizialmente). – bogdan

+3

Va bene, è necessario guardare qui: http://blogs.msdn.com/b/vcblog/archive/2015/07/20/visual-studio-2015-rtm-now-available.aspx. Cerca il primo commento di James McNellis. Sono stato in grado di distribuire una semplice applicazione compilata per x86 su Win7 64-bit su un sistema Win8.1 a 32 bit che non ha mai installato il ridistribuibile 2015. Posso scrivere una risposta completa se ne hai ancora bisogno. – bogdan

risposta

1

In generale, è possibile utilizzare Dipendente camminatore per trovare l'elenco delle DLL dipendenti. Per quanto riguarda le dll di runtime di Visual Studio, ciò di cui ti preoccupi maggiormente sono le dll con versioni specifiche di Visual Studio.

+0

Il walker delle dipendenze per qualche motivo non mostra ucrtbase.dll come dipendenza. Dovresti sempre includerlo nella distribuzione locale dell'app, indipendentemente dal fatto che tu la veda nelle dipendenze o meno. – izogfif

11

Questo ha funzionato per me (x86 app).

spedizione tutte le DLL da questi luoghi con la vostra applicazione:

  • C: \ Program Files (x86) \ Windows Kits \ 10 \ Redist \ ucrt \ DLL \ x86
  • C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ redist \ x86 \ Microsoft.VC140.CRT
0

Come indicato al punto 6) del this articolo ora è possibile effettuare la distribuzione locale del CRT universale. Per fare ciò è necessario installare Windows 10 SDK e copiare tutti i binari da C:\Program Files (x86)\Windows Kits\10\Redist\ucrt.

1

Io stesso, avevo bisogno di un file aggiuntivo per farlo accadere. Qui ci sono le directory in un formato più generico:

  1. Copiare tutti i file da "C: \ Program Files \ Windows Kits \ 10 \ Redist \ ucrt \ DLL \ x86" o "C: \ Program Files (x86) \ Kit di Windows \ 10 \ Redist \ ucrt \ DLLs \ x86 "(o copiarli dalla directory x64 se si tratta di un'app 64-bit). Se stai usando Qt, copialo nella directory creata da windeployqt.
  2. Copia msvcp140.dll e vcruntime140.dll da: < Visual Studio 2015 directory di installazione > \ Microsoft Visual Studio 14.0 \ VC \ redist \ x86 \ Microsoft.VC140.CRT (o copiarli dalla directory x 64 se si tratta di un 64 -bit app).

In generale, ho scoperto che puoi semplicemente eseguire il passaggio n. 1 e provare a eseguire l'app. Ti dirà il primo dei file che manca e, una volta inserito nella directory della tua app, ti dirà il prossimo di cui hai bisogno. Nel mio caso, erano due. La copia di file simili dalla mia cartella > \ System32 di Windows > non è stata eseguita correttamente. Ho trovato utilizzando Dependency Walker e cercando di soddisfare le dipendenze che indica di non avere successo.

Ciò consente di creare un'applicazione portatile che verrà eseguita su sistemi operativi M $ vecchi come XP; o installare per gli utenti senza vcredist_x86 o vcredist_x64, che non dispongono dei privilegi di amministratore.

BTW: Il punto 1 è piuttosto ufficiale. Eccolo al blog MSDN: Introducing the Universal CRT Dicono di copiarli tutti per un'applicazione da eseguire su tutti i sistemi operativi M $.

Problemi correlati