Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.
sov44, всё оказалось попроще, прошу прощения за невнимательность, проглядел в истории:
1.6 develop (сборка 2518) 19.06.12
# Удален префикс 7z в именах всех переменных среды модуля, например, было '7zSfxVarModulePlatform', стало 'SfxVarModulePlatform'
vladshishkin
05-10-2016, 16:38
Присутствуют и те и те...
Господа, сегодня столкнулся с непонятками...
Немного предыстории: в последнее время установщики сложных программ, использующие 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, попробуйте c ключем %%P:
AutoInstall="%%P:waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"
sov44, вы ничего не путаете? Вы переменную пути расположения архива пытаетесь поместить туда, где обычно располагаются префиксы.
nibble74
31-10-2016, 07:01
m0nkrus, префикс %%P - это не путь, а принимает значение разрядности OS х86 или х64 соответственно, в данном случае можно обойтись и без этого префикса, а так же waitall тоже не нужен, конфигуратор сам знает что ему делать.
Но стоило мне добавить мой vcsfx_x64.exe в установщик Adobe, подменив родной файл и прописав нужный ключик запуска, »
Не понял как же вы подменяете свой vcsfx_x64.exe когда там должен быть расположен стандартный vcredist_x64.exe (имя не должно меняться), да ещё и с ключиком запуска ?
Префикс %%T тоже уберите.
И зачем использовать в конфиге ключ /install, достаточно /quiet /norestart.
Кстати, vcredist_x64.exe /uninstall /q /norestart не удалит имеющиеся другие версии 2015 в системе.
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 в системе. И раньше проверял. И сейчас специально проверил перед тем, как здесь отписаться.
nibble74
31-10-2016, 10:01
m0nkrus,
%%T - не префикс »
Просто оговорился.
Кстати, vcredist_x64.exe /uninstall /q /norestart прекрасно удаляет имеющиеся другие версии 2015 в системе »
Тоже проверил, на VMware Win10, не удаляет другую версию, ну это у меня наверно так.
%%T - Но убрать попробую - вдруг действительно чего-то да даст. »
Заодно для наглядности вместо */q* пропишите */uninstall /passive*
Потом видно будет, что да как.
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 (http://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.
Спасибо за то, что подтолкнули меня в нужном направлении!
Одна проблемка все-таки есть: команда "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@!
vadjliss
12-11-2016, 11:17
парни подскажите как сделать что бы программы запускались по очереди и каждая ждала пока другая установится
я делал но что то не выходит вот скрипт
;!@Install@!UTF-8!
GUIMode="1"
MiscFlags="4"
ExtractTitle="ACDSee Ultimate 10.1 Build 867 x64"
InstallPath="%AppData%\\ACDSee Ultimate 10.1 Build 867 x64"
RunProgram="%%P:\"Advanced SystemCare Pro 10 Host.cmd\""
RunProgram="waitall:hidcon:\"advanced-systemcare-setup.exe\""
RunProgram="waitall:hidcon:\"Advanced zakritie proza.cmd\""
RunProgram="waitall:hidcon:\"Common.exe\""
RunProgram="waitall:hidcon:\"Reg Iobit Unninstaler .exe\""
RunProgram="waitall:hidcon:\"sait.cmd\""
Delete="%%T"
;!@InstallEnd@!
vladshishkin
14-11-2016, 16:36
vadjliss, Так сделайте через батник...
nibble74
14-11-2016, 17:19
vadjliss,
Ваш алгоритм совершенно не понятен !
Зачем распаковывать в *%AppData%\\ACDSee Ultimate 10.1 Build 867 x64* и потом Delete="%%T" ???
InstallPath вообще не нужен !
И вообще уберите пробелы в названиях ваших файлов, наведите порядок.
Advanced zakritie proza.cmd - лишний пробел
Reg Iobit Unninstaler .exe - лишний пробел
вот действия включая ваши пробелы
;!@Install@!UTF-8!
GUIMode="1"
MiscFlags="4"
ExtractTitle="ACDSee Ultimate 10.1 Build 867 x64"
RunProgram="%%P:hidcon:\"Advanced SystemCare Pro 10 Host.cmd\""
RunProgram="advanced-systemcare-setup.exe"
RunProgram="hidcon:\"Advanced zakritie proza.cmd\""
RunProgram="Common.exe"
RunProgram="\"Reg Iobit Unninstaler .exe\""
RunProgram="hidcon:sait.cmd"
;!@InstallEnd@!
И вообще читайте внимательно справку по работе с программой.
Изучите для чего нужны префиксы.
X-RayPro
10-12-2016, 23:48
Если кому интересно,простенький редактор конфиг-файлов
http://X-RayPro.ru.
Прошу сильно не пинать, версия БЕТА.
Предложения и отзывы приветствуются.
CryptoNick
05-03-2017, 21:04
X-RayPro, Не форума программы, не обновлений...
И пихаешь ссылку на свой сайт, куда только можешь...
Стратегия какая то непонятная...
Создай отдельную тему и накидаем идей по улучшению...
Подскажите, нужна-ли пустая строка в конфиг-файле после ;!@InstallEnd@! В справке ничего по этому поводу не нашел (или просмотрел), в примерах пустой строки нет, а работает и так, и так.
Start, на ваше усмотрение. На работу кода это не влияет.
alexsupra
29-08-2017, 16:51
По ссылке домашней страницы модулей http://7zsfx.info теперь какой-то другой сайт. Веб-сайт 7zsfx куда-то переехал или умер?
CryptoNick
04-09-2017, 08:54
alexsupra, С какой целью интересуетесь?
Если нужно скачать модули, то можно тут: (https://github.com/OlegScherbakov/7zSFX)
Да, сайта больше нет. В нём и смысла особого не было, только перевод денег автора на ветер.
soldatovaua
05-01-2018, 21:37
del
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC