Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.
Здравствуйте, bobik1, Вы писали:
B>Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.
В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT), тогда EXE включает в себя все небходимые ф-ии.
msvcr90.dll и mfc90u.dll могут быть уже установлены в системе.
В таком случае будут браться системные версии .dll, а не ваши.
Если они нужной вам версии, то как бы всё хорошо. А если более
старой -- придётся ставить redistributable package.
> В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT), > тогда EXE включает в себя все небходимые ф-ии.
Это совет из разряда вредных. Потому что подходит далеко не для всех приложений,
как правило, как раз НЕ подходит.
Ч>В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT), тогда EXE включает в себя все небходимые ф-ии.
Не получится, я использую и другие библиотеки с /MD
MZ>msvcr90.dll и mfc90u.dll могут быть уже установлены в системе. MZ>В таком случае будут браться системные версии .dll, а не ваши. MZ>Если они нужной вам версии, то как бы всё хорошо. А если более MZ>старой -- придётся ставить redistributable package.
Например в каталоге 1С есть файл Microsoft.VC90.CRT.manifest:
Я в свой тоже пробовал копировать Microsoft.VC90.MFC.manifest и Microsoft.VC90.CRT.manifest из C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86 но ничего не получается. Как вообще формируются manifest файлы? Вручную? Или это можно настроить в проекте инсталлера?
Если вручную, то от куда взять publicKeyToken?
Здравствуйте, bobik1, Вы писали:
Ч>>В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT), тогда EXE включает в себя все небходимые ф-ии.
B>Не получится, я использую и другие библиотеки с /MD
MZ>>msvcr90.dll и mfc90u.dll могут быть уже установлены в системе. MZ>>В таком случае будут браться системные версии .dll, а не ваши. MZ>>Если они нужной вам версии, то как бы всё хорошо. А если более MZ>>старой -- придётся ставить redistributable package.
B>Я в свой тоже пробовал копировать Microsoft.VC90.MFC.manifest и Microsoft.VC90.CRT.manifest из C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86 но ничего не получается. Как вообще формируются manifest файлы? Вручную? Или это можно настроить в проекте инсталлера? B>Если вручную, то от куда взять publicKeyToken?
Напишите себе простой инсталлятор и включите в него соответсвующие MFC merge modules. Тогда всё приедет и поставится как нужно.
On 27.12.2010 14:21, bobik1 wrote:
> Я в свой тоже пробовал копировать Microsoft.VC90.MFC.manifest и > Microsoft.VC90.CRT.manifest из C:\Program Files\Microsoft Visual Studio > 9.0\VC\redist\x86 но ничего не получается. Как вообще формируются manifest
Манифесты вовсе не обязательны. Их вроде бы как уже отменили (отказались
от них как от идеи).
MZ>Манифесты вовсе не обязательны. Их вроде бы как уже отменили (отказались MZ>от них как от идеи).
Чето слишком большой дистрибутив получился в 11 мб. Может Как все таки включить только пару моих библиотек msvcr90.dll и mfc90u.dll? Ведь в других приложениях это как то делается.
Посмотрел зависимости dependency walker-ом, пишет, что для mfc90u.dll не хватает efsadu.dll и msjava.dll. Какой то бред.
В тексте моего exe-ника нашел манифест:
Здравствуйте, bobik1, Вы писали:
B>Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.
Перейти на 10 студию? Для простоты. Там манифесты AFAIK опять отменили как раз из-за таких вот вопросов, т.е. твой первый вариант должен сработать.
А вообще тема избитая, поиск должен много чего дать.