PDA

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


Страниц : 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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

kotkovets
11-08-2011, 16:30
Мне надо что чужая прога отлавливала прогресс установки!! Внешняя!!! »
А цель сего деяния????
Записывайте переменную(значение переменной $PROGBAR во внешний файл). При запуске инсталера парсите файл внешней прогой...
Или отлавливайте класс окна, получите хэндл прогресс бара инсталлера внешней прогой
GetDlgItem $HWND $HWND 1004 - или запишите значение $HWND (хэндл прогресс бара) в файл, хэндл есть и рулите внешней прогой.

sawe
11-08-2011, 19:44
Наконец добился нормальное отображение одностранчной установки (http://rghost.ru/17620121), но ни как не получается использовать память для STARTMENUFOLDER (http://forum.oszone.net/thread-67386-128.html).
Шаг на страницу назад или вперёд, в переменной не сохраняется выбранная папка, тем более не считывается из реестра.
kotkovets - може я что то делаю не так?

kotkovets
11-08-2011, 21:08
sawe,
В функции CreatePage

---
${NSD_CreateText} 0 0u 100% 12u `${PROGRAMS}`
Pop $Text
${NSD_SetFocus} $Text

${IfNot} $STARTMENUFOLDER == `` ;если $STARTMENUFOLDER не равно пустому значению....
${NSD_SetText} $Text "$STARTMENUFOLDER\${PROGRAMS}"
${Else} ;здесь наоборот
${NSD_SetText} $Text "${PROGRAMS}"
${EndIf}
---

Я уже вам давал пример по по поводу сохранения значения переменной при переходе страничек.
По такому же принципу можно и запоминать состояние отметки чебокса.

sawe
12-08-2011, 02:02
Нужну, что бы сначала считывало с реестра и если реестр пуст, то тогда подключить этот код.
Но в реальности получается, если реестр пуст, тогда не запоминается папка а подставляется сразу "${PROGRAMS}".

kotkovets
12-08-2011, 02:08
sawe, Ну тогда считывайте значение с реестра прямо в переменную $STARTMENUFOLDER, а затем под операторы даем на съедение, что здесь такого сложного?

SOLON7
12-08-2011, 07:59
А цель сего деяния????
Записывайте переменную(значение переменной $PROGBAR во внешний файл). При запуске инсталера парсите файл внешней прогой...
Или отлавливайте класс окна, получите хэндл прогресс бара инсталлера внешней прогой
GetDlgItem $HWND $HWND 1004 - или запишите значение $HWND (хэндл прогресс бара) в файл, хэндл есть и рулите внешней прогой. »

То есть по умолчанию нету, Nsis инсталлятор же будет в тихом режиме ставится!!!

kotkovets, мне это нужно для www.ninite.com хочу также замутить!!!

kotkovets
12-08-2011, 09:16
Nsis инсталлятор же будет в тихом режиме ставится!!! »
Упс!!! приехали, а че сразу нельзя сказать.... в тихом режиме никаких прогрессов нету жежь!
Здесь открываем, к примеру процесс инсталера со свойством SYNCHRON и ждем завершения...
Прогресс бар рассчитывается из вашей проги - сколько прог устанавливать и установилась прога - продвигаем прогресс
Раз вы хотите написать свою прогу, думаю вы меня поняли...

MKN
12-08-2011, 11:11
К слову, о необходимости включения-отключения UAC из инсталлятора, при установке на W7.
Т.к. имеющийся плагин UAC plug-in - очень мутный и громоздкий (что это за плагин такой, код для работы которого занимает десятки строк ?! . Громозда (и повод для его усовершенствования... :) ) )

Так вот, можно ведь воспользоваться известным способом отключения-включения UAC из командной строки и главное - без перезагрузки ОС.
Отключить UAC :
reg ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
Включить UAC :
reg ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 2 /f
Запускать надо от имени админа. Наверное можно реализовать и через непосредственную запись в реестр. Не проверял.
На W7x64 - срабатывает отлично.
ps Проверил - рег файлы также работают.

kotkovets
12-08-2011, 12:45
Запускать надо от имени админа »
MKN в том и штука, что плагин UAC позволяет все штучки делать, без запуска от имени админа :drug:

MKN
12-08-2011, 12:57
UAC позволяет все штучки делать, без запуска от имени админа »
А чем запуск от имени админа плох ? Кстати, запускал рег файл под пользователем - эффект тот же, т.е. положительный. :)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
А UAC плагин, всё равно - не удачный...

kotkovets
12-08-2011, 13:06
под пользователем - эффект тот же »
Конечно, если пользователь имеет админские права, а если нет прав :)

MKN
12-08-2011, 13:08
а если нет прав »
А если нет , то в инсталляторе ведь для этого : RequestExecutionLevel admin ?

kotkovets
12-08-2011, 14:09
А если нет , то в инсталляторе ведь для этого : RequestExecutionLevel admin ? »
Эта команда предназначена, сколько прав должен иметь, т.е какими правами должен обладать юзер для установки приложения.
Определяет требуемый уровень прав (привелегий) для установки приложения в Windows Vista и в Windows 7 - в справке это четко прописано на русском языке...
В том что, плагин неудачный я согласен.

MKN
12-08-2011, 15:20
kotkovets,
Ну уж, если у пользователя нет прав запуска прог от имени админа, то и нечего ему вообще что либо запускать и устанавливать. :) Явно этот пользователь "курируется" злым админом и тот пресечёт любые попытки установок ПО, хоть с плагином хоть без...
А к домашним пользователям это никак не относится. Будем считать, что предложенный простой способ отключения-включения UAC, для таких нормальных пользователей и предназначен... :)

wolkow70
12-08-2011, 16:47
Товарищи, забыл как сделать, что если система Vista или новее, то ставить программу в корень системного диска , а если XP или старее, то в Программную папку?

sawe
12-08-2011, 17:00
А UAC плагин, всё равно - не удачный... »
Скорее Windows не удачная, начиная с DOS постоянно подстраивают под запросы времени при этом её основа, имеет кучу ограничений, плагинописатели вынуждены поступать так же.

kotkovets
12-08-2011, 17:15
Товарищи, забыл как сделать, что если система Vista или новее, то ставить программу в корень системного диска , а если XP или старее, то в Программную папку? »
Здесь логичнее на права юзера, можно так....

!include "MUI2.nsh"

InstallDir "$PROGRAMFILES\Программа"

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

RequestExecutionLevel user

Function .OnInit
ClearErrors
UserInfo::GetOriginalAccountType
Pop $0
IfErrors Done
StrCmp $0 "Admin" +2 +1
ExpandEnvStrings $INSTDIR "%systemdrive%\Программа"
Done:
FunctionEnd

Section
MessageBox MB_ICONINFORMATION "$INSTDIR"
SectionEnd

wolkow70
12-08-2011, 17:50
Здесь логичнее на права юзера, можно так.... »

"Если вы хотите создать однопользовательскую установку, используя ОС Windows Vista или более новую, не рекоммендуется устанавливать StrongDC+ + в папку Program Files, так как это может привести к потере настроек и неработоспособности программы"
Не знаю, как лучше...

sawe
13-08-2011, 00:25
Не знаю, как лучше... »

57 станица... (http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1120)

116 станица... (http://forum.oszone.net/thread-67386-116.html)

sawe
15-08-2011, 12:48
kotkovets - что то полезное для себя нашли или всё это в топку?




© OSzone.net 2001-2012