[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 52
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

BSL, вы можете "нарисовать" свою собственную страницу. Это очень просто. Посмотрите
этот пример
. Как я понял, вам нужно будет создать только одно текстовое поле и одну надпись.
Аватара пользователя
BSL

Re: [архив].: NSIS - все вопросы :.

Сообщение BSL »

hb860, и изучал эту ссылку. Загвоздка в том я смогу создать свою страницу, но как научить ее отображать её или нет в зависимости от выбранной секции.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

yyv,

Можно сделать примерно так (пример на этапе инсталляции):

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 - все вопросы :.

Сообщение jackrv »

Цитата yyv:



надо будет еще тестировать
[архив].: NSIS - все вопросы :.




тестируйте. а в самый лучший вариант изменения всех страниц, делать в функциях во время открытия страниц, по различным условиям - будь это запуск с ключом /G и так далее, я так делаю и без проблем!эти функции можно узнать в
Справочнике по NSIS
(стандартные функции в MUI) или в оригинальной справке. Если не разберетесь - я вам пример приведу.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

jackrv, Цвет выделения текста при открытии странички?

Вообще цвет контролов можно менять так:

SetCtlColors [хэндл контрола] [цвет текста] [цвет фона]



Код:

Код: Выделить всё

SetCtlColors $Text `0x0000FF` `0xFFFFFF`

цвет текста - синий | цвет фона - белый
Аватара пользователя
jackrv

Re: [архив].: NSIS - все вопросы :.

Сообщение jackrv »

Скорее всего ты меня не понял..

Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.

Т.е. нужно заменить #EAEBEC на #566978

Правда цвета на фоне форумного фона не очень видно %)
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата kotkovets:



Две строчки кода и никаких гвоздей! на примере 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 - все вопросы :.

Сообщение jackrv »

Цитата wolkow70:



Почему то в реестре расширения регистрируются с двумя точками

..bmp

..jpg

и т.д
[архив].: NSIS - все вопросы :.






Разобрался, все пока получается....!!!!!
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

jackrv, Трудно сказать вслепую, скрипт приведите...

хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину Изображение
Ответить

Вернуться в «Автоматическая установка приложений»