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

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, каким образом можно реализовать?

diakov
20-06-2015, 08:43
Есть интересный плаг AccessControl (http://nsis.sourceforge.net/AccessControl_plug-in), нужно записать разрешения на файлик для разных групп пользователей (в том числе и запрет, например, на запись), есть у кого идеи как реализовать?

K.A.V.
20-06-2015, 10:03
По поводу определения уровня UAC, каким образом можно реализовать? »
Не в курсе, гуглить лень, может параметры EnableLUA + ConsentPromptBehaviorAdmin ?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

Есть интересный плаг AccessControl, нужно записать разрешения на файлик для разных групп пользователей (в том числе и запрет, например, на запись), есть у кого идеи как реализовать? »
У меня гениальная идея - попробуйте прочитать информацию на страничке, ссылку на которую сами же привели

diakov
21-06-2015, 07:19
У меня гениальная идея - попробуйте прочитать информацию на страничке, ссылку на которую сами же привели »
Вашей гениальности нет предела :) Я бы почитал если была бы справка хотя бы на английском. Как записать разрешения для текущего пользователя я разобрался, но как их запретить, и как это сделать для самой системы?

K.A.V.
21-06-2015, 09:57
Вашей гениальности нет предела »
Поверьте, всё гениальное - просто, в данном случае вы не можете достичь цели либо из-за лени, либо из-за того самого "хочу, чтобы сделали всё за меня".

Я бы почитал если была бы справка хотя бы на английском »
А там на китайском?

но как их запретить »
Читайте документацию к плагину, или мне за вас открыть архив с плагином и сюда скопировать содержимое файла с описанием плагина?

и как это сделать для самой системы? »
Вся информация есть на страничке описания плагина, или мне нужно для вас здесь персонально ссылку продублировать?

Странный всё-таки народ пошел, им всё разжевали, но им и этого мало...

BuZzOFF
21-06-2015, 13:31
Подскажите, пожалуйста, можно ли как-то при помощи API поменять размер этой тёмной области?
http://fs2.directupload.net/images/150621/temp/rcly54nd.png (http://fs2.directupload.net/images/150621/rcly54nd.png)

Любой элемент на странице получается «захватить», кроме этого.

K.A.V.
21-06-2015, 13:48
поменять размер этой тёмной области»
Зачем? Это элемент с ID 1018, который используется при создании других элементов на страничках инсталлятора (чтобы располагать элементы в его пределах)

Любой элемент на странице получается «захватить», кроме этого. »
Этот элемент всегда скрытый (почему - выше написал), так что видеть вы это в принципе не должны, видимо, что-то нахимичили в коде/с интерфейсом

Вообще получить HWND элементов интерфейса не сложно, конкретно для этого элемента:
GetDlgItem $0 $HWNDPARENT 1018

Не знаю, почему у вас эта область видимая, попробуйте прописать команду скрытия элемента на этапе GuiInit (инициализации интерфейса) или в процессе работы инсталлятора:

GetDlgItem $0 $HWNDPARENT 1018
ShowWindow $0 0

BuZzOFF
21-06-2015, 14:15
Это элемент с 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

K.A.V.
21-06-2015, 15:01
Что-то не правильно? »
Нужно прописать действия перед показом странички, одно дело когда вы меняете интерфейс при запуске - другое, когда интерфейс сам отрабатывает (когда вы пролистываете диалоге), он устанавливает новые настройки

Что-то типа такого попробуйте:
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"

BuZzOFF
23-06-2015, 21:30
Это элемент с 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

BuZzOFF
12-07-2015, 21:32
динозавра, конкретно в этом окне надо? Насколько мне известно это невозможно...
You can't. It's a system parameter.

На страницах инсталлятора можно менять шрифт. Если интересует могу пример написать...

динозавра
13-07-2015, 08:49
BuZzOFF, спасибо за отзыв. Хотелось бы в таком окошке, но если невозможно....
Если поделишься примером. как это делается в инсталяторе буду очень и очень благодарен. :umnik: :yahoo:

BuZzOFF
13-07-2015, 10:14
Если поделишься примером »
Пример как поменять шрифт на стандартной странице инсталлятора.
!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, так у него окошко с выбором языка цветное, вот я и подумал, что и в моем примитивном окошке тоже можно както менять шрифты.

BuZzOFF
13-07-2015, 11:11
так у него окошко с выбором языка цветное, вот я и подумал, что и в моем примитивном окошке тоже можно както менять шрифты. »
Это совсем разные окошки. В MessageBox нельзя поменять шрифт. У 9649 репак сделан на innosetup. И ему нужно прекращать употреблять тяжёлые наркотики. У меня от вида его инсталлятора кровь из глаз пошла...

динозавра
13-07-2015, 11:14
репак сделан на innosetup. И ему нужно прекращать употреблять тяжёлые наркотики. У меня от вида его инсталлятора кровь из глаз пошла...
:lol: Все ясно.

Sharinganx3
16-07-2015, 11:07
Привет) нужна помощь так как я новичек))) нужен скрипт для нсис , как установить ip адрес))) спасибо )

MKN
16-07-2015, 13:07
как установить 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

BuZzOFF
16-07-2015, 19:34
Можно ли как-то реализовать такое?

Есть файл с названиями элементов. Элементов штук 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