Russian Qt Forum

Программирование => Общий => Тема начата: LisandreL от Январь 16, 2013, 07:29



Название: Компактный exe под Windows XP и выше
Отправлено: LisandreL от Январь 16, 2013, 07:29
Нужно написать небольшую утилитку.
Простенький GUI (окно, кнопки, поля ввода, лейбелы) + SQLite.
Хочется относительно компактно (SQLite всё равно килобайт 300 даст) без кучи dll или установки всяких redistributable.
Вопрос на чём писать. Вспоминать Delphi? Вспоминать WinApi (не хочется)? Какие ещё варианты?


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Bepec от Январь 16, 2013, 08:24
Эм... winApi/С++ даст самый малый размер для Windows.

Модуль sqlite опять же хз сколько весить будет :)  (поверим что 300 кб)

Я уже давно плюнул на "самый малый размер и один файл", ибо сейчас 2-5 мб не решают роли. А суя всё в один файл, мучаясь и вспоминая winApi, матеря всякие там параметры - нафиг надо.

PS мне заказчики так говорят - нам похрен сколько файлов, главное чтобы работало. И это верно по-моему.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Serr500 от Январь 16, 2013, 08:37
1) C# можно попробовать. Зависимость будет только одна - от .NET. На всех современных Win она идёт в дистрибутиве. Бинарники получаются весьма компактными. По поводу SQLite в C# ничего сказать не могу.
2) Если без кучи dll, то можно сделать статическую сборку Qt, выкинув при конфигурировании всё ненужное. Конечно, получится тяжеловато, но можно пожать бинарник UPX'ом.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: StLynx от Январь 16, 2013, 08:38
Господа, а под WinAPI вы имеете ввиду MFC?


Название: Re: Компактный exe под Windows XP и выше
Отправлено: LisandreL от Январь 16, 2013, 08:48
C# можно попробовать. Зависимость будет только одна - от .NET. На всех современных Win она идёт в дистрибутиве. Бинарники получаются весьма компактными. По поводу SQLite в C# ничего сказать не могу.
С SQLite в C# всё хорошо (как и во многих других языках). Но вот в XP (даже если вы не считаете её современной), указанной в заголовке темы, .NET нет даже первого.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Bepec от Январь 16, 2013, 08:52
Помоему выбор очевиден - голый winApi/с++, если очень хочется малого файла.
Да ещё и разработанный в каком нить 2005 рантайме :)

PS хотя незнаю, какой там рантайм в Xp то был по умолчанию?


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Пантер от Январь 16, 2013, 08:59
На Асме пиши.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: xokc от Январь 16, 2013, 09:03
Delphi 3/5/7 + KOL (http://www.kolmck.net/) = Компактность WinAPI и удобство Delphi.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Serr500 от Январь 16, 2013, 09:10
Но вот в XP (даже если вы не считаете её современной), указанной в заголовке темы
Упс... Не заметил, извиняюсь...


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Igors от Январь 16, 2013, 09:11
Никогда не занимался базами, поэтому про SQLite ничего не скажу. Но с точки зрения UI - WinAPI не так уж плох, если простенькое окно - ну день максимум, даже если все забыто


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Serr500 от Январь 16, 2013, 09:13
Господа, а под WinAPI вы имеете ввиду MFC?
WinAPI и MFC - совершенно разные вещи. MFC - это надстройка над WinAPI, что-то типа библиотеки готовых классов для ускорения и упрощения разработки.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: StLynx от Январь 16, 2013, 09:20
Я знаю, что это такое. Спасибо за ликбез :)
Просто недоумеваю зачем писать на голом WinAPI, когда есть MFC - вот и уточнил.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Serr500 от Январь 16, 2013, 09:32
На голом WinAPI бинарник компактнее. Он не тащит с собой кучу лишнего из MFC. Но и писать намного сложнее.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: kuzulis от Январь 16, 2013, 09:56
@LisandreL,

Для твоей цели отлично подойдет WTL!


Название: Re: Компактный exe под Windows XP и выше
Отправлено: vregess от Январь 16, 2013, 11:39
Если не хочешь WinAPI, то еще можешь глянуть FLTK (http://www.fltk.org/) и Fox-Toolkit (http://www.fox-toolkit.org/) (не уверен по поводу размера).
Ну и на закуску, можно написать скрипт AutoIt (http://www.autoitscript.com/site/autoit/) и скомпилировать в exe - тут вопрос, придётся ли таскать sqlite dll с собой (я думаю, это можно обойти).


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Alex Custov от Январь 16, 2013, 13:49
По описанию программа довольно простая. Поэтому Win32 API. Если хочется экзотики и максимально малого экзешника - то MASM32 :)


Название: Re: Компактный exe под Windows XP и выше
Отправлено: Bepec от Январь 16, 2013, 15:13
А можно плюнуть и написать жаба скрипт! Который будет выполняться сервером сценариев :D


Название: Re: Компактный exe под Windows XP и выше
Отправлено: LisandreL от Январь 19, 2013, 13:04
Ну и на закуску, можно написать скрипт AutoIt (http://www.autoitscript.com/site/autoit/) и скомпилировать в exe - тут вопрос, придётся ли таскать sqlite dll с собой (я думаю, это можно обойти).
Когда последний раз автоитом баловался, он сравнительно пухлые экзешники делал. Может с того времени что-то изменилось. Проверять не стал.

Delphi 3/5/7 + KOL (http://www.kolmck.net/) = Компактность WinAPI и удобство Delphi.
В общем написал на связке Лазаруса (http://www.lazarus.freepascal.org/) и KOL-CE (http://wiki.freepascal.org/KOL-CE/ru).
libsqlite.a собирал при помощи MinGW, заголовочник взял отсюда (https://github.com/plashenkov/SQLite3-Delphi-FPC/blob/master/Source/SQLite3.pas), подправив под статическую линковку.
Получилось где-то 440кб из них ~50 на GUI, остальное SQLite с собой притащил. 210кб в зипе. 190кб с ultra-brute UPX. Наверняка можно было и меньше, но меня устраивает.
Теперь о НО: Лазарус как IDE вызывает отторжение, KOL-CE перед установкой приходится патчить (http://sourceforge.net/tracker/?func=detail&aid=3565831&group_id=188451&atid=925375) и то работает не всё (http://sourceforge.net/tracker/?func=detail&aid=3565830&group_id=188451&atid=925373).
В общем что-то более ли менее серьёзное я на этой связке писать бы не стал, но вспомнить Pascal было приятно.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: kuzulis от Январь 19, 2013, 13:22
А почему WTL в связке MSVC не попробовал?


Название: Re: Компактный exe под Windows XP и выше
Отправлено: LisandreL от Январь 19, 2013, 13:39
Да не почему особо. Просто выбрал быстро что-то одно и быстро написал.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: panAlexey от Январь 20, 2013, 14:32
А почему WTL в связке MSVC не попробовал?
+1
Тоже вспомнил про него.


Название: Re: Компактный exe под Windows XP и выше
Отправлено: gil9red от Февраль 24, 2013, 03:36
Может быть еще сжать ехешник чем то наподобии UPX? :)