![]() |
|
|
![]()
|
|
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Всем привет. Вот возник вопрос как узнать например версию Qt шной дллки, либо же моего исполняемого файла. Как добавить версию файлу через файл ресурсов я знаю, а вот как програмно его считать? Это мне нужно для updatera
заранее спс. |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Ну компилтайм версия Qt доступна через макрос QT_VERSION
Для экспорта каких - либо символов из либы можно попробовать использовать методы класса QLibrary например:
допустим при сборке либы ты указываешь значение макроса QT_VERSION в качестве экпорта, а при загрузке либы читаешь значение этого параметра думаю, это реализуемо Добавлено через 1 минуту и 46 секунд надеюсь я правильно понял задуманное тобой |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Дело в том, что ОС пишет под названием файла его версию. Видно каким то образом она достает эти данные. Мне кажется должно быть что-то типо QFileInfo в котором все данные о файле.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Вот, делал как-то для венды. Там повсюду используется AnsiString из VCL, но, думаю, переделать на std::string - не проблема
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Оно еще и платформо зависимое? Жаль я думал в ку-те реализовали обертку. Тоесть нужно писать отдельно реализацию под линукс и винду? ((
|
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
В линуксе у исполняемых файлов нет версий, прописанных в них же. Вообще странные шаманства, версию программы можно хранить в любом другом месте - хоть в текстовом файле, хоть прямо задавать в коде через QCoreApplication::setApplicationVersion, генерируя значение версии в pre-build-е в каком-нибудь version.h. Это сообщение отредактировал(а) Amp - 7.2.2012, 18:30 |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Ну задать то версию не сложно а вот как ее потом считать?))) единственный кросплатформенный способ это хранить версии отдельно. Хотя опять же интересно как работает Qt ный апдейтер. Ведь он та определяет версии либ сустановленых на компе и если они старые перекачивает. как думаете версии хронит гдето отдельно или всетаки пробегается по файлам и проверяет??
|
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Так оно уже в коде есть в какой-нибудь переменной типа QString. Апдейтер, либо само приложение, лишь сравнивает зашитое значение и полученное с сервера. Как работает QtSDK не знаю. Можно конечно посмотреть его исходники, если есть время и желания https://qt.gitorious.org/installer-framework |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Можно хранить информацию в виде базы данных, применительно к Qt - лучше sqlite - обычно драйвер для неё всегда есть.
Но учти: При установке Qt в файл QtCore4.dll и некотроые другие прописываются пути установки, так что на разных компьютерах они могут различаться, даже при одной и той же версии Qt. |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Интересно как апдейтер может получить данные какой то там переменной у другого приложения))) Вобщем кому интересно, решил сделать вот так. Беру хеш всех файлов программы и записываю в .ini и любая прога при старте берет эти данные и отправляет на сервер. Если версии не совпадают сервер говорит что нужно обновить и соответсвено после обновления обновляется хеш. Дешево и сердито =) |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
я не спец в этом, но чисто логически это попахивает бредом ;) зачем в либе путь где она установлена?? оО чтоб потом ее нельзя было перенести на другую машину? ))) |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
хз. сам не понимаю, но, я посмотрел в своей - там действительно путь к C:\Qt\4.6.2 Это сообщение отредактировал(а) borisbn - 9.2.2012, 15:41 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
хм.. тоже в своей нашел какие то пути... это просто походу дописано как статическая информация. Возможно нужно для компиляции... да.. для хеша не пойдет тада...
а чо не пойдет... какая разница чо в ддлке, яж ее хеш беру. у меня то она не поменяется в апдейт-хранилище на сервере. это текущие ддлки при компиляции могут менятся. Это сообщение отредактировал(а) Sality123 - 9.2.2012, 15:57 |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Например: 1. Само приложение может сверить версии и только потом запустить updater. 2. Какие-то модули приложения могут экспортировать функцию, которая возвращает версию. 3. Версия может быть вшита в сам updater. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |