Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: Файлы конфигурации 7z SFX. Помощь и советы :.

Ответить
Настройки темы
.: Файлы конфигурации 7z SFX. Помощь и советы :.

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: jameszero
Дата: 26-11-2019
Описание: зеркала
Эта тема создается специально для вопросов по 7z SFX архивам на базе модифицированных модулей от Oleg_Sch. Перед тем, как задать вопрос, обратите внимание, на перечисленные ниже ссылки.

Домашняя страница модулей: http://7zsfx.info (зеркала в теме по ссылке ниже)
Обсуждение модулей: http://forum.oszone.net/showthread.php?t=51547

В теме предполагается обсуждать вопросы написания файлов конфигурации для 7z SFX архивов, делится своими наработками, нестандартными и оригинальными решениями, расширяющими возможности использования модулей и т.п..

Лучшие варианты файлов конфигурации и оригинальные решения могут быть включены в справку по модифицированным модулям.

Полезные ссылки:
Список переменных, которые могут быть использованы в файле конфигурации модифицированного модуля.

FAQ:
  1. Вопрос: Как можно удалить необходимую папку ДО установки? Насколько я читал RunProgram, ExecuteFile, AutoInstall выполняются после распаковки.
    Ответ: Установка и распаковка это разные этапы работы модуля. До распаковки ни каких действий произвести нельзя, модуль этого не предусматривает. А после распаковки начинается установка и первыми командами установки можно удалить "любую" папку (конечно, если ее вообще можно удалить).
    Если Вы хотите удалить папку в которую нужно произвести установку программы, то распаковывайте SFX во временную папку, затем удаляйте, ту, которую хотите удалить, а затем производите установку/копирование/перемещение из временной папки, туда, куда сочтете нужным. Временная папка автоматически удалится после завершения работы SFX.


  2. Вопрос: Возможно ли 2 варианта распаковки? Например: запаковано 4 файла: 1.txt, 2.txt, 3.txt и 4.txt. В первом случае распакованы будут все файлы, а во-втором только 3.txt и 4.txt. Вариант распаковки выбирает пользователь?
    Ответ: Нет, такое невозможно. Всегда распаковываются все файлы из архива. После распаковки можно скопировать/переместить только нужные файлы в нужное место, или просто удалить ненужные.

Отправлено: 09:16, 21-03-2012

 

Старожил


Сообщения: 168
Благодарности: 40

Профиль | Отправить PM | Цитировать


sov44, всё оказалось попроще, прошу прощения за невнимательность, проглядел в истории:
Цитата:
1.6 develop (сборка 2518) 19.06.12
# Удален префикс 7z в именах всех переменных среды модуля, например, было '7zSfxVarModulePlatform', стало 'SfxVarModulePlatform'

-------
ОЗ


Отправлено: 17:08, 15-09-2016 | #381



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 46
Благодарности: 4

Профиль | Отправить PM | Цитировать


Присутствуют и те и те...

Отправлено: 16:38, 05-10-2016 | #382


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: jpg 0.jpg
(21.8 Kb, 10 просмотров)

Господа, сегодня столкнулся с непонятками...

Немного предыстории: в последнее время установщики сложных программ, использующие Visual C++ 2015 Redistributable часто сталкиваются с тем, что если данный пакет библиотек уже есть в системе, то установка сложной программы либо подвисает на попытке переустановить этот компонент, либо прерывается с ошибкой. Посему я решил доработать стандартный установщик этих библиотек vcredist_x64.exe, чтобы он прежде чем ставить либы, удалял предыдущий пакет.

Упаковал я vcredist_x64.exe. Написал довольно банальный конфиг:

Код: Выделить весь код
;!@Install@!UTF-8!
AutoInstall="waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"
AutoInstall="waitall:\"%%T\\vcredist_x64.exe\" /install /q /norestart"
RunProgram="waitall:%%T\\vcredist_x64.exe"
Delete="%%T\\vcredist_x64.exe"
GUIMode="2"
;!@InstallEnd@!
Все прекрасно работает, пока я вручную запускаю vcsfx_x64.exe -ai. Но стоило мне добавить мой vcsfx_x64.exe в установщик Adobe, подменив родной файл и прописав нужный ключик запуска, как я стал получать ошибку "Отказано в доступе <путь до vcredist_x64.exe> /uninstall /q /norestart" (см. скриншот). UAC выключен. Пытался для пробы удалять ключи, пытался запустить "сквозняком" с ключами "/! /install /quiet /norestart", пытался жестко задавать папку распаковки и отказываться от переменных, пытался даже распаковать в одно место, а запускать из другого, куда предварительно был положен нужный файлик - всегда на выходе ошибка с отказом в доступе... Распаковка проходит штатно, а вот запуск сталкивается с ошибкой. Причем только при запуске другим установщиком. Есть какое-то ограничение на запуск sfx-архива сторонней программой? Или еще что? Есть идеи, как это побороть?

Последний раз редактировалось m0nkrus, 31-10-2016 в 01:04.


Отправлено: 22:19, 30-10-2016 | #383


Ветеран


Сообщения: 2182
Благодарности: 720

Профиль | Отправить PM | Цитировать


m0nkrus, попробуйте c ключем %%P:
Код: Выделить весь код
AutoInstall="%%P:waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"

Отправлено: 22:59, 30-10-2016 | #384


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


sov44, вы ничего не путаете? Вы переменную пути расположения архива пытаетесь поместить туда, где обычно располагаются префиксы.

Отправлено: 00:37, 31-10-2016 | #385


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


m0nkrus, префикс %%P - это не путь, а принимает значение разрядности OS х86 или х64 соответственно, в данном случае можно обойтись и без этого префикса, а так же waitall тоже не нужен, конфигуратор сам знает что ему делать.


Цитата m0nkrus:
Но стоило мне добавить мой vcsfx_x64.exe в установщик Adobe, подменив родной файл и прописав нужный ключик запуска, »
Не понял как же вы подменяете свой vcsfx_x64.exe когда там должен быть расположен стандартный vcredist_x64.exe (имя не должно меняться), да ещё и с ключиком запуска ?

Префикс %%T тоже уберите.
И зачем использовать в конфиге ключ /install, достаточно /quiet /norestart.

Кстати, vcredist_x64.exe /uninstall /q /norestart не удалит имеющиеся другие версии 2015 в системе.

Последний раз редактировалось nibble74, 31-10-2016 в 07:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:01, 31-10-2016 | #386


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


nibble74, вы так много интересного рассказали, что я аж теряюсь...

Да, я перепутал %%P с %%S. Действительно %%P - платформа операционной системы; принимает значения x86 и x64 в зависимости от разрядности ОС. Но зачем бы эта переменная могла понадобиться среди префиксов, мне непонятно. Даже если она сработает, автоматически подменившись на префикс х86 или х64, то в данном случае ни на что не повлияет. Впрочем, от безысходности я попробовал и этот метод. Он ничего не дал.

На счет ненужности waitall, а вы уверены? Ведь vcredist_x64.exe запустит вторичный процесс - vcredist_x64.msi. И если ограничиться стандартным wait, используемым по умолчанию, то мы придем к несвоевременному удалению vcredist_x64.exe. Впрочем, возможно я не прав. Тут надо тестировать.

Что до того, как я подменяю в установщике vcredist_x64.exe на vcsfx_x64.exe, то я, знаете ли, собираю Master Collection, который Adobe уже 4 года как не выпускает. И умею вносить правки в установщики Adobe, такие, какие мне нужно. На самом деле я конечно же использую стандартное имя файла vcredist_x64.exe. Просто здесь привел другое, чтобы не путаться между именем архива и именем файла внутри архива. А вот ключик я в инсталлере Adobe действительно заменил.

%%T - не префикс. Не путайте понятия. Это переменная. Но убрать попробую - вдруг действительно чего-то да даст.

Знаю, что можно без ключа /install, когда есть уверенность, что в системе не установлен уже аналогичный пакет. Но я, вроде как, просил, не оптимизировать мой код, удаляя избыточные ключи, а помочь сделать, чтобы метод работал при вторичном запуске.

Кстати, vcredist_x64.exe /uninstall /q /norestart прекрасно удаляет имеющиеся другие версии 2015 в системе. И раньше проверял. И сейчас специально проверил перед тем, как здесь отписаться.

Последний раз редактировалось m0nkrus, 31-10-2016 в 08:43.


Отправлено: 08:28, 31-10-2016 | #387


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


m0nkrus,

Цитата m0nkrus:
%%T - не префикс »
Просто оговорился.

Цитата m0nkrus:
Кстати, vcredist_x64.exe /uninstall /q /norestart прекрасно удаляет имеющиеся другие версии 2015 в системе »
Тоже проверил, на VMware Win10, не удаляет другую версию, ну это у меня наверно так.

Цитата m0nkrus:
%%T - Но убрать попробую - вдруг действительно чего-то да даст. »
Заодно для наглядности вместо */q* пропишите */uninstall /passive*
Потом видно будет, что да как.

Отправлено: 10:01, 31-10-2016 | #388


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


nibble74

1. Нашел я, что гадило - префикс waitall. Как только его убрал, sfx-сборка заработала штатно.
2. %%T оставил только для команды Delete. Там эта переменная действительно нужна.
3. Ключ /install убрал.
3. На счет "удаляет/не удаляет", действительно не удаляет. Меня ввело в заблуждение, что менялась версия после анинсталл/инсталл. Удаления не происходило - шел простой накат новой версии на старую. А вот как закомментировал строку с установкой, сразу стало видно, что анинсталл не идет.

Может показаться, что сборка тогда теряет смысл. Но не для меня. В случае конфликта установленной и устанавливаемой версии Visual C++ 2015 Redistributable установщик Adobe выдает ошибку в конце установки:

Код: Выделить весь код
----------- Payload: Microsoft Visual C++ 2015 Redistributable Package (x64) 14.0.24516.0 {512B6D21-18F9-11E2-93C1-00215AEA26C9} -----------
ERROR: Third party payload installer vcredist_x64.exe failed with exit code: 1603
ERROR: Failed to install Microsoft Visual C++ 2015 Redistributable Package (x64). Please try installing it by double clicking on the executable at "H:\Adobe CC 2015\payloads\Microsoft VC 2015 Redist (x64)\vcredist_x64.exe", or download and install the latest Microsoft Visual C++ 2015 Redistributable Package (x64) from Microsoft website - www.microsoft.com
Но в случае sfx-упаковки инсталлер Adobe уже ничего не будет знать про установщик Visual C++ 2015 Redistributable - он будет вести лог работы sfx-архива. А последний выдаст ОК независимо от того, была ли ошибка при установке Visual C++ 2015 Redistributable или ее не было. То, что по сути мне и нужно - чтобы инсталлер Adobe не видел эту ошибку. Так что конфиг я сокращаю до минимального:

Код: Выделить весь код
;!@Install@!UTF-8!
RunProgram="vcredist_x64.exe"
Delete="%%T\\vcredist_x64.exe"
GUIMode="2"
;!@InstallEnd@!
А запуск из адобовского инсталлера будет с ключами /! /q /norestart.

Спасибо за то, что подтолкнули меня в нужном направлении!

Последний раз редактировалось m0nkrus, 31-10-2016 в 15:06.


Отправлено: 14:09, 31-10-2016 | #389


Аватара для m0nkrus

Старожил


Сообщения: 148
Благодарности: 15

Профиль | Сайт | Отправить PM | Цитировать


Одна проблемка все-таки есть: команда "Delete="%%T\\vcredist_x64.exe"" не отрабатывается и vcredist_x64.exe остается висеть в %Temp%... Пробовал все, что можно. И задавать конкретную папку распаковки, без использования переменных, чтобы удалять из нее, и удалять не конкретный файл, а целиком папку, и батч-команды DEL и RD - ничего не помогает. При запуске sfx вручную все работает, но при запуске инсталлером Adobe - нет.

добавлено:

Если кому интересно, то опытным путем я нашел-таки решение, которое с гарантией удаляет временный файл, хоть и оставляет пустую папку. Если покажется, что где-то есть избыточный код, то, увы, оно только в таком виде дает нужный результат.
Код: Выделить весь код
;!@Install@!UTF-8!
InstallPath="%Temp%\\VC2015REDIST"
RunProgram="%Temp%\\VC2015REDIST\\vcredist_x86.exe"
RunProgram="hidcon:cmd /c DEL /f /q \"%Temp%\\VC2015REDIST\\vcredist_x86.exe\""
GUIMode="2"
;!@InstallEnd@!

Последний раз редактировалось m0nkrus, 01-11-2016 в 09:13.


Отправлено: 14:36, 31-10-2016 | #390



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: Файлы конфигурации 7z SFX. Помощь и советы :.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - VMware (все вопросы) 1 bit Программное обеспечение Windows 382 10-10-2019 23:34
WinRAR SFX .:[все вопросы]:. Devil-91 Автоматическая установка приложений 85 28-08-2013 15:37
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. Microsoft Windows 2000/XP 105 30-06-2010 11:58
Все вопросы о Wi-Fi vovikrus Хочу все знать 0 18-04-2010 09:53
Вопросы по теме "Кнопка для работы с 7z SFX архивами в Total Commander." ya158 Автоматическая установка Windows 2000/XP/2003 4 18-11-2009 22:20




 
Переход