Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
Vovanchik
29-10-2006, 09:26
Fanzuga
подтверждаю. сам долго копал в чем дело, так и не раскопал. обновил версию sfx модуля на текущую бету и вроде как все заработало
jameszero
29-10-2006, 10:45
Fanzuga
Сталкивался с неработоспособными sfx, когда при создании основных архивов использовался 7-zip версии 4.33beta.
Откатился на версию 4.32 - полёт нормальный. Видимо действительно, с новыми версиями архиватора модуль работает некорректно.
Стало быть будем ждать пока Олег учтет изменения последних версий, а пока гарнтированно рабочая версия для создания архивов - 4.32.
Надо бы это в шапке отметить.
Oleg_Sch
29-10-2006, 14:27
Стало быть будем ждать пока Олег учтет изменения последних версий, а пока гарнтированно рабочая версия для создания архивов - 4.32.
Надо бы это в шапке отметить.
Пилот будет завтра. Сейчас сижу-занимаюсь, делаю на основе 4.42 (будет немножко нового :) ). Потестируете недельку, я за это время документацию подправлю. Если все будет нормально - сделаю ее stable.
Oleg_Sch
29-10-2006, 17:28
Выкладываю сейчас, потому как завтра как минимум до 12-13 МСК буду в полном оффлайне.
История:
1.1 beta (build 457) (October 29, 2006)
* В InstallPath не подставлялась переменная %%S (gora:forum.oszone.net)
+ FinishMessage в кофигурационном файле (neitral72:forum.oszone.net)
+ Поддержка новых параметров оригинального модуля: ExecuteFile, ExecuteParameters, Progress, Directory
+ Множественное использование RunProgram, ExecuteFile и всех AutoInstall'ов
1.1 beta (build 301) (June 1, 2006)
# Использован исходный код 7-Zip версии 4.42 от 14 мая 2006 г.
* Неверное отображение кнопки выбора папки при включенных стилях (схемах) Windows XP
* Некорректное отображение ExtractDialogText при количестве строк больше 2 и включенном отображении иконки (gora:forum.oszone.net)
* При отображении диалога указания пути распаковки выводился "Стандартный звук" ("Default beep") Windows. (gora:forum.oszone.net)
* Некорректная передача параметров исполняемой программе, указанных в командной строке модуля (vampik:forum.oszone.net)
* Некорректная передача пути распаковки с пробелами через переменную %%T (melato:forum.oszone.net)
* Невозможность распаковки некоторых архивов созданных консольной версией 7-Zip'а (vampik:forum.oszone.net)
+ Отображение иконки в диалоге указания пути распаковки (через 'GUIFlags')
+ Запрет на исполнение RunProgram и AutoInstall'ов из командной строки (ключ -nr)
+ Переменная %%S - полный путь к папке, в которой расположен архив установки (vampik:forum.oszone.net)
+ Назначение иконки ярлыку в параметре Shortcut (YuriPet:forum.oszone.net)
Архивов два:
1 - Оригинальный (тот, который всегда и использовался) http://7zsfx.solta.ru/beta/7zsd.7z (примерно 36Кб)
2 - Оригинальный (в данном архиве - 7zsd_lzma.sfx) + дополнительные методы компрессии (кто ими пользовался - поймет) - http://7zsfx.solta.ru/beta/7zsd_extra.7z (примерно 64 Кб)
На конкретные вопросы о методах постараюсь ответить.
По новым параметрам:
Те, которые относятся к сборке 301 - можно посмотреть здесь http://7zsfx.solta.ru/new/
По текущей сборке:
FinishMessage - если указано, после всех операций (распаковка, запуск программ, удаление файлов, создание ярлыков и т.д.) будет выведено окошко с указанным сообщением. Текст может быть многострочным.
Теперь параметров запуска программ (RunProgram, ExecuteFile, все AutoInstall'ы) может быть несколько, обрабатываются они в той последовательности, в которой указаны в конфигурационном файле. Если для ExecuteFile применяется ExecuteParameters - они должны следовать парами (т.е. для каждого ExecuteFile должен присутствовать, пусть даже пустой ExecuteParameters=""). Алгоритм выбора следующий: если указано использование AutoInstall'а (Shift, командная строка) - используется он. Если нет - проверяется наличие ExecuteFile. Если и его нет - проверяется RunProgram.
При нескольких командах ожидается окончание предыдущей, после этого запускается следующая.
Для ExecuteFile действуют те же правила, что и для RunProgram, т.е. использование префиксов hidcon и nowait, заключение исполняемого файла в кавычки, например:
ExecuteFile="hidcon:\"%RunProgram%\\test1.cmd\""
Та-а-а-а-к... Вроде пока все.
Тестируйте (особено, с новыми >= 4.42 версиями архивов).
Огромнейшая просьба - отпишитесь ВСЕ, кто тестировал, независимо от результата (просто иногда не понятно - то ли пробовали и все хорошо и потому не пишут, то ли не пробовали :( ).
Что-нибудь вроде "пробовал на том-то на том-то, параметры были такие-то. Все ОК."
Или - "пробовал на том-то на том-то, параметры были такие-то. Там-то там-то вылезла ошибка / не сделалано то-то то-то..."
Полные конфиги в сообщениях приветствуются!
Пока все. Потихоньку займусь обновлением документации.
Oleg_Sch
В архивах файлы датированные 07.04.06 и версии 1.0.0.60407, а последний модуль от 01.06.06 имел версию 1.1.0.301. Как это понимать?
Oleg_Sch
30-10-2006, 00:41
goraВ архивах файлы датированные 07.04.06 и версии 1.0.0.60407, а последний модуль от 01.06.06 имел версию 1.1.0.301. Как это понимать?
Правильно говорят - ночью надо спать. Извиняюсь, на полусонную голову не то залил :( Сейчас перезалил. Должно быть 1.1.0.457
http://7zsfx.solta.ru/beta/7zsd.7z
http://7zsfx.solta.ru/beta/7zsd_extra.7z
В предыдущем своем сообщении подправил ссылки/размеры
Brainrif
30-10-2006, 01:54
Молодец, а я уже успел скачать старое... :clever-ma
Oleg_Sch
30-10-2006, 02:20
BrainrifМолодец, а я уже успел скачать старое...
Я еще раз извиняюсь, но ваш сарказм........ Я понимаю закачали бы несколько мегов, но 100 Кб....... Выкладывал я это в третьем часу ночи по своему местному времени, а подъем - в шесть.
"Хотели как лучше, получилось как всегда" (с) Чубайс (по-моему)
Brainrif
30-10-2006, 03:38
Да не обижайся... :yahoo: Я это больше про себя сказал - типа поспешишь.... А то я сижу тут, парюсь - думаю че это с версией 4.43 не работает, а оказывается вот где собака зарылась. :vampire: Я даже в отличие от gora не посмотрел на даты и версии, да собственно и некогда было - топоропился побыстрее сделать тихий установщик. :ninja: Вроде работает, правда ещё не все функции проверил, а вообще написал бы про всё, что он может прямо здесь в своем сообщении...
Fanzuga
PS. А что за версия 7.42? :)
Это я подумал про 7zip и в голове крутилась семерка :). Конечно 4.32. Все работает
Oleg_Sch
2 - Дополнительные методы компрессии (кто ими пользовался - поймет) - http://7zsfx.solta.ru/beta/7zsd_extra.7z (примерно 64 Кб)
Я бы исправил на: "2 - Оригинальный + дополнительные методы компрессии...", что бы было ясно, что можно не качать оба архива ;) .
7-zip версия 4.42; модуль версия 1.1.0.457 (7ZSD_LZMA.sfx).
1 Некорректное отображение ExtractPathText при количестве строк больше 2 (появляются дополнительные пустые строки по количеству строк в сообщении)
2 При отображении FinishMessage и HelpText выводится "Стандартный звук" ("Default beep") Windows. Так задумано? (не подумайте, что я против, может это и хорошо, я пока не определился).
3 Не сработал Progress="no". Я думал, что это уберет прогресс бар или все окно распаковки, но может я ошибаюсь? Тогда разъясните, что это?
Теперь параметров запуска программ (RunProgram, ExecuteFile, все AutoInstall'ы) может быть несколько
а) А сколько?
б) Как они маркируются, цифрами как AutoInstall'ы или вообще ни как?
Понимаю, что забегаю вперед, и это, наверное, будет в справке, но, идя Вам на встречу ;) ,
Огромнейшая просьба - отпишитесь ВСЕ, кто тестировал
а также учитывая
Потихоньку займусь обновлением документации.
позволил себе задать эти вопросы здесь и сейчас ;) .
Oleg_Sch
31-10-2006, 00:42
gora
Пока отвечу только на а) А сколько?
б) Как они маркируются, цифрами как AutoInstall'ы или вообще ни как?
а) сколько душе угодно :)
б) никак не маркируются. прицип тот же, что и в 'Shortcut' или 'Delete' - обрабатываются последовательно в том порядке, в котором идут в конфигурационном файле, например
RunProgram="\"Setup.exe\" /s"
RunProgram="\"regedit\" settings.reg"
Сначала выполнится setup.exe, а после окончания его работы - regedit
По остальным вопросам - займусь. Можно увидеть ваш конфигурационный файл ?
Oleg_Sch
31-10-2006, 10:00
gora
Отвечу на остальные вопросы:1 Некорректное отображение ExtractPathText при количестве строк больше 2 (появляются дополнительные пустые строки по количеству строк в сообщении)
Пофиксил. Обновление будет завтра.
2 При отображении FinishMessage и HelpText выводится "Стандартный звук" ("Default beep") Windows. Так задумано? (не подумайте, что я против, может это и хорошо, я пока не определился).
Нюанс работы функции MessageBox виндовозного API :( Когда указываешь вывод иконки в диалоге сообщения, она смотрит какая иконка (информация, ошибка и т.д.) и выводит соответствующий звук. Отложу это дело на "попозже"...
3 Не сработал Progress="no". Я думал, что это уберет прогресс бар или все окно распаковки, но может я ошибаюсь? Тогда разъясните, что это?
Еще раз проверил - все работает. Этот параметр полностью скрывает окно распаковки. Единственное, что могу предположить, почему у вас не сработало - вместе с Progress="no" был указан GUIMode (неважно где, в файле конфигурации или командной строке), а он имеет приоритет. Т.е. если не указан GUIMode - используется Progress, иначе - используется GUIMode.
Собственно этот Progress и не нужен, т.к. равносилен GUIMode="2", сделан для обратной совметимости с оригинальным модулем Игоря Павлова.
Oleg_Sch
был указан GUIMode
Именно так. Спасибо, все понял. Конфигурационный файл уже не нужен. Извините, что так долго не мог его выслать, Съеден месячный трафик.
Oleg_Sch
Еще несколько вопросов.
1. + Поддержка новых параметров оригинального модуля: ExecuteFile, ExecuteParameters, Progress, DirectoryКак я понял это дань, которую Вы должны платитьдля обратной совметимости с оригинальным модулем Игоря Павлова
Правда он пишет в справке к 7-ZipЕсть два пути запуска программ: RunProgram и ExecuteFile. Используйте RunProgram, если вы хотите запустить некоторую программу из .7z архива. Используйте ExecuteFile, если вы хотите открыть некоторый документ из .7z архива или, если вы хотите выполнить некоторую команду из Windows.Есть ли разница использования ExecuteFile и RunProgram в вашем модуле (кроме необходимого параметра ExecuteParameters)? Если RunProgram годиться и для первого и второго, из перечисленного в справке к 7-Zip, то можно ли обходиться одними RunProgram? К тому же они не требуют дополнительного параметра типа ExecuteParameters.
2. + Множественное использование RunProgram, ExecuteFile и всех AutoInstall'овПро RunProgram и ExecuteFile Вы объяснили, а как с AutoInstall-ами? Без номера для Shift, и десять номерных для командной строки (как было раньше) или как то иначе? Как?
3. Что реально дополнительно дает использование параметра Directory? Мы же вроде обходились без него раньше?
4. Действует ли для RunProgramЗначение по умолчанию - "setup.exe" и последовательность поиска файла
1 Директория из которой приложение (инсталлятор) загружено.
2 Временная директория, куда были распакованы файлы.
3 Системная директория Windows.как в 7-zip?
5. Есть ли ключ командной строки для подавления вывода FinishMessage? Если нет то вроде нужен (для универсальности sfx-архива), примите заявку.
Oleg_Sch
01-11-2006, 18:05
gora
Прежде всего, сорри, что не успел сегодня выложить обновление. Постараюсь завтра часам к 8-9 МСК.
По вопросам.
1.
Есть ли разница использования ExecuteFile и RunProgram в вашем модуле (кроме необходимого параметра ExecuteParameters)? Если RunProgram годиться и для первого и второго, из перечисленного в справке к 7-Zip, то можно ли обходиться одними RunProgram?
Разницы почти никакой, можно обходится и одним RunProgram. Единственная разница (это будет в обновленном завтра) - для ExecuteFile необязательны дополнительные кавычки даже для имен с пробелами (там же может быть только имя исполняемого файла).
Параметр ExecuteParameters необязателен, он нужен только в том случае, если небходимо передать что-то в командной строке для ExecuteFile. При множественном использовании ExecuteFile и применении хотя бы для одного из них ExecuteParameters, необходимо их делать парами, пусть даже какие-то будут пустыми, примерно так:
ExecuteFile="File1.exe"
ExecuteParameters="/parameter1"
ExecuteFile="File2.exe"
ExecuteParameters=""
ExecuteFile="File3.exe"
ExecuteParameters="/parameter3"
2.
а как с AutoInstall-ами?
Да все так же...
AutoInstall="AutoInstall_1.exe /a"
AutoInstall="AutoInstall_2.exe /b"
...
AutoInstall5="AutoInstall_5_1.exe"
AutoInstall5="AutoInstall_5_2.exe"
Здесь логика простая - ищем первый указанный параметр (будь то какой-то из AutoInstall'ов, RunProgram и т.д.) и выполняем то, что в нем указано. Смотрим дальше в файле конфигурации, есть ли еще параметр с таким же именем. Если есть - исполняем, смотрим дальше... И так до конца файла конфигурации.
3.
Что реально дополнительно дает использование параметра Directory? Мы же вроде обходились без него раньше?
Я и сам, собственно, не знаю зачем Игорь его сделал. Все что указано в этом параметре просто добавляется перед RunProgram, т.е.
RunProgram="notepad.exe"
Directory="C:\\Windows\\system32\\"
Равносильно
RunProgram="C:\\Windows\\system32\\notepad.exe"
4.
Действует ли для RunProgram
Цитата:
Значение по умолчанию - "setup.exe"
Нет, не действует. Я специально это убрал, чтобы можно было просто распаковывать в указанную папку ничего не исполняя.
и последовательность поиска файла
Цитата:
1 Директория из которой приложение (инсталлятор) загружено.
2 Временная директория, куда были распакованы файлы.
3 Системная директория Windows.
как в 7-zip?
Здесь Игорь немножко обманул. Вот последовательность поиска для функции CreateProcess виндовозного API:
1. The directory from which the application loaded.
2. The current directory for the parent process.
3. Windows 95/98/Me: The Windows system directory. Use the GetSystemDirectory function to get the path of this directory.
Windows NT/2000 or later: The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is System32.
4. Windows NT/2000 or later: The 16-bit Windows system directory. There is no Win32 function that obtains the path of this directory, but it is searched. The name of this directory is System.
5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
6. The directories that are listed in the PATH environment variable.
У меня - все так же, т.к. функция одна и таже :).
5.
Есть ли ключ командной строки для подавления вывода FinishMessage? Если нет то вроде нужен (для универсальности sfx-архива), примите заявку.
Если FinishMessage не указан - ничего не будет выведено. А вот для автоустановок - да... Надо подумать... Может сделать, чтобы вывод автоматически подавлялся при любом AutoInstall ?
Oleg_Sch
завтра часам к 8-9 МСКНу ладно, только не позже :) .Нет, не действует. Я специально это убралЗначит в вашей справкеRunProgram="command_for_executing"
Команда для исполнения. Параметр оригинального 7-zip SFX. не совсем корректно?
Может сделать, чтобы вывод автоматически подавлялся при любом AutoInstall ?Нет, я считаю это не выход. А если у меня в архиве нет AutoInstall-ов, а я хочу запустить один и тотже SFX-архив и с помощью, например, WPI без FinishMessage, а вручную с FinishMessage? Может лучше -gm4 (можно и -gm3)? А вот с помощью -gm3 я бы продублировал параметр оригинального 7-zip SFX -y. Вроде логично - подавление всех окон по нарастающей. Не сочтите за наглость, это только мои предложения - решать Вам.
P.S. Увлекся и забыл поблагадарить Вас за подробный и особо за быстрый ответ на все вопросы. Спасибо.
SiLeNcE thE KiLLeR
23-11-2006, 08:32
Создаю SFX инсталлятор. Во время распаковки выдает ошибку:
Error during execution "run.cmd"
Не удается найти указанный файл.
Смотрел Filemon'ом: архив распаковывается не до конца (всего 8 файлов из 50 ти), не находит run.cmd - поэтому и ошибка.
В чем дело? Может кто-нибудь с этим сталкивался.
Конфиг в UTF-8, все нормально.
SiLeNcE thE KiLLeR
Может быть у вас включена опция не дожидаться окончания распаковки?
И вообще больш информации. (версия модуля, версия архиватора, содержимое конфига)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.