Войти

Показать полную графическую версию : Создание SFX-архивов для автоматической установки


FlexAdmin
24-12-2010, 10:26
Предлагаю в данной теме изучать вопросы, касающиеся создания SFX-архивов, а так-же делиться своими работами.

Начнем с примера - Locate32.


http://gyazo.com/38ab33ac1da0c8cddecbed39335756c8.png


1. Механизмы программы

Для начала нужно обратить на такие детали, как настройки программы. Подопытный имеет возможность хранить свои настройки и в файле и в реестре, по желанию. Чтобы не задавать потом вопросов, мы рассмотрим вариант работы с реестром сразу.
Программа имеет только один критически важный параметр, который нам нужно перенести: язык интерфейса. Сразу настройте эту опцию у себя на машине, сохраните настройки путем выхода из программы. А теперь пройдемте в реестр, Господа:


http://gyazo.com/52effdf964c75c2097113f03e68ab217.png


Очевидно, что этот параметр отвечает за выбранный язык интерфейса. Открываем блокнот, сохраняем файл "Install.cmd" в папке с Подопытным.
Теперь пишем в нем:
REG DELETE HKCU\Software\Update /f
REG ADD HKCU\Software\Update\Locate32 /v Language /t REG_SZ /d Lan_ru.dll
Первая строка удаляет раздел реестра, чтобы вычистить настройки, вторая создает ключ с указанием языка.
Вопрос с настройками мы решили. Обратимся к специфике первого запуска: Что делает программа, когда её запускают в первый раз? Она делает настройки, ассоциируется с файлами и обновляет всякие свои базы данных. Пациент активно работает с базой данных, которую при первом запуске нужно создать. Обращаемся к файлу справки нашей программы, ищем ключ, отвечающий за выполнение подобных операций.
http://gyazo.com/67ce5419c06b0243b747044b693dcdfa.png
Отлично, ключ -u. Добавим его в наш Install.cmd
Так-же нам нужна иконка для SFX-архива. Её можно извлечь такими программами, как ResHacker, Restorator и т.д. Извлеките её и положите в папку с программой, дав ей имя "Icon"(Для однозначности).


http://gyazo.com/e66a7e787fe00353e8be44c1649a40e3.png


start locate32.exe -u
Сохраните файл. Для проверки результата своей работы удалите из реестра раздел с настройками, перенесите программу в другую папку и запустите Install.cmd. Все прошло гладко? Язык русский? Это хорошо, ведь это значит, что мы будем делать архив.


2. Знакомтесь: Архив. SFX-Архив.
Программирование это Дзен. Хоть мы и не пишем программу, а делаем архив, мы всё равно должны помнить о Дзене и забыть о привязанностях, поэтому не жмите на папочку Locate32, в поисках "Добавить в архив...", а зайдите в неё и добавьте СОДЕРЖИМОЕ ПАПКИ, поскольку название конечной папки должен выбирать пользователь. Смотрите (http://gyazo.com/fcf8a3f06abd350342d0f21139cffee7.png), если вы не поняли, что я имею в виду.
Теперь смело жмите "Добавить в архив".


http://gyazo.com/0f967542089800d4874e6afaf170181f.png


Галочка "Создать SFX-архив": Ставим, иначе ничего не получится.
Выпадающий список "Метод сжатия": На маленьких программках можно ставить "Максимальный". Если вы пакуете большую игру или папку с музыкой(лол) то не стоит сжимать вообще. Ну если только немножко.
Галочка "Добавить электронную подпись": Если у Вас своя собственная лицензионная копия WinRaR, зарегистрированая на Вас, то отметьтесь, как автор этого творения. Если у Вас пиратский WinRaR, то вы предпишете авторство владельцу лицензионного ключа.
Галочка "Добавить информацию для восстановления": Если Вы собираетесь таскать эти программы на компакт-дисках, которые любят царапаться, то стоит потратить время и на это.
Галочка "Заблокировать архив": Если Вам нравиться секс с пересборкой архива, то ставьте. Но я рекомендую делать это в последний момент. Я скажу, как. Кстати, есть 56792 для снятия блокировки.
Открываем вкладку "Дополнительно". Если вы используете информацию для восстановления, то установите значение в соответствующем поле. Рекомендую 5%. Теперь ищите кнопку "Параметры SFX".

Вкладка "Общие":

Поле "Путь для распаковки": Если мы ставим полезную утилиту, то просто пишем название папки(в нашем случае "Locate32"), если игру, то пишем "C:\Games\Zuma". Соответственно в первом случае переключатель должен стоять в положении "Создать в папке 'Program Files'", а во-втором "Абсолютный путь".
Галочка "Сохранять и восстанавливать пути": нужна лишь в том случае, если мы работаем с регулярно обновляемой программой, апдейты которой распаковываются в одно и тоже место. Игнорируйте галочку.
Поле "Выполнить до установки": сюда мы вводим Install.cmd. Если батник/программа лежат не в корне архива, а, предположим, в папке "bin", то указываем путь bin\Install.cmd. Вообщем в архиве пути выглядят так-же, но там нет понятия "имя диска" и пути растут от корня архива.

Вкладка "Текст и графика"

Не надо сидеть и выдумывать тексты, если всё придумано до вас. Нажимайте "Загрузить текст из файла" и выбирайте файл Readme от своего подопытного. Там уже все написано, и версия с билдом, и системные требования и... И всё! Загружайте значок icon.ico, который вы выдрали из EXE-файла подопытного, если найдется логотип(Он, кстати, в подопытном есть, можно выковырять. Правда он горизонтальный, не впишеться. Как вписать, я расскажу потом).

Вкладка "Лицензия"
Не стоит заполнять эту вкладку, если не хотите тратить время на "Согласен с условиями", к тому же подопытный имеет текст лицензии GNU в файле Readme. Достаточно проследить, чтобы файл License.txt попал в архив и сопровождал подопытного. Если же хотите сделать всё правильно, то загрузите его в SFX.

Вкладка "Режимы"

Выбираем "Не показывать начальный диалог". Можно, конечно, выбрать "Скрыть всё", но тогда мы не будем видеть полосочки с заветными процентами, которая так радует глаз в больших архивах. Словом, если вы уверены, то делайте выбор сами.

Вкладка "Дополнительно"
На всякий случай установите галочку "Запрос административного доступа", чтобы вашу работу не испортил UAC, тот что в Windows Vista/7. Теперь жмем "Добавить ярлык...".

http://gyazo.com/2dec128759f2d77f27bba343156d9678.png

Не забывайте, что путь к файлу нужно писать ОТ КОРНЯ АРХИВА.
Тем-же манером создаем ярлык для обновления баз. Только теперь в поле "Имя файла" мы пишем locate32.exe -u. Рекомендую расположить 2 ярлычка в папке "Пуск\Программы"

http://gyazo.com/16e01c45564c3a47273a4d792901f597.png

Добавив ярлыки и перепроверив все настройки нажимаем "Сохранить текущие параметры, как стандартные"(на вкладке "Общие"), чтобы в следующий раз видеть что и где изменять.
Теперь жмем ОК и попадаем в предидущее окно. Открываем вкладку "Время" и снимаем галочку "Сохранять точное время изменения файлов", для идеальности. Проверяем и жмем кнопку ОК.
http://gyazo.com/7c5ed9d66b1955ab1ca677413128ca5f.png


3. Работа над ошибками

SFX-Архив можно модифицировать WinRaR-ом, да-да. Сначала мы запустим его. Если не всё работает нормально, то:
Правой клавишей на продукте, WinRaR, Открыть в WinRaR. Там нам дана кнопка "SFX"
http://gyazo.com/b0fde00adaba311d7fe0b049e9823193.png
Так-же вы можете самостоятельно научиться править SFX через коментарии, как правило это упрощает создание больших количеств ярлыков.

Обратите внимание, что отладку CMD-файлов, скриптов, свистелок и перделок следует ВНЕ архива. После исправления этих ошибок вы можете перетащить все файлы из папки в окно архива.
При этом Вас спросят параметры архива вновь. Постарайтесь сделать их такими-же. Только SFX-параметры трогать вообще не нужно.
http://gyazo.com/1551d828da93dddad15535c02c426819.png


4. Логотип
Откройте SFX-архив программой ResHacker, выберите слева Dialog\STARTDLG
http://gyazo.com/524824b7db21df3da96ba91cf6a415ae.png
Логотип программы имеет размер 442*80. Задаем размеры поменьше, теперь растягиваем объекты так, чтобы уместить логотип. Обратите внимание, что на панели ResHacker'а показываются координаты и размеры выделеных объектов, а для точного перетаскивания можно воспользоваться стрелками на клавиатуре. Либо, если вы сообразительны и быстро понимаете всякие принципы, то просто отредактируйте текст под формой.
Если вы не зашили логотип при сборке архива, то самое время сделать это сейчас. Ресурс лежит в разделе BitMap. Обратите внимание, что следует сохранить формат. Кстати, размер объектов в ResHacker'е указан в твипах. Учтите это при подгонке рисунка.

5. Блокировка архива
Открываем SFX-архив в WinRaR, жмем на панели кнопку "Информация", вкладка "Параметры", галочка "Запретить изменения архива". Рекомендую создать резервную копию.

http://gyazo.com/ba99d307451ca0586832e5af218acf0a.png


Не забывайте, что WinRaR - платная программа.

В силу ограничений выкладываю эту работу на RGHost'е (http://rghost.ru/3734566)

Механизмы программы:
Иногда, для достижения эффекта русификации достаточно одного из 2-х вариантов:
- Удалить все локализации, кроме русской
- Перезаписать файл локализации по умолчанию русскоязычным файлом
Так-же подобные настройки нередко храняться в INI и CFG файлах.

Работа с реестром в CMD/BAT файлах
Утилита REG дает нам возможность проводить любые манипуляции с реестром. Полезно знать синтаксис работы с ней. Для получения справки введите в командной строке "REG /?"

leeseecin
24-12-2010, 12:11
FlexAdmin, а чем плох этот (http://www.oszone.net/3171) вариант? вреде бы написано доступно для восприятия.

FlexAdmin
24-12-2010, 18:27
Статью я обнаружил после написания своей работы, это раз. К сожалению интернет краев не имеет, все статьи прочесть не реально, а на вашем сайте их предостаточно. Имеются и различия. В своей работе я пояснял людям принципы создания инсталятора, а не запаковки инсталятора для тихой установки(об этом была статья приведенная ранее), поэтому мой велосипед имеет другое значение. Плюс моя работа имеет больше пояснений, ПОЧЕМУ нужно делать то или иное действие.

Есть во-вторых: Я предлагаю выкладывать сюда работы.

gora
29-12-2010, 11:10
FlexAdmin

1 Приведите шапку в соответствие с ОПК п.3.9 (http://forum.oszone.net/rules.html), как геометрические размеры картинок, так и общий их "вес", который не должен превышать 40кБ (у Вас более 500кБ).
2 Создание SFX-архивов »
Вы привели пример RAR SFX-архива, остальные (CAB, ZIP, 7z ...) Вы тоже будете описывать?
3 Начнем с примера - Locate32. »
Для начала неплохо было бы сказать, что это за программа, и дать ссылку на сайт разработчика.
4 Я предлагаю выкладывать сюда работы »
Что именно Вы подразумеваете под этим выражением? Выкладывать готовые SFX? Или подробное описание его изготовления с картинками?

FlexAdmin
02-01-2011, 13:12
1. Хорошо, но позже.
2. Нет, если только SFX для 7Z
3. Хорошо. Позже.
4. Очевидно же.

Oleg48
02-01-2011, 20:53
По этому поводу есть несколько статей даже на сайте цельная unattended.oszone.net.chm,считаю автора не оригинальным, а 7zSFX лучще делать модифицированным модулем Олега Щербакова, судя по нику автора, он типа круче всех, статьи которые висят на сайте уже несколько лет он прочитать не может, видно лень. К сожалению интернет краев не имеет »поэтому предлогаю найти другую площадку для реализации своих амбиций. Нет смысла сливать в одну кучу все SFX , для установки каждой программы можно использовать несколько способов.

FlexAdmin
03-01-2011, 09:16
Тема не интересна никому, поэтому я не буду ничего исправлять.
Тема предлагала отвечать на вопросы о переносе настроек. Были рассмотрены примеры того, как самостоятельно выяснить, какие настройки необходимо переносить. Вам никогда не приходилось работать с переносом непереносимого. Короче - удаляйте тему, если модерастам не нравится.

Статья (http://oszone.net/3171) слишком общая, не говорит о многом. Это раз. Аналогичные темы не предлагают ничего.

Вы умеете отслеживать, какие библиотеки "потащит" за собой программа, из тех, что размещает в папке системы при установке? А многие - нет. Может им не стоит задавать эти вопросы здесь? Может Oleg48 реализует свои амбиции и будет отвечать на эти вопросы в личке?

Предлагаю в данной теме изучать вопросы, касающиеся создания SFX-архивов»
Или не по-русски написано?

Oleg48
03-01-2011, 12:59
Были рассмотрены примеры того, как самостоятельно выяснить,какие настройки необходимо переносить » в Вашем примере не сказанно нечего каким образом вы нашли ключи реестра указывающие что нужно именно эту dll-привязывать в реестре, может проще переименовать рускую dll-ку в английскую и ненадо нечего прописывать, как вариант. И ненадо бросаться в крайности и оскарблять окружающих если модерастам не нравится »
Разместили статью терпите критику.

P.S. FlexAdmin держите себя в руках

MKN
03-01-2011, 14:28
2. Нет, если только SFX для 7Z »
Имеется ввиду модифицированный модуль Олега Щербакова ? Если да, то хорошее дело, т.к. конкретных примеров с подробными комментариями по созданию дистрибутивов 7ZSFX оч. мало.
Если нет, то совершенно не внятно заявлена и бессвязно описана тема... Не понятно , зачем рассказывать очевидные справочные вещи про WinRAR ?
Или не по-русски написано? »
Написано то по-русски, только понять о чём всё же речь, сложно.

зы ИМХО Если рассматривать SFX архивы с позиции создания с их помощью дистрибутивов, то это сомнительное занятие...
Т.к. резко ограничены возможности по сравнению, скажем, с тем же NSIS или Inno.
А WinRAR вообще никуда не годен из-за убогой степени сжатия.

FlexAdmin
04-01-2011, 07:55
В отношении степени сжатия - это малокритично. Если архив и так не большой - то какая разница 3 или 5 мегабайт? А в отношении больших архивов главный критерий - скорость алгоритма.

grey2
03-01-2012, 12:27
Ребят. Я наверное не там тему создал. Нужно было тут написать свой вопрос.
Вот тут (http://forum.oszone.net/showthread.php?p=1827016#post1827016) мой вопрос на тему sfx архивов:
Перепробовал все sfx архиваторы. Но при запуске готового exe файла размером 2гига у меня комп думает очень долго. А например если я упакую через упаковщик от zipmonster _ ru то при запуске готового exeшника он запускается сразу же. Мне надо так же. Как это сделать? Чем паковать? Я так понял у zipmonster после запуска считывается только часть файла, которая отвечает за распаковку. А остальная часть считывается уже только при нажатии кнопки "распаковать". Каким архиватором можно так же сделать?
помогите плз:)

kazimir
11-03-2012, 10:40
добрый день .
у меня вопрос по путям распаковки архива . задача: чтоб архив распаковывался на раб. стол независимо от ОСистемы .

на ХП путь %UserProfile%\Рабочий стол . а на 7 немного другой ( я ща на ХП- не могу подглядеть ) .
какой путь прописать , чтоб архив и на ХП и на 7 рапаковывался на раб-й стол ?
и пожелание .
у кого есть желание напишите пож-та всевозможные пути .

gora
11-03-2012, 11:08
чтоб архив распаковывался на раб. стол независимо от ОСистемы »
Т.к., тип SFX не озвучен, предложу для 7z SFX на базе модифицированных модулей (http://forum.oszone.net/showthread.php?t=51547):InstallPath="%UserDesktop%"

kazimir
11-03-2012, 13:11
gora,
благодарю . так-то SFX вин-рара . но , думаю , разницы нет . или есть ? ща проверю .
ещё вопрос . как сделать SFX рар архив , чтоб распаковывался в 2 и более мест ? например SFX с темами и вальваперс . чтоб был 1 SFX архив . при запуске распаковка пошла тем в папку темес , а вальваперс в веб\вальваперс .

при прописывании пути InstallPath="%UserDesktop%" неактивна кнопка Абсолютный путь . это норма ? он же пойдёт в программ файлос . или как ?

http://s019.radikal.ru/i619/1203/7b/b0448869261et.jpg (http://radikal.ru/F/s019.radikal.ru/i619/1203/7b/b0448869261e.jpg.html)

gora
11-03-2012, 13:51
kazimir, RAR SFX я не использую уже 5 лет, подсказать не берусь, но думаю, что и там невозможно распаковать архив сразу в две разные папки. Для 7z SFX эта задача обычно решается распаковкой всего содержимого во временную папку и последующим копированием в нужные папки.
Почитайте здесь (http://7zsfx.info/ru/).




© OSzone.net 2001-2012