Войти

Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок


Страниц : 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Oleg_Sch
17-10-2005, 07:25
Учтено замечание Debby. Остальное - снова косметика 1.0.0.51017 (build 80):
+/- Отображение/расположение/центровка элементов диалога распаковки для различных
режимов (с иконкой, без нее, с дополнительным текстом и т.д)

EgOrus
19-10-2005, 15:23
Oleg_Sch
Возможно ли добавить функцию замены иконки выходного sfx-архива, а то коврять ресурсы sfx модуля, как-то некрасиво чтоли. Может это уже реализовано, а я пропустил?

Oleg_Sch
20-10-2005, 08:49
EgOrus
Возможно ли добавить функцию замены иконки выходного sfx-архива
Может это уже реализовано, а я пропустил?
Нет, вы ничего не пропустили, пока нет. Но я уже неоднократно говорил - работаю над этим. Будет. С учетом непредсказуемости свободного времени, сроки озвучить не могу.
а то коврять ресурсы sfx модуля, как-то некрасиво чтоли
А без этого никак. Замена иконки возможна ТОЛЬКО через правку ресурсов (именно это проделывает тот же WinRAR), если кто-то знает другой способ - буду рад оказаться неправым. Моя будущая поделка именно это и будет делать (помимо настройки конфига в стандартном Windows GUI). Пока могу дать только скриншот http://7zsfx.solta.ru/7zSTools.jpg

EgOrus
20-10-2005, 09:24
Oleg_Sch
Приятная поделка, ждем релиз.

Vadikan
26-10-2005, 11:15
Доброго времени суток!

В процессе перевода readme на англ. я озадачился параметром Delete="file_or_folder_name"
Удаляет указанный файл или папку ПОСЛЕ установки. Если указанное имя является папкой,
то она будет удалена вместе со всем содержимым (ВНИМАНИЕ! будьте осторожны, чтобы
не указать что-нибудь вроде "C:\WINDOWS" :-). В момент выполнения данной операции
текущая папка не изменяется, т.е. если SFX был запущен с текущей папкой C:\WINDOWS,
именно она и останется текущей. Переменные среды допустимы. Команд 'Delete' может быть
сколько угодно, обрабатываться они будут в той последовательности, в которой идут в конфигурационном файле.
Вопрос возник по поводу понятия текущая папка, и Олег дал более развернутое об'яснение в PM. Примерно так: мы, допустим в ФАРе и cmd имеем текущей папкой C:\WINDOWS и набираем c:\install\7zinstall.exe На момент выполнения команд Delete текущей папкой будет не c:\install или папка распаковки, а c:\WINDOWS, соответственно относительные пути (попутно ответ и на второй вопрос - относительные пути допустимы) будут относительно C:\WINDOWS, т.е если будет Delete="system32" - удалится C:\WINDOWS\system32, а не C:\Install\system32. Для абсолютных путей это роли не играет. Я так думаю, это пока не стоить переводить и корректнее будет, если я буду устанавливать текущей папку распаковки (или, все-таки, папку с файлом SFX установки?) - меньше путаницы. Как сделать ? Теперь он озадачил меня вопросом: действительно, как лучше сделать текущую папку? Вот мой анализ ситуации
Хм... я понял как это работает, но даже не знаю как это нормально и кратко об'яснить по-русски, не то что по английски :) Я понимаю, что с точки зрения работы с ОС - это наиболее правильный вариант, но.... Я просто пытаюсь представить реальные сценарии и какая польза будет от имеющейся сейчас "текущей папки". Вроде особо никакой пользы и нет, а что будет с текущей папкой когда люди начнут запускать такие SFX из WPI, я вообще не представляю ;)

Если делать текущей папку распаковки, то это будет %TEMP%, если отсутствует InstallPath. В %TEMP% случае относительные пути для удаления файлов не очень-то и помогут, а вот если указать желаемый InstallPath, то потом можно и относительные пути для удаления использовать весьма рационально. Но чем так извращаться, проще указать абсолютный путь (с переменными) :)

Если делать текущей папку с SFX файлом, то это проще всего об'яснить, но не очень-то полезно в плане относительных путей в случае запуска файла с CD.

Даже не знаю какой вариант лучше. Мне кажется, что последний, но это лишь частное мнение.

А вы что думаете? :)

Oleg_Sch
26-10-2005, 11:46
От себя добавлю (To Vadikan: то что, не сказал в PM):
Я понимаю, что с точки зрения работы с ОС - это наиболее правильный вариант, но.... Я просто пытаюсь представить реальные сценарии и какая польза будет от имеющейся сейчас "текущей папки". Вроде особо никакой пользы и нет, а что будет с текущей папкой когда люди начнут запускать такие SFX из WPI, я вообще не представляю
Собственно пользы от текущей папки - ноль. Первоначально для команды "Delete" предполагалось использование АБСОЛЮТНЫХ путей. В ридми я просто ПРЕДУПРЕЖДАЛ (наверное плохо и непонятно) народ быть осторожным именно с ОТНОСИТЕЛЬНЫМИ путями, чтобы не удалили чего лишнего.

А вы что думаете? :)
Присоединяюсь. Что думает уважаемый All ?

EgOrus
26-10-2005, 12:06
Vadikan
Oleg_Sch
правильнее наверное делать текущей папкой, ту папку из кот. запущен SFX, по крайней мере такое "поведение" наиболее распространено среди другого софта.

biork
27-10-2005, 01:40
Всем привет.
RunProgram= можно только 1 раз выполнить? Может есть возможность запустить последовательно несколько сетапов? (установка из нескольких частей) :)

Vadikan
27-10-2005, 03:34
biork
Можно создать пакетный файл, в котором будут все нужные вам команды и запускать его.

Oleg_Sch
27-10-2005, 04:30
От себя добавлю. Если надо скрыть окно консоли командного (пакетного) файла используйте примерно так:
RunProgram="hidcon:install.cmd"
Вот пример который у меня устанавливает OfficeXP+Russian MUI (т.е. это install.cmd)
setuppls.exe TRANSFORMS=Unattended.mst /qb-
if %errorlevel% NEQ 0 goto done

MUI\setup.exe /qb-
if %errorlevel% NEQ 0 goto done

regedit /s Off10rus.reg

:done
exit

Oleg_Sch
28-10-2005, 04:35
Обновление.
history.txt:

1.0.0.51028 (build 91):
* В 'RunProgram' и всех 'AutoInstall' отсутствовал разбор переменных среды (Vadikan:forum.oszone.net)
+ В параметрах создания ярлыков (Shortcut) и удаления ('Delete') вместо '%%T' подставляется
папка распаковки (раньше работало только для 'RunProgram' и 'AutoInstall'ов)
+/- Текущей папкой при выполнении команд 'Delete' является папка, в которой находится файл SFX установки.

Vadikan
30-10-2005, 01:45
Oleg_Sch
Что-то я никак не могу заставить выполняться команду RunProgram при распаковке в %programfiles%. Тестирую так: создаю
test.bat @echo off
echo testing >> "%systemdrive%\test.txt"
exit
config.txt;!@Install@!UTF-8!
InstallPath="%programfiles%\\test"
RunProgram="%programfiles%\\test\\test.bat"
GUIMode="2"
;SelfDelete="1"
;!@InstallEnd@!
Создаю test1.exe и запускаю. Распаковка происходит в %programfiles%\test, но выдается ошибка
http://img.photobucket.com/albums/v121/Vadikan/Screenshots/error_sfx.jpgпри этом файл-то в папке находится

Тогда я беру config.txt и делаю Search and Replace programfiles на systemdrive

;!@Install@!UTF-8!
InstallPath="%systemdrive%\\test"
RunProgram="%systemdrive%\\test\\test.bat"
GUIMode="2"
;SelfDelete="1"
;!@InstallEnd@!
Создаю test2.exe и запускаю. Все работает. Я что-то не могу понять в чем дело :) Ниже ссылки на скомпилированные SFX EXE (63kb каждый)

test1.exe (http://tools.oszone.net/Vadikan/temp/test1.exe)
test2.exe (http://tools.oszone.net/Vadikan/temp/test1.exe)

Система - Win2k SP3. Спасибо.

Oleg_Sch
30-10-2005, 02:06
Есть такое дело. Сам наткнулся еще в процессе переделки предыдущего обновления, но забыл упомянуть.
Если путь к запускаемой программе или ее имя содержат пробелы - нужно заключать в кавычки. После разбора переменной %programfiles% путь полчается с пробелом. Т.е. в твоем случае должно быть так
;!@Install@!UTF-8!
InstallPath="%programfiles%\\test"
RunProgram="\"%programfiles%\\test\\test.bat\""
GUIMode="2"
;SelfDelete="1"
;!@InstallEnd@!

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

Vadikan
30-10-2005, 02:09
Oleg_Sch
Понял! Да, это надо в ридми указать. Может тогда все-таки сделать текущей директорию распаковки? Это избавит от нбх писать абсолютные пути в RunProgram, к примеру, если запускается скрытый батник из распакованного архива.

Oleg_Sch
30-10-2005, 02:19
Vadikan
В момент выполнения RunProgram и всех AutoInstall'ов текущей является папка распаковки. Так было первоначально и так есть сейчас (можешь проверить).
Вот это +/- Текущей папкой при выполнении команд 'Delete' является папка, в которой находится файл SFX установки
относится только к команде Delete.

Vadikan
30-10-2005, 02:59
Oleg_Sch
Ок, сорри, я запарился тут на работе :) В общем, признаю нбх RTFM :)

Теплый Снег
02-11-2005, 10:06
Добрый день.
Столкнулся с проблемой запуска bat файла.Ни в какую не хочет запускаться.

;!@Install@!UTF-8!
InstallPath="%SYSTEMDRIVE%\\TempZ"
RunProgram="ow32enen850.exe /s"
RunProgram="hidcon:opera.bat"
GUIMode="1"
;!@InstallEnd@!

Это мой конфиг.

xcopy "%SYSTEMDRIVE%\TempZ\Opera\*.*" "%APPDATA%\Opera\Opera\" /q /e /y

Это текст bat файла.

Опера устанавливается нормально , а вот батник не запускается.Вручную проверяю , работает.
Где грабли , помогите разобраться пожалуйста.

Oleg_Sch
02-11-2005, 10:11
Параметр 'RunProgram' может быть ТОЛЬКО ОДИН! Если надо запустить несколько программ, пропишите их в один bat-cmd файл и подставьте его (bat-cmd) в ЕДИНСТВЕННЫЙ 'RunProgram'.

Теплый Снег
02-11-2005, 10:24
Параметр 'RunProgram' может быть ТОЛЬКО ОДИН! Если надо запустить несколько программ, пропишите их в один bat-cmd файл и подставьте его (bat-cmd) в ЕДИНСТВЕННЫЙ 'RunProgram'.

Огромное спасибо получилось :)

gora
09-11-2005, 15:20
Извините за offtop, но может кто нибудь подскажет, есть ли русская справка на 7-Zip (вроде автор то русский) и где ее можно скачать?




© OSzone.net 2001-2012