Показать полную графическую версию : [архив].: NSIS - все вопросы :.
вроде так и не сказали как сделать заголовок на странице »
Если не прописывали инклудинк, то пропишите в начале скрипта
!include "WinMessages.nsh"
В функции создания элементов пропишите
SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:Мой новый заголовок"
у меня проблема. когда просто навожу мышкой на элемент рамка ломается »
Это не рамка ломается, это слишком большой размер другого элемента вы указали при создании, толи у вас там Text, толи какой-нибудь чекбокс просто при наведении курсора становится поверх этой рамки
Creator000
04-10-2012, 20:08
K.A.V., все прекрасно, только я наверно не правильно сказал. Мне нужно изменить http://i25.fastpic.ru/big/2012/1004/20/dbdfeeb813fde26f3d6e26aa832a4d20.png
Простите, что задаю такие тупые вопросы, просто ничего не понимаю англоязычной документации с минимум комментариев. Если аналогично заголовку - ткните пальцем. Я пытался, у меня ничего не выходит.
Creator000, сделайте так
Узнайте ID элементов, откройте с помощью ResHacker ресурс инсталлера (диалог 105)
Затем эти ID подставляете в команды...
GetDlgItem $0 $HWNDPARENT 1037
SendMessage $0 ${WM_SETTEXT} 0 "STR:Мой текст строки №1"
GetDlgItem $0 $HWNDPARENT 1038
SendMessage $0 ${WM_SETTEXT} 0 "STR:Мой текст строки №2"
kotkovets
04-10-2012, 22:24
Затем эти ID подставляете в команды... »
излишне в библиотеке уже есть готовый макрос:
те же яйца вид сбоку:
http://forum.oszone.net/post-1446111-524.html
страничка для просмотра чтения:
http://forum.oszone.net/thread-67386-53.html
Creator000
04-10-2012, 22:39
K.A.V., спасибо Вам.
Добрый день!
Как узнать есть ли в файле искомая строка.
делаю так
${LineFind} "prefs.txt" "" "1:-1" "un.Findt"
${If} $R1 == "true"
MessageBox MB_OK "Cool"
${Else}
MessageBox MB_OK "Not Cool"
${EndIf}
Function un.Find
${WordFind} "$R9" "text" $R0
IntCmp $R0 0 nofind
StrCpy $R1 "true"
Push "StopLineFind"
nofind:
Push $0
FunctionEnd
Все работает. Но если строки в файле нет 2 раза вылетает окно "Not Cool";
Если строка есть то вылетает "Not Cool" и "Cool"
Почему 2 раза, как это исправить
Пардон нашел ошибку
kotkovets
05-10-2012, 17:14
dix75, ну можно так, "обнулять" переменную $R0 в цикле перед каждым использованием:
StrCpy $R0 -1
${LineFind} "prefs.txt" "/NUL" "1:-1" "un.Findt"
${If} $R0 == "true"
MessageBox MB_OK "cool"
${Else}
MessageBox MB_OK "not cool"
${EndIf}
Function un.Findt
${WordFind} "$R9" "text" "#" $R0
${If} $R0 > 0
StrCpy $R0 "true"
Push "StopLineFind"
${Else}
StrCpy $R0 -1
Push $0
${EndIf}
FunctionEnd
Creator000
06-10-2012, 00:41
А кто нибудь может дать пример скрипта в котором использовали nsdialog?
пример скрипта в котором использовали nsdialog »
Настройка темы\ Версия для печати\ Поиск "nsdialog" = тьма примеров
Google\ Поиск "nsdialog " = море страниц с примерами
Наконец, справка (уже в сотый раз). Начиная с http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html
"Примеряй" на здоровье. :)
Creator000
06-10-2012, 21:29
MKN, если бы :(
Limonica
08-10-2012, 11:49
Срочно нужна помощь, нужен скрипт проверяющий архитектуру системы и в зависимости от неё выполнял действия, пример:
проверка архитектуры:
x86=x86 inst
x64=x64 inst
x86 inst:
...
...
....
x64 inst:
....
....
...
...
и аналогичный пример нужен на проверку ОС (XP\7).... надеюсь на оперативную помощь
Begin2Fly
08-10-2012, 12:00
!include "x64.nsh"
${If} ${RunningX64}
MessageBox MB_OK "ОС - 64-битная"
${Else}
MessageBox MB_OK "ОС - 32-битная"
${EndIf}
По поводу определения ОС можно прочитать в справочнике NSIS из шапки в разделе 'Примеры кодов > Определение ОС'
Limonica
08-10-2012, 16:26
Спасибо большое, сделала чуть иначе но принцип тот же, спасибо. Ещё вопрос есть ли плагин NSIS для создания нового пользователя?
А так же можете пояснить для чего этот плагин http://nsis.sourceforge.net/UAC_plug-in
Creator000
08-10-2012, 17:55
Где можно почитать про авторвыбор разрядности системы?
Интересно, с помощью nsis можно сделать такой установщик? Установщик-командная строка.
http://i26.fastpic.ru/big/2012/1008/77/6f050cc4ccf4e90fb9e01782e1e8f677.png
есть ли плагин NSIS для создания нового пользователя? »
UserMgr plug-in (http://nsis.sourceforge.net/UserMgr_plug-in) - Полное управление учетными записями (создание, удаление, изменение), создание/удалене групп, добавление/удаление пользователей из групп и т.д.
Добрый вечер господа! Вот пример:
Есть бутон и соответственно функция нажатия такая:
Function ClickButton
pop $btn
InitPluginsDir
ExecWait "$PLUGINSDIR\uninstall.exe"
MessageBox MB_USERICON|MB_OK "Денсталляция завершена!"
FunctionEnd
Запускается деинсталлятор предыдущей версии проги, но если нажать в нем кнопку удалить (в самом запущенном деинсталляторе) то потому идет меседжбокс Денсталляция завершена, но если его закрыть (тоесть он не отрабатывает) то вылазить тот же меседжбокс но деинсталяция не отрабатывает...как то не красиво получается :)
Как сделать что бы если пользователь просто закрыл запущенный автономный деинсталлятор вылазил например меседж Денсталляция прервана или не состоялась!
Спасибо!
kotkovets
08-10-2012, 22:02
Как сделать что бы если пользователь просто закрыл запущенный автономный деинсталлятор вылазил например меседж Денсталляция прервана или не состоялась! »
Здесь зависит, что возвращает деинсталлятор в случае удачного или неудачного завершения...
На примере запуск блокнота...
ExecWait notepad.exe $0
MessageBox MB_OK "$0" IDOK
так вот, если закрыть блокнот, обычным способом, код возврата: $0 = 0
через диспетчер задач: $0 = 1
бывает приложения ничего не возвращают...
если свое приложение, можно заставить приложение нужную циферку возвращать в разных условиях...
читайте в справке: » Работа с процессами с помощью NSIS
Painkiller
08-10-2012, 22:52
Народ, подскажите , направьте . Была раньше статья о реализации дополнительных ключей в NSIS . Сейчас страница недоступна =((
kotkovets, все получилось если жму на крестик пишет 1039 а если кнопку выход 0. Все гуд спасибо!
ExecWait "$PLUGINSDIR\uninstall.exe" $0
MessageBox MB_OK "$0" IDOK
kotkovets нарисовалась новая проблемка, код возврата у кнопки готово в конце процесса деинсталяции, и кнопки выход в начале деинсталера одинаковый 0, и потому когда делаю так
Function ClickButton
pop $btn
InitPluginsDir
${ExecWait} "$PLUGINSDIR\uninstall.exe" $6
${If} $6 == 0
MessageBox MB_ICONINFORMATION|MB_OK "Гусь отменил установку"
${ElseIf} $6 == 1039
MessageBox MB_ICONINFORMATION|MB_OK "Гусь отменил установку"
${EndIf}
FunctionEnd
Получается в конце деинсталляции выскакивает ненужное сообщение как быть? :)
kotkovets
08-10-2012, 23:19
Была раньше статья о реализации дополнительных ключей в NSIS »
маленький пример, с ключом /eng:
!include "mui2.nsh"
!include "filefunc.nsh"
OutFile "example.exe"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
!insertmacro MUI_LANGUAGE English
Function .onInit
ClearErrors
${GetOptions} $CMDLINE /eng $R9
IfErrors +2 ;если с ключом запускать, то флага ошибки нет...
StrCpy $Language 1033
FunctionEnd
Section
${If} $Language == 1033
MessageBox MB_OK "english version" IDOK
${ElseIf} $Language == 1049
MessageBox MB_OK "русская версия" IDOK
${EndIf}
SectionEnd
Получается в конце деинсталляции выскакивает ненужное сообщение как быть? »
иногда никак... я же говорил!
проверяйте, что возвращает $6 - просто сообщением (в различных ситуациях), без логики - а то на вашем примере одинаковые по читаемости сообщения...
Если свой деинсталлятор, то можно заставить деинсталлятор записывать...
например в реестр... некое значение - при отмене или удачном завершении.
ну... а затем прочитать значение из реестра...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC