Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Limonica
19-06-2015, 23:45
Кстати, есть более простой способ определения админских прав, всего одна строчка кода
Код: Выделить весь код
System::Call setupapi::IsUserAdmin()i.r0
StrCmp $0 "1" 0 +2
MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора"
StrCmp $0 "0" 0 +2
MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора" »
По поводу определения уровня UAC, каким образом можно реализовать?
Есть интересный плаг AccessControl (http://nsis.sourceforge.net/AccessControl_plug-in), нужно записать разрешения на файлик для разных групп пользователей (в том числе и запрет, например, на запись), есть у кого идеи как реализовать?
По поводу определения уровня UAC, каким образом можно реализовать? »
Не в курсе, гуглить лень, может параметры EnableLUA + ConsentPromptBehaviorAdmin ?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Есть интересный плаг AccessControl, нужно записать разрешения на файлик для разных групп пользователей (в том числе и запрет, например, на запись), есть у кого идеи как реализовать? »
У меня гениальная идея - попробуйте прочитать информацию на страничке, ссылку на которую сами же привели
У меня гениальная идея - попробуйте прочитать информацию на страничке, ссылку на которую сами же привели »
Вашей гениальности нет предела :) Я бы почитал если была бы справка хотя бы на английском. Как записать разрешения для текущего пользователя я разобрался, но как их запретить, и как это сделать для самой системы?
Вашей гениальности нет предела »
Поверьте, всё гениальное - просто, в данном случае вы не можете достичь цели либо из-за лени, либо из-за того самого "хочу, чтобы сделали всё за меня".
Я бы почитал если была бы справка хотя бы на английском »
А там на китайском?
но как их запретить »
Читайте документацию к плагину, или мне за вас открыть архив с плагином и сюда скопировать содержимое файла с описанием плагина?
и как это сделать для самой системы? »
Вся информация есть на страничке описания плагина, или мне нужно для вас здесь персонально ссылку продублировать?
Странный всё-таки народ пошел, им всё разжевали, но им и этого мало...
Подскажите, пожалуйста, можно ли как-то при помощи API поменять размер этой тёмной области?
http://fs2.directupload.net/images/150621/temp/rcly54nd.png (http://fs2.directupload.net/images/150621/rcly54nd.png)
Любой элемент на странице получается «захватить», кроме этого.
поменять размер этой тёмной области»
Зачем? Это элемент с ID 1018, который используется при создании других элементов на страничках инсталлятора (чтобы располагать элементы в его пределах)
Любой элемент на странице получается «захватить», кроме этого. »
Этот элемент всегда скрытый (почему - выше написал), так что видеть вы это в принципе не должны, видимо, что-то нахимичили в коде/с интерфейсом
Вообще получить HWND элементов интерфейса не сложно, конкретно для этого элемента:
GetDlgItem $0 $HWNDPARENT 1018
Не знаю, почему у вас эта область видимая, попробуйте прописать команду скрытия элемента на этапе GuiInit (инициализации интерфейса) или в процессе работы инсталлятора:
GetDlgItem $0 $HWNDPARENT 1018
ShowWindow $0 0
Это элемент с ID 1018 »
Тогда странно почему не работает... На кастомной страничке с выбором компонентов получается изменить размер, а на этой странице нет...
Что-то не правильно?
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
!define MUI_PAGE_CUSTOMFUNCTION_SHOW InstallPage
Page custom CustomPage1 DestroyPage1
!insertmacro MUI_PAGE_INSTFILES
Function CustomPage1
nsDialogs::Create 1018
Pop $Dialog1
nsDialogs::Show
FunctionEnd
Function DestroyPage1
FunctionEnd
Function InstallPage
;Меняется размер ID 1018 на странице установки. Но не меняется...
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $HWNDPARENT 1018
System::Call 'user32::MoveWindow(i$0,i0,i99,i664,i356,i1)'
FunctionEnd
Function myGuiInit
;Меняется размер самого окна
System::Call "User32::SetWindowPos(i$HWNDPARENT,i0,i$R0,i$R1,i670,i540,0x0004)"
;Меняется размер ID 1018 на кастомной странице
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $HWNDPARENT 1018
System::Call 'user32::MoveWindow(i$0,i0,i99,i664,i356,i1)'
FunctionEnd
http://fs1.directupload.net/images/150621/92k8e7z6.png
Что-то не правильно? »
Нужно прописать действия перед показом странички, одно дело когда вы меняете интерфейс при запуске - другое, когда интерфейс сам отрабатывает (когда вы пролистываете диалоге), он устанавливает новые настройки
Что-то типа такого попробуйте:
Page custom TEST
!insertmacro MUI_PAGE_INSTFILES
Function TEST
;Меняется размер ID 1018 на кастомной странице
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $HWNDPARENT 1018
System::Call 'user32::MoveWindow(i$0,i0,i99,i664,i356,i1)'
FunctionEnd
А вообще, что вы затеяли? Меняете размеры элементов и сам интерфейс в процессе запуска? Зачем? Глюков же получите...Может, будет лучше заранее изменить ресурсы диалогов и расположить элементы так, как надо?
Берёте файл с ресурсами диалогов из папки <NSIS>\Contrib\UIs (например modern.exe)
Открываете его с помощью программы для редактирования ресурсов (ResHacker/Restorator), делаете необходимые изменения
Помещаете отредактированный файл в папку с вашим NSIS скриптом и в скрипте прописываете:
!define MUI_UI "modern.exe"
Это элемент с ID 1018 »
Во как оказалось.
It's the dialog itself, you don't have to use GetDlgItem.
На сл. день разобрался как сделать то, что задумал :)
А вообще, что вы затеяли? »
А сам не знаю. Балуюсь. Интересно просто.
Спасибо за помощь!
динозавра
12-07-2015, 09:56
Всем привет. Попытался создать простое примитивное окошко. но нигде не нашел информации как в скрипт вставить жирный, наклонный текст, размер шрифта и цвет, ну что бы в моем окошке слово "Привет!" было жирным, наклонным с больше или меньше шрифтом и с другим цветом. Или такое зделать невозможно? Вот мое окошко:
!define PRODUCT_NAME "hello v${VER}"
!define NAME "hello"
Name "${NAME}"
Caption "${NAME}"
OutFile "hello.exe"
Icon "1\2.ico"
SilentInstall silent
Section main
MessageBox MB_OK|MB_TOPMOST|MB_USERICON "Привет!" IDYES +1
Abort
SectionEnd
динозавра, конкретно в этом окне надо? Насколько мне известно это невозможно...
You can't. It's a system parameter.
На страницах инсталлятора можно менять шрифт. Если интересует могу пример написать...
динозавра
13-07-2015, 08:49
BuZzOFF, спасибо за отзыв. Хотелось бы в таком окошке, но если невозможно....
Если поделишься примером. как это делается в инсталяторе буду очень и очень благодарен. :umnik: :yahoo:
Если поделишься примером »
Пример как поменять шрифт на стандартной странице инсталлятора.
!include "MUI2.nsh"
Name "font_test"
OutFile "font_test.exe"
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
!define MUI_PAGE_CUSTOMFUNCTION_SHOW WelcomePage
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_LANGUAGE "Russian"
Var Dialog0
Var CustomFonts1
Var CustomFonts2
Function myGuiInit
CreateFont $CustomFonts1 "Tahoma" "25" "700" /ITALIC
CreateFont $CustomFonts2 "Comic Sans MS" "10" "400"
FunctionEnd
Function WelcomePage
FindWindow $Dialog0 "#32770" "" $HWNDPARENT
SetCtlColors $Dialog0 "" 0x000000
GetDlgItem $0 $Dialog0 1201
SendMessage $0 ${WM_SETTEXT} 0 "STR:Привет!"
SendMessage $0 ${WM_SETFONT} $CustomFonts1 0
SetCtlColors $0 0xff0000 transparent
GetDlgItem $1 $Dialog0 1202
SendMessage $1 ${WM_SETFONT} $CustomFonts2 0
SetCtlColors $1 0xffff00 transparent
FunctionEnd
Section
Sectionend
P.S. В справочнике оказывается тоже есть информация по шрифтам...
динозавра
13-07-2015, 10:26
BuZzOFF, огромное спасибо.
В справочнике я видел инфу шрифтов, но пробывал это втюхать в мое окошко, но естественно ничего не получилось.
Я просто видел один установщик от RePack9649, так у него окошко с выбором языка цветное, вот я и подумал, что и в моем примитивном окошке тоже можно както менять шрифты.
так у него окошко с выбором языка цветное, вот я и подумал, что и в моем примитивном окошке тоже можно както менять шрифты. »
Это совсем разные окошки. В MessageBox нельзя поменять шрифт. У 9649 репак сделан на innosetup. И ему нужно прекращать употреблять тяжёлые наркотики. У меня от вида его инсталлятора кровь из глаз пошла...
динозавра
13-07-2015, 11:14
репак сделан на innosetup. И ему нужно прекращать употреблять тяжёлые наркотики. У меня от вида его инсталлятора кровь из глаз пошла...
:lol: Все ясно.
Sharinganx3
16-07-2015, 11:07
Привет) нужна помощь так как я новичек))) нужен скрипт для нсис , как установить ip адрес))) спасибо )
как установить ip адрес »
самое простое и эффективное - использовать штатную виндовую утилитку netsh, запускаемую с помощью плагина ExecDos
; http://nsis.sourceforge.net/ExecDos_plug-in
; http://ogarkov.com/2011/02/25/windows-изменение-ip-адреса-и-параметров-tcp-ip/
; http://blogerator.ru/page/10-komand-netsh-reset-winsock-kotorye-objazan-znat-kazhdyj-admin
Можно ли как-то реализовать такое?
Есть файл с названиями элементов. Элементов штук 50 (но может быть и больше). Один элемент - одна строка.
Как сделать так чтоб считывались названия из файла и создавались CheckBox'ы с этими названиями.
Т.к. CheckBox'ов много будет нужно как-то прилепить ещё и scroll...
И как потом проверить статусы отметки всех этих элементов.
P.S. Со считыванием названия и созданием CheckBox'а проблем нет. Не знаю как это зациклить :)
upd1. Наверное только через IO такое получится. Но хотелось бы NSD.
upd2. Сделал на IO. Работает. На NSD можно сделать? IO - не очень удобно...
http://fs2.directupload.net/images/150717/temp/ksz8lze9.png (http://fs2.directupload.net/images/150717/ksz8lze9.png)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC