Войти

Показать полную графическую версию : Модифицированный 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

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
Во вложенном один из примеров!

VV2006
04-07-2010, 09:45
Задача: без внешнего дополнительного батника создать самораспак настроенной под себя Оперы, запускающейся батником, понижающим привилегии её юзера, с полной "самоликвидацией" на выходе. Задача практически решена, за исключением небольшого (и наверное, поэтому досадного) штриха.
п>ї;!@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

VV2006
04-07-2010, 12:49
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
правда он будет закрываться сразу... или нужно обязательно "закрытия окна при выходе из Оперы?"

VV2006
04-07-2010, 19:14
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

VV2006
04-07-2010, 21:57
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=

VV2006
05-07-2010, 14:13
Dmitry_K, вот теперь всё Ok. Отличный способ, спасибо!

lorents
10-08-2010, 11:39
Добрый день!
Помогите пожалуйста решить следующие вопросы:
1. Как заставить работать этот SFX модуль, вытащил его из программы NXPowerLite (http://us.neuxpower.com/products/nxpowerlite-desktop/)
2. Можно ли в модифицированный SFX модуль добавлять картинки, если да то как?
3. Модифицированный SFX модуль сам удаляет файлы после того как я закрываю приложение, которое он распаковал, если нет, то как это сделать?
4. как можно распаковать файлы (при этом процесс распаковки должен быть равен 50%) и запустить скрыто bat-файл (и как только bat-файл закроется, процесс распаковки равен 100%), после этого запускается определенное приложение?

Bond01
10-08-2010, 12:17
lorents, а что справку не читаете?

lorents
10-08-2010, 12:32
Bond01, читал, но ответы на вопросы не нашел

MKN
10-08-2010, 15:32
lorents,
А зачем было "вытаскивать" SFX модуль из программы NXPowerLite ? Ведь есть же всегда доступный пакет на http://7zsfx.info/ru/.

Картинку модуля (7zsd_LZMA_Dialogs.sfx) можно замениить на другую ( с аналогичными параметрами) с помощью любого редактора ресурсов. Например, ResHacker_а.

По поводу удаления файлов из справки :
Его запуск (SFX архива) произведет распаковку архива во временную папку, запуск команды из конфигурационного файла, а по окончании установки удаление временной папки.

Или имеется ввиду какое либо другое удаление файлов ? Тогда что опишешь в файле конфигурации, то и получишь...

И что это за такой процесс распаковки до 50% (почему не 60-80 ?) с прерыванием на вставку bat-запуска ?

gora
10-08-2010, 16:03
Bond01, MKN, он не читатель, он писатель. ;)
На свои вопросы он уже получил исчерпывающие ответы на другом форуме, где он запостил дубль своего поста 1055. Так что не тратьте время на пересказывание ему справки - пустое это занятие...

lorents
10-08-2010, 16:26
gora, это мне уже второй человек говорит, что я писатель а не читатель. Ладно пойду почитаю справку.

LonerD
10-08-2010, 16:46
И что это за такой процесс распаковки до 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