Показать полную графическую версию : [архив].: NSIS - все вопросы :.
kotkovets
11-08-2011, 16:30
Мне надо что чужая прога отлавливала прогресс установки!! Внешняя!!! »
А цель сего деяния????
Записывайте переменную(значение переменной $PROGBAR во внешний файл). При запуске инсталера парсите файл внешней прогой...
Или отлавливайте класс окна, получите хэндл прогресс бара инсталлера внешней прогой
GetDlgItem $HWND $HWND 1004 - или запишите значение $HWND (хэндл прогресс бара) в файл, хэндл есть и рулите внешней прогой.
Наконец добился нормальное отображение одностранчной установки (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}
---
Я уже вам давал пример по по поводу сохранения значения переменной при переходе страничек.
По такому же принципу можно и запоминать состояние отметки чебокса.
Нужну, что бы сначала считывало с реестра и если реестр пуст, то тогда подключить этот код.
Но в реальности получается, если реестр пуст, тогда не запоминается папка а подставляется сразу "${PROGRAMS}".
kotkovets
12-08-2011, 02:08
sawe, Ну тогда считывайте значение с реестра прямо в переменную $STARTMENUFOLDER, а затем под операторы даем на съедение, что здесь такого сложного?
А цель сего деяния????
Записывайте переменную(значение переменной $PROGBAR во внешний файл). При запуске инсталера парсите файл внешней прогой...
Или отлавливайте класс окна, получите хэндл прогресс бара инсталлера внешней прогой
GetDlgItem $HWND $HWND 1004 - или запишите значение $HWND (хэндл прогресс бара) в файл, хэндл есть и рулите внешней прогой. »
То есть по умолчанию нету, Nsis инсталлятор же будет в тихом режиме ставится!!!
kotkovets, мне это нужно для www.ninite.com хочу также замутить!!!
kotkovets
12-08-2011, 09:16
Nsis инсталлятор же будет в тихом режиме ставится!!! »
Упс!!! приехали, а че сразу нельзя сказать.... в тихом режиме никаких прогрессов нету жежь!
Здесь открываем, к примеру процесс инсталера со свойством SYNCHRON и ждем завершения...
Прогресс бар рассчитывается из вашей проги - сколько прог устанавливать и установилась прога - продвигаем прогресс
Раз вы хотите написать свою прогу, думаю вы меня поняли...
К слову, о необходимости включения-отключения 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:
UAC позволяет все штучки делать, без запуска от имени админа »
А чем запуск от имени админа плох ? Кстати, запускал рег файл под пользователем - эффект тот же, т.е. положительный. :)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
А UAC плагин, всё равно - не удачный...
kotkovets
12-08-2011, 13:06
под пользователем - эффект тот же »
Конечно, если пользователь имеет админские права, а если нет прав :)
а если нет прав »
А если нет , то в инсталляторе ведь для этого : RequestExecutionLevel admin ?
kotkovets
12-08-2011, 14:09
А если нет , то в инсталляторе ведь для этого : RequestExecutionLevel admin ? »
Эта команда предназначена, сколько прав должен иметь, т.е какими правами должен обладать юзер для установки приложения.
Определяет требуемый уровень прав (привелегий) для установки приложения в Windows Vista и в Windows 7 - в справке это четко прописано на русском языке...
В том что, плагин неудачный я согласен.
kotkovets,
Ну уж, если у пользователя нет прав запуска прог от имени админа, то и нечего ему вообще что либо запускать и устанавливать. :) Явно этот пользователь "курируется" злым админом и тот пресечёт любые попытки установок ПО, хоть с плагином хоть без...
А к домашним пользователям это никак не относится. Будем считать, что предложенный простой способ отключения-включения UAC, для таких нормальных пользователей и предназначен... :)
wolkow70
12-08-2011, 16:47
Товарищи, забыл как сделать, что если система Vista или новее, то ставить программу в корень системного диска , а если XP или старее, то в Программную папку?
А 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, так как это может привести к потере настроек и неработоспособности программы"
Не знаю, как лучше...
Не знаю, как лучше... »
57 станица... (http://forum.ru-board.com/topic.cgi?forum=5&topic=0595&start=1120)
116 станица... (http://forum.oszone.net/thread-67386-116.html)
kotkovets - что то полезное для себя нашли или всё это в топку?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC