Създаване на самообновяващ се SFX архив с приложението
В това ръководство ще ви запозная с друга страхотна функция на SFX Creator, която е недокументирана поради факта, че целта се постига чрез логическо мислене, а аз пиша самата инструкция само защото един от потребителите на програмата зададе въпрос в дискусионната тема на SFX Creator във форума на OSZone, възможно ли е да се създаде подобен архив в SFX Creator, който да се преопакова сам? Спочвайки от версия 2.8 RC, SFX Creator може да създава самоактуализиращи се SFX архиви поради някои добавени функции (например променливата $PROJECT), нека да разгледаме конкретен пример за това какъв вид архив е и защо може да е необходим такъв архив.
Отново ще взема пример за необходимостта от съобщение, дадено от потребителя на SFX Creator: Необходимо е да се създаде архив с програмата (ще разгледаме Total Commander, по-нататък TC), след стартиране на SFX, архивът разопакова TC във временна папка, стартира приложението, изчаква да завърши, настройките се променят в програмата, програмата приключва и нашият архив се преопакова, запазвайки всички настройки на програмата, които потребителят въведени при работа с програмата.
защото TC съхранява настройките в папката с програмата - за нас е много по-лесно, не е нужно да пишем допълнителни команди, просто опаковайте папката TC Забележка. Ако вашата програма има достъп до регистъра - в проекта добавете импортиране на данни към регистъра, преди да стартирате програмата, и експортирайте от регистъра, след като приложението ви приключи
внимание! Следвайте стриктно инструкциите, не въвеждайте данните си там, където не са упоменати, иначе няма да успеете!
Основни настройки на проекта
Име на проекта: Total Commander_UniSFX (можете да изберете свой собствен, ТРЯБВА да съвпада с името на запазенияпроект! (директории с файлове на проекта) ) Инсталационна директория: $TEMP\$ Икона на SFX архив: $PROJECT\icon.ico Запазете SFX архива във файл: $PROJECT\$.exe
Допълнителни настройки на проекта
Отидете в Настройки на проекта Не забравяйте да поставите отметка в квадратчето за безшумна компилация Натиснете бутона за запазване на проекта и въведете името на проекта от главния прозорец на SFX Creator (в този пример - Total Commander_UniSFX) След като запазите проекта, незабавно отворете папката на проекта, като щракнете върху жълтия бутон на папката в диалоговия прозорец Настройки на проекта Добавете файла с икони, който ще има нашия SFX архив, хвърлете файла с името icon.ico в папката на проекта, която отворихме
Добавяне на записи с файлове на проекта
Допълнителни стъпки: Разопаковайте този архив в папката на проекта, това е минималният набор от файлове за разпространение на SFX Creator и NSIS (2 Mb), необходими за скрита компилация без използване на графични възможности и SFX Creator и при създаване на SFX архив С този запис добавяме съкратен комплект за разпространение към нашия SFX архив, след като стартираме нашето приложение, това копие на SFX Creator ще преопакова SFX архива
С този запис ние разархивираме съкратената дистрибуция на SFX Creator в папката за съкратена дистрибуция (каша? ;) ), така че съкратената сглобка да не бъде загубена по време на следващото компилиране на SFX архива
Допълнителни стъпки: В папката на проекта създайте директорията AppFiles и копирайте TC файловете в нея, така че главният файл Totalcmd.exe да е в самата папка AppFiles Мисля, че е ясно, добавете файловете на приложението към проекта
Добавяме разопаковане на файла с икона на проекта, така че последващите компилации да завършат успешно
Файлът на проекта, който в момента е активен за вас, също ще отиде в архива веднага в актуализирана форма :)
Допълнителни стъпки: Към папката на проектаразопаковайте този архив, това е скрипт за самоизтриване на нашия SFX архив и замяната му с актуализирана версия, когато нашето приложение приключи. Сценарият е универсален и не е необходимо да предписвате нищо в него, както искате;)
Стартираме приложението, възстановяваме архива с подмяната на актуализираната версия
Не забравяйте да поставите отметка в квадратчето Не чакайте изпълнението да завърши