Redistribuiveis Visual C ++ sem usar VCRedist_x86.exe
-
05-07-2019 - |
Pergunta
Estou desenvolvendo em um ambiente que é bastante afectada, mas os desenvolvedores também têm um controlo apertado sobre.
VCRedist_x86.exe - A 4Mb redistributable - não é divertido (quatro horas para transferência). Eu realmente prefiro apenas para redistribuir MFC90.dll, msvcm90.dll, msvcp90.dll e msvcr90.dll - que é mais como 2Mb. No entanto, Redistribuir o Visual C Arquivos ++ diz:
Não é suportado para redistribuir aplicações C / C ++ que são construídos sem um manifesto. bibliotecas Visual C ++ não podem ser usados ??por aplicações C / C ++ sem um manifesto de ligação a aplicação a essas bibliotecas. Para mais informações, consulte Escolhendo um método de implantação .
Meu plano original de copiar as DLLs no diretório de trabalho do programa não parece trabalho neste admirável mundo novo dos manifestos.
O meu próximo palpite é bodge-se as entradas de registo necessárias para preencher os arquivos para o diretório WinSxS e preenchê-lo eu mesmo (em vez de usar o programa 4 meg).
[editar] O software é atualizado com freqüência, por isso DLLs são fortemente preferiu vinculação estática. [/ Edit]
Como posso com sucesso distribuir os arquivos necessários, mas manter o baixo sobrecarga?
Solução
Nós usamos esta: COMO FAZER: Implantar VC2008 aplicativos sem instalar vcredist_x86.exe
Essencialmente
- Não incorporar um manifesto em seus arquivos exe.
- Copie o ++ DLLs C e seus manifestos para o diretório do aplicativo.
- Remova o "publicKeyToken" de todos os manifestos (seu e Microsoft).
- Se necessário, altere a informação da versão em arquivos de manifesto de seu aplicativo para combinar os arquivos de manifesto da Microsoft (ou vice-versa)
Outras dicas
[Eu sou o atual mantenedor SxS no Microsoft]
Gostaria de sugerir contra remover o atributo publicKeyToken de manifestos. implantação privada das DLLs vai funcionar muito bem com esse atributo deixada intacta. No entanto, removê-lo irá impedir a sua aplicação beneficiem de atualizações de segurança deve haver uma versão mais recente do CRT instalado centralmente na máquina de destino, como as dependências deixarão de corresponder-se.
Assim, para resumir: é seguro, para inserir o manifesto, com o padrão. Copie o CRT manifesto + arquivos DLL diretamente no diretório do seu executável, sem edições. É isso aí. Win2k compatível +.
Precisar / MT (multithread) para a "biblioteca de tempo de execução" configuração na página de propriedades do compilador. Este link estaticamente contra a biblioteca de tempo de execução para que você não tem que instalar o redistribuível.
Instale-los como conjuntos privados. Veja aqui:
http://msdn.microsoft.com/en-us/library /ms235291.aspx
Note que, se você não precisa de todas as DLLs desde que você pode modificar os arquivos de manifesto para referência apenas o que você precisa.