Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Инстолятор не мой поэтому внести в него изменения не могу, просто хочу увидеть что делает инсталятор во время установки »
так...это что получается, имеем инсталлятор на NSIS, и после его запуска хотим перехватить этот текст и записать в файл?
Так что сложного? :)
В строчке
FindWindow $0 "#32770" "" $HWNDPARENT
вставляем что-то типа этого
FindWindow $0 "#32770" "Это заголовок окна инсталлятора" ""
p.s.
Не тестил, но работать должно :)
Цитата XCV:Инстолятор не мой поэтому внести в него изменения не могу, просто хочу увидеть что делает инсталятор во время установки » »
Это не совсем в тему, но тут не NSIS нужен, a Sysinternals ProcMon. Вот им всё можно увидеть
Это не совсем в тему, но тут не NSIS нужен, a Sysinternals ProcMon. »
ProcMon если я правильно понимаю может отследить изменения в реестре и файловой системе, а мне надо лог который пишет nsis при установке, в том числе какие файлы запускались и с какими ключами
вот к примеру скрин (первый попавшийся) как увидеть окончание последней строчки?
XCV, в посте 219 я объяснил как это сделать в собственном инсталляторе
Как перехватить информацию, когда инсталлятор не ваш, описал я в посте 221, просто это будет отдельный ваш EXEшник, который будет копировать информацию из диалога...что не понятно?
Или вам написать готовый EXE файл может?
в том числе какие файлы запускались и с какими ключами »
Так в процмоне же есть коммандная строка процесса. Чем плох вариант ?
описал я в посте 221 »
сори пропустил
Всем добрый день!
Подскажите пожалуйста.
Есть две custom pages
При запуске первой выводиться 3 Radio Buttons
Выбиретие вариант
1. Мастер
2. По умолчанию
3 Без изменений
При выборе одного из вариантов активируется кнопка "далее"
Мне нужно сделать, чтобы в случае выбора 1-го варианта запускалась вторая custom page, ну и при выборе 2 или 3 варианта, вторая страница пропускалась. Никак не получается сделать.
Еще вопрос касательно поста выше
4.9.14.5 FindWindow
user_var(hwnd output) windowclass [windowtitle] [windowparent] [childafter]
Searches for a window. Behaves like the win32 FindWindowEx(). Searches by windowclass (and/or windowtitle if specified). If windowparent or childafter are specified, the search will be restricted as such. If windowclass or windowtitle is specified as "", they will not be used for the search. If the window is not found, the user variable returned is 0. To accomplish old-style FindWindow behavior, use FindWindow with SendMessage.
FindWindow $0 "#32770" "" $HWNDPARENT
FindWindow $0 "my window class" "my window title"
GetDlgItem
user_var(output) dialog item_id
Retrieves the handle of a control identified by item_id in the specified dialog box dialog. If you want to get the handle of a control on the inner dialog, first use FindWindow user_var(output) "#32770" "" $HWNDPARENT to get the handle of the inner dialog.
GetDlgItem $0 $HWNDPARENT 1 # next/install button
Я так понял можно как то воспользоваться этой инструкцией. Только тут не совсем все понятно!
FindWindow $0 "#32770" "название окна"
GetDlgItem $0 $0 "тут цифра"
IntCmp $0 1 Goto 0 0
Abort
Goto:
Вопрос. Как узнать название моего окна или как присвоить моему окну (конкретно первому custom page) название? И как узнать под какой какой цыфрой будет допустим первая Radio Button?
KSE, сейчас занят, попозже напишу скрипт и отвечу на все ваши вопросы ;)
KSE, в прикрелпённом архиве скрипт для вас ;)
или как присвоить моему окну (конкретно первому custom page) название? »
В файле конфигурации диалога (в INI файле), пропишите в секцию Settings имя параметра Title и присвойте данному параметру имя желаемого окна, например:
[Settings]
Title=Это мой заголовок окна
И как узнать под какой какой цыфрой будет допустим первая Radio Button?
В файле конфигурации диалога, Field X, где X - ваша цифра
Мне не понятно, для чего вам использование:
FindWindow $0 "#32770" "название окна"
GetDlgItem $0 $0 "тут цифра"
В InstallOptions это врядли вам пригодится
Люди, может быть создать что типа программы для создания скриптов с настройками чтоб написал и все. Не поймите меня не правильно просто я не разбираюсь в этом скриптовом языке. А сама программка классная. Сам не чем помочь не могу, т.к. не очень хорошо понимаю в программировании,только начинаю его изучать.
Habetdin
20-12-2009, 20:23
ALaN_1, HM NIS EDIT - лучший редактор сценариев для NSIS с открытым исходным кодом (http://hmne.sourceforge.net/) »
Запускаете, жмете Ctrl+W - запускается мастер создания сценария, заполняете поля.. Profit! :)
ALaN_1,
Цитата hb860:
HM NIS EDIT - лучший редактор сценариев для NSIS с открытым исходным кодом (http://hmne.sourceforge.net/) » (http://forum.oszone.net/post-452038.html#post452038)
Запускаете, жмете Ctrl+W - запускается мастер создания сценария, заполняете поля.. Profit!
Хорошо так говорить когда понимаешь скриптовый язык программы. А я хочу создать "гибкий" инсталятор. И вообще освоить его. Но не учебников и ничего подобного по нему нет, а зря-ведь программа заслуживает этого.
А я хочу создать "гибкий" инсталятор »
Гибкий можно создать только вручную редактируя скрипт, ИМХО
Но не учебников и ничего подобного по нему нет »
Знаете, когда я начал изучать NSIS (это было где-то года 3 назад), я начинал именно с HM NIS EDIT, и его функция мастера сценариев мне очень помогла, к тому же, я не знал английского языка (да и сейчас не знаю :lol:), и к тому же, у меня тогда не было интернета, открывал пару раз файл справки, было очень страшно :laugh: там же всё по английскому написано...НО там есть примеры всех команд, и разобраться не так уж и сложно окозалось...главное необходимо желание, и...усиленные тесты! ;)
К тому же, в данное время, много кто уже знаком с NSIS довольно хорошо (например даже я, весь мой софт написан чисто на NSIS :) ), и данная тема созданна именно для решения проблем, пишем сюда все ваши вопросы, и не сомневайтесь, мы постараемся вам помочь, насколько хватит знанинй ;)
Чем больше вы будете задавать вопросов, стараться разобраться, тем быстрей вы освоите данный язык :)
Вопрос по созданию ярлыка.
Var freq
StrCpy $freq "60"
...
CreateShortCut "$DESKTOP\blablabla.lnk" "$INSTDIR\blablabla.exe" \
"-freq $freq" "$INSTDIR\blablabla\blablabla.ico" 0 SW_SHOWNORMAL \
ALT|CONTROL|SHIFT|F5 "запустить blablabla"
Пишет, invalid command "-freq $freq"
Как втулить в параметры запуска значение из переменной?
Из документации мало что можно взять
CreateDirectory "$SMPROGRAMS\My Company"
CreateShortCut "$SMPROGRAMS\My Company\My Program.lnk" "$INSTDIR\My Program.exe" \
"some command line parameters" "$INSTDIR\My Program.exe" 2 SW_SHOWNORMAL \
ALT|CONTROL|SHIFT|F5 "a description"
Все, я разобрался, синтаксис был у меня правильный. Оно матюкалось на комментарий. Его там ставить нельзя было.
Неправильно:
CreateShortCut "$DESKTOP\blablabla.lnk" "$INSTDIR\blablabla.exe" \ ;Мой коммент
"-freq $freq" "$INSTDIR\blablabla\blablabla.ico" 0 SW_SHOWNORMAL \
ALT|CONTROL|SHIFT|F5 "запустить blablabla"
Правильно:
;Мой коммент
CreateShortCut "$DESKTOP\blablabla.lnk" "$INSTDIR\blablabla.exe" \
"-freq $freq" "$INSTDIR\blablabla\blablabla.ico" 0 SW_SHOWNORMAL \
ALT|CONTROL|SHIFT|F5 "запустить blablabla"
Все получилось :)
Подкскажите пожалуйста! Как можно максимально упросить данный код?
Пример:
${If} $mon == 1
${AndIf} $2 == 1
${AndIf} $R1 == 1
StrCpy $freq "60"
${EndIf}
${If} $mon == 1
${AndIf} $2 == 1
${AndIf} $R2 == 1
StrCpy $freq "75"
${EndIf}
${If} $mon == 1
${AndIf} $1 == 1
${AndIf} $R1 == 1
StrCpy $freq "100"
${EndIf}
...
И так 90 вариантов! :)
Буду очень признателен!
ЗЫ:
Видел, что так можно делать, но у меня почему то не получается.
${If} $mon == 1
${If} $2 == 1
${If} $R1 == 1
StrCpy $freq "60"
${EndIf}
${If} $R2 == 1
StrCpy $freq "75"
${EndIf}
${EndIf}
{If} $3 == 1
${If} $R1 == 1
StrCpy $freq "65"
${EndIf}
${If} $R2 == 1
StrCpy $freq "85"
${EndIf}
${EndIf}
${ElseIf} $mon == 2
${If} $2 == 1
${If} $R1 == 1
StrCpy $freq "55"
${EndIf}
${If} $R2 == 1
StrCpy $freq "45"
${EndIf}
${EndIf}
${If} $3 == 1
${If} $R1 == 1
StrCpy $freq "35"
${EndIf}
${If} $R2 == 1
StrCpy $freq "25"
${EndIf}
${EndIf}
${EndIf}
Подкскажите пожалуйста! Как можно максимально упросить данный код?
Пример:
${If} $mon == 1
${AndIf} $2 == 1
${AndIf} $R1 == 1
StrCpy $freq "60"
${EndIf} »
StrCmp $mon "1" 0 +4
StrCmp $2 "1" 0 +3
StrCmp $R1 "1" 0 +2
StrCpy $freq "60"
p.s.
KSE, почему не отписываемся о проделанной мною работы, по вашей проблемы с поста #220, или я зря тратил своё время?
Отписываю.
Я хотел сделать так, чтобы до выбора одного из вариантов кнопка "далее" была неактивна.
После выбора варианта - активировать кнопку "далее". При нажатии кнопки далее осуществлялся переход на ту или иную страницу в зависимости от выбора.
Проблему решил след. образом
...
; Мои две custom страницы
Page custom configurring
Page custom configmaster
...
переменные и т.д.
...
Function configurring
StrCpy $Reservefiles "0" ; По умолчанию файлы не резервируются
!insertmacro MUI_HEADER_TEXT "Мастер кофигурирования параметров" ""
nsDialogs::Create 1018
Pop $Dialog1
${If} $Dialog1 == error
Abort
${EndIf}
; Деактивация кнопки далее, и тот и тот вариант работает.
;GetDlgItem $0 $HWNDPARENT 1
;EnableWindow $0 0
EnableWindow $mui.Button.Next 0
${NSD_CreateRadioButton} 0 0 100% 10u "&Запустить мастер кофигурирования параметров (рекомендуется)"
Pop $Confmaster
${NSD_OnClick} $Confmaster confway
${NSD_CreateLabel} 17 10u 100% 20u "&С помощью ....."
Pop $Description
${NSD_CreateRadioButton} 0 36u 100% 10u "&Сконфигурировать по умолчанию"
Pop $Confdefault
${NSD_OnClick} $Confdefault confway
${NSD_CreateLabel} 17 46u 100% 10u "&Все настройки будут установлены по умолчанию."
Pop $Description
${NSD_CreateRadioButton} 0 65u 100% 10u "&Не изменять конфигурацию"
Pop $Confstay
${NSD_OnClick} $Confstay confway
${NSD_CreateLabel} 17 75u 100% 10u "&Все параметры и файлы конфигурации будут оставлены без изменений."
Pop $Description
${NSD_CreateCheckBox} 0 98u 100% 10u "&Сделать резервную копию игры."
Pop $Reserve
${NSD_OnClick} $Reserve Reserve
${NSD_CreateLabel} 17 108u 100% 100% "&Предыдущая версия игры будет скопирована в папку backup. В случае деинсталяции данного пачта все файлы и ключи будут востановлены."
Pop $Description
nsDialogs::Show
FunctionEnd
Function confway
Pop $Confmaster
${NSD_GetState} $Confmaster $0
Pop $Confdefault
${NSD_GetState} $Confdefault $1
Pop $Confstay
${NSD_GetState} $Confstay $2
${If} $0 == 1
EnableWindow $mui.Button.Next 1
StrCpy $master "1"
${EndIf}
${If} $1 == 1
EnableWindow $mui.Button.Next 1
StrCpy $master "2"
${EndIf}
${If} $2 == 1
EnableWindow $mui.Button.Next 1
StrCpy $master "3"
${EndIf}
FunctionEnd
Function Reserve
Pop $Reserve
${NSD_GetState} $Reserve $3
${If} $3 == 1
StrCpy $Reservefiles "1"
EnableWindow $mui.Button.Next 0
${Else}
StrCpy $Reservefiles "0"
EnableWindow $mui.Button.Next 0
${EndIf}
FunctionEnd
Function configmaster
IntCmp $master 1 Goto 0 0 ; Если переменная $master равно 1, то перейти к .. и т.д.
Abort
Goto:
!insertmacro MUI_HEADER_TEXT "&Мастер кофигурирования параметров" ""
nsDialogs::Create 1018
Pop $Dialog2
${If} $Dialog2 == error
Abort
${EndIf}
EnableWindow $mui.Button.Next 0
; Выбор монитора (заголовок)
${NSD_CreateLabel} 0 0 220u 10u "....."
.....
Конечно я выбрал немного инной способ
я использовал logiclib и nsDialogs
K.A.V.
Насчет моего предыдущего поста я не сильно понял, как
StrCmp $mon "1" 0 +4
StrCmp $2 "1" 0 +3
StrCmp $R1 "1" 0 +2
StrCpy $freq "60"
такой код может быть проще? Как я уже говорил, таких вот столбиков
${If} $mon == 1
${AndIf} $2 == 1
${AndIf} $R1 == 1
StrCpy $freq "60"
${EndIf}
У меня будет очень много! Где то 90!
Какая может быть замена такому варианту. Так как он выглядит убедительней, но работать не хочет.
${If} $mon == 1
${If} $2 == 1
${If} $R1 == 1
StrCpy $freq "60"
${EndIf}
${If} $R2 == 1
StrCpy $freq "75"
${EndIf}
${EndIf}
{If} $3 == 1
${If} $R1 == 1
StrCpy $freq "65"
${EndIf}
${If} $R2 == 1
StrCpy $freq "85"
${EndIf}
${EndIf}
${ElseIf} $mon == 2
${If} $2 == 1
${If} $R1 == 1
StrCpy $freq "55"
${EndIf}
${If} $R2 == 1
StrCpy $freq "45"
${EndIf}
${EndIf}
${If} $3 == 1
${If} $R1 == 1
StrCpy $freq "35"
${EndIf}
${If} $R2 == 1
StrCpy $freq "25"
${EndIf}
${EndIf}
${EndIf}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC