Распространение библиотек времени выполнения Visual C++ (MSVCRT)
У меня есть проект ATL/WTL, разработанный с использованием Visual Studio 2008, и до сих пор я статически связывался с библиотеками CRT, избегая необходимости их доставки. Однако теперь мне нужно рассмотреть возможность использования динамических библиотек (DLL) вместо этого - чтобы уменьшить размер кода и потому что я хочу использовать превосходный инструмент crashrpt (который требует от вас динамической связи с CRT).
Теперь MS поставляет как автономный установщик (vcredist_x86.exe), так и пакет MSM, но это мне не подходит по двум причинам:
- Я не использую установщик на основе MSI (я использую InnoSetup).
- Мое приложение устанавливается с ограниченной учетной записью пользователя, и установщик vcredist_x86.exe не будет работать.
Поэтому я хочу отправить библиотеки CRT и установить их в папку с приложениями. Это то, что вы можете сделать, так как я нашел следующее сообщение в блоге Мартина Ловелла, ведущего разработчика библиотек MSVC:
Однако, если вы хотите установить-applocal, вы должны убедиться, что ваше приложение имеет манифест, а затем скопировать всю эту папку в каталог EXE:
X: \ Program Files \ Microsoft Visual Studio 8 \ VC \ redist \ x86 \ Microsoft.VC80.CRT
и другие папки, если вы используете больше, чем CRT. Убедитесь, что вы включили манифест.
Просто хочу, чтобы я после - кроме как я не понимаю эту часть:
убедитесь, что ваше приложение имеет манифест
У меня вопрос - как мне создать манифест приложения, который ссылается на библиотеки CRT, которые я хочу использовать? Единственная информация о манифесте, которую используют мои проекты в настоящее время, - это следующее (что гарантирует, что приложение использует v6 Общих элементов управления):
/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"
Может ли кто-нибудь дать мне инструкции о том, как использовать магию манифеста с помощью Visual Studio 2008? В моей папке Visual Studio VC\redist\x86\Microsoft.VC90.CRT есть файл Microsoft.VC90.CRT.manifest - мне нужно как-то использовать это?
Примечание: этот вопрос похож на этот вопрос, но отличается от него.
1 ответ
Visual Studio сгенерирует правильный манифест для вас, когда вы передадите флаг /MD.