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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Запуск приложений на стороне пользователя  (Прочитано 8636 раз)
8Observer8
Гость
« : Сентябрь 01, 2014, 14:49 »

Привет!

В релизную папку добавил библиотеки:

- icudt51.dll
- icuin51.dll
- icuuc51.dll
- libstdc++-6.dll
- libwinpthread-1.dll
- Qt5Core.dll
- Qt5Gui.dll
- Qt5SerialPort.dll
- Qt5Widgets.dll

При запуске exe выводится сообщение:


Я нагуглил: ссылка

Пишут, что должна быть такая структура:
Цитировать
/YourAppInstallFolder
  - YourApp.exe
  - any needed Qt DLLs
  - /plugins
     -/platforms
        - qwindows.dll

Я так и сделал:


Но всё равно выводится то сообщение выше.

Заранее спасибо!
« Последнее редактирование: Сентябрь 02, 2014, 12:14 от 8Observer8 » Записан
Bepec
Гость
« Ответ #1 : Сентябрь 01, 2014, 14:53 »

Гуглишь плохо. Структура неправильна. /platforms должна быть рядом с exe.
Записан
8Observer8
Гость
« Ответ #2 : Сентябрь 01, 2014, 15:06 »

Почему приложение требует "icuin51.dll", а в Qt 5.3.1 есть только "icuin52.dll"? Что делать если я удалил старый Qt?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Сентябрь 01, 2014, 15:12 »

Почему приложение требует "icuin51.dll", а в Qt 5.3.1 есть только "icuin52.dll"?

Очевидно, что приложение собрано с более старой версий Qt.
Записан
8Observer8
Гость
« Ответ #4 : Сентябрь 01, 2014, 15:45 »

У меня старый Qt был тоже. Хотя на этапе создания приложения есть выбор... В общем, возможно я в Kit неверно настроил. Решил удалить оба и заново поставить новый.
« Последнее редактирование: Сентябрь 01, 2014, 16:20 от 8Observer8 » Записан
Bepec
Гость
« Ответ #5 : Сентябрь 01, 2014, 15:54 »

А обои то в зачем удалять? Компьютер без обоев - это скучно.
Записан
8Observer8
Гость
« Ответ #6 : Сентябрь 01, 2014, 16:40 »

А обои то в зачем удалять? Компьютер без обоев - это скучно.
"Оба" SDK Улыбающийся

Гуглишь плохо. Структура неправильна. /platforms должна быть рядом с exe.
Да, на другой машине, без Qt SDK запускается Улыбающийся

Для простого GUI приложения (где используется последовательный порт) надо отсюда "c:\Qt\Qt5.3.1\5.3\mingw482_32\bin\" скопировать такие dll к exe:
- platforms/qwindows.dll (отсюда c:\Qt\Qt5.3.1\5.3\mingw482_32\plugins\platforms\)
- icudt52.dll
- icuin52.dll
- icuuc52.dll
- libgcc_s_dw2-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll
- Qt5Core.dll
- Qt5Gui.dll
- Qt5SerialPort.dll
- Qt5Widgets.dll
« Последнее редактирование: Сентябрь 01, 2014, 17:44 от 8Observer8 » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #7 : Сентябрь 01, 2014, 17:34 »

Вот пример скрипта для InnoSetup который я урезал, но должен работать и у вас. Инсталяхи отлично компилируются и отлично ставятся. ПО работает на многих машинах, на которых не стояло Qt - полет нормальный.

Код:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My App"
#define MyAppVersion "1.0"
#define MyAppPublisher "My Company"
#define MyAppExeName "qtapp.exe"

[Setup]
; NOTD: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{19B8E9AD-1FFA-4977-B96F-D68DD248AE9E}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=D:\OutputDir
OutputBaseFilename=Setup
SetupIconFile=D:\work\*****\resources\icon.ico
Compression=lzma
SolidCompression=yes

[CustomMessages]
english.MainProgram_Desc=Program Files
english.QtLibs_Desc=Qt Libraries
english.FullInstallation=Full installation
english.CustomInstallation=Custom installation

russian.MainProgram_Desc=Основные файлы
russian.QtLibs_Desc=Библиотеки Qt
russian.FullInstallation=Установка всех компонентов
russian.CustomInstallation=Выборочная установка

[Types]
Name: "full"; Description: "{cm:FullInstallation}"
Name: "custom"; Description: "{cm:CustomInstallation}"; Flags: iscustom

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Components]
Name: "program"; Description:"{cm:MainProgram_Desc}"; Types: full custom; Flags: fixed
Name: "qtlibs"; Description:"{cm:QtLibs_Desc}"; Types: full custom

[Files]
Source: "D:\release\qtapp.exe"; DestDir: "{app}"; Components: program; Flags: ignoreversion
;Core libs
Source: "D:\release\qtdll.dll"; DestDir: "{app}";  Components: program; Flags: ignoreversion

;Qt shared libs
Source: "D:\QtLibs\icudt52.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\icuin52.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\icuuc52.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\libgcc_s_dw2-1.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\libstdc++-6.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\libwinpthread-1.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5Core.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5Gui.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5Network.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5OpenGL.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5Widgets.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\Qt5Xml.dll"; DestDir: "{app}"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\platforms\qminimal.dll"; DestDir: "{app}\platforms"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\platforms\qoffscreen.dll"; DestDir: "{app}\platforms"; Components: qtlibs;  Flags: ignoreversion
Source: "D:\QtLibs\platforms\qwindows.dll"; DestDir: "{app}\platforms"; Components: qtlibs;  Flags: ignoreversion


[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

Записан
8Observer8
Гость
« Ответ #8 : Сентябрь 01, 2014, 17:59 »

Fregloin, спасибо! Может осилю когда-нибудь  Улыбающийся а сейчас что-то со скриптом не так:

Записан
8Observer8
Гость
« Ответ #9 : Сентябрь 01, 2014, 18:01 »

Ну, вроде понял, что это примерный скрипт и там надо конкретные данные указывать Улыбающийся
Записан
vizir.vs
Гость
« Ответ #10 : Сентябрь 02, 2014, 08:18 »

Если ты используешь CMake для сборки приложений, то можно заюзать CPack для сборки установочника. Он ставится вместе с cmake и пишется все в CMakeLists.txt. В итоге у тебя получается установочник и для винды и для линя.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #11 : Сентябрь 02, 2014, 10:54 »

ну в этом скрипте были указаны мои пути, вам следует указать свои, и все должно заработать.
в линях для своего ПО я использую созданные мною деб пакеты. впринципе там qt можно ставить несколькими способами, но я так понял тема актуальна именно для винды.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #12 : Сентябрь 02, 2014, 11:27 »

Для собирания всех зависимостей используй windeployqt из комплекта Qt SDK
Записан

Гугль в помощь
8Observer8
Гость
« Ответ #13 : Сентябрь 02, 2014, 11:48 »

Спасибо! Скорее всего, windeployqt - наилучшее решение!

Может инсталяторы имеет смысл использовать для крупных проектов? А для мелочи всякой достаточно же передать пользователю exe с необходимыми dll. Он уже сам решит: где расположить папку, создать ли ярлык на рабочем столе или закрепить в меню "Start". Кто как думает?
Записан
VPS
Гость
« Ответ #14 : Сентябрь 02, 2014, 12:08 »

Можно ещё попробовать использовать "Enigma Virtual Box" для того, чтобы все файлы в один собрать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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