2013-07-29 3 views
3

я использую 7zip для создания SFX следующим образом:7zip самораспаковывающегося архив (SFX) без привилегий администратора

7z.exe a -r archive.7z * 

Тогда я двоичная копия с файлом 7zS.sfx (используется для создания самораспаковывающихся установок), конфигурационный файл «build.config» и архив. Содержимое файла конфигурации следующим образом:

;[email protected]@!UTF-8! 
RunProgram="setup.exe" 
GUIMode="1" 
Path="%tmp%\\mytemp" 
;[email protected]@! 

Binary команды копирования выглядит следующим образом:

copy /b 7zS.sfx + build.config + archive.7z sfxInstaller.exe 

Проблема заключается в том, что результат SFX «sfxInstaller.exe» требует прав администратора для выполнения. Возможно ли генерировать самораспаковывающиеся архивы с использованием 7-Zip, которые не требуют прав администратора? Если да, то какие параметры/аргументы командной строки следует использовать? Спасибо заранее.

ответ

1

Поместите MiscFlags="4" в свой файл конфигурации. Это должно решить вашу проблему.

Он должен выглядеть следующим образом:

;[email protected]@!UTF-8! 
RunProgram="setup.exe" 
GUIMode="1" 
Path="%tmp%\\mytemp" 
MiscFlags="4" 
;[email protected]@! 
+3

Это не с Windows 10, 7zS.sfx/7zSD.sfx, версия 9.20, 18. ноябрь 2010. – arve0

2

К сожалению, я не нашел способ генерации SFX с использованием 7zip, которые не требуют прав администратора. Попробовав другие генераторы SFX, я остановился на IExpress, который полностью удовлетворил мои потребности.

1

Вы можете использовать 7zsd.sfx вместо 7zs.sfx. Это не потребует привилегий администратора.

+3

Когда Windows 7 с 7-Zip 9.20, я обнаружил, экстракторы, созданные с помощью 7zSD.sfx все еще требуются привилегии администратора. – mpursuit

1

Вы можете вставить файл манифеста в исходный файл 7zs.sfx, который информирует Windows, чтобы запустить экстрактор с тем же токеном доступа, что и родительский процесс. Это приведет к тому, что самораспаковыватель будет работать как обычный пользователь, если это то, что пользователь вводит.

Следующая ссылка описывает, как внедрить файл манифеста в исполняемый файл с помощью Visual Studio 2005, но тот же процесс применяется в более поздних версиях. https://support.microsoft.com/kb/944276

После того, как вы ввели файл манифеста, который устанавливает «requestExecutionLevel» в «asInvoker», любая самораспаковывающаяся архивация, созданная обычным образом с измененным 7sz.sfx, не потребует прав администратора.

+0

Вы также можете изменить манифест файла sfx с помощью простого шестнадцатеричного редактора. Просто выполните поиск «requestExecutionLevel», и вы обнаружите, что за ним следует 'level =" highAvailable "'. Просто измените его на 'level =" asInvoker "' (используя конечные пробелы для дополнительных символов). Я сделал это успешно с 7zSD.sfx. –

+2

Не удалось найти 'requestExecutionLevel',' level' или 'maximumAvailable' в 7zSD.sfx (версия 9.20, 18. ноябрь 2010, md5sum fe5a4c1f2b3439653480c27a3958de15). – arve0

Смежные вопросы