Исходники проекта и собранный/установленный терминальный клиент

Added by Марат Абраров 23 days ago

Добрый день.
Исходники собираются (Windows 7 Pro SP1 + MSVS 2010 SP1 + Qt 4.8.0 + Boost C++ Libraries 1.48 + OpenSSL 1.0.0f).
Теперь не хватает документации:
  1. поддерживаемые ОС и устройства;
  2. структура папок установленного терминального клиента;
  3. файлы настройки (xml/ini), и данные, которые необходимо внести в реестр Windows.

Наверное, что-то из документации (пункт №1) можно взять из [http://www.cyberplat.ru/tech/terminal/].
Так же неплохо было бы иметь прямо в исходниках набор(ы) тестовых конфигураций (с описанием) для терминального клиента.
Да и проект, собирающий инсталлятор, тоже был бы весьма кстати.


Replies

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 22 days ago

Подготовим документацию.

Структуру папок начали описывать здесь:
http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

Проект, собирающий рабочее дерево файлов и каталогов приложения есть:
http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 22 days ago

Алексей Катроевский написал(а):

Подготовим документацию.

Структуру папок начали описывать здесь: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

QtDBus4.dll нет в Qt libraries, собранных под MSVS 2010 [http://qt.nokia.com/downloads/windows-cpp-vs2010].
И в установленном терминальном клиенте 2.x ее тоже нет. Точно нужна?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 22 days ago

Алексей Катроевский написал(а):

Подготовим документацию.

Структуру папок начали описывать здесь: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

libssl32.dll при сборке OpenSSL тоже нет. Судя по терминальному клиенту 2.x, libssl32.dll есть переименованная копия ssleay32.dll. Зачем?

cyberplat_monitoring.dll и cyberplat_monitoring_ru.qm,
client.exe и client_ru.qm,
guard.exe и guard_ru.qm,
tray.exe и tray_ru.qm в собранных исходниках cyberplat не нашел.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 22 days ago

Алексей Катроевский написал(а):

Подготовим документацию.

Структуру папок начали описывать здесь: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

Не хватает указания прав доступа к папкам и файлам. Хотелось бы ограничить - все-таки обязательный минимум безопасности. Запускать все exe с правами администратора как-то несерьезно.
Еще забыли сказать про Microsoft Visual C++ 2010 Redistributable [http://www.microsoft.com/downloads/ru-ru/details.aspx?familyid=a7b7a05e-6de6-4d3a-a423-37bf0912db84&displaylang=ru].

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 22 days ago

Марат Абраров написал(а):

QtDBus4.dll нет в Qt libraries, собранных под MSVS 2010 [http://qt.nokia.com/downloads/windows-cpp-vs2010]. И в установленном терминальном клиенте 2.x ее тоже нет. Точно нужна?

QtWebkit зависит от phonon, который зависит от QtDBus. Если у вас не используются виджеты на html, то можно просто не собирать плагин WebkitBackend.
(в коммерческой Qt библиотека QtDBus есть...)

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 22 days ago

Марат Абраров написал(а):

libssl32.dll при сборке OpenSSL тоже нет. Судя по терминальному клиенту 2.x, libssl32.dll есть переименованная копия ssleay32.dll. Зачем?

Все эти файлы - дистрибутив OpenSSL. Может какие-то файлы и избыточны (для совместимости), но для нас это не критично, главное чтобы Qt корректно работала с SSL.

cyberplat_monitoring.dll и cyberplat_monitoring_ru.qm, client.exe и client_ru.qm, guard.exe и guard_ru.qm, tray.exe и tray_ru.qm в собранных исходниках cyberplat не нашел.

Ознакомьтесь с этой документацией: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 22 days ago

Алексей Катроевский написал(а):

QtWebkit зависит от phonon, который зависит от QtDBus.

А разве phonon под Windows не использует phonon_backend plugin (QTDIR\plugins\phonon_backend\phonon_ds94.dll) - [http://developer.qt.nokia.com/doc/qt-4.8/phonon-overview.html]?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 22 days ago

Очень даже может быть, если phonon для webkit динамически загружает бэкенд (потому что в зависимостях dll ничего подобного не видно). Но webkit backend - это опция, мы его плотно не тестировали. Наш стандартный интерфейс на qml.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 22 days ago

Очень даже может быть, если phonon для webkit динамически загружает бэкенд (потому что в зависимостях dll ничего подобного не видно). Но webkit backend - это опция, мы его плотно не тестировали. Наш стандартный интерфейс на qml.

А зачем CryptLib.dll?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 21 days ago

Извините, не заметил, это, похоже, случайно в форму ответа мусор попал какой-то. Почистил сообщения.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 21 days ago

Марат Абраров написал(а):

Не хватает указания прав доступа к папкам и файлам. Хотелось бы ограничить - все-таки обязательный минимум безопасности. Запускать все exe с правами администратора как-то несерьезно.

Приложение работает в своём каталоге, содержимое которого используется на чтение/запись. Другие файлы в файловой системе не использует.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 21 days ago

Алексей Катроевский написал(а):

Приложение работает в своём каталоге, содержимое которого используется на чтение/запись. Другие файлы в файловой системе не использует.

Это понятно и без объяснений (а что с реестром Windows?).
Думал, что можно все же оставить права на запись (тому "ограниченному пользователю", от имени которого запускался бы терминальный клиент) только для папок с данными/логами. Ну и сделать некоторые исключения по запуску, например, Updater запускать "от имени администратора"

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 21 days ago

client.exe нужны права для смены времени, перезагрузки ОС. В реестр мы не пишем.

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

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 21 days ago

Спасибо.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Нашел баг в Qt 4.8.0 на Windows - парсинг командной строки неправильно обрабатывает двойной обратный слэш - [https://bugreports.qt.nokia.com/browse/QTBUG-23687].

В связи с этим вопрос:
Вот здесь - [http://dev.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0] - вторым и третьим параметром Composer передаются пути:
tools\Composer\msvc\Release\Composer.exe 3.0\scripts\runtimes\17_ru.xml 3.0\ 3.0\ReadySoftware\

Нужно ли ставить обратный слэш в конце этих параметров?

Вызываю Composer вот так.
"%TC_PROJECT_DIR%\tools\Composer\build\Release\Composer.exe" "%TC_DIR%\scripts\build\runtimes\17_ru.xml" "%TC_DIR%" "%TC_DIR%\ReadySoftware" 
При этом он отрабатывает (с ошибками) так же, как если бы он вызывался вот так (TC_DIR, хвала моей предусмотрительности, не содержит пробелов):
"%TC_PROJECT_DIR%\tools\Composer\build\Release\Composer.exe" %TC_DIR%\scripts\build\runtimes\17_ru.xml %TC_DIR%\ %TC_DIR%\ReadySoftware\

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

У вас не работает Composer?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Алексей Катроевский написал(а):

У вас не работает Composer?

Похоже, я неясно выразился.
Composer работает (как я и писал выше) одинаково в обоих случаях. Ошибки Composer приведу позже (они связаны с отсутствием некоторых файлов в исходниках).
"Соль" моего вопроса, заданного ранее, в том, что если "ставить обратный слэш в конце этих параметров" обязательно, то путь к исходникам "Терминального проекта КиберПлат" не должен содержать пробелы. Этого нет в документации - [http://dev.cyberplat.com/redmine/wiki/pt/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F].

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Вот, что пишет Composer - см. приложенный "cyberplat_composer_log.txt".
Похоже, cyberplat\3.0\src\interface\plugins\Utils\msvcUtils.vcxproj просто не включен ни в один MSVS solution, поэтому он и не собирается, поэтому plugin utils.dll не может быть найден Composer-ом.

cyberplat_composer_log.txt - cyberplat_composer_log.txt (6.3 KB)

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

Марат Абраров написал(а):

Похоже, cyberplat.0srcinterfacepluginsUtilsmsvcUtils.vcxproj просто не включен ни в один MSVS solution, поэтому он и не собирается, поэтому plugin utils.dll не может быть найден Composer-ом.

Так и есть. Соберите его отдельно, этот файл необходим для интерфейса.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Алексей Катроевский написал(а):

Так и есть. Соберите его отдельно, этот файл необходим для интерфейса.

Жаль, что этого нет в документации.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Алексей Катроевский написал(а):

Подготовим документацию.

Структуру папок начали описывать здесь: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

Проект, собирающий рабочее дерево файлов и каталогов приложения есть: http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0

Странно, но Composer по 3.0\scripts\runtimes\17_ru.xml не собирает в дистрибутив все файлы, помеченные как обязательные (!) в документации [http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0].
Остальное "руками" или следует использовать другой (написать свой) конфигурационный файл для Composer?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

Марат Абраров написал(а):

"Соль" моего вопроса, заданного ранее, в том, что если "ставить обратный слэш в конце этих параметров" обязательно, то путь к исходникам "Терминального проекта КиберПлат" не должен содержать пробелы. Этого нет в документации - [http://dev.cyberplat.com/redmine/wiki/pt/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F].

У нас Composer вызывается с параметрами в кавычках и без слэшей в конце.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Алексей Катроевский написал(а):

Марат Абраров написал(а):

"Соль" моего вопроса, заданного ранее, в том, что если "ставить обратный слэш в конце этих параметров" обязательно, то путь к исходникам "Терминального проекта КиберПлат" не должен содержать пробелы. Этого нет в документации - [http://dev.cyberplat.com/redmine/wiki/pt/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F].

У нас Composer вызывается с параметрами в кавычках и без слэшей в конце.

Тогда, пожалуйста, исправьте [http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0]. Иначе, при наличии пробелов в путях и обратном слэше в конце параметров командой строки, Composer натыкается на [https://bugreports.qt.nokia.com/browse/QTBUG-23687]:
Wrong argument count. Expected arguments: <settings_file> <source_dir> <target_dir>.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

Марат Абраров написал(а):

У нас Composer вызывается с параметрами в кавычках и без слэшей в конце.

Тогда, пожалуйста, исправьте [http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0]. Иначе, при наличии пробелов в путях и обратном слэше в конце параметров командой строки, Composer натыкается на [https://bugreports.qt.nokia.com/browse/QTBUG-23687]:

Исправили.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 20 days ago

Алексей Катроевский написал(а):

Исправили.

Исправьте требование наличия QtDBus4.dll - вместо него, полагаю, нужна папка phonon_backend и phonon_ds94.dll в ней.

Странно, но Composer по 3.0\scripts\runtimes\17_ru.xml не собирает в дистрибутив все файлы, помеченные как обязательные (!) в документации [http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0].
Остальное "руками" или следует использовать другой (написать свой) конфигурационный файл для Composer?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

Марат Абраров написал(а):

Исправьте требование наличия QtDBus4.dll - вместо него, полагаю, нужна папка phonon_backend и phonon_ds94.dll в ней.

Спасибо, изменили. Для новых вопросов лучше создавать отдельные темы, так информация в форуме будет удобней и полезней для всех.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 20 days ago

Марат Абраров написал(а):

Странно, но Composer по 3.0scripts

untimes_ru.xml не собирает в дистрибутив все файлы, помеченные как обязательные (!) в документации [http://opensource.cyberplat.com/redmine/wiki/pt/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%B0].

Остальное "руками" или следует использовать другой (написать свой) конфигурационный файл для Composer?

Эти файлы находятся в src/runtimes, мы добавим этот каталог в opensource репозиторий.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 19 days ago

Осталось понять, откуда брать эти файлы:
plugins/
     cyberplat_monitoring.dll
     cyberplat_monitoring_ru.qm
! keys.xml
! config.xml
! operators.xml
! groups.xml
! commissions.xml

Про cyberplat_monitoring.dll можно пока забыть.

А остальное? Вместе с этим:

Эти файлы находятся в src/runtimes, мы добавим этот каталог в opensource репозиторий.

?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 19 days ago

Плагин мониторинга - это закрытый проект. dll можете взять из собранного нами дистрибутива.
Остальные файлы генерируются сервером. Схемы этих файлов есть здесь: 3.0/doc/Schemas/

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 19 days ago

Алексей Катроевский написал(а):

Эти файлы находятся в src/runtimes, мы добавим этот каталог в opensource репозиторий.

Странно, добавить-то добавили. Но... вместо *.dll от Qt, с которой проходит сборка, Composer (по "добавленным скриптам") складывает *.dll от... Digia Plc (их тоже зачем-то добавили в репозиторий).
Аналогично и OpenSSL (она указывается при сборке Qt).
?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 18 days ago

У нас сборка именно с этой Qt. Можете заменить их на свои файлы.
К OpenSSL у Qt требования такие: version 0.9.7 or later.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 18 days ago

Алексей Катроевский написал(а):

У нас сборка именно с этой Qt. Можете заменить их на свои файлы. К OpenSSL у Qt требования такие: version 0.9.7 or later.

Это все я уже понял :)
Я не понял, почему Composer (точнее скрипт) не берет их (файлы Qt) через QTDIR.
Уже нашел cyberplat\3.0\scripts\build\runtimes\common.xml, строка 45.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 18 days ago

Марат Абраров написал(а):

Я не понял, почему Composer (точнее скрипт) не берет их (файлы Qt) через QTDIR.

В этом есть резон, возможно мы так и сделаем.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 18 days ago

cyberplat\3.0\scripts\build\runtimes\common.xml:
...
<!-- Исполняемые файлы -->
<file source="src/apps/PaymentProcessor/build/Release/PaymentProcessor.exe" target="client.exe"/>
<file if="{TC_DEBUG_BUILD}" source="src/apps/PaymentProcessor/build/Release/paymentprocessor.pdb" target="paymentprocessor.pdb"/>
<file source="src/apps/WatchService/build/Release/WatchService.exe" target="guard.exe"/>
<file if="{TC_DEBUG_BUILD}" source="src/apps/WatchService/build/Release/watchservice.pdb" target="watchservice.pdb"/>
<file source="src/apps/WatchServiceController/build/Release/WatchServiceController.exe" target="tray.exe"/>
<file if="{TC_DEBUG_BUILD}" source="src/apps/WatchServiceController/build/Release/watchservicecontroller.pdb" target="watchservicecontroller.pdb"/>
<file source="src/apps/Updater/build/Release/Updater.exe" target="updater.exe"/>
<file if="{TC_DEBUG_BUILD}" source="src/apps/Updater/build/Release/updater.pdb" target="updater.pdb"/>
...

Почему при TC_DEBUG_BUILD==true исполняемые файлы берутся из Release - вроде как они не содержат отладочной информации и *.pdb-файлы уже не помогут?

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 18 days ago

Марат Абраров написал(а):

Почему при TC_DEBUG_BUILD==true исполняемые файлы берутся из Release - вроде как они не содержат отладочной информации и *.pdb-файлы уже не помогут?

Для правильного отображения имён методов в стеке вызовов при падении программы помогут.

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Марат Абраров 18 days ago

Алексей Катроевский написал(а):

Марат Абраров написал(а):

Почему при TC_DEBUG_BUILD==true исполняемые файлы берутся из Release - вроде как они не содержат отладочной информации и *.pdb-файлы уже не помогут?

Для правильного отображения имён методов в стеке вызовов при падении программы помогут.

Я правильно понимаю, что можно написать:
<file if="!{TC_DEBUG_BUILD}" source="src/apps/PaymentProcessor/build/Release/PaymentProcessor.exe" target="client.exe"/>
<file if="{TC_DEBUG_BUILD}" source="src/apps/PaymentProcessor/build/Debug/PaymentProcessor.exe" target="client.exe"/>

RE: Исходники проекта и собранный/установленный терминальный клиент - Added by Алексей Катроевский 18 days ago

Марат Абраров написал(а):

Я правильно понимаю, что можно написать: [...]

Так можно. Но зачем? Проще при отладке ПО запускать его прямо из среды разработки.

(вообще для нас TC_DEBUG_BUILD означает сборку дистрибутива для внутреннего тестирования тестировщиками, а не для отладки программистами)