[архив].: NSIS - все вопросы :.
-
hb860
Re: [архив].: NSIS - все вопросы :.
BSL, вы можете "нарисовать" свою собственную страницу. Это очень просто. Посмотрите
этот пример
. Как я понял, вам нужно будет создать только одно текстовое поле и одну надпись.-
BSL
Re: [архив].: NSIS - все вопросы :.
hb860, и изучал эту ссылку. Загвоздка в том я смогу создать свою страницу, но как научить ее отображать её или нет в зависимости от выбранной секции.
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
yyv,
Можно сделать примерно так (пример на этапе инсталляции):
1. Команды не в коем случае не перемещать - здесь очень важна последовательность действий!
2. Константы иницилизируем, только в функции OnInit, потом будет поздно и значения констант определяем только после отработки макроса PRODUCTNAME и следовательно, объявляем значения констант после макроса - банальная последовательность действий
3. Это извращение, проще хранить значения в переменных. причем в данном случае в объявленных переменных, может быть покажу, когда именно, в какой момент нужно делать - здесь вся загвоздка.
Код:
Можно сделать примерно так (пример на этапе инсталляции):
1. Команды не в коем случае не перемещать - здесь очень важна последовательность действий!
2. Константы иницилизируем, только в функции OnInit, потом будет поздно и значения констант определяем только после отработки макроса PRODUCTNAME и следовательно, объявляем значения констант после макроса - банальная последовательность действий
3. Это извращение, проще хранить значения в переменных. причем в данном случае в объявленных переменных, может быть покажу, когда именно, в какой момент нужно делать - здесь вся загвоздка.
Код:
Код: Выделить всё
!include "MUI2.nsh"
!include "Logiclib.nsh"
OutFile file.exe
!macro PRODUCTNAME
ReadINIStr $R1 "$EXEDIR\settings.ini" "PRODUCT_NAME" "Text"
${IfNot} $R1 == ""
StrCpy $R1 "$R1"
${Else}
ClearErrors
StrCpy $R1 "это NSIS ${NSIS_VERSION}" ;если $R1 = "пустому значению", то назначаем по умолчанию значение
${EndIf}
!macroend
!define MUI_WELCOMEPAGE_TITLE "$R1"
!define PRODUCT_NAME "$R1"
Caption "$R1"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
ShowInstDetails show
Function .OnInit
!insertmacro PRODUCTNAME
FunctionEnd
Section ""
MessageBox MB_ICONINFORMATION|MB_OK ${PRODUCT_NAME}$\n$\r$R1
SectionEnd-
kotkovets
Re: [архив].: NSIS - все вопросы :.
спасибо это вроде работает.
надо будет еще тестировать
Цитата kotkovets:
Это извращение, проще хранить значения в переменных. причем в данном случае в объявленных переменных, может быть покажу, когда именно, в какой момент нужно делать - здесь вся загвоздка.
я понимаю что это извращение , но первоначальный код писал не я и там во все коде очень много завязано на этих константах.
там перед фунцией
идет куча проверок
типа
Код:
т.е. в зависимости от того есть или нет константа показывать или нет страницу.
из за этого получается много инсталеров.
вот решили попробовать сделать один а странницы показывать или нет с ини файлика вытягивать данные
надо будет еще тестировать
Цитата kotkovets:
Это извращение, проще хранить значения в переменных. причем в данном случае в объявленных переменных, может быть покажу, когда именно, в какой момент нужно делать - здесь вся загвоздка.
[архив].: NSIS - все вопросы :.
я понимаю что это извращение , но первоначальный код писал не я и там во все коде очень много завязано на этих константах.
там перед фунцией
идет куча проверок
типа
Код:
Код: Выделить всё
!ifdef AFTERDOWNLOAD Page custom customPageAfterdownload !endifт.е. в зависимости от того есть или нет константа показывать или нет страницу.
из за этого получается много инсталеров.
вот решили попробовать сделать один а странницы показывать или нет с ини файлика вытягивать данные
-
jackrv
Re: [архив].: NSIS - все вопросы :.
Цитата yyv:
надо будет еще тестировать
тестируйте. а в самый лучший вариант изменения всех страниц, делать в функциях во время открытия страниц, по различным условиям - будь это запуск с ключом /G и так далее, я так делаю и без проблем!эти функции можно узнать в
надо будет еще тестировать
[архив].: NSIS - все вопросы :.
тестируйте. а в самый лучший вариант изменения всех страниц, делать в функциях во время открытия страниц, по различным условиям - будь это запуск с ключом /G и так далее, я так делаю и без проблем!эти функции можно узнать в
Справочнике по NSIS
(стандартные функции в MUI) или в оригинальной справке. Если не разберетесь - я вам пример приведу.-
kotkovets
Re: [архив].: NSIS - все вопросы :.
jackrv, Цвет выделения текста при открытии странички?
Вообще цвет контролов можно менять так:
SetCtlColors [хэндл контрола] [цвет текста] [цвет фона]
Код:
цвет текста - синий | цвет фона - белый
Вообще цвет контролов можно менять так:
SetCtlColors [хэндл контрола] [цвет текста] [цвет фона]
Код:
Код: Выделить всё
SetCtlColors $Text `0x0000FF` `0xFFFFFF`цвет текста - синий | цвет фона - белый
-
jackrv
Re: [архив].: NSIS - все вопросы :.
Скорее всего ты меня не понял..
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.
Т.е. нужно заменить #EAEBEC на #566978
Правда цвета на фоне форумного фона не очень видно %)
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.
Т.е. нужно заменить #EAEBEC на #566978
Правда цвета на фоне форумного фона не очень видно %)
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
Цитата kotkovets:
Две строчки кода и никаких гвоздей! на примере Reg2Nsis
Это придется на каждое расширение делать. Мне именно макрос нужно поправить.
Сейчас попробовал применить другой макрос, сделал так:
!macro RegisterExtension extenstion
StrCpy $ClassName "FastStone.${extenstion}"
WriteRegStr HKCR ".${extenstion}" "" "$ClassName"
WriteRegStr HKCR "$ClassName\shell\open" "" "Открыть в FastStone Image Viewer"
WriteRegStr HKCR "$ClassName\shell\open\command" "" "$OpenCommand"
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$ClassName"
${Switch} ${extenstion}
${Case} "BMP"
StrCpy $IconIndex 0
WriteRegStr HKCR "$ClassName" "" "FastStone BMP File"
${Break}
${Case} "PNG"
StrCpy $IconIndex 7
WriteRegStr HKCR "$ClassName" "" "FastStone PNG File"
${Break}
${Case} "JPG"
StrCpy $IconIndex 4
WriteRegStr HKCR "$ClassName" "" "FastStone JPG File"
${Break}
${EndSwitch}
WriteRegStr HKCR "$ClassName\DefaultIcon" "" "$IconFile,$IconIndex"
EndMacro:
!macroend
Section "!${PRODUCT_NAME}" sec01
бла-бла
StrCpy $OpenCommand "$\"$OUTDIR\FSViewer.exe$\" $\"%1$\""
StrCpy $IconFile "$INSTDIR\FSIcons.db"
SectionGroup "Ассоциация файлов" Sec06
;
Section "BMP" BMP
SectionIn 1 2
!insertmacro RegisterExtension ".bmp"
SectionEnd
Section "JPG" JPG
SectionIn 1 2
!insertmacro RegisterExtension ".jpg"
SectionEnd
Почему то в реестре расширения регистрируются с двумя точками
..bmp
..jpg
и т.д
Две строчки кода и никаких гвоздей! на примере Reg2Nsis
[архив].: NSIS - все вопросы :.
Это придется на каждое расширение делать. Мне именно макрос нужно поправить.
Сейчас попробовал применить другой макрос, сделал так:
!macro RegisterExtension extenstion
StrCpy $ClassName "FastStone.${extenstion}"
WriteRegStr HKCR ".${extenstion}" "" "$ClassName"
WriteRegStr HKCR "$ClassName\shell\open" "" "Открыть в FastStone Image Viewer"
WriteRegStr HKCR "$ClassName\shell\open\command" "" "$OpenCommand"
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$ClassName"
${Switch} ${extenstion}
${Case} "BMP"
StrCpy $IconIndex 0
WriteRegStr HKCR "$ClassName" "" "FastStone BMP File"
${Break}
${Case} "PNG"
StrCpy $IconIndex 7
WriteRegStr HKCR "$ClassName" "" "FastStone PNG File"
${Break}
${Case} "JPG"
StrCpy $IconIndex 4
WriteRegStr HKCR "$ClassName" "" "FastStone JPG File"
${Break}
${EndSwitch}
WriteRegStr HKCR "$ClassName\DefaultIcon" "" "$IconFile,$IconIndex"
EndMacro:
!macroend
Section "!${PRODUCT_NAME}" sec01
бла-бла
StrCpy $OpenCommand "$\"$OUTDIR\FSViewer.exe$\" $\"%1$\""
StrCpy $IconFile "$INSTDIR\FSIcons.db"
SectionGroup "Ассоциация файлов" Sec06
;
Section "BMP" BMP
SectionIn 1 2
!insertmacro RegisterExtension ".bmp"
SectionEnd
Section "JPG" JPG
SectionIn 1 2
!insertmacro RegisterExtension ".jpg"
SectionEnd
Почему то в реестре расширения регистрируются с двумя точками
..bmp
..jpg
и т.д
-
jackrv
Re: [архив].: NSIS - все вопросы :.
Цитата wolkow70:
Почему то в реестре расширения регистрируются с двумя точками
..bmp
..jpg
и т.д
Разобрался, все пока получается....!!!!!
Почему то в реестре расширения регистрируются с двумя точками
..bmp
..jpg
и т.д
[архив].: NSIS - все вопросы :.
Разобрался, все пока получается....!!!!!
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
jackrv, Трудно сказать вслепую, скрипт приведите...
хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину
хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину
