PDA

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


Страниц : 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

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

vladshishkin
05-10-2016, 16:38
Присутствуют и те и те...

m0nkrus
30-10-2016, 22:19
Господа, сегодня столкнулся с непонятками...

Немного предыстории: в последнее время установщики сложных программ, использующие 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-архива сторонней программой? Или еще что? Есть идеи, как это побороть?

sov44
30-10-2016, 22:59
m0nkrus, попробуйте c ключем %%P:
AutoInstall="%%P:waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"

m0nkrus
31-10-2016, 00:37
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 в системе.

m0nkrus
31-10-2016, 08:28
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*
Потом видно будет, что да как.

m0nkrus
31-10-2016, 14:09
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.

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

m0nkrus
31-10-2016, 14:36
Одна проблемка все-таки есть: команда "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, Не форума программы, не обновлений...
И пихаешь ссылку на свой сайт, куда только можешь...
Стратегия какая то непонятная...
Создай отдельную тему и накидаем идей по улучшению...

Start
03-05-2017, 16:28
Подскажите, нужна-ли пустая строка в конфиг-файле после ;!@InstallEnd@! В справке ничего по этому поводу не нашел (или просмотрел), в примерах пустой строки нет, а работает и так, и так.

sov44
03-05-2017, 16:44
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