Распространяемые версии Visual С++ без использования VCRedist_x86.exe
Я развиваюсь в среде, которая сильно ограничена, но разработчики также имеют жесткий контроль.
VCRedist_x86.exe - Распространяемый 4Mb - это не весело (четыре часа для передачи). Я бы предпочел просто перераспределить MFC90.dll, msvcm90.dll, msvcp90.dll и msvcr90.dll - это больше похоже на 2Mb. Однако Перераспределение файлов Visual С++ говорит:
Не поддерживается перераспределение приложений C/С++, которые создаются без манифеста. Библиотеки Visual С++ не могут использоваться приложениями C/С++ без манифеста, связывающего приложение с этими библиотеками. Для получения дополнительной информации см. Выбор метода развертывания.
Мой первоначальный план копирования DLL в рабочий каталог программы не кажется
работайте в этом храбром новом мире проявлений.
Мое следующее предположение состоит в том, чтобы заполнить записи реестра, необходимые для заполнения файлов в каталоге WinSxS, и заполнить его самостоятельно (вместо использования программы 4 мега).
[edit] Программное обеспечение часто обновляется, поэтому библиотеки DLL настоятельно предпочитают статические ссылки. [/edit]
Как я могу успешно распределять необходимые файлы, но сохранить накладные расходы?
Ответы
Ответ 1
Мы используем это: Howto: Развертывание приложений VC2008 без установки vcredist_x86.exe
По существу
- Не вставляйте манифест в свои exe файлы.
- Скопируйте библиотеки С++ и их манифесты в каталог приложений.
- Удалить "publicKeyToken" из всех манифестов (ваших и Microsoft).
- При необходимости измените информацию о версии в файлах манифеста приложения в соответствии с файлами манифеста Microsoft (или наоборот)
Ответ 2
[Я - текущий поддерживающий SxS в Microsoft]
Я бы настоятельно рекомендовал исключить атрибут publicKeyToken из манифеста. Частное развертывание DLL будет работать отлично, если этот атрибут оставлен нетронутым.
Однако удаление этого файла не позволит вашему приложению получать обновления для системы безопасности, если на целевой машине будет установлена более новая версия CRT, поскольку зависимости больше не будут соответствовать.
Итак, чтобы подвести итог: безопасно вставлять ваш манифест с по умолчанию. Скопируйте файл CRT manifest + DLL непосредственно в исполняемый каталог без изменений. Это. Совместимый Win2k +.
Ответ 3
Укажите/MT (многопоточность) для параметра "среда выполнения" на странице свойств компилятора. Это статически связывается с библиотекой времени выполнения, поэтому вам не нужно устанавливать распространяемую версию.
Ответ 4
Установите их как частные сборки. См. Здесь:
http://msdn.microsoft.com/en-us/library/ms235291.aspx
Обратите внимание: если вам не нужны все DLL файлы, вы можете изменить файлы манифеста, чтобы ссылаться только на те, которые вам нужны.