PDA

Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.


Страниц : 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 [127] 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

inco1
19-01-2021, 09:51
iglezz,
Спасибо за модификацию.
Сейчас все компилируется и работает. Экзешник сделал через MessageBox MB_YESNO. YES - установка, NO - не установка. И тут опять проблема по моему незнанию. Как прописать, чтобы и Function CallbackFunction подчинялась кнопке NO. А то получается. если кликнул YES, то все правильно устанавливается. Ели кликнул NO, то файлы-майлы и прочее, как и требуется не ставится, а настройки в реестр все равно прописываются, ведь они в Function CallbackFunction, а MessageBox MB_YESNO в Section.

iglezz
19-01-2021, 10:35
inco1, Call CallbackFunction

inco1
19-01-2021, 12:08
iglezz, Спасибо. Вот теперь работает так как было в моих планах.
Какое же все таки классное решение EnumUsersReg.nsh, хоть и мало востребованное. Но для компьютеров с пользователями в пол аула с одинаковыми задачами это самое то.

iglezz
19-01-2021, 13:32
inco1, мало востребовано, ибо сценарии обычно простые - установка только текущему юзеру или общесистемная установка и дальше пользователь сам всё настраивает. Сложные сценарии - это, в основном, либо корпоративщина (а там - Windows Installer), либо плохо спроектированный софт, либо недостаток информации/знаний о продукте у собирающего установщик, либо сборки с включением разнообразных хотелок создателя/пользователя сборки.

Конкретно в образце выше точно есть необходимость писать в пользовательскую ветку? Это уместно, если
- Акробат не в состоянии читать из HKLM при отсутствии настройки в HKCU
- необходимо изменить уже имеющийся параметр у пользователя

inco1
19-01-2021, 14:56
iglezz,
Что касаемо Акробат, то это именно тот продукт, где все его настройки хранятся отдельно для каждого пользователя в HKCU. После установки и настройки акробата, если зайдет другой пользователь, то все настройки для него будут по умолчанию пока этот пользователь их под себя не настроит.
Что касаемо меня, то в связи с обилием свободного времени начал экспериментировать. Была для себя поставлена задача, чтобы в идеале один пользователь мог изменять HKCU другого или вообще всех. С вашей лёгкой подачи задача, которую я ставил для себя успешно разрешилась. В виду моего полного отсутствия знаний NSIS, да и всего остального для меня это очень важно.
Вы, наверное программист или преподаватель, к чему я больше склоняюсь. Ваша помощь всегда корректно подается без рассуждений о пользе справке, как некоторые, не намёками, а конкретно.
Еще раз благодарю вас за помощь.

P.S. В личку отправил полный сценарий, что я сделал.

Iska
19-01-2021, 17:34
Какое же все таки классное решение EnumUsersReg.nsh, хоть и мало востребованное. Но для компьютеров с пользователями в пол аула с одинаковыми задачами это самое то. »
inco1, мало востребовано, ибо сценарии обычно простые - установка только текущему юзеру или общесистемная установка и дальше пользователь сам всё настраивает. »
Не так. Если возникает вопрос с содержимым, которое надо «развесить всем пользователям» — значит, приложение криво написано. Предварительные настройки «на пользователя» обязаны выполняться самим приложением при его первом запуске. Отсутствующие некритичные пользовательские файлы и содержимое реестра — восстанавливаться при каждом запуске приложения.

Была для себя поставлена задача, чтобы в идеале один пользователь мог изменять HKCU другого или вообще всех. »
Не делайте так.

inco1
19-01-2021, 18:10
Iska,
Я писал о акробат. Он написан, ну никак не криво. При первом запуске любого пользователя подтягиваются настройки по умолчанию. Но все дело в том, что по умолчанию. Изменение этих настроек, а их огромное множество, как раз и пишется только на того пользователя, который их совершает. Я не зря написал. что "для компьютеров с пользователями в пол аула с одинаковыми задачами". Если одним кликом можно нескольким пользователям дать идентичные настройки программы, то что в этом криминального. Суждения о пользе EnumUsersReg.nsh так и останутся суждениями. Другое дело, что в NSIS нету возможности прописать в инсталляторе, чтобы запуск мог произвести только админ. Все, что есть сработает только на висте и семерке с выключенным контролем учеток.

Iska
19-01-2021, 18:44
inco1, для этих целей есть домен и политики. А то, что пытаетесь сделать Вы — называется иначе.

K.A.V.
19-01-2021, 19:24
Всё работает пока учетка админа. Добавляет настройку и добавляет текстовый файл. Но под простым пользователем это не работает »
и просто сделать двойной клик, то запись добавляется правильно, но не добавляется текстовый файл. Если запустить от админа , о и запись настройки добавится админу, текстовый файл добавится. »
Так и должно быть
"Учите мат.часть" или работайте в Windows XP, где еще не было "такой сложной системы", с чего бы под юзером вам операционная система должна давать доступ в Program Files? В новых ОС это уже давно заблочено на уровне системы от шаловливых ручек, нужны права на запись в Program Files - дайте права админа программе

Испытывал на 10х64. Параметры контроля на низу ползунка. »
Пробовал на 7х64 с двумя пользователями админ и одним простым с включенным контролем ползунок по рекомендации.
Простой пользователь отдаёт настройки реестра программы тому админу от кого получает разрешения.
Как то это не правильно. »
Согласен, скачали такой файлик, который 5-ти летний Пашка написал в какой-то супермегапростойхакерскойпроге, которая очищает Program Files и другие системные папки, запустили без прав админа, и она давай вам всё зачищать, и это правильно :up


После установки и настройки акробата, если зайдет другой пользователь, то все настройки для него будут по умолчанию пока этот пользователь их под себя не настроит. »
При первом запуске любого пользователя подтягиваются настройки по умолчанию. Но все дело в том, что по умолчанию »
Вам бы почитать, как устроена ОС, что такое реестр (и что он может), что такое bat-файлы/переменные среды ОС, например...это так, навскидку, что первое приходит в голову

А то, что пытаетесь сделать Вы — называется иначе. »
Такой порнухи я еще не встречал, там заморочиться только для того, чтобы настройки нужные подкинуть только что установленному ПО...
Надеюсь, вы хоть виртуалкой/бэкапами пользовались, когда этот код тестировали, шерстя реестр всех юзеров?

Другое дело, что в NSIS нету возможности прописать в инсталляторе, чтобы запуск мог произвести только админ »
Ваша помощь всегда корректно подается без рассуждений о пользе справке, как некоторые, не намёками, а конкретно »
Я бы, всё-таки, порассуждал на тему о пользе справки к NSIS

Iska
19-01-2021, 19:59
или работайте в Windows XP, где еще не было "такой сложной системы", с чего бы под юзером вам операционная система должна давать доступ в Program Files? В новых ОС это уже давно заблочено на уровне системы от шаловливых ручек, нужны права на запись в Program Files - дайте права админа программе »
Так ещё с NT 3.x уже не давала, если мне не изменяет память.

Такой порнухи я еще не встречал, там заморочиться только для того, чтобы настройки нужные подкинуть только что установленному ПО... »
Ну, человек открывает для себя мир программирования. Вот так. Тут каждый должен набить свои шишки сам.

K.A.V.
21-01-2021, 11:22
Ну, человек открывает для себя мир программирования »
Да не нужно ему ничего, кроме готовой строчки кода (краткое содержание его поэмы в ЛС)
В личных сообщениях он мне уже "доступным языком пояснил", кто я и что я должен сделать со своим "справочником" по NSIS

Iska
21-01-2021, 18:53
K.A.V., боже, боже… :shot:

Вот так и теряешь веру в человечество.

динозавра
27-01-2021, 09:58
Господа товарищи. Прочитал весь форум, но так и не понял, как добиться уведомления для пользователя без прав, что установщик типа не для него и далее quit. Для пробы Win10 32, ничего не работает из того что здесь и в справке. Установщик все равно лезет устанавливать, появляется окно от имени админа, а мне нужно чтобы тупо quit. Что нужно написать в скрипте?

MKN
27-01-2021, 10:04
как добиться уведомления для пользователя без прав, что установщик типа не для него »
А разве UserInfo::GetAccountType не работает ?

Попробуй так :

OutFile "IsUserAdmin-test.exe"
!Include "LogicLib.nsh"

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
MessageBox MB_OK "Setup"
SectionEnd

динозавра
27-01-2021, 10:28
MKN, Скомпилировал ваш скрипт без изменений. Не работает. Точнее работает, но сначала появляется окно от имени админа и по нажатию да выдает "Есть права администратора". Все так же как и с другими способами.

iglezz
27-01-2021, 11:00
о сначала появляется окно от имени админа и по нажатию да выдает "Есть права администратора". »
Потому что нужен RequestExecutionLevel user RequestExecutionLevel highest (https://nsis.sourceforge.io/Docs/Chapter4.html#arequestexecutionlevel)

динозавра
27-01-2021, 11:26
iglezz, Если добавить RequestExecutionLevel user в тест от MKN то для пользователя без прав пишет правильно "Нет прав администратора". Но админу тоже пишет "Нет прав администратора". Что не так.

iglezz
27-01-2021, 11:34
Что не так. »
Где не так? Код в студию.
IsUserAdmin() возвращает 1 при наличии админских привелегий

динозавра
27-01-2021, 12:21
iglezz, Я же написал, если добавить RequestExecutionLevel user в тест от MKN.

OutFile "IsUserAdmin-test.exe"
!Include "LogicLib.nsh"
RequestExecutionLevel user
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
для пользователя без прав пишет правильно "Нет прав администратора". Но админу тоже пишет "Нет прав администратора".
если изменить на RequestExecutionLevel admin то админу пишет "Есть права администратора", а у пользователя появляется окно разрешения от имени администратора.
Почти голая десятка лицензия. Никакие твики шмихи не применял, ничего не регулировал. Как есть с установочного диска. Попробуйте сами, если не верите сниму видео.

PS. Нашел код UserInfo::GetAccountType. Все точно так же.

динозавра
27-01-2021, 13:19
Путем тыка обнаружил, что адекватно себя ведет тест, если применить RequestExecutionLevel highest.
Админу пишет "Есть права администратора", пользователю "Нет прав администратора. До свидания !". Если же пользователю тест произвести правой кнопкой мыши "Запуск от имени администратора" то только тогда появляется окно от администратора. Вроде все правильно и адекватно.
Но теперь мне не понятно какие привилегии потеряет установщик с RequestExecutionLevel highest в отличие от RequestExecutionLevel admin.




© OSzone.net 2001-2012