Страница 1 из 1

Exe без лишних файлов

Добавлено: 04 дек 2021, 10:39
rushonda
Добрый день!
А нельзя ли собрать exe без лишних файлов - например чтобы файл настроек был внутри exe?
(Чтобы просто скопировал exe и работаешь, лишние папки и файлы не тащишь за собой)

Re: Exe без лишних файлов

Добавлено: 04 дек 2021, 14:40
IvanLis
rushonda писал(а): 04 дек 2021, 10:39 Добрый день!
А нельзя ли собрать exe без лишних файлов - например чтобы файл настроек был внутри exe?
(Чтобы просто скопировал exe и работаешь, лишние папки и файлы не тащишь за собой)
Если файл настроек необходим, то "тащить" его необходимо отдельно.
Включать его в EXE не имеет смысла, пользователь его не сможет поменять, это делается константой.

Если же config файл необходим, а тащить его не хочется, то делается следующим образом.
При запуске программы проверяется наличие config файла, при его отсутствии он создается с настройками "по умолчанию".
Загружаются настройки и программа начинает работать.

Re: Exe без лишних файлов

Добавлено: 04 дек 2021, 14:44
Kosist
Если файл настроек будет внутри файла *.exe, то как его тогда редактировать вручную? Это вообще не общепринятая практика.
А если файл настроек не используется приложением, то его можно игнорировать, и не обязательно его копировать дальше.
В целом, если приложение не использует dll, которые нужно положить "возле" exe, то можно сбилдить только один файл exe.
Но не нужно забывать, что :labview: приложения требуют установку ран-тайма, так что хоть раз, но нужно будет устанавливать дополнительно и его + драйвера. И тогда проблема копирования нескольких файлов вместо одного - не такая уже и проблема...

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 18:16
rushonda
Ясно, а если есть dll, их в exe нельзя запихать? В общем все, (например картинки, которые из файла подгружаются ) кроме файла конфигурации?

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 18:19
rushonda
И все таки: нельзя ли файл конфигурации внутри программы хранить, причем если нужно из программы менять параметры, а не в отдельном файле

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 18:29
Artem.spb
rushonda писал(а): 05 дек 2021, 18:16 Ясно, а если есть dll, их в exe нельзя запихать? В общем все, (например картинки, которые из файла подгружаются ) кроме файла конфигурации?
dll специально придуманы чтобы жить отдельно и (в идеале) использоваться совместно разными программами.
Картинки можно встроить в те элементы, которые их используют.
И все таки: нельзя ли файл конфигурации внутри программы хранить, причем если нужно из программы менять параметры, а не в отдельном файле
Чем вам так ненавистен внешний файл?
Хранить можно, и даже менять настройки после запуска можно, но вот сохранить перед выходом не получится, и после перезапуска снова будут значения по умолчанию.
Править ехе на ходу мало кто в состоянии, разве что вирусы. Иногда это вызывает сложности - с обновлением, но в целом на мой взгляд это вполне разумно.

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 20:21
rushonda
Пришла в голову мысль, чтобы сделать 2 exe. Один основной, второй для изменения настроек, удобно вроде было бы на мой взгляд-2 экзешника кинул в папку и вперёд)

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 20:52
Artem.spb
rushonda писал(а): 05 дек 2021, 20:21 Пришла в голову мысль, чтобы сделать 2 exe. Один основной, второй для изменения настроек, удобно вроде было бы на мой взгляд-2 экзешника кинул в папку и вперёд)
2 файла, 1 - ехе, второй ini с настройками. Очень удобно и привычно - кинул в папку и вперёд.

Re: Exe без лишних файлов

Добавлено: 05 дек 2021, 23:05
Kosist
rushonda писал(а): 05 дек 2021, 20:21 Пришла в голову мысль, чтобы сделать 2 exe. Один основной, второй для изменения настроек, удобно вроде было бы на мой взгляд-2 экзешника кинул в папку и вперёд)
Довольно оригинальный велосипед, дерзайте :haha:
Еще добавьте третий екзешник, который будет копировать те два екзешника в папку.

Re: Exe без лишних файлов

Добавлено: 06 дек 2021, 04:56
ujin1
rushonda писал(а): 05 дек 2021, 20:21 Пришла в голову мысль, чтобы сделать 2 exe. Один основной, второй для изменения настроек, удобно вроде было бы на мой взгляд-2 экзешника кинул в папку и вперёд)
Так получается не самый минимальный вариант. Придется все-равно 2 файла копировать. А изначально нужно чтобы был один файл.
От варианта *.exe + *.ini будет отличаться расширением и содержимым. Причем в варианте *.ini содержимое более доступно и меньше по размеру.

Re: Exe без лишних файлов

Добавлено: 06 дек 2021, 10:31
Borjomy_1
Действительно непонятно, почему исполняемый файл не может сам, при определении отсутствия файла конфигурации, создать его самостоятельно с дефолтными настройками. Точно также можно хранить dll в теле exe, но разворачивать его в каталог перед запуском вызывающей его vi.
Но тут есть важный нюанс: обычно дистрибутив устанавливается в Program Files, а манипуляции в этих каталогах требуют прав администратора. Т.е разворачивать надо в ProgramData.

Re: Exe без лишних файлов

Добавлено: 06 дек 2021, 11:13
dadreamer
Borjomy_1 писал(а): 06 дек 2021, 10:31Действительно непонятно, почему исполняемый файл не может сам, при определении отсутствия файла конфигурации, создать его самостоятельно с дефолтными настройками.
Так откуда программе знать, какие настройки там должны быть, какие дефолтные, а какие нет? Полагая, что в .ini не только настройки среды/RTE содержатся. Всегда это "вручную" делалось, ну т.е., проверка наличия файла при запуске и создание файла с начальными настройками, если файла нет.
Borjomy_1 писал(а): 06 дек 2021, 10:31Точно также можно хранить dll в теле exe, но разворачивать его в каталог перед запуском вызывающей его vi.
Была уже такая технология, называлась Code Interface Node. Модуль хранился в ресурсах :vi: и распаковывался в Temp при запуске программы. Но это было, пожалуй, единственное преимущество по сравнению с традиционными библиотеками. Минусов оказалось больше и в 2011 NI от такого подхода отказались.
Если хочется, никто не мешает хранить данные в тэгах :vi: - viewtopic.php?p=69358#p69358 Но в EXE, очевидно, записать ничего не получится, т.к. его придётся перекомпилировать. Поэтому возвращаемся к классике типа .ini.

Re: Exe без лишних файлов

Добавлено: 08 дек 2021, 21:03
rushonda
Всем спасибо