Название: Как перенести программу на другой компьютер? Отправлено: igorko от Май 06, 2006, 10:01 Мужики, расскажите, пожалуйста, как перенести мою Qt программу, скомпилированную MS Visual Studio 8 Express Edition, на другой компьютер.
Спасибо! Название: Как перенести программу на другой компьютер? Отправлено: Hordi от Май 06, 2006, 11:14 А в чем проблема?
Несешь екзешник на ЧИСТУЮ винду, запускаешь, она пишет - нехватает *.dll, копируешь эту длл и повторяешь пока не запустится. Из полученных dll формируешь инсталлером пакет установки, инсталлер должен версии проверять и не даст тупо перезаписать более новую библиотеку старой. Название: Как перенести программу на другой компьютер? Отправлено: fear от Май 06, 2006, 11:53 Цитата: "Hordi" А в чем проблема? Несешь екзешник на ЧИСТУЮ винду, запускаешь, она пишет - нехватает *.dll, копируешь эту длл и повторяешь пока не запустится. Из полученных dll формируешь инсталлером пакет установки, инсталлер должен версии проверять и не даст тупо перезаписать более новую библиотеку старой. На чистой винде при запуске QT приложения, выскакивает сообшение: "Программа не правильно сконфигурирована, возможно её переустановка может решить эту проблему ..." Название: Как перенести программу на другой компьютер? Отправлено: igorko от Май 06, 2006, 12:05 2hordi
Именно так я и пробовал, но в итоге получается результат как у Fear :( Что самое удивительное после таких манипуляций изменяется размер файла программы :shock: Что делать? Очень надеюсь на вашу помощь. Название: Как перенести программу на другой компьютер? Отправлено: xor от Май 06, 2006, 12:32 Мужики из Microsoft опять нахимичили. Из dll хелла они создали хелл сборок.
После создания так назваемого WinSxS легче от этого не стало, а добавилось только геммора. Для переноса на другой комп необходимо ставить x86_Redistribute.... что то там. Но это же бред перед установкой программы устанавливать какие-то там апдейты. Самое простое решение которое я нашел состоит в следующем создаем папку Microsoft.VC80.CRT в папке с программой. Копируем туда msvcp80.dll, msvcr80.dll и создаем там файл Microsoft.VC80.CRT.manifest. В нем прописываем: Код:
После все должно по идее работать. Только не забудь скопировать кютэшные дллки в папку с программой :). Удачи! Код: Название: Как перенести программу на другой компьютер? Отправлено: igorko от Май 06, 2006, 13:32 2 Xor
Спасибо за совет. Сделал все как описано но, к сожалению, пишет что не найден msvp80.dll Когда переношу его в каталог программы - пишет что неправильная попытка загрузить длл и что попробуйте переустановить программу :( Название: Как перенести программу на другой компьютер? Отправлено: alex0303 от Май 06, 2006, 14:14 А ежели GCC под виндой пользовать?
Кто пользовал? Какие DLL тянутся? Название: Как перенести программу на другой компьютер? Отправлено: L.Marvell от Май 06, 2006, 14:47 Цитата: "alex0303" А ежели GCC под виндой пользовать? Кто пользовал? Какие DLL тянутся? Это зависит от того что использует приложение. Для простенькой прилаги на Qt4: qtcore4.dll, qtgui4.dll, mingw10.dll. Для первых двух можно уменьшить размер сжав их upx'ом. Название: Как перенести программу на другой компьютер? Отправлено: Sergey B. от Май 06, 2006, 14:47 Цитата: "alex0303" А ежели GCC под виндой пользовать? Кто пользовал? Какие DLL тянутся? тогда будет всё нормально! только Qt*.dll + mingw.dll (~200Kb) Название: Как перенести программу на другой компьютер? Отправлено: xor от Май 06, 2006, 16:41 2 igorko
Странно. У меня следующая структура: \App --\Microsoft.VC80.CRT ------Microsoft.VC80.CRT.manifest ------msvcp80.dll ------msvcr80.dll ----App.exe ----QtCore4.dll ----QtGui4.dll И все работает. Название: Как перенести программу на другой компьютер? Отправлено: fear от Май 07, 2006, 15:36 Цитата: "xor" 2 igorko Странно. У меня следующая структура: \App --\Microsoft.VC80.CRT ------Microsoft.VC80.CRT.manifest ------msvcp80.dll ------msvcr80.dll ----App.exe ----QtCore4.dll ----QtGui4.dll И все работает. При таком варианте пишет, что msvcp80.dll не является образом программы для Windows NT. Название: Как перенести программу на другой компьютер? Отправлено: xor от Май 11, 2006, 10:23 А ты прогу в релизе откомплил?
Название: Как перенести программу на другой компьютер? Отправлено: Steven_Orko от Май 11, 2006, 21:48 У меня тоже не получается. Пишет аналогичные вещи и для той структуры, что дал fear.
Запихал все в один каталог, как раньше с 2003 делал, только манифест переименовал в App.exe.manifest, плюс и либы в тот же каталог... ща пишет, что либы не являются образами программы для Windows NT, да, кстати, прога в релизе Название: Как перенести программу на другой компьютер? Отправлено: xor от Май 12, 2006, 11:03 Такой нюанс. У каждого приложения есть свой манифест, только его можно сделать либо эмбеддед либо таскать с собой всегда. Если он не эмбеддед нужно скопировать скажем App.exe.manifest туда где лежит App.exe.
2 Steven_Orko: Тот манифест который Microsoft.VC80.CRT.manifest переименовывать не нужно. Название: Как перенести программу на другой компьютер? Отправлено: igorko от Май 12, 2006, 11:18 2 xor: я - в релизе откомпилил и без толку.
Все что я смог сделать - это скопировать весь (*) каталог C:\WINDOWS\WinSxS с моего компьютера на целевой. И тогда - заработало. (*) - Копировал ВЕСЬ, потому-что нету времени разбираться. И потому не уверен не повлияет ли это на работу этого компьютера. (Пока не заметно) Название: Как перенести программу на другой компьютер? Отправлено: Steven_Orko от Май 13, 2006, 00:22 А я тоже копировал. Нефига не работает даже тогда. To xor: Про манифесты я немного, совсем чуть-чуть знаю )))) переименовал от безысходности ))))) У меня MSVS2005 генерирует два манифеста:
Iralab.exe.intermediate.manifest Iralab.exe.embed.manifest Iralab.exe.embed.manifest.res Переносил с программой. Получал типа такой ошибки: Программа выполнила недопустимую операццию" или "Неожиданный exception по адресу такому-то и такому-то". Так что результат один. Не было у меня с 2003.NET таких проблем. Что делать-то? Кто расскажет? Или ткните в ресурс какой, почитаю ))) Название: Как перенести программу на другой компьютер? Отправлено: Anchorite от Май 13, 2006, 08:16 Есть файлик
<MSVSRoot>\SDK\v2.0\BootStrapper\Packages\vcredist_x86\vcredist_x86.exe. С его помощью можно корректно установить весь рантайм. Там же, кстати, лежит еще куча всякго необходимого для работы прог барахла. Название: Как перенести программу на другой компьютер? Отправлено: Sergeich от Май 13, 2006, 15:09 Просветите темного: нах вообще эти манифесты нужны? Если с ними такие траблы, может лучше на 7-ке компиляться?
Название: Как перенести программу на другой компьютер? Отправлено: noosooth от Май 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"?> Т.е. нашему приложению нужна сборка Microsoft.VC80.CRT, причем замечу что версии ="8.0.50608.0" Таперича, создаем файл с именем "Microsoft.VC80.CRT.manifest" и со след. содержимым: Код:
На "чистую" машину в один и тот же каталог копируем - бинарник - 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 от Май 15, 2006, 01:35 БОЛЬШОЕ спасибо noosooth
У меня все запустилось, как только я прочитал твой пост. Thanks!!! Название: Как перенести программу на другой компьютер? Отправлено: noosooth от Май 15, 2006, 09:48 Цитата: "Steven_Orko" У меня все запустилось, как только я прочитал твой пост. Thanks!!! Это приятно, спасибо. Будем надеяться у других тоже срастется. А то вон люди уже каталоги WinSxS копируют и собираются на VS2003 перебираться. :) Название: Как перенести программу на другой компьютер? Отправлено: igorko от Май 15, 2006, 14:10 Еще раз БОЛЬШОЕ СПАСИБО, Noosooth, и от меня!
Совершенно исчерпывающий профессиональный ответ. Все заработало с первого раза :) Название: Как перенести программу на другой компьютер? Отправлено: fear от Май 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, 2006, 18:44 Тебе манифест не нужен, он уже в прогу встроен ))) Удали его, запустится )))
Название: Как перенести программу на другой компьютер? Отправлено: fear от Май 23, 2006, 23:14 Цитата: "Steven_Orko" Тебе манифест не нужен, он уже в прогу встроен ))) Удали его, запустится ))) К моему сожалению, не запускается ... Название: Как перенести программу на другой компьютер? Отправлено: Steven_Orko от Май 23, 2006, 23:54 эээ, я имел ввиду вот этот манифест: Hello.exe.intermediate.manifest. Именно он не нужен )))
Название: Как перенести программу на другой компьютер? Отправлено: Angler225 от Декабрь 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. от Январь 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 от троллей Кстати эта проблема решается удалением ключа реестра Код:
Название: Как перенести программу на другой компьютер? Отправлено: Sergey B. от Апрель 04, 2007, 13:35 Эта программа скомпилена VC8, вот список файлов.
Код:
Самый прикол, что на некоторых компах она не запускается, и даже штатный sqlbrowser из демок не кажет ни одного драйвера, причём удаление ключа не помогает, а на некоторых пашет на 5+ :( И ещё ниже привожу спиок файлов, её же, но скомпиленную mingw - тоже удаление ключа и последующий запуск, решает проблему, даже на тех компах, на которых скомпиленная VC8 не запускается... Что блин за полтергейст :( "не запускается" - я имею ввиду пишет Driver not loaded Код:
Название: Re: Как перенести программу на другой компьютер? Отправлено: BigHom от Июнь 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> Всё равно не работает - выдаётся сообщение: Приложение не запущено , поскольку оно не корректно настроено. Повторная настройка приложения может решить данную проблему. Название: Re: Как перенести программу на другой компьютер? Отправлено: Авварон от Июнь 01, 2011, 12:35 vcredist стоит?
Название: Re: Как перенести программу на другой компьютер? Отправлено: BigHom от Июнь 01, 2011, 12:56 как узнать стоит или нет? и на каком компе должен стоять - где собирается программа или где используется?
Название: Re: Как перенести программу на другой компьютер? Отправлено: Авварон от Июнь 01, 2011, 13:18 где используется, на то он и редист.
Название: Re: Как перенести программу на другой компьютер? Отправлено: BigHom от Июнь 01, 2011, 14:14 запустил где собирается - exe уменьшился в размерах - после этого где используется почему-то заработало(там тоже зустановил ). Интересно было бы знать почему . Спасибо за помощь.
Название: Re: Как перенести программу на другой компьютер? Отправлено: BigHom от Июнь 17, 2011, 10:52 На виртуальную машину с Windows98 не устанавливается - выдаёт сообщение чтобы сменили версию windows - как быть? Есть ли другие способы похожие как в Qt3 с переписыванием dll или включением в exe файл всего что нужно - то есть без запуска vcredist ?
Название: Re: Как перенести программу на другой компьютер? Отправлено: Пантер от Июнь 17, 2011, 10:54 Qt начиная с версии 4.6 (или 4.5) не поддерживает 98 винду. Тут ничего не поделаешь. Используй более старые версии Qt.
Название: Re: Как перенести программу на другой компьютер? Отправлено: LisandreL от Июнь 17, 2011, 11:11 Qt начиная с версии 4.6 (или 4.5) не поддерживает 98 винду. Если быть точным, то последняя официально и без костылей поддерживающая - 4.4.3.Название: Re: Как перенести программу на другой компьютер? Отправлено: BigHom от Июнь 17, 2011, 11:45 Если быть точным, то последняя официально и без костылей поддерживающая - 4.4.3. Как раз 4.4.3 выдаёт сообщение о том - чтобы версию windows поменять...Название: Re: Как перенести программу на другой компьютер? Отправлено: LisandreL от Июнь 17, 2011, 13:43 4.4.3 с MinGW точно работало.
http://get.qt.nokia.com/qt/source/qt-win-opensource-4.4.3-mingw.exe |