Ru-Board.club
← Вернуться в раздел «Программы»

» 7-Zip / 7z (часть 2)

Автор: regist123
Дата сообщения: 13.11.2013 17:01
18:54 13-11-2013
Цитата:
нужен не Win-скрипт, а sh-скрипт, а он иначе пишется

Victor_VG выше уже написал, что пока тестирую алгоритм, а
команды у 7-zip на обоих платформах вроде одинаковые.

и своё предыдущее сообщение поправил (добавил информацию о сжатие).
Victor_VG 18:54 13-11-2013
Цитата:
И проблемы могут быть вызваны сменой формата в версии 9.28.

похоже дело действительно в этом. Положил рядом 7z от версии 9,20 после добавления SFX архив нормально запустился. Снова подложил от 7-Zip 9.30 и опять та же ошибка.
Автор: Alex_Piggy
Дата сообщения: 13.11.2013 17:38
regist123

Цитата:
проблема в том, что пока тестирую алгоритм на windows, а позже этот батник должен работать на линуксе. То есть добавляться новые файлы в архив будут на линуксе.

Вы можете (при помощи того же reshacker) один раз поменять иконку в 7z.sfx, сохранив его под своим именем sfx модуль - это отдельных фрагмент, который не затрагивается при добавлении/удалении файлов. Можно просто его добавить к архиву при помощи, например,
copy /b 7z_myicon.sfx+test.7z test.exe
Автор: Victor_VG
Дата сообщения: 13.11.2013 17:53
regist123

Ага, команды 7-Zip вроде и одинаковы, а остальное это такая "мелочь", что на это можно не обращать внимания. Как например на это :

Цитата:
if ($extract+$list+$create>1) {
die "More than one of x, c and t doesn't make sense.\n";
}
elsif ($list) {
print join "\n", Archive::Tar->list_archive ($tarfile),"";
}
elsif ($extract) {
Archive::Tar->extract_archive ($tarfile);
}
elsif ($create) {
my @f;

find (sub { push @f,$File::Find::name;
        print $File::Find::name,"\n" if $verbose}, @ARGV);
Archive::Tar->create_archive ($tarfile, $compress, @f);
}

CMD/Power Shell конечно с этим справятся - это же обычный .bat-файл, а они все одинаковы как братья-близнецы.
Автор: regist123
Дата сообщения: 13.11.2013 19:04
Alex_Piggy 19:38 13-11-2013
Цитата:
Вы можете (при помощи того же reshacker) один раз поменять иконку в 7z.sfx, сохранив его под своим именем sfx модуль - это отдельных фрагмент, который не затрагивается при добавлении/удалении файлов.

поэтому и создал заранее SFX, а потом к нему добавляю файлы.
Цитата:
Можно просто его добавить к архиву при помощи, например, copy /b 7z_myicon.sfx+test.7z test.exe

изначально, как раз подумал, что вы предлагаете сразу создавать подобной командой SFX архив (без заранее заготовленного) и менять у него иконку, поэтому написал что в данном случае не подойдёт. А так если использовать для создания заготовки SFX, то конечно вариант и наверно воспользуюсь вашим батником.

Victor_VG 1) я наверно буду использовать всё-таки p7-zip, а не tar.
2) В случае с p7-zip уже проверил для моих нужд хватает одной этой строчки с командами 7-zip.
Автор: smersh2012
Дата сообщения: 13.11.2013 19:44
слушайте, как в проводнике Win7 x32 заменить иконки 7-zip? 7-Zip Theme Manager, IconTo или что-то подобное нужно?
Автор: Alex_Piggy
Дата сообщения: 14.11.2013 17:07
Доброе время, regist123

Цитата:
изначально, как раз подумал, что вы предлагаете сразу создавать подобной командой SFX архив (без заранее заготовленного) и менять у него иконку, поэтому написал что в данном случае не подойдёт.

К сожалению, не понимаю. Для 7z без разницы, что в начале архива. Он просто переписывает без изменений все до начала контейнера. А что это - текст, картинка или модуль распаковки - его не касается. Пример - abu.gif, к которому прицеплен 7z архив.
И разницы между SFX архивом, созданным при помощи кнопки GORA (где изменена только иконка) и SFX, у которого затем (после создания) поменяли иконку с точки зрения архиватора 7z просто нет (ведь эти изменения не затрагивают контейнер - тело архива).
Автор: irshat
Дата сообщения: 14.11.2013 22:32
Подскажите, а как то можно убрать в архиваторе адресную строку. В настройках нет, в Рестораторе тоже не нашел.
Автор: Victor_VG
Дата сообщения: 15.11.2013 14:57
regist123

Ну, в данном случае я привёл tar как пример, главное что вам придётся сделать в скриптах - это учесть разницу в подходе к управлению ОС Windows - UNIX ибо у CMD/Power Shell и sh он разный. Сравните кусок sh-скрипта с любым CMD и сразу видите что в основе их языков лежат принципиально разные подходы к управлению ОС - у CMD/PS подобно языку JCL на IBM OS/360 в основе лежит понятие линейно-последовательного исполнения пакета команд ОС, а у в основе скриптового языка sh лежит понятие программы управления поведением ОС в зависимости от внешних условий и событий. Разница как говорится налицо...
Автор: regist123
Дата сообщения: 18.11.2013 21:44
В конфиг SFX архива добавлена строчка

Код: MiscFlags="4"
Автор: Inoz2000
Дата сообщения: 19.11.2013 00:52

Цитата:
version="1.5.0.2088"


на сайте 1.5-Release (сборка 2712) 30.12.12

с поддержкой флагов 4 и 8.

Скачайте её.
Автор: regist123
Дата сообщения: 19.11.2013 07:30
Inoz2000 02:52 19-11-2013
Цитата:
на сайте 1.5-Release (сборка 2712) 30.12.12   с поддержкой флагов 4 и 8.

Я потом взял собрал SFX батником, после этого манифест без проблем исправился без нарушения работы файла. Только по прежнему не понимаю, почему там asInvoker если в конфиге MiscFlags="4" ?
Автор: Inoz2000
Дата сообщения: 19.11.2013 10:02
На тот случай, когда в конфиге не будет четвёрки.
Автор: regist123
Дата сообщения: 19.11.2013 11:40
Inoz2000 12:02 19-11-2013
Цитата:
На тот случай, когда в конфиге не будет четвёрки.

Не понятен смысл этой фразы. В конфиге 4-ка есть, тем не менее в манифесте asInvoker - почему?
Скачал последнюю версию кнопки Гора, для теста собрал её и снова исправил этот параметр reshacker-ом, снова получил выше указанную ошибку с SFX модулем.

Цитата:
На тот случай, когда в конфиге не будет четвёрки.

+ просто собранный хоть кнопкой хоть батником SFX архив на 7-ке не имеет значка щита, лезу правлю руками в ресурсах манифест level="requireAdministrator" значок щита появляется.

Получается этот параметр в конфиге игнорируется?


+ заодно ещё вопрос. Можно ли сделать так, чтобы при запуске SFX архив проверял запущен ли он с правами админа (под учёткой с правами локального админа) и если учётка ограниченная, то автоматически выводил запрос для ввода пароля админа. На данный момент протестировал это не проверяется.
Автор: Inoz2000
Дата сообщения: 19.11.2013 12:03
Ну, какие операции требуют повышения прав? Кроме указания четвёрки других строк нет? Или папка извлечения требует?
Автор: regist123
Дата сообщения: 19.11.2013 16:25
Inoz2000 если надо было бы просто распаковать архив, то наверно и запрос UAC не нужен был бы. После распаковки должна запуститься утилита, которая распаковалась. Нужно, чтобы она запускалась с правами админа. Это можно реализовать средствами 7-zip ?

Второй вопрос уже просто из любопытства, на что же всё-таки влияет этот флаг 4 и как можно его проверить? Так как написал в предыдущем посте никакой разницы ни с ним ни без него не заметил.
Автор: Victor_VG
Дата сообщения: 19.11.2013 17:30
regist123

А если использовать вызов через скрипт типа такого? Чем не идея?
Автор: Inoz2000
Дата сообщения: 19.11.2013 18:23
Значит две строки
Код: MiscFlags="4"
RunProgram="......"
Автор: regist123
Дата сообщения: 19.11.2013 21:35

Цитата:
Значит две строки

чуть больше, но остальные для GUI
[more];!@Install@!UTF-8!
Title="Test"
BeginPrompt="Текст перед распаковкой"
InstallPath="%%S\\test"
GUIFlags="1+8+2048+4096"
GUIMode="1"
OverwriteMode="2"
MiscFlags="4"
ExtractTitle="Распаковка файлов..."
RunProgram="...."
;!@InstallEnd@![/more]
примерно так

Добавлено:
19:30 19-11-2013
Цитата:
А если использовать вызов через скрипт типа такого? Чем не идея?

Victor_VG немного устал, с ходу не могу понять назначение скрипта. Это просто принудительный запрос UAC (просто ПКМ запуск от имени администратора) ? Если да, то это я уже решил проще выше отписался достачно ресторатором или рес. хакером в ресурсах поправить манифест и заменить level="asInvoker" на level="requireAdministrator".
Остался правда вопрос (но уже чисто теоретический и из любопытства), как можно проверить MiscFlags="4" (подозреваю, что он успешно был проигнорирован).

и второй вопрос можно ли флагами или как-то аналогично в SFX архив 7-zip добавить проверку regist123 13:40 19-11-2013
Цитата:
чтобы при запуске SFX архив проверял запущен ли он с правами админа (под учёткой  с правами локального админа) и если учётка ограниченная, то автоматически выводил запрос для ввода пароля админа.

если нельзя, то нельзя... буду думать, как эту проверку сделать другими средствами.
Автор: Inoz2000
Дата сообщения: 20.11.2013 00:22
regist123
O.K.

Со стороны 7z проблема отсутствует

Может быть
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorUser
равно нулю?
Автор: Victor_VG
Дата сообщения: 20.11.2013 01:15
regist123

Проще и без бубна - берём на гуглокоде из проекта osspack32 кроху isadmin.exe - check admin previlege (maybe pointless for Win7/UAC) Jun 23 1.5 KB или компилим её сами в MinGW :

Цитата:
//compile with TCC
//otherwise uncomment below include
//#include <shlobj.h>
#include <stdio.h>
int main () {
if (IsUserAnAdmin()) {
printf("1");
return 0;
} else {
printf("0");
return 1;
}
}

и смотрим isadmin.exe -> IF ERRORLEVEL 0 GOTO ADMIN ELSE GOTO USER ...

ППР
Автор: aidarsimon
Дата сообщения: 20.11.2013 12:22
Никак не срабатывает интеграция в контекстное меню windows.
Винда 7 x64 про. Ставил сборки 9.20, 9.22, 9.30
Без локализации и с ней - не имеет значения
Автор: regist123
Дата сообщения: 20.11.2013 12:29
Inoz2000 02:22 20-11-2013
Цитата:
Может быть HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System ConsentPromptBehaviorUser равно нулю?

нет равно 3
[more]
Код: [HKEY_LOCAL_MACHINE\software\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000005
"ConsentPromptBehaviorUser"=dword:00000003
"DisableRegistryTools"=dword:00000000
"dontdisplaylastusername"=dword:00000000
"EnableInstallerDetection"=dword:00000001
"EnableLUA"=dword:00000001
"EnableSecureUIAPaths"=dword:00000001
"EnableUIADesktopToggle"=dword:00000000
"EnableVirtualization"=dword:00000001
"FilterAdministratorToken"=dword:00000000
"legalnoticecaption"=""
"legalnoticetext"=""
"PromptOnSecureDesktop"=dword:00000001
"scforceoption"=dword:00000000
"shutdownwithoutlogon"=dword:00000001
"undockwithoutlogon"=dword:00000001
"ValidateAdminCodeSignatures"=dword:00000000
Автор: Victor_VG
Дата сообщения: 20.11.2013 13:50
regist123

По моему это простейшее решение - обёртка над IsUserAnAdmin() из WinAPI и по идее должна сработать всегда...
Автор: Inoz2000
Дата сообщения: 20.11.2013 13:59

Цитата:
равно 3
Значит, при запуске программ, требующих повышенных привилегий, должен появляться запрос. Он появляется при запуске regedit, например?


Цитата:
как эту проверку сделать другими средствами.

в sfx конфиге можно с помощью RunProgram запустить примерно такой батничек
Код: @echo off
REG QUERY "HKU\S-1-5-19">nul&&echo доступ есть||echo нет прав
pause
Автор: regist123
Дата сообщения: 20.11.2013 14:54
Inoz2000 15:59 20-11-2013
Цитата:
Значит, при запуске программ, требующих повышенных привилегий, должен появляться запрос. Он появляется при запуске regedit, например?

да, запрос появляется.
Собственно вопрос был немного в другом, у того же regedit есть значок щита, который говорит о том, что если UAC включён будет вызван запрос UAC. При сборке SFX архива со строчкой в конфиге MiscFlags="4" у SFX архива этого щита не появилось (как следствие предполагаю, что строка игнорируется).
Inoz2000 проверьте у себя, с этой строчкой в конфиге у вас значок щита на иконке SFX архива есть?
Автор: Pasha_ZZZ
Дата сообщения: 20.11.2013 14:56
regist123
Цитата:
значок щита на иконке SFX архива есть?
Значок щита появляется только согласно манифесту, так что откуда б ему взяться?
Автор: Bulat_Ziganshin
Дата сообщения: 20.11.2013 15:00
вот из freearc работающий манифест его менеджера настроек: http://rghost.ru/50307796

кстати, может кто подскажет как ту значок щита добавить?
Автор: regist123
Дата сообщения: 20.11.2013 15:07
Inoz2000 15:59 20-11-2013
Цитата:
в sfx конфиге можно с помощью RunProgram запустить примерно такой батничек

похоже, то что надо
Автор: GORA2
Дата сообщения: 22.11.2013 14:48
regist123

Цитата:
у обновлённого архива расширение снова сменил на EXE и запускаю. В итоге получаю ошибку:
7-Zip: Метод не поддерживается.

Вы делаете все неправильно, так SFX не создаются. Нельзя в наборе модуль+конфиг+архив7z последний архив подменять на exe файл (пусть это и 7zSFX, но все равно это не 7z архив).
Цитата:
То есть добавляться новые файлы в архив будут

Боюсь Вас расстроить, но 7zSFX файлы не могут обновляться\пополняться без их полной пересборки. Это была информация от Игоря в ответ на один из моих вопросов на форуме (маловероятно, что я сейчас смогу это найти) и с тех пор все обновления важных sfx делаю только полной пересборкой.


Цитата:
Не понятен смысл этой фразы. В конфиге 4-ка есть, тем не менее в манифесте asInvoker - почему?

Манифест находится в модуле, а параметр MiscFlags="4" в конфиге. При создании SFX выполняется команда Copy /b и она ни как не сможет изменить манифест в модуле....
Автор: regist123
Дата сообщения: 22.11.2013 18:07
GORA2 16:48 22-11-2013
Цитата:
Вы делаете все неправильно, так SFX не создаются. Нельзя в наборе модуль+конфиг+архив7z последний архив подменять на exe файл (пусть это и 7zSFX, но все равно это не 7z архив).

GORA2 извиняюсь, но вы невнимательно прочли. Я как раз переименовывал и использовал 7z архив, а не EXE

Цитата:
Боюсь Вас расстроить, но 7zSFX файлы не могут обновляться\пополняться без их полной пересборки. Это была информация от Игоря в ответ на один из моих вопросов на форуме (маловероятно, что я сейчас смогу это найти) и с тех пор все обновления важных sfx делаю только полной пересборкой.

хорошо, что я этого не знал раньше . Он у меня сейчас отлично перебирается и работает, пару десятков раз уже наверно так пересобрал работает. Не исключаю правда, что при каких-то других обстоятельствах могут быть проблемы.
Цитата:
Манифест находится в модуле, а параметр MiscFlags="4" в конфиге. При создании SFX выполняется команда Copy /b и она ни как не сможет изменить манифест в модуле....

спасибо, да я это уже понял. Если не сложно можете пояснить, а что на практике делает MiscFlags="4" ? Перезапускает ещё раз архив с повышенными привилегиями или что?

Добавлено:
GORA2 16:48 22-11-2013
Цитата:
Нельзя в наборе модуль+конфиг+архив7z последний архив подменять на exe файл (пусть это и 7zSFX, но все равно это не 7z архив).

кстати это тоже проверял, если собирать с командной строки, то расширение файлов не имеет никакого значения.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135

Предыдущая тема: RDM+, TSMobiles и VNC+


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.