PDA

Показать полную графическую версию : BFAF 7zip Creator - создание SFX архивов с расширенными настройками


Страниц : [1] 2

Medic84
20-09-2011, 22:49
BeForeAFter 7zip Creator beta 2

http://i.minus.com/ibnAinrm6b7w6b.png

Здравствуйте коллеги. На днях нужно было создать самораспаковывающийся архив с хорошим оформлением и т.п. но нужно было сделать так что бы SFX производил некоторые действия ДО распаковки архива. Для модуля это оказалось невыполнимым заданием. И мне пришла в голову идея написать программу, которая расширяет возможности модифицированного модуля.
Решение было найдено через скриптовой язык программирования AutoIT.

Суть такова:
Создается exe файл, внутри которого находится собранный SFX до и после которого запускаются требуемые команды. Сам SFX переносится в папку Temp откуда и запускается(после исполнения - удаляется)

Возможности программы:
# Создание "матрешек" для SFX файлов
# Простое создание SFX (если выбран файл расширения 7z и если список заданий пуст)
# Изменение иконки и информации EXE сразу (пока только для "матрешек" см. TODO)
# Сохранение и загрузка сценариев

Плюсы:
+ Исполнение команд до и после распаковки
+ Изменение иконки и информации EXE сразу
+ Мощный инструмент автоматизации - если постараться, можно очень хорошие написать распаковщики (со сплешами и прочим)

Минусы:
- В момент работы программы требуется на диске в 2-3 раза больше необходимого места(в зависимости от сжатия)

TODO: (предлагайте - дополним)
# В ближайшее время написать свой редактор SFX config файлов и добавить его в программу
# Для не "матрешек" сделать изменение ресурсов файла через Resource Hacker
# Перемещение элементов в списке

Используемые ресурсы:
Модифицированный модуль 7z SFX (www.7zsfx.info/ru/ (http://7zsfx.info/ru/))
Aut2Exe (www.autoitscript.com (http://www.autoitscript.com))
AutoITWrapper (http://www.autoitscript.com/autoit3/scite/download)


http://i.minus.com/kldq2w2eljmXG.jpg (http://min.us/mbcN4eBzl7#1o) http://i.minus.com/kbc4WCNXq0NJcp.jpg (http://min.us/mbcN4eBzl7#3o) http://i.minus.com/kbgWpt22648ftd.jpg (http://min.us/mbcN4eBzl7#4o)
http://i.minus.com/kbwvxcNXfkSxgU.jpg (http://min.us/mbcN4eBzl7#5o) http://i.minus.com/kJebKVfkMi7ik.jpg (http://min.us/mbcN4eBzl7#6o)


Cсылка (http://www.mediafire.com/?1a31h058lr110aw) | Зеркало (http://www.4shared.com/zip/_PzW4VTS/BFAFInstall.html)


Версия 1.1.1.0
- Настройки папок вывода файлов
- Ассоциация .b7c
- Созданы ключи /extract и /info для оболочек
- CMD ключ /open для программы (открытие конфигурации)
- Мелкие правки кода

Версия 1.1.0.0
- Программа переписана с 0 на другом языке программирования (более мощном)
- Слишком много изменений что бы описывать их в истории.

Версия 1.0.2.0
- Поправлены иконки в программе
- Исправления кода программы

Версия 1.0.0.0
- Первая публичная версия


P.S. Это только бета версия - естественно, все ошибки писать сюда на форум, или мне на сайт (http://mediclab.org/files/more/beforeafter-7zip-creator-beta-2.html)
P.P.S На Windows 7 может быть проблема с обновлением ресурсов программы - пожалуйста проверьте, есть ли такая проблема?

stalinit078
21-09-2011, 17:02
Можете сделать, так что бы при выборе иконки приложения открывалась папка с иконками которая находиться в папке BFAF 7zip Creator?

Medic84
21-09-2011, 17:39
Без проблем.

ZverBY
21-09-2011, 19:09
Medic84,
Можешь добавить функции:
- В "Свойства EXE" при выборе иконки добавь ещё расширение .exe
- Возможность создания диалогов

Medic84
21-09-2011, 19:18
- В "Свойства EXE" при выборе иконки добавь ещё расширение .exe »
Уже можно. Смотреть в форме добавления "Другой синтаксис" - Для этого вам понадобится некоторые знания в языке AutoIT
- В "Свойства EXE" при выборе иконки добавь ещё расширение .exe »
Сборщик(написанный не мной) не поддерживает иконки из exe архива.

ZverBY
21-09-2011, 19:27
И ещё:
http://i30.fastpic.ru/big/2011/0921/28/2df938672971246ca2dcc94cd7bfed28.png (http://fastpic.ru/)
Без значков почему-то у меня

Medic84
22-09-2011, 00:15
Без значков почему-то у меня »
Почему то это набдюдается только в Windows XP. Займусь багой...

gora
22-09-2011, 11:35
Суть такова:
Создается exe файл, внутри которого находится собранный SFX до и после которого запускаются требуемые команды. Сам SFX переносится в папку Temp откуда и запускается(после исполнения - удаляется) »
Как я понял, это "матрешка". Так почему-бы для этого не использовать тот же модуль? Один 7z SFX внутри другого 7z SFX, сам делал такие для собственных нужд. А если 7z SFX небольшой, то можно обойтись и одним прописав в конфиге рекурсивный запуск с нужными ключами и параметрами.
Или здесь упор делается на замене ресурсов (иконка, "коприрайты")?

XXXler
22-09-2011, 11:57
тут, как я понимаю, акцент делается на возможность выполнения Autoit-кода до распаковки архива, хотя и для этих нужд проще использовать полноценные инсталяторы - и компактней и быстрее

gora
22-09-2011, 12:18
акцент делается на возможность выполнения Autoit-кода до распаковки архива »
И в чем разница? AutoIt все равно сначала распакует из себя внутренний SFX и это та же распаковка, и по времени, и по месту на диске.
Предположим у нас есть 7z SFX - BigSFX.exe размером в 50МБ. Нужно выполнить ряд команд ДО и ПОСЛЕ распаковки. Пишем конфиг (тут только его исполнительная часть):; команды ДО запуска основного SFX
RunProgram="Command1 Before"
RunProgram="Command2 Before"
RunProgram="Command3 Before"
; запуск основного SFX с нужными ключами
RunProgram="BigSFX.exe -ai -fm0"
; команды ПОСЛЕ запуска основного SFX
RunProgram="Command1 After"
RunProgram="Command2 After"
RunProgram="Command3 After"
Затем упаковываем BigSFX.exe в 7z архив методом Copy (без сжатия), для уменьшения времени распаковки "матрешки", и создаем из него и приведенного выше конфига, новый - 7z SFX "матрешку".
Чем такой вариант не устраивает?

XXXler
22-09-2011, 12:50
gora, разница большая - в действия до распаковки можно засунуть проверки, которые оборвут выполнение скрипта до распаковки файла в %TEMP%

gora
22-09-2011, 13:06
в действия до распаковки можно засунуть проверки »
Это Вы про пункт "Другой синтаксис (см. AutoIt): " ? Тогда наверно разница есть. Вот только грамотно написать нужные действия, проверки и корректный выход из скрипта на AutoIt, сможет подавляющее меньшинство пользователей.

Кстати о переменной %TEMP%...
Большинство 7z SFX здесь используются в качестве аддонов, устанавливаемых на Т13. Так вот на Т13 переменной %TEMP% еще не существует.

Medic84
22-09-2011, 16:32
gora, ок, сделую другую папку. Windows/Temp на Т13 существует?
Основная цель конечно на создание более сложных распаковщиков чем просто 7zSFX + изменение ресурсов файлов (иконки описание и тп) автоматически.

gora
22-09-2011, 18:17
Medic84, наличие папок я не проверял, меня интересовали только переменные для возможности их использования в аддонах на Т13.

shao
22-09-2011, 23:40
меня интересовали только переменные для возможности их использования в аддонах на Т13. »
Меня - тоже :)

Так вот на Т13 переменной %TEMP% еще не существует. »

А что лучше указывать в 7z SFX для установки на Т-13 ?
На этом этапе Default User\Temp уже есть. Можно её как-то использовать ?

Насколько понимаю установка переменной %TEMP% происходит на третьем, графическом этапе,
при добавлении учётных записей...

gora
23-09-2011, 00:00
А что лучше указывать в 7z SFX для установки на Т-13 ? »
Переменную %TEMP% я не использую в аддонах. Многие пользователи изменяют ее содержимое с помощью аддона MyCustom или иными способами. Некоторые пользователи/авторы аддонов производят очистку папки из переменной %TEMP% или других папок Temp в системе. Если мне нужно распаковать, запустить, а потом удалить распакованное, то я просто не использую параметр InstallPath и поручаю модулю все заботы о поиске временной папки и последующему удаления распакованного. Когда мне нужно распаковать и сохранить распакованное до "после перезагрузки", то создаю свою "уникальную" папку в корне системного диска и удаляю ее после завершения устновки.

Iska
23-09-2011, 00:01
gora, ткните меня носом, пожалуйста, если Вы (або кто другой) куда-либо выкладывали сводную информацию о существовании тех или иных переменных окружения на разных этапах установки.

gora
23-09-2011, 00:04
Iska, http://forum.oszone.net/post-1253563.html#post1253563

shao
23-09-2011, 09:42
Интересно, если на Т-13 существует \Default User\Local Settings\Temp - почему бы её не использовать для этих целей ?
Мне кажется это проще, чем создавать другие папки и удалять их и чем использовать дополнительные аддоны ?

Nun-Nun
23-09-2011, 10:42
Интересно, если на Т-13 существует \Default User\Local Settings\Temp - почему бы её не использовать для этих целей ?
Мне кажется это проще, чем создавать другие папки и удалять их и чем использовать дополнительные аддоны ? »
Папку Temp можно использовать не только ту, что уже существует, но и создать в каком угодно месте, а нужный способ для этого каждый выбирает по своему усмотрению. :)




© OSzone.net 2001-2012