.: NSIS - все вопросы :. часть 2.

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

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Flix »

Цитата AlekseyPopovv:



Как привязать реестр к выбору языка?
.: NSIS - все вопросы :. часть 2.




А что именно привязать ? Обычно делают типа такого :



Код:

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

;Remember the installer language 
!define MUI_LANGDLL_REGISTRY_ROOT HKLM 
!define MUI_LANGDLL_REGISTRY_KEY "Software\App\Option" 
!define MUI_LANGDLL_REGISTRY_VALUENAME "InstallerLanguage" 
;!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
ReadRegStr $R0 HKLM "Software\App\Option" "InstallerLanguage" 
StrCmp $R0 "1049" RussianLanguage 
StrCmp $R0 "1033" EnglishLanguage
Аватара пользователя
Kopejkin

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Kopejkin »

Flix, подскажите, пожалуйста, правильный синтаксис написания параметров для функции SkinH_AttachExt. Я так понимаю, что тогда не нужно будет прописывать отдельную функцию настройки оттенка, насыщенности и яркости SkinH_AdjustHSV. Желательно, пример в вашем же скрипте.
Аватара пользователя
K.A.V.

Re: .: NSIS - все вопросы :. часть 2.

Сообщение K.A.V. »

Цитата AlekseyPopovv:



нужно что бы при запуске программы вылазило окошко с выбором языка интерфейса. Какой язык пользователь выберет, тот параметр реестра должен прописаться.
.: NSIS - все вопросы :. часть 2.




Тогда вообще просто, если выбран язык такой то - делаем то то (пишем в реестр и т.д.). Наводка в коде :
http://nsis.sourceforge.net/Examples/languages.nsi


или со своим сообщением

http://stackoverflow.com/questions/1...in-oninit-mui2


или делаем свою страничку с выбором языка и последующей логикой
Аватара пользователя
Flix

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Flix »

Цитата AlekseyPopovv:



Мне нужно что бы при запуске программы вылазило окошко с выбором языка интерфейса
.: NSIS - все вопросы :. часть 2.




Пишите сразу, что у вас уже есть в коде, чего нет, чтобы у вас не переспрашивали и не писали лишнюю инфу



Для начала нужно подключить нужные вам языки командами с указанием языков, например для русского и для английского:



Код:

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

!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "English"

Затем, в функции .onInit вам необходимо прописать следующую команду, чтобы пользователю был показан диалог выбора языка:



Код:

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

  !insertmacro MUI_LANGDLL_DISPLAY


Цитата AlekseyPopovv:



Какой язык пользователь выберет
.: NSIS - все вопросы :. часть 2.




ID выбранного языка (обратите внимание, ID, а не имя языка) хранится в переменной $Language



Какой ID соответствует конкретному языку, можно посмотреть в файле языка по пути (пример файла русского языка):



Код:

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

\Program Files\NSIS\contrib\Language files\Russian.nlf

В начале файла увидите примерно такое содержимое:


Цитата:



# Header, don't edit

NLF v6

# Language ID

1049


# Font and size - dash (-) means default

-

-



Можно завести отдельную переменную и вручную назначить имя языка в зависимости от ID, пример:



Код:

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

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык (ID): $Language"
Var /global Lang
StrCmp $Language "1049" 0 +2
 StrCpy $Lang "Russian"
StrCmp $Language "1033" 0 +2
 StrCpy $Lang "English"
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык: $Lang"
quit
FunctionEnd

Полный код:


читать дальше »






Код:

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

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Моя программа"
!define PRODUCT_PUBLISHER "Моя компания, LLC."
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "English"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$TEMP"
Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык (ID): $Language"
Var /global Lang
StrCmp $Language "1049" 0 +2
 StrCpy $Lang "Russian"
StrCmp $Language "1033" 0 +2
 StrCpy $Lang "English"
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык: $Lang"
quit
FunctionEnd
Section "MainSection" SEC01
SectionEnd
Аватара пользователя
Kopejkin

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Kopejkin »

K.A.V., вот что получилось:
читать дальше »


Изображение Изображение



Прога не запустилась. Что ещё необходимо? Ваш код вставил полностью.
Аватара пользователя
Flix

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Flix »

AlekseyPopovv,

Попробуй предельно упрощённый код :



Код:

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

OutFile "Select LANG_ID.exe"
!include MUI2.nsh
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
Function .onInit
 !insertmacro MUI_LANGDLL_DISPLAY
 StrCpy $R9 $language
 MessageBox MB_OK "ID выбранного языка : $R9"
FunctionEnd
Section 
SectionEnd
Аватара пользователя
Kopejkin

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Kopejkin »

Теперь, когда такие чайники, как я, будут "доставать" форум подобными вопросами, можно просто указать ссылку. Изображение

Еще раз спасибо.
Аватара пользователя
4eshireCat

Re: .: NSIS - все вопросы :. часть 2.

Сообщение 4eshireCat »

Цитата AlekseyPopovv:



Прога не запустилась. Что ещё необходимо? Ваш код вставил полностью.
.: NSIS - все вопросы :. часть 2.




Прочитать
Справочник по NSIS
необходимо, вам за вас писать тут ничего не будет, если сами не имеете желания познавать NSIS

Когда будете понимать значение команд и что в них написано (как в моём примере команда закрытия инсталлятора, т.к. это всего-лишь пример)

А что вам ещё необходимо от этого примера? Я дал вам пример кода и предоставил вам информацию, по аналогии которой можете сделать связь других языков с их ID...





Код:

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

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык (ID): $Language"
Var /global Lang
StrCmp $Language "1049" 0 +2
 StrCpy $Lang "Russian"
StrCmp $Language "1033" 0 +2
 StrCpy $Lang "English"
MessageBox MB_OK|MB_ICONINFORMATION "Выбран язык: $Lang"
quit
FunctionEnd

quit - команда закрытия инсталлятора

может, так всегда новичков проверять, читали они справочник перед заходом в эту тему или нет? Изображение



тогда и перестаните писать подобные предложения


Цитата AlekseyPopovv:



Прога не запустилась
.: NSIS - все вопросы :. часть 2.
Аватара пользователя
wolkow70

Re: .: NSIS - все вопросы :. часть 2.

Сообщение wolkow70 »

Столкнулся с такой ситуацией, что нужно запустить exe файл на стадии Function .OnInit, то есть на этой стадии файл уже должен быть в папке $PLUGINSDIR , а добиться этого никак не могу. Кто-нибудь поможет?
Аватара пользователя
Begin2Fly

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Begin2Fly »

Цитата MKN:



Или я что то не так делаю ?
.: NSIS - все вопросы :. часть 2.




У меня точно такой же вопрос вставал уже давно, я его не решил тогда, тупо было лень заморачиваться и парить мозг...



Даже в инсталле моего SFX Creator уже давно сделано так, как ты написал...


Цитата MKN:



рядом с чекбоксом просто поместить цветную Label-надпись
.: NSIS - все вопросы :. часть 2.




Может, можно как-то с WinAPI поиграться, dll и т.д., но...делать это вряд ли опять же кто-то захочет, разве что истинный программер на api набросает код Изображение
Ответить

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