Я использую nsis для создания нескольких инсталляторов. Мои установщики содержат EULA, настраиваемые формы (то есть, что нужно установить). Я хотел бы иметь один скрипт nsis и иметь возможность контролировать текст различных элементов через языковые файлы. Элементы могут быть: текст EULA, далее на кнопках (т. Е. «Следующий» на английском языке и «Proximo» на испанском языке) и любой другой текст, отображаемый во время установки. Каков правильный способ реализации этого многоязычного установщика?Управление всеми языками элементов установки в NSIS
1
A
ответ
0
У NSIS есть отличная поддержка для этого.
Существует пример с этой функцией MultiLanguage, которая показывает, как загружать отдельные языки в программу установки и использовать локализованные строки.
Вы можете найти его в NSIS \ Examples \ Modern UI \ MultiLanguage.nsi
(я не уверен, что могу вставить весь скрипт здесь, что может быть против SO правил)
1
Основной пример того, как использовать несколько языков:
Name "Test"
RequestExecutionLevel user
Outfile "Test.exe"
#Generate some license files on the fly
!tempfile LicFile1
!appendfile "${LicFile1}" "Hello from license 1."
!tempfile LicFile2
!appendfile "${LicFile2}" "Hello from license 2!"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Danish.nlf"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Swedish.nlf"
LicenseLangString licenseData ${LANG_DANISH} "${LicFile1}"
LicenseLangString licenseData ${LANG_SWEDISH} "${LicFile2}"
LicenseData $(licenseData)
LangString ^CancelBtn ${LANG_DANISH} "!lecnaC" ; Override built-in string from .nlf just for fun
LangString myCustomString ${LANG_DANISH} "Foo"
LangString myCustomString ${LANG_SWEDISH} "Bar"
Page License
Page InstFiles
!include LogicLib.nsh
Function .onInit
Push ""
Push ${LANG_DANISH}
Push "Danish"
Push ${LANG_SWEDISH}
Push "Bork bork"
Push A ; LangDLL: A means auto count languages
LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
Pop $LANGUAGE
${IfThen} $LANGUAGE == "cancel" ${|} Abort ${|}
FunctionEnd
Section "Dummy"
MessageBox MB_OK "$(myCustomString) and baz"
SectionEnd
!delfile "${LicFile1}"
!delfile "${LicFile2}"
Другой пример использования MUI и «внешние» файлы для пользовательских строк:
Name "Test"
RequestExecutionLevel user
Outfile "Test.exe"
#Generate some language and license files for this example
!tempfile LicFile1
!appendfile "${LicFile1}" "Hello from license 1."
!tempfile LicFile2
!appendfile "${LicFile2}" "Hello from license 2!"
!tempfile CustomDanNsh
!appendfile "${CustomDanNsh}" '!insertmacro LANGFILE_EXT Danish$\n'
!appendfile "${CustomDanNsh}" '${LangFileString} myCustomString "red"$\n'
!tempfile CustomSweNsh
!appendfile "${CustomSweNsh}" '!insertmacro LANGFILE_EXT Swedish$\n'
!appendfile "${CustomSweNsh}" '${LangFileString} myCustomString "blue"$\n'
!include "MUI2.nsh"
!define MUI_LANGDLL_ALLLANGUAGES
!insertmacro MUI_PAGE_LICENSE "$(licenseData)"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro LANGFILE_INCLUDE "${CustomDanNsh}"
LicenseLangString licenseData 0 "${LicFile1}"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro LANGFILE_INCLUDE "${CustomSweNsh}"
LicenseLangString licenseData 0 "${LicFile2}"
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Section "Dummy"
MessageBox MB_OK "White or yellow on $(myCustomString)"
SectionEnd
!delfile "${CustomDanNsh}"
!delfile "${CustomSweNsh}"
!delfile "${LicFile1}"
!delfile "${LicFile2}"
Смежные вопросы
- 1. Nsis - меняющий каталог установки
- 2. Сохранение журнала установки NSIS
- 3. NSIS ограничить установки папки
- 4. Управление языками DNN не работает
- 5. Управление несколькими языками .NET в веб-приложении
- 6. Экспорт проекта установки Visual Studio в NSIS (NSIS Importer)
- 7. NSIS: путь установки по умолчанию
- 8. Настройка страницы завершения установки NSIS
- 9. Принудительное управление всеми переменными-членами в классе
- 10. Управление SilverStripe ChildrenOf с несколькими языками
- 11. Вложение SqlLocalDb в сценарий установки NSIS
- 12. Измените текст страницы папки установки в NSIS
- 13. Как сжать мой файл установки в nsis?
- 14. Измените папку установки по умолчанию в NSIS
- 15. Как ускорить процесс установки в nsis?
- 16. Как установить postgres с NSIS со всеми параметрами?
- 17. русские буквы и как сделать страницу совместимой со всеми языками
- 18. Управление всеми файлами crontab в Ansible
- 19. Привилегии для установки исполняемых файлов с nsis
- 20. NSIS Как изменить MUI_PAGE_INSTFILES во время установки?
- 21. Простой рецепт NSIS для базовой установки
- 22. Установщик NSIS, помнящий предыдущий каталог установки
- 23. NSIS: Как очистить файлы при прерывании установки?
- 24. C# LPT Управление всеми контактами. Not 8
- 25. Запуск тестовой установки перед всеми тестами
- 26. Управление памятью элементов QTableWidget
- 27. Как скрыть страницы при продолжении установки в скрипте NSIS
- 28. Как я могу создать массив констант в скрипте установки NSIS?
- 29. Завершите процесс в скрипте NSIS во время установки
- 30. Как отключить кнопку в NSIS во время установки?
Есть несколько полезных примеров в http://nsis.sourceforge.net/Examples/languages.nsi – icc97