» Как правильно добавлять файлы в проект

Официальный сайт SFX Creator
Группа SFX Creator [В]Контакте
Ох уж этот WinRAR SFX и подобные архиваторы, которые создают SFX архивы... :)

Решил создать данную страничку в файле справки, т.к. уж очень много возникает вопросов и непоняток у пользователей со вторым полем в главном окне SFX Creator, а именно, это поле "Пути распаковки" при добавлении файлов в проект.

Начну с главного текстового поля в главном диалоге SFX Creator - "Директория установки"

1. Поле "Директория установки"
 Значение данного поля после запуска/в процессе установки/после изменения директории установки пользователем принимает переменная $INSTDIR
 Т.е., если вы укажите в данное поле к примеру "$ProgramFiles\Моя программа", то переменная $INSTDIR примет вид пути директории программ в системе пользователя вместе с директорией "Моя программа", т.е. после инициализации SFX архива будет так:
$INSTDIR = C:\Program Files\Моя программа

При подключении графического интерфейса, указанный в данное поле путь будет путём по умолчанию для установки
Если пользователь изменит директорию назначения в графическом интерфейсе (если включен показ диалога выбора директории) или если пользователь укажет директорию назначения при включенной настройке Предоставить выбор пользователю, то переменная $INSTDIR примет значение той директории, которую выбрал пользователь


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

Поясняю назначение данного поля:
К примеру, у вас большой проект, и, ваша программа состоит не только из одной директории с файлами программы.
Например, у вас "тяжелый" установщик программы, который требует установить DLL библиотеки в системный каталог Windows для правильной работоспособности устанавливаемой программы, и в данное поле при такой ситуации очень удобно указать назначение файла как $SysDir, при этом, SFX архив распакует указанные файлы в системный каталог

Это сделано специально для гибкости создания полноценного SFX архива, ведь, по сути, программы могут состоять не только из одной директории файлов...

Поэтому, если вы распаковываете основные файлы программы, в данное поле всегда указывайте переменную $INSTDIR, это будет правильно, т.к. если конечный пользователь изменит директорию назначения при установке, то при указании того же путя, который вы указали в поле "Директория установки", файлы будут распакованы совершенно не в тот каталог...Будьте внимательны


При распаковке записи с директорией, папка с именем добавленной директории не создаётся

Если вы добавляете в проект запись с директорией, а не с файлом, то учтите тот факт, что распаковывается содержимое добавленной папки, а не сама папка (т.е. имя добавленной папки не будет добавлено к пути распаковки)
Например, вы добавляете папку в проект:
C:\Мой путь\Моя папка
И указываете каталог назначения как $INSTDIR
При исполнении SFX архива содержимое папки Моя папка будет распаковано в каталог $INSTDIR
Поэтому, если вы хотите, чтобы распаковалась именно папка целиком с приставкой её имени - просто добавьте к каталогу назначения имя добавленной папки: $INSTDIR\Моя папка
Внимание! Если вы используете метод сжатия с помощью 7-Zip, то добавлять имя папки к каталогу назначения не нужно, т.к. 7-Zip распаковывает именно саму папку, а не её содержимое