Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   BFAF 7zip Creator - создание SFX архивов с расширенными настройками (http://forum.oszone.net/showthread.php?t=216103)

Medic84 20-09-2011 22:49 1757068

BFAF 7zip Creator - создание SFX архивов с расширенными настройками
 
BeForeAFter 7zip Creator beta 2


Здравствуйте коллеги. На днях нужно было создать самораспаковывающийся архив с хорошим оформлением и т.п. но нужно было сделать так что бы 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/)
Aut2Exe (www.autoitscript.com)
AutoITWrapper (http://www.autoitscript.com/autoit3/scite/download)



-> История версий <-

Код:

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

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

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

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



P.S. Это только бета версия - естественно, все ошибки писать сюда на форум, или мне на сайт
P.P.S На Windows 7 может быть проблема с обновлением ресурсов программы - пожалуйста проверьте, есть ли такая проблема?

stalinit078 21-09-2011 17:02 1757455

Можете сделать, так что бы при выборе иконки приложения открывалась папка с иконками которая находиться в папке BFAF 7zip Creator?

Medic84 21-09-2011 17:39 1757489

Без проблем.

ZverBY 21-09-2011 19:09 1757553

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

Medic84 21-09-2011 19:18 1757562

Цитата:

Цитата ZverBY
- В "Свойства EXE" при выборе иконки добавь ещё расширение .exe »

Уже можно. Смотреть в форме добавления "Другой синтаксис" - Для этого вам понадобится некоторые знания в языке AutoIT
Цитата:

Цитата ZverBY
- В "Свойства EXE" при выборе иконки добавь ещё расширение .exe »

Сборщик(написанный не мной) не поддерживает иконки из exe архива.

ZverBY 21-09-2011 19:27 1757568

И ещё:

Без значков почему-то у меня

Medic84 22-09-2011 00:15 1757773

Цитата:

Цитата ZverBY
Без значков почему-то у меня »

Почему то это набдюдается только в Windows XP. Займусь багой...

gora 22-09-2011 11:35 1758019

Цитата:

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

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

XXXler 22-09-2011 11:57 1758044

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

gora 22-09-2011 12:18 1758059

Цитата:

Цитата XXXler
акцент делается на возможность выполнения 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 1758080

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

gora 22-09-2011 13:06 1758088

Цитата:

Цитата XXXler
в действия до распаковки можно засунуть проверки »

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

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

Medic84 22-09-2011 16:32 1758215

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

gora 22-09-2011 18:17 1758288

Medic84, наличие папок я не проверял, меня интересовали только переменные для возможности их использования в аддонах на Т13.

shao 22-09-2011 23:40 1758457

Цитата:

Цитата gora
меня интересовали только переменные для возможности их использования в аддонах на Т13. »

Меня - тоже :)

Цитата:

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

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

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

gora 23-09-2011 00:00 1758467

Цитата:

Цитата shao
А что лучше указывать в 7z SFX для установки на Т-13 ? »

Переменную %TEMP% я не использую в аддонах. Многие пользователи изменяют ее содержимое с помощью аддона MyCustom или иными способами. Некоторые пользователи/авторы аддонов производят очистку папки из переменной %TEMP% или других папок Temp в системе. Если мне нужно распаковать, запустить, а потом удалить распакованное, то я просто не использую параметр InstallPath и поручаю модулю все заботы о поиске временной папки и последующему удаления распакованного. Когда мне нужно распаковать и сохранить распакованное до "после перезагрузки", то создаю свою "уникальную" папку в корне системного диска и удаляю ее после завершения устновки.

Iska 23-09-2011 00:01 1758468

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

gora 23-09-2011 00:04 1758471

Iska, http://forum.oszone.net/post-1253563.html#post1253563

shao 23-09-2011 09:42 1758582

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

Nun-Nun 23-09-2011 10:42 1758619

Цитата:

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

Папку Temp можно использовать не только ту, что уже существует, но и создать в каком угодно месте, а нужный способ для этого каждый выбирает по своему усмотрению. :)

El Sanchez 23-09-2011 11:22 1758646

shao, для T-13 и наживую используйте %WINDIR%\Temp

gora 23-09-2011 12:52 1758700

Цитата:

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

Проще, но иногда "простота - хуже воровства" (пословица). И причины я уже озвучил:
Цитата:

Цитата gora
Некоторые пользователи/авторы аддонов производят очистку папки из переменной %TEMP% или других папок Temp в системе. »

Я не хочу рисковать и попасть в ситуацию, когда такой аддон очистить папку в которой у меня, например, находится распакованный аддон .Net. На Т13 устанавливается только часть аддона (.Net 1.1), а остальное (.Net 2...3.5 и .Net 4) ставится из RunOnceEx (при первом входе в систему).
"Береженого бог бережет" как говаривала монашка... ;)

Iska 23-09-2011 16:24 1758843

Цитата:

Цитата gora

Спасибо за ссылку. Добавил к себе в «Избранное…».

shao 23-09-2011 18:31 1758923

Цитата:

Цитата El Sanchez
используйте %WINDOWS%\Temp »

Вы имели в виду %WinDir%\Temp ;) ?

Medic84 23-09-2011 21:41 1759056

Что то мы отвлеклись от темы =) Пожеланий больше никаких не будет?

gora 29-09-2011 11:28 1762316

Цитата:

Цитата Medic84
Что то мы отвлеклись от темы »

Несколько вопросов по теме:
1 Как будет решаться вопрос с интерактивным выбором, который может быть предусмотрен в исходном SFX? (Нажать "ОК" или <Shift>+"ОК") Для какого из этих вариантов будут работать ДО и ПОСЛЕ команды? Для каждого? Только для определенного? Какого?
2 Как будет решаться вопрос с поливариантным SFX с множеством литерных ключей aiX. Команды ДО и ПОСЛЕ будут едиными для всех или тоже литерными?
Цитата:

Цитата Medic84
Пожеланий больше никаких не будет? »

1 Инструментом закладывается одна неблаговидная возможность. Нечистоплотный пользователь может взять любой чужой SFX и, ни чего не меняя в сценарии его установки, спрятать его в AutoIt оболочку прописав свои "копирайты", сменив иконку и имя файла, и присвоить себе авторство. Проверить исходный SFX затруднительно, да и не каждый сможет и захочет этим заниматься.
2 7z SFX по своей природе "прозрачны" и практически любой может проверить его содержимое, сценарий (конфиг) установки и, в случае необходимости, внести свои изменения и в первое и во второе. AutoIt оболочка лишает простого пользователя этой возможности.
Теперь собственно предложения.
Предусмотреть фиксированный ключ для оболочки, например /info, который бы выводил следующую информацию:
- полный конфиг исходного SFX
- секцию "копирайтов" исходного SFX
- информацию об использованном в исходном SFX модуле
- содержание архива исходного SFX (например, в формате команды Dir)
- содержание добавленных ДО и ПОСЛЕ команд
Предусмотреть фиксированный ключ для оболочки, например /extract, который бы извлекал исходный SFX из оболочки.

Iska 30-09-2011 06:04 1762816

gora, любой сценарий AutoIt можно декомпилировать (это справедливо, по крайней мере, на текущий момент) и посмотреть на его исходный код.

Впрочем, насчёт непрозрачности я с Вами вполне согласен: мало кто станет специально для этого разыскивать инструмент для декомпиляции и пробовать смотреть на исходный код (который ещё нужно уметь понимать).

Medic84 04-10-2011 16:30 1765729

Цитата:

Цитата gora
1 Как будет решаться вопрос с интерактивным выбором, который может быть предусмотрен в исходном SFX? (Нажать "ОК" или <Shift>+"ОК") Для какого из этих вариантов будут работать ДО и ПОСЛЕ команды? Для каждого? Только для определенного? Какого? »

Эти команды будут работать не зависимо от варианта установки т.е. команды ДО и ПОСЛЕ сработаю независимо от того как была нажата клавиша (я уже нашел багу, но первоначально я расчитывал на скрытые SFX)
Цитата:

Цитата gora
2 Как будет решаться вопрос с поливариантным SFX с множеством литерных ключей aiX. Команды ДО и ПОСЛЕ будут едиными для всех или тоже литерными? »

Едиными для всех.
Цитата:

Цитата gora
1 Инструментом закладывается одна неблаговидная возможность. Нечистоплотный пользователь может взять любой чужой SFX и, ни чего не меняя в сценарии его установки, спрятать его в AutoIt оболочку прописав свои "копирайты", сменив иконку и имя файла, и присвоить себе авторство. Проверить исходный SFX затруднительно, да и не каждый сможет и захочет этим заниматься.
2 7z SFX по своей природе "прозрачны" и практически любой может проверить его содержимое, сценарий (конфиг) установки и, в случае необходимости, внести свои изменения и в первое и во второе. AutoIt оболочка лишает простого пользователя этой возможности.
Теперь собственно предложения.
Предусмотреть фиксированный ключ для оболочки, например /info, который бы выводил следующую информацию:
- полный конфиг исходного SFX
- секцию "копирайтов" исходного SFX
- информацию об использованном в исходном SFX модуле
- содержание архива исходного SFX (например, в формате команды Dir)
- содержание добавленных ДО и ПОСЛЕ команд
Предусмотреть фиксированный ключ для оболочки, например /extract, который бы извлекал исходный SFX из оболочки. »

Принял во внимание.

Iska, новый 3.3.6.1 скрипт я вскрыть не смог. Так что исходный код посмотреть достаточно сложно.

Iska 04-10-2011 22:24 1766047

Medic84, отписался в личку.

3axapV 10-10-2011 12:09 1769982

Хм.. Господа, рпошу прощения, что не в тему, но я не вижу ссылок на скачивание. Ссылок нет, или мне нужны посты?

Lubitel Softa 11-10-2011 16:36 1771021

На картинку нажимайте под текстом "Прямая ссылка:" или "Зеркало:"

Medic84 28-02-2012 00:04 1868009

В общем переписал я программу с нуля. Только теперь для нормальной работы требуется установленный .NET Framework 2.0 (у кого его сейчас нет).
Цитата:

Цитата gora
Теперь собственно предложения.
Предусмотреть фиксированный ключ для оболочки, например /extract, который бы извлекал исходный SFX из оболочки. »

Это сделать в рамках закона нереально. Нельзя декомпилировать AutoIT скрипты =) Так что придется как нибудь без этого.
А вот над /info можно подумать. Наверное сделаю, что бы /info записывало всю информацию в файл. Без файла сложно будет правильно вывести информацию.

gora 28-02-2012 13:24 1868343

Цитата:

Цитата Medic84
Это сделать в рамках закона нереально. Нельзя декомпилировать AutoIT скрипты »

Я не совсем понял.
1 Оболочка (обертка для 7z SFX) осталась на AutoIT или
Цитата:

Цитата Medic84
на другом языке программирования »

2 О какой декомпиляции речь? Мне не интересно, что там и как прикручено в оболочке на AutoIT к самому 7z SFX. Меня интересует только сам SFX в чистом виде. Для этого нет необходимости декомпилировать оболочку. Просто по ключу из FileInstall вынуть из оболочки 7z SFX и сохранить рядом. Если такой ключ будет анонсирован и каждый пользователь Вашей программы будет знать, что "его" SFX может быть извлечен для "проверки на вшивость", то что же здесь незаконного? Тогда и сплитер вне закона, т.к., он может извлечь составляющие SFX, а архиватор 7-Zip вообще "рецидивист", ибо он может распаковать SFX да и не только его!? :dont-know
Я думаю, Вы перебарщиваете в этом вопросе.

Цитата:

Цитата Medic84
В ближайшее время написать свой редактор SFX config файлов и добавить его в программу »

Вот это меня очень интересует, да, думаю, что не только меня. Ибо хорошего GUI для написания конфигов давно ждут пользователи.
Меня бы очень удовлетворил вариант отдельного, не встроенного в программу, редактора. Можно ли на это расчитывать?
По редактору - могу поспособствовать в качестве "бета-авометра" (если такая нужда у Вас возникнет).

Medic84 28-02-2012 13:53 1868357

Оболочка для самого sfx осталась на AutoIT, а вот сама программа написана на C#.

Насчет ключа я Вас понял. Хорошо, это можно. Я просто думал что нужно получить исходный код оболочки.
Ну а насчет хорошего GUI, я этим еще хотел давно заняться, только раньше одолевала лень. Я как напишу первую рабочую версию, я по ЛС с Вами свяжусь. Думаю сделать как отдельный рабочий проект так и библиотеку для программы.


Время: 05:27.

Время: 05:27.
© OSzone.net 2001-