Russian Qt Forum
Ноябрь 07, 2024, 16:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Как перенести программу на другой компьютер?  (Прочитано 42848 раз)
Steven_Orko
Гость
« Ответ #15 : Май 13, 2006, 00:22 »

А я тоже копировал. Нефига не работает даже тогда. To xor: Про манифесты я немного, совсем чуть-чуть знаю )))) переименовал от безысходности ))))) У меня MSVS2005 генерирует два манифеста:
Iralab.exe.intermediate.manifest
Iralab.exe.embed.manifest
Iralab.exe.embed.manifest.res
Переносил с программой. Получал типа такой ошибки: Программа выполнила недопустимую операццию" или "Неожиданный exception по адресу такому-то и такому-то". Так что результат один. Не было у меня с 2003.NET таких проблем. Что делать-то? Кто расскажет? Или ткните в ресурс какой, почитаю )))
Записан
Anchorite
Гость
« Ответ #16 : Май 13, 2006, 08:16 »

Есть файлик

<MSVSRoot>\SDK\v2.0\BootStrapper\Packages\vcredist_x86\vcredist_x86.exe.

С его помощью можно корректно установить весь рантайм.

Там же, кстати, лежит еще куча всякго необходимого для работы прог барахла.
Записан
Sergeich
Гость
« Ответ #17 : Май 13, 2006, 15:09 »

Просветите темного: нах вообще эти манифесты нужны? Если с ними такие траблы, может лучше на 7-ке компиляться?
Записан
noosooth
Гость
« Ответ #18 : Май 14, 2006, 23:15 »

Люди,  а у меня все работает, но читаю я эту тему и пугаюсь... Улыбающийся

Вот что делаю я дабы не пользоваться всеми этими vcredist_x86.exe

WinXP SP2, VS2005, Qt 4.1.1, release,  shared.

Думаю для начала надо разобраться как у Вас генерится манифест приложения. Т.е. embed он или внешний.

Читать про это видимо надо тут (извините url не получается, скобки похоже не нравятся):
http://msdn2.microsoft.com/en-us/library/ms235542(VS.80).aspx


Ежели манифест внешний, то со своим бинарником вам надо таскать файл "my.exe.manifest". Если embed, то он уже вкомпилирован в бинарник причем как я понимаю plain текстом.

Собственно про все это уже писал xor и писал на мой взгляд совершенно правильно, так что я всего лишь повторяюсь.

Теперь становится интересно а какие собственно сборки понадобятся вашему бинарнику на "чистом" компьютере.

В случае внешнего манифеста вы все это без труда находите в файле my.exe.manifest, а ежели он embed, то либо где нибудь файле .../Relase/my.exe.embed.manifest, либо в самом бинарнике, банальным поиском на предмет слова "manifest", благо он там живет как текст.

Что касается плюсового runtime, то ежели виндовое приложение компилировалось с ключом -MD, а нашем в случае линковки с release shared библиотеками Qt это именно так и есть, то в этом сгенеренном манифесте вы должны увидеть как минимум след.

Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>


Т.е. нашему приложению нужна сборка Microsoft.VC80.CRT, причем замечу что версии ="8.0.50608.0"

Таперича, создаем файл с именем "Microsoft.VC80.CRT.manifest"
и со след. содержимым:
Код:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable></noInheritable>
    <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    <file name="msvcr80.dll"/>
    <file name="msvcp80.dll"/>
    <file name="msvcm80.dll"/>
</assembly>


На "чистую" машину в один и тот же каталог копируем  
 - бинарник
 - Qt' овые dll-ки (само собой)
 - если манифест приложения внешний, то файл my.exe.manifest
 - созданный нами файл Microsoft.VC80.CRT.manifest
 - msvcr80.dll, msvcp80.dll, msvcm80.dll

Ну неужели не работает?

-------------------------------------------------------------------------
Кстати, я тут пробовал собирать Qt  VS2005 компилятором  как  release static, предварительно поменяв
в ...\mkspecs\win32-msvc2005\qmake.conf
   QMAKE_CFLAGS_RELEASE   = -O2 -MD
   на
   QMAKE_CFLAGS_RELEASE   = -O2 -MT

Что характерно - собралось.
Соответствено  Release приложения я тоже ессно статически линковал с плюсовым runtime (-MT).

Проблем при таком подходе я пока вроде не наблюдал, ну не считая ограничений статической сборки Qt и ешё большего размера бинарника Улыбающийся

Оно конечно страшновато, но зато runtime с собой тянуть точно не понадобится.
Записан
Steven_Orko
Гость
« Ответ #19 : Май 15, 2006, 01:35 »

БОЛЬШОЕ спасибо noosooth
У меня все запустилось, как только я прочитал твой пост. Thanks!!!
Записан
noosooth
Гость
« Ответ #20 : Май 15, 2006, 09:48 »

Цитата: "Steven_Orko"
У меня все запустилось, как только я прочитал твой пост. Thanks!!!


Это приятно, спасибо.

Будем надеяться у других тоже срастется.
А то вон люди уже каталоги WinSxS копируют и собираются на VS2003 перебираться. Улыбающийся
Записан
igorko
Гость
« Ответ #21 : Май 15, 2006, 14:10 »

Еще раз БОЛЬШОЕ СПАСИБО, Noosooth, и от меня!

Совершенно исчерпывающий профессиональный ответ.
Все заработало с первого раза Улыбающийся
Записан
fear
Гость
« Ответ #22 : Май 23, 2006, 12:30 »

Что-то я один выходит подтупливаю,

создал каталог с содержимым:
Hello.exe
Hello.exe.intermediate.manifest
Microsoft.VC80.CRT.manifest
msvcm80.dll
msvcp80.dll
msvcr80.dll
QtCore4.dll
QtGui4.dll

на чистой винде, пипец, " ... библиотека msvcp80.dll не является образом программы для NT ..."
Ткните носом, пожалуйста, туда где ошибку мог допустить.
Записан
Steven_Orko
Гость
« Ответ #23 : Май 23, 2006, 18:44 »

Тебе манифест не нужен, он уже в прогу встроен ))) Удали его, запустится )))
Записан
fear
Гость
« Ответ #24 : Май 23, 2006, 23:14 »

Цитата: "Steven_Orko"
Тебе манифест не нужен, он уже в прогу встроен ))) Удали его, запустится )))


К моему сожалению, не запускается ...
Записан
Steven_Orko
Гость
« Ответ #25 : Май 23, 2006, 23:54 »

эээ, я имел ввиду вот этот манифест: Hello.exe.intermediate.manifest. Именно он не нужен )))
Записан
Angler225
Гость
« Ответ #26 : Декабрь 19, 2006, 11:48 »

to noosooth
А можно по подробнее про статическую линковку, плиз, а то ни как не могу заюзать.
Цитировать
Кстати, я тут пробовал собирать Qt VS2005 компилятором как release static, предварительно поменяв
в ...\mkspecs\win32-msvc2005\qmake.conf
QMAKE_CFLAGS_RELEASE = -O2 -MD
на
QMAKE_CFLAGS_RELEASE = -O2 -MT

Что характерно - собралось.
Соответствено Release приложения я тоже ессно статически линковал с плюсовым runtime (-MT).

Проблем при таком подходе я пока вроде не наблюдал, ну не считая ограничений статической сборки Qt и ешё большего размера бинарника Smile

Оно конечно страшновато, но зато runtime с собой тянуть точно не понадобится.
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #27 : Январь 20, 2007, 15:50 »

Цитата: "noosooth"
Цитата: "Steven_Orko"
У меня все запустилось, как только я прочитал твой пост. Thanks!!!


Это приятно, спасибо.

Будем надеяться у других тоже срастется.
А то вон люди уже каталоги WinSxS копируют и собираются на VS2003 перебираться. Улыбающийся


Кстати, что то у меня за фигня... Грустный
Уж не знаю что и делать...
Прога запускается но пишет что Driver not loaded...
Т.е. к базе я не коннекчусь... Грустный
Скопировал QSQL плагины в sqldrivers подпапку.
Вроде как по старому рецепту, перекинул туда все *.dll из PostgreSQL, прога запускается, т.е. dll все находит, только свои плагины не видит Грустный...
Пробовал и app.addLibraryPath, результат 0.0
стянул Qt под мингвин, собрал драйвер, на нём тоже самое проги не видят плагинов...
Даж взял sqlbrowser из демок...
А он вообще драйверы никакие не видит, даже qodbc и qsqlite...
Пишет нет ни одного драйвера... Грустный

Qt 4.2.0 с андеграунда и Qt 4.2.2 с MingW.exe от троллей

Кстати эта проблема решается удалением ключа реестра
Код:

[HKEY_CURRENT_USER\Software\Trolltech]
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #28 : Апрель 04, 2007, 13:35 »

Эта программа скомпилена VC8, вот список файлов.

Код:

12.10.2005  08:32            24я576 comerr32.dll
26.02.2007  20:02           376я832 Controlling.exe
05.03.2007  11:07    <DIR>          help
12.10.2005  08:32           524я288 krb5_32.dll
06.07.2005  10:06         1я060я864 libeay32.dll
31.01.2003  17:41           916я849 libiconv-2.dll
01.02.2003  14:51            51я016 libintl-2.dll
13.02.2006  11:43           175я085 libpq.dll
05.03.2007  11:13    <DIR>          Microsoft.VC80.CRT
22.03.2005  12:37           184я320 pgoledb.dll
31.01.2006  13:27           335я872 psqlodbca.dll
31.01.2006  13:26           344я064 psqlodbcw.dll
04.06.2005  01:52            60я273 pthreadGC2.dll
27.11.2006  22:44         2я359я296 Qt3Support4.dll
27.11.2006  22:52            23я040 QtAssistantClient4.dll
08.02.2007  13:47         1я466я368 QtCore4.dll
27.11.2006  22:55         1я331я200 QtDesigner4.dll
27.11.2006  22:29         5я521я408 QtGui4.dll
27.11.2006  22:40           294я912 QtNetwork4.dll
27.11.2006  22:41           159я744 QtOpenGL4.dll
27.11.2006  22:39           184я320 QtSql4.dll
27.11.2006  22:40           217я088 QtSvg4.dll
27.11.2006  22:08           217я088 QtXml4.dll
05.03.2007  11:14             8я265 sheme.sql
27.11.2006  23:07           110я592 sqlbrowser.exe
03.04.2007  12:17    <DIR>          sqldrivers

22.09.2005  22:22               522 Microsoft.VC80.CRT.manifest
23.09.2005  05:56           479я232 msvcm80.dll
22.09.2005  22:05           548я864 msvcp80.dll
22.09.2005  22:05           626я688 msvcr80.dll

27.11.2006  22:51           282я624 qsqlite.dll
28.11.2006  00:20            61я440 qsqlmysql.dll
27.11.2006  22:50            77я824 qsqlodbc.dll
27.11.2006  23:20           110я592 qsqlpsql.dll



Самый прикол, что на некоторых компах она не запускается, и даже штатный sqlbrowser из демок не кажет ни одного драйвера, причём удаление ключа не помогает, а на некоторых пашет на 5+ Грустный

И ещё ниже привожу спиок файлов, её же, но скомпиленную  mingw - тоже удаление ключа и последующий запуск, решает проблему, даже на тех компах, на которых скомпиленная VC8 не запускается...
Что блин за полтергейст Грустный
"не запускается" - я имею ввиду пишет Driver not loaded

 
Код:

12.10.2005  08:32            24я576 comerr32.dll
03.04.2007  12:34           484я352 Controlling.exe
04.04.2007  14:34             1я569 files
04.04.2007  14:34                 0 files.txt
03.04.2007  12:53    <DIR>          help
12.10.2005  08:32           524я288 krb5_32.dll
06.07.2005  10:06         1я060я864 libeay32.dll
31.01.2003  17:41           916я849 libiconv-2.dll
01.02.2003  14:51            51я016 libintl-2.dll
13.02.2006  11:43           175я085 libpq.dll
30.01.2005  02:35            15я960 mingwm10.dll
22.03.2005  12:37           184я320 pgoledb.dll
31.01.2006  13:27           335я872 psqlodbca.dll
31.01.2006  13:26           344я064 psqlodbcw.dll
04.06.2005  01:52            60я273 pthreadGC2.dll
21.02.2007  15:11         3я456я000 Qt3Support4.dll
03.04.2007  12:23         1я915я904 QtCore4.dll
21.02.2007  15:19         1я826я304 QtDesigner4.dll
21.02.2007  15:22         1я786я880 QtDesignerComponents4.dll
21.02.2007  15:05         7я869я440 QtGui4.dll
21.02.2007  15:05           289я280 QtSql4.dll
21.02.2007  15:06           353я792 QtSvg4.dll
21.02.2007  14:55           318я976 QtXml4.dll
21.02.2007  15:30           101я376 sqlbrowser.exe
03.04.2007  12:39    <DIR>          sqldrivers
06.07.2005  10:06           200я704 ssleay32.dll

21.02.2007  15:13           351я744 qsqlite.dll
21.02.2007  15:13           105я984 qsqlodbc.dll
03.04.2007  12:29            80я384 qsqlpsql.dll
Записан
BigHom
Гость
« Ответ #29 : Июнь 01, 2011, 10:13 »

не могу запустить exe на другой машине с XP :
переписываю всё , включая манифест :
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<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' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

Всё равно не работает - выдаётся сообщение:
Приложение не запущено , поскольку оно не корректно настроено. Повторная настройка приложения может решить данную проблему.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 22.