|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
![]() Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата динозавра:
Цитата динозавра:
В описании RequestExecutionLevel есть ссылка на статью MSDN с подробностями. user == asInvoker highest == highestAvailable |
||
Отправлено: 14:46, 27-01-2021 | #2541 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Хотел подытожить. Для многих будет очень познавательно. Три рабочих примера.
Пример 1
Unicode true OutFile "1-test.exe" !Include "LogicLib.nsh" RequestExecutionLevel highest Function .onInit System::Call setupapi::IsUserAdmin()i.r0 ${If} $0 = 1 MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора" ${Else} MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !" Quit ${EndIf} FunctionEnd Section SectionEnd Пример 2
Unicode true OutFile "2-test.exe" !Include "LogicLib.nsh" RequestExecutionLevel highest Function .onInit System::Call setupapi::IsUserAdmin()i.r0 Pop $0 ${If} $0 = "admin" MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !" Quit ${EndIf} MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора" FunctionEnd Section SectionEnd Пример 3 для конкретики для кого запрет
Unicode true OutFile "3-test.exe" !Include "LogicLib.nsh" RequestExecutionLevel highest Function .onInit UserInfo::GetAccountType Pop $1 ${If} $1 == "Guest" ${OrIf} $1 == "User" MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !" Quit ${EndIf} MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора" FunctionEnd Section SectionEnd Эти примеры объединяет RequestExecutionLevel highest. По другому это совсем не работает. Есть нюанс. В виста и семь с выключенным UAC - это когда системный настройщик уведомлений в крайнем нижнем положении и в восемь и десять с полностью выключенным UAC - это когда системный настройщик уведомлений в крайнем нижнем положении и нужные отключения в реестре. В этом случае пользователи без прав не смогут запустить установщик, не двойным кликом, не от имени администратора. Как в ХР. Если же системный настройщик уведомлений будет в другом положении, то пользователь без прав не сможет запустить установщик двойным кликом, но все же сможет запустить его от имени администратора. Простыми словами: добиться Quit для пользователя без прав для установщика с большими привилегиями с включенным UAC не возможно. Исходя из того, что я написал эти коды на практике мало полезны. Зря потратил два дня на обобщение всего этого. Почему тогда этого нету в справке? Поправьте меня, если я ошибаюсь. |
Последний раз редактировалось динозавра, 30-01-2021 в 13:48. Причина: Исправил грамматические ошибки Отправлено: 13:31, 30-01-2021 | #2542 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать динозавра, может, потому, что это достаточно странные хотелки?
|
Отправлено: 15:35, 30-01-2021 | #2543 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Iska, Не понял вопроса? В чем странность? В том, что в справочнике устаревший код, который работает только в ХР и об этом ничего не указано? Или в том, что я хочу сделать установщик, который бы не запускался с малыми правами пользователя без всяких от имени? Или странность в том, что я первый об этом очень подробно написал?
|
Отправлено: 16:10, 30-01-2021 | #2544 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать динозавра,
Во-первых, второй пример не работает, т.к. после System::Call setupapi::IsUserAdmin()i.r0 в стеке ничего не появится и дальнейшее не имеет смысла. Цитата динозавра:
Серьёзно -- или система криво затвикана, или в исходных данных где-то ошибки. Цитата динозавра:
Пока вижу, что выложенные скрипты для полноценного тестирования условий запуска и получаемых результатов не содержат. Так-же подозреваю, что решать-то надо совсем другую задачу. Стоит её озвучить. Ибо происходящее похоже на типичную XY-проблему. XY-проблема
|
||
Отправлено: 16:28, 30-01-2021 | #2545 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
Цитата:
Цитата:
Юмор ценю. Спасибо. Чуть не забыл, вот видео, как в стеке ничего не появляется и дальнейшее не имеет смысла https://streamable.com/9hr0vi |
|||
Отправлено: 18:12, 30-01-2021 | #2546 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата динозавра:
Цитата динозавра:
Цитата динозавра:
Для начала стоит конкретизировать условия (мини-ТЗ) и только потом уже подбирать решение. Если будет необходимость продолжать реализацию на UserInfo/IsUserAdmin, то предварительно следует изучить вывод этих команд при разных условиях запуска без условий {If/Else} -- тупо вызвать, забрать значение и вывести его в DetailPrint/MessageBox). А потом ещё, по-хорошему, следует проверить и наличие конкретных привилегий у пользователя (на запись в фс/реестр, ...) ... Ради чего это всё? Оно точно надо? Может всё-таки подобрать более популярное решение? Цитата динозавра:
|
||||
Отправлено: 20:34, 30-01-2021 | #2547 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать iglezz,
XY-проблема. Читал углубленно. Напишу как было. При неком разговоре один грамотный человек мне сказал следующее: "Для инсталлятора с высокими правами, который будет применяться в системах с включенным UAC не существует железного способа автоматической отмены установки, если пользователь оказался с малыми правами. Это закончилось в эпоху ХР". Объяснять он не стал, господь не дал ему такой способности. Я насобирал в инете примеров авто отмены по привилегиям и решил доказать обратное. Но, увы все оказалось истинной. Потом я задал вопрос здесь, в надежде, что тут уже чего то придумали. Но тут началось обсуждение проблемы Y вместо X, на основе Z, почти не касаясь X. Подтянутся знатоки с регалиями, и не прочитав или не поняв фразы, которую сказал мне один грамотный человек подытожат XY на основе Z. Проще говоря весь смысл сведется к "сам дурак". Так что вопрос исчерпан. ЗЫ. Если у меня с вами проблема XY происходит по недоразумению из-за моей глупости, то в мировой политике сплошь и рядом и преднамеренно. Это шутка. Общие Правила конференции не нарушены. |
Отправлено: 22:09, 30-01-2021 | #2548 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать динозавра,
Цитата:
Конкретно эта формулировка не имеет смысла, т.к. в случае установщика, требующего админских прав, будет запрос UAC на старте. Прошёл - теперь права точно есть, установщик запускается и спокойно отрабатывает. А нестандартные сценарии должны быть головной болью админа системы, не сборщика установщика. А в случае установщика, которому где-то внутри нужны админские права, проверка прав ведёт к всё тому-же UAC, т.к. до него о наличии прав у пользователя достоверно неизвестно. Внутри установщика интересоваться админскими правами имеет смысл для ситуации, когда кроме обычной многопользовательской установки предлагается установка "только для текущего пользователя", установка портативки, и есть желание не дурить пользователю голову UAC'ом в этих случаях. Для этого есть в стандартной поставке плагин UAC. Цитата динозавра:
Цитата динозавра:
|
|||
Отправлено: 00:57, 31-01-2021 | #2549 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать iglezz,
Цитата:
У вас не XY-проблема, а проблема начальника Философствуйте дальше. |
|
Отправлено: 12:04, 31-01-2021 | #2550 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|