Как сделать дистрибутив с mfc?
От: bobik1  
Дата: 27.12.10 02:00
Оценка:
Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.
Re: Как сделать дистрибутив с mfc?
От: Чили Россия  
Дата: 27.12.10 04:42
Оценка: 1 (1) +1
Здравствуйте, bobik1, Вы писали:

B>Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.


В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT), тогда EXE включает в себя все небходимые ф-ии.
Re[2]: Как сделать дистрибутив с mfc?
От: MasterZiv СССР  
Дата: 27.12.10 10:50
Оценка:
On 27.12.2010 7:42, Чили wrote:

msvcr90.dll и mfc90u.dll могут быть уже установлены в системе.
В таком случае будут браться системные версии .dll, а не ваши.
Если они нужной вам версии, то как бы всё хорошо. А если более
старой -- придётся ставить redistributable package.

> В опциях проекта поставь Code Generation:Runtime Library = Multi-threaded (/MT),

> тогда EXE включает в себя все небходимые ф-ии.

Это совет из разряда вредных. Потому что подходит далеко не для всех приложений,
как правило, как раз НЕ подходит.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Как сделать дистрибутив с mfc?
От: bobik1  
Дата: 27.12.10 11:21
Оценка:
Ч>В опциях проекта поставь 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:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation.  All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable/>
    <assemblyIdentity
        type="win32"
        name="Microsoft.VC90.CRT"
        version="9.0.21022.8"
        processorArchitecture="x86"
        publicKeyToken="1fc8b3b9a1e18e3b"
    />
    <file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" />
</assembly>


Я в свой тоже пробовал копировать Microsoft.VC90.MFC.manifest и Microsoft.VC90.CRT.manifest из C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86 но ничего не получается. Как вообще формируются manifest файлы? Вручную? Или это можно настроить в проекте инсталлера?
Если вручную, то от куда взять publicKeyToken?
Re[4]: Как сделать дистрибутив с mfc?
От: Hussar77 Россия http://vstsblog.ru
Дата: 27.12.10 11:35
Оценка:
Здравствуйте, 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. Тогда всё приедет и поставится как нужно.
С уважением,
Владимир Гусаров aka Hussar
http://vstsblog.ru
Re[4]: Как сделать дистрибутив с mfc?
От: MasterZiv СССР  
Дата: 27.12.10 11:41
Оценка:
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


Манифесты вовсе не обязательны. Их вроде бы как уже отменили (отказались
от них как от идеи).
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Как сделать дистрибутив с mfc?
От: bobik1  
Дата: 27.12.10 14:03
Оценка:
MZ>Манифесты вовсе не обязательны. Их вроде бы как уже отменили (отказались
MZ>от них как от идеи).

Чето слишком большой дистрибутив получился в 11 мб. Может Как все таки включить только пару моих библиотек msvcr90.dll и mfc90u.dll? Ведь в других приложениях это как то делается.
Посмотрел зависимости dependency walker-ом, пишет, что для mfc90u.dll не хватает efsadu.dll и msjava.dll. Какой то бред.
В тексте моего exe-ника нашел манифест:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>

Я именно эти версии и положил рядом, причем для надежности все файлы из каталогов Microsoft.VC90.CRT и Microsoft.VC90.MFC. Все равно не запускается.
Re: Как сделать дистрибутив с mfc?
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.12.10 16:30
Оценка:
Здравствуйте, bobik1, Вы писали:

B>Подскажите как правильно распространять дистрибутив с mfc? Пробовал скопировать все библиотеки mfc и crt рядом с exe-ником (хотя мне нужны только msvcr90.dll и mfc90u.dll) на машину без visual studio программа не запускается. Работает только после установки vcredist. Но я не хотел бы сделать не зависимой от установки библиотек.


Перейти на 10 студию? Для простоты. Там манифесты AFAIK опять отменили как раз из-за таких вот вопросов, т.е. твой первый вариант должен сработать.
А вообще тема избитая, поиск должен много чего дать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.