Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
Когда я писал свои предложения я надеялся, что к моему "гласу вопиющего в пустыне" присоединиться ALL и наш "хор" подвигнет Вас (мы на форуме) на ... ну Вы сами знаете куда ;) .большинство тобой написанного лежит в ToDo на 1.3 »Ключевыми словами здесь я считаю "большинство", а очень бы хотелось видеть "все", и "лежит", которое больше всего и удручает (ассоциируются с "положить под сукно", "лежит в долгом ящике" и т.д.). :(
PS Спасибо за зеркало. :)
Для тех кто использует EmEditor при написании файлов конфигурации для модифицированного модуля думаю будут полезно это (http://forum.oszone.net/post-670818-5.html).
kill-kit
10-11-2007, 18:05
Подскажите пожалуйста что я не так сделал?
Попытался на примере Первые шаги к созданию SFX архива
создать Total Commander, сделал как написано в примере.
Ниже код, текстовый файл сохранен в UTF-8.
;!@Install@!UTF-8! RunProgram="Totalcmd.exe /qn" GUIMode="2" ;!@InstallEnd@!
Добовляю строку COPY /b 7ZSD_LZMA.sfx + config.txt + Total Commander.7z Totalcmd.exe
в командную строку, пишет неудается найти файл.
Может там ключи надо другие указывать.
kill-kit
1 Текст файла конфигурации должен быть написан "в столбик", т.е. так:;!@Install@!UTF-8!
RunProgram="Totalcmd.exe /qn"
GUIMode="2"
;!@InstallEnd@! 2 Добовляю строку COPY /b 7ZSD_LZMA.sfx + config.txt + Total Commander.7z Totalcmd.exe »Попробуйте так:COPY /b 7ZSD_LZMA.sfx + config.txt + "Total Commander.7z" Totalcmd.exeИмена файлов с пробелами должны заключаться в кавычки. ;)
kill-kit
11-11-2007, 00:48
gora, неа таже проблемма, мне кажется что он не находит путь к папке?
COPY /b может здесь надо писать что то другое?
Oleg_Sch
11-11-2007, 00:56
kill-kit,
А все три файла (7ZSD_LZMA.sfx, config.txt и Total Commander.7z) лежат в одной папке из которой запускается команда copy ?
Глянул скриншоты - у Вас текщая папка не та, где они лежат.
Попробуйте перед командой copy выполнить:
cd "Рабочий стол\Новая папка"
ну а потом в той же консоли copy
kill-kit
11-11-2007, 02:30
СпасибоOleg_Sch, Да все файлы в одной папке. COPY /b copy - это получается папка?
cd "Рабочий стол\Новая папка"
COPY /b 7ZSD_LZMA.sfx + config.txt + "Total Commander.7z" Totalcmd.exe так надо сделать?
Все получилось ура!!!!
$VARdead
21-11-2007, 21:41
Возможно заставить модуль принимать команду для указания директории распаковки через .bat без .txt конфигурации?
Oleg_Sch
22-11-2007, 01:34
Возможно заставить модуль принимать команду для указания директории распаковки через .bat без .txt конфигурации?
На данный момент - нет. Планируется позже.
Сейчас единственный способ сделать это - следующий:
В файле конфигурации указываем
InstallPath="."
а перед вызовом из батника SFX архива выставляем текущей ту папку, в которую необходимо распаковать. В батнике, в этом случае, надо указывать полный путь и имя SFX архива.
Нпр, нам надо распаковать в папку C:\Windows, сам SFX архив лежит в D:\install
Код батника может быть следующий
C:
cd c:\windows
D:\install\sfx.exe
Oleg_Sch
08-12-2007, 11:18
Продолжу "театр одного актера" :(
С учетом того, что замечаний (ошибок) по текущей версии нет, перевожу ее (как и Игорь Павлов сам 7-Zip) в release/stable.
* - Пофиксено
+ - Добавлено
- - Удалено
# - Изменено
1.2 Release (861) (December 7, 2007)
# Использован исходный код 7-Zip версии 4.57 от 6 декабря 2007 г.
1.2 RC2 (822) (October 29, 2007)
# Использован исходный код 7-Zip версии 4.56beta от 24 октября 2007 г.
1.2 RC2 (787) (September 24, 2007)
# Флаг 4096 изменяет не только названия кнопок, но и изображения иконки в диалогах BeginPrompt и BeginPrompt+ExtractPath
1.2 RC2 (770) (September 07, 2007)
# Использован исходный код 7-Zip версии 4.55beta от 5 сентября 2007 г.
+ Информация о поддерживаемых методах и фильтрах в -sfxversion
1.2 RC1 (739) (August 7, 2007)
# Использован исходный код 7-Zip версии 4.52beta от 3 августа 2007 г.
1.2 RC1 (727) (July 26, 2007)
# Использован исходный код 7-Zip версии 4.51beta от 25 июля 2007 г.
1.2 RC1 (726) (July 25, 2007)
# Использован исходный код 7-Zip версии 4.50beta от 24 июля 2007 г.
1.2 RC1 (715) (July 14, 2007)
# Использован исходный код 7-Zip версии 4.49beta от 11 июля 2007 г.
Сайт, справка и остальные файлы буду обновлены на следующей неделе. Пока только прямые ссылки на закачку модулей:
7zSD сборка 861 (http://7zsfx.solta.ru/files/7zSD861.7z)
7zSD_extra сборка 861 (http://7zsfx.solta.ru/files/7zSD861_extra.7z)
Oleg_Sch
P.S. Возможно я вернусь к поддержке ANSI систем в версии 1.3, но ориентировочно это не раньше сентября-октября
Будет ли 7zS сборка ?
Oleg_Sch
10-12-2007, 14:29
Единственное, что могу добавить к старому посту - решаемо, но есть проблема с Вин95 (наличие msvcrt.dll и не только) :(
Пока сказать больше нечего :( , надеюсь, будет решение. Но в каком виде, пока самому неизвестно :(
Oleg_Sch
10-12-2007, 17:07
Пока суть-да-дело, предлагаю совместно создать ToDo на 1.3
Пока:
1. Отслеживание дочерних процессов для wait
2. Поддержка ANSI систем (Windows95 пока под вопросом)
3. Мультиязыковая поддержка (уже поступают запросы от других стран)
4. Проверка админских прав для установки приложения
5."Запретить" модулю проверку закомментированных строк. Комментарии, проверяться на синтаксис не должны.
6. Разрешить использование "пустого" параметра RunProgram="" и RunProgram="fm20", а то сейчас приходиться использовать конструкции типа RunProgram="fm20:hidcon:cmd /c есно" с холостыми операциями.
7. Возможность записи/изменения реестра
8. (завязано на 7) - возможность деинсталяции приложения
9. Указание InstallPath в ком.строке, точнее замена (или создание, если не указан) содержимого InstallPath в файле конфигурации из командной строки.
-----------------------------------------------
10. Отдельным пунктом, потому как "отдельная песня"... Давно обещаный DHTML.
Дополняйте. Я "буду посмотреть" и принимать решения. Отвечу всем, независимо от полярности решения.
Мои предложения в TO DO. (позвольте пофантазировать :) )
1 Предусмотреть (например, за счет использование нового флага GUIFlags) изменение функции параметра InstallPath. Сейчас имеется возможность указать параметр InstallPath через ввод в соответствующем окне пути, но это будет путь распаковки, а не установки приложения, которые не всегда удобно совмещать. А так (при указании доп. флага), распаковка будет происходить во временную директорию и уже оттуда будет производиться установка в указанную пользователем директорию программы.
2 Сделать BeginPrompt множественный. Сейчас у пользователя имеется только одно окно какого либо выбора, (BeginPrompt или совмещенный BeginPrompt + ExtractPath) и если пользователю нужно иметь дополнительные запросы при установке приложения, то нужно прибегать к бат файлам с дополнительными утилитами вывода окон, или использовать принцип "матрешки".
3 Предусмотреть параметр таймера.
4 Предусмотреть возможность возврата, из запускаемого из модуля приложения, кода возврата, возможность анализа его в модуле и принятии решения о дальнейших действиях.
5 Очень не хватает хотя бы простейших логических операций типа IF ... ELSE. Понимаю, что это не CMD, но от этого не легче. :(
6 Расширить возможность использования "самодельных" переменных (SetEnvironment) в других параметрах в том числе и текстовых (Title, BeginPrompt, FinishMessage и т.д.).
Oleg_Sch
12-12-2007, 09:44
gora,
1 Если я правильно понял. Модуль позволит пользователю изменить InstallPath через тот же BeginPromt, но сам ее использовать будет ТОЛЬКО для подмены в параметрах файла конфигурации, нпр
RunProgram="setup.exe /path=%%InstallPath"
подставит вместо %%InstallPath реальное содержимое (возможно измененное пользователем) InstallPath
Если так - это п.11
В версии 1.3 я собираюсь реализовать систему плагинов. Плагины можно будет подключать к готовому модулю (как сейчас файл конфигурации) простым copy /b. И многие задачи будут реализовываться через них. Это позволит каждому "сконструировать" модуль под свои задачи, соответственно и конечный размер модуля будет зависить от задач/подключенных плагинов.
Из моего предыдущего поста пункты 2,3,4,10 попадают под эту систему.
К чему это я ? То, что ваши пункты 2,4,5 лучше всего реализовать по данной схеме.
3 Можно реализовать префиксом "sleepXXX:", где XXX - время в миллисекундах. С учетом моего п.6 (исполнение отдельных префиксов без исполнения реальных программ) - вполне можете осуществить любую задержку.
6. Все понятно. Буду реализовывать.
Speedy Gonzalez
16-12-2007, 02:07
В TO DO :)
На данный момент меня расстраивает отсутствие только 2-х возможностей:
- Невозможно запоминать в реестре путь распаковки. Очень необходимо при установке апдейтов на уже установленные программы.
Вернее запомнить-то можно, создав свой ключ через RunProgram, а вот прочитать - не получается. Надеюсь, именно об этом и говорится в пункте 7.
Моё воображение рисует примерно такую картину:
Например после инсталяции основной программы прописываю ключ в реестр
RunProgram="hidcon:cmd /c reg ADD \"HKCU\Software\MySuperProgram\" /v \"InstallPath" /t REG_SZ /d \"%%T\" /f"
а впоследствии в апдейтах пользуюсь такой функцией
InstallPath="Reg,{HKCU\\Software\\MySuperProgram\\InstallPath},{%PROGRAMFILES%\\MySuperProgram}"
(второй параметр обязательно необходим и присваивается переменной в случае если прочитать значение из реестра не удалось по причине отсутствия ключа, прав на его чтение и т.п.)
- Очень хотелось бы увидеть чуть более разнообразную графику, чтобы была возможность придавать инсталятору ещё большую индивидуальность. Причём, мне кажется что особо мудрить и не надо, достаточно сделать один баннер фиксированного размера и дать возможность менять его через какой-нибудь reshack. По умолчанию можно сделать максимально простой баннер, чтобы он хорошо сжимался, и те пользователи кому он не нужен не почувствовали заметного учеличения объёма sfx модуля (1-2 кило максимум).
Лично мне очень симпатичен подобный внешний вид (http://georgwittberger.gmxhome.de/7z/professional_1.png).
Было бы приятно видеть подобное вместо обычной иконки (да и технически реализовать не так сложно).
Speedy Gonzalez
16-12-2007, 03:02
gora,
Поддержу мысль насчёт логических операций. Иногда может быть необходимо.
В принципе, на первом этапе вполне хватило бы возможности сравнить строковые значения и переменные, а также было бы здорово если бы в логических функциях можно было проверить существование файла или папки.
Учитывая строение конфигурационного файла и чтобы не заморачиваться со скобками всякими можно было бы использовать подобную форму:
IF %MyVar%="123abc"
RunProgram=...
AutoInstall=...
Shortcut=...
ENDIF
Oleg_Sch
16-12-2007, 14:39
- Невозможно запоминать в реестре путь распаковки. Очень необходимо при установке апдейтов на уже установленные программы.
Буду учитывать при реализации...
- Очень хотелось бы увидеть чуть более разнообразную графику, чтобы была возможность придавать инсталятору ещё большую индивидуальность.
Это в мой п.10. Там можно будет (наработки уже есть) реализовать любой вид диалога, который позволит DHTML (читай - "как душе угодно"). Пока только одна проблема - наличие IE5 :( Для Вин2000 и младше - не проблема, но я собираюсь вернуться к поддержке Вин95 & 98. Если уж совсем проблематично будет, сделаю оговорку, что для DHTML требования другие. Пока разбираюсь с предметом (количество ВМ на компе уже 8 штук (и так понимаю неконечно, т.к. SP к той же 2000, нпр, играют роль) и в каждой надо протестировать :( )
Добавлю еще к своему ToDo п11:
Поддержка x64. Наконец-то я заимел XP 64-bit (не поверите, Microsoft раздает нахаляву 120 дней trial http://www.microsoft.com/windowsxp/64bit/facts/trial.mspx )
Так что осталось поставить и заняться, хотя сам пока на 64 bit пересаживаться не собираюсь, но надо смотреть в будущее ;)
Вообщем, "у меня все ходы записаны" (с) Ильф & Петров, в смысле "copy-paste" я сделал :)
Добрый день господа старожилы. Недавно занялся вопросом автоустановки с диска. Прочитал весь форум поэтому вопросу, возник вопрос: где в архиваторе находится командная строка, в которую и записывается подготовленная папка(вер.4.57)? И еще, если не трудно, можно для примера посмотреть конфиг файл приложения с установкой серийного номера, и активационного номера, например Фотошопа 9? Прошу прощения за юзерские вопросы, но очень уж хочется этим овладеть.
Прочитал весь форум»Позвольте Вам не поверить!!! Не знаю найдется ли на форуме человек который смог бы это осилить ;) .где в архиваторе находится командная строка, в которую и записывается подготовленная папка(вер.4.57)? »См. справку (http://gora.7zsfx.org/for_all/7-Zip_Help_ru_4.57.7z), после этого вопрос отпадет, либо Вы сможете его грамотно сформулировать.можно для примера посмотреть конфиг файл приложения с установкой серийного номера, и активационного номера »Фотошопом не пользуюсь, но как пример:!@Install@!UTF-8!
Title="Установка EmEditor Professional Rus"
SetEnvironment="PathM=%ProgramFiles%\\EmEditor\\"
BeginPrompt="Сейчас будет установлен
EmEditor Professional 7.00 beta 32"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
RunProgram="emed700b32epx.msi /q REGKEY=XXXX-XXXX-XXXX-XXXX"
RunProgram="hidcon:cmd /c xcopy PlugIns \"%PathM%PlugIns\" /s /e /i /y"
RunProgram="hidcon:cmd /c xcopy mui \"%PathM%mui\" /s /e /i /y"
RunProgram="fm20:hidcon:cmd /c copy \"%PathM%mui\\1033\\emeditor.chm\" \"%PathM%mui\\1049\\emeditor.chm\""
RunProgram="REGEDIT /S EmEditor.reg"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
FinishMessage="EmEditor Professional 7.00 beta 32 установлен!"
;!@InstallEnd@!Т.е. в строку RunProgram записывается имя оригинального инсталлятора с его ключами и серийным номером, если он (инсталлятор) поддерживает эти ключи. ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.