Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
ArtXGroup
29-06-2010, 08:50
Это не решение... Не заставишь же ты всех пользователей отключать это.
Я так понимаю это как-то по errorlevels отслеживается. Но мне не удалось ничего этим добиться...
Как сделать так, чтобы 7zip не отслеживал работу, а завершался сразу после распаковки и запуска? Может быть это решит проблему.
Oleg_Sch
30-06-2010, 09:53
ArtXGroup, нет, не по errorlevel
http://msdn.microsoft.com/en-us/library/bb756937.aspx
На чистой установке Windows7-32 rus на своих тестовых файлах я не смог добиться появления окон PCA
Вполне возможно, зависит от запускаемых программ.
Если Вы мне дадите какой-нибудь небольшой архив, который у Вас выдает эти окна, я попробую проверить.
Oleg_Sch
30-06-2010, 14:51
У версии 1.5.0.1795 были проблемы с запуском программ
1.5.0.1798:
* При запуске внешних программ "папка распаковки" не устанавливалась как "папка по умолчанию"
Побеждено, если кто-то даст архив с вылезающим окном PCA, может и вторая будет решена.
http://7zsfx.info/develop/7zsd_150_1798_x86.7z
http://7zsfx.info/develop/7zsd_150_1798_x64.7z
ArtXGroup
30-06-2010, 17:27
Во вложенном один из примеров!
Задача: без внешнего дополнительного батника создать самораспак настроенной под себя Оперы, запускающейся батником, понижающим привилегии её юзера, с полной "самоликвидацией" на выходе. Задача практически решена, за исключением небольшого (и наверное, поэтому досадного) штриха.
п>ї;!@Install@!UTF-8!
InstallPath="%TEMP%\\Opera"
OverwriteMode="1"
RunProgram="hidcon:runUntrust.cmd"
GUIMode="2"
Delete="%TEMP%\\Opera"
;!@InstallEnd@!
Напрямую (RunProgram="Untrust.cmd") помещённый внутрь самораспака батник запускать нельзя - нужно задать ожидание выполнения Оперы с пониженными привелегиями, поэтому он запускается другим внутренним батником runUntrust.cmd:
runUntrust.cmd:
@start "Opera 10.60" /W Untrust.cmd&EXIT
Untrust.cmd
DropMyRights.EXE opera.exe -U
Проблема: на выходе из Оперы надо вручную закрывать окно батника runUntrust.cmd. Вопрос: можно ли как этого избежать, т.е. добиться автоматического закрытия окна при выходе из Оперы?
sLiDeR-X
04-07-2010, 11:46
VV2006, попробуйте так:
runUntrust.cmd:
start /wait "Opera 10.60" Untrust.cmd
EXIT
либо так:
runUntrust.cmd:
call Untrust.cmd
EXIT
sLiDeR-X, увы - такой же результат: окно приходится закрывать вручную.
Dmitry_K
04-07-2010, 18:19
Oleg_Sch, есть просьба: добавить дополнительные команды RunPreSetup и RunPostSetup, которые запускались бы соответственно в самом начале работы модуля (первой командой) и в самом конце (последней командой) в любом случае, независимо от того, присутствуют ли RunProgram'ы и AutoInstall'ы :blush2: это возможно?
VV2006, Untrust.cmd:DropMyRights.EXE opera.exe -U
exit
правда он будет закрываться сразу... или нужно обязательно "закрытия окна при выходе из Оперы?"
Dmitry_K, как уже говорил выше, такой вариант не позволит Опере запуститься вообще (Error initializing Opera: module 10) - видимо, тут же начинается процесс "самоликвидации".
Dmitry_K
04-07-2010, 19:33
такой вариант не позволит Опере запуститься вообще (Error initializing Opera: module 10) »
странно... у меня запустиласьDropMyRights.EXE "%ProgramFiles%\Opera\opera.exe" -U
exit
Dmitry_K, тоже удивляюсь... :) Вообще, смысл затеи - не пересекаться с имеющимися инсталляциями Оперы: пришёл со "своей", поработал, ушёл, не оставив никакого мусора.
Потому логика такая: распаковка в подпапку темпа, свой настроенный профиль - внутри папки Оперы. Т.е. до работы - один экзешник на флешке, к примеру, работа - один каталог в темпе, после работы - удаление каталога в темпе.
Dmitry_K
05-07-2010, 13:39
Вообще, смысл затеи - не пересекаться с имеющимися инсталляциями Оперы: пришёл со "своей", поработал, ушёл, не оставив никакого мусора.
Потому логика такая: распаковка в подпапку темпа, свой настроенный профиль - внутри папки Оперы. Т.е. до работы - один экзешник на флешке, к примеру, работа - один каталог в темпе, после работы - удаление каталога в темпе. »
так бы сразу и сказали, нет ничего проще:
конфиг:;!@Install@!UTF-8!
InstallPath="%TEMP%\\Opera"
OverwriteMode="1"
RunProgram="hidcon:startup.cmd"
GUIMode="2"
Delete="%TEMP%\\Opera"
;!@InstallEnd@!
startup.cmd:@echo off
Set ProcessName=opera.exe
DropMyRights %ProcessName% -U
:Check
ping -n 1 -w 1 127.0.0.1 > nul
tasklist /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If "%ErrorLevel%"=="0" GoTo :Check
Работает под XP Pro, чтоб работало в XP Home, нужно включить утилиту tasklist в архив... под Win7 не тестил, но тоже должно работать при наличии tasklist в системе или архиве...
P.S. sfx-архив не должен быть с именем, указанном в строке Set ProcessName=
Dmitry_K, вот теперь всё Ok. Отличный способ, спасибо!
Добрый день!
Помогите пожалуйста решить следующие вопросы:
1. Как заставить работать этот SFX модуль, вытащил его из программы NXPowerLite (http://us.neuxpower.com/products/nxpowerlite-desktop/)
2. Можно ли в модифицированный SFX модуль добавлять картинки, если да то как?
3. Модифицированный SFX модуль сам удаляет файлы после того как я закрываю приложение, которое он распаковал, если нет, то как это сделать?
4. как можно распаковать файлы (при этом процесс распаковки должен быть равен 50%) и запустить скрыто bat-файл (и как только bat-файл закроется, процесс распаковки равен 100%), после этого запускается определенное приложение?
lorents, а что справку не читаете?
Bond01, читал, но ответы на вопросы не нашел
lorents,
А зачем было "вытаскивать" SFX модуль из программы NXPowerLite ? Ведь есть же всегда доступный пакет на http://7zsfx.info/ru/.
Картинку модуля (7zsd_LZMA_Dialogs.sfx) можно замениить на другую ( с аналогичными параметрами) с помощью любого редактора ресурсов. Например, ResHacker_а.
По поводу удаления файлов из справки :
Его запуск (SFX архива) произведет распаковку архива во временную папку, запуск команды из конфигурационного файла, а по окончании установки удаление временной папки.
Или имеется ввиду какое либо другое удаление файлов ? Тогда что опишешь в файле конфигурации, то и получишь...
И что это за такой процесс распаковки до 50% (почему не 60-80 ?) с прерыванием на вставку bat-запуска ?
Bond01, MKN, он не читатель, он писатель. ;)
На свои вопросы он уже получил исчерпывающие ответы на другом форуме, где он запостил дубль своего поста 1055. Так что не тратьте время на пересказывание ему справки - пустое это занятие...
gora, это мне уже второй человек говорит, что я писатель а не читатель. Ладно пойду почитаю справку.
И что это за такой процесс распаковки до 50% (почему не 60-80 ?) с прерыванием на вставку bat-запуска ? »
Наверное, для наглядности процесса, чтобы пользователь понимал, что процесс идет, а не завис. ))
lorents, 3. Модифицированный SFX модуль сам удаляет файлы после того как я закрываю приложение, которое он распаковал, если нет, то как это сделать? »
параметр
Delete="file_or_folder_name"
Команда удаляет указанный файл или папку ПОСЛЕ установки (множественная). Если указанное имя является папкой, то она будет удалена вместе со всем содержимым.
и еще такой
SelfDelete="1"
Удаляет SFX архив по окончании процесса
4. как можно распаковать файлы (при этом процесс распаковки должен быть равен 50%) и запустить скрыто bat-файл (и как только bat-файл закроется, процесс распаковки равен 100%), после этого запускается определенное приложение? »
Никак, но можно сделать хитрее.
Можно вообще скрыть процесс распаковки. При этом в самом начале распаковки вывести пользователям картинку (например, откомпилированный ехе-файл с картинкой), на которой написано, что идет процесс распаковки. После распаковки убить этот дополнительный процесс.
Или же сделать ехе-шник с якобы прогресс-баром распаковки (можно взять отсюда http://forum.oszone.net/thread-181913-4.html и отредактировать для себя).
Пока писал ответ - уже два поста появилось. Опоздал немного :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.