Установщик NSIS - отображение различных лицензий
Я пытаюсь изменить существующий сценарий установки NSIS, чтобы разрешить различные файлы лицензий, которые будут представлены пользователю в зависимости от того, являются ли они новым или существующим пользователем. У меня есть уже существующий код, который обнаруживает существующую установку в .раздел функции OnInit.
однако я сталкиваюсь с ударами, пытаясь использовать экран лицензии NSIS, например
!InsertMacro MUI_PAGE_LICENSE ContentLicence.rtf
Я хотел бы быть в состоянии выбрать между лицензией и Licence2.rtf (хотя они будут переименованы что-то представитель в окончательном варианте).
Я пробовал использовать выбираемые разделы, вызывающие функции, которые гнездятся !insertmacro, но это не работает, потому что он должен быть на базовом уровне скрипта.
Я не могу изменить параметр для определения времени выполнения, потому что он должен знать, что файл во время компиляции, чтобы встроить его в установщик.
Я знаю, что могу свернуть свою собственную страницу, вызванную из функции, и сделать это таким образом, но мне было интересно, если любой получил установщик NSIS, работающий с использованием MUI_PAGE_LICENSE и различных лицензий.
спасибо
2 ответов
есть два способа освежевать эту кошку:
- используйте 2 страницы лицензии и пропустите одну из них
- Загрузить файл лицензии вручную во время выполнения
две страницы:
!define MUI_PAGE_CUSTOMFUNCTION_PRE skip1
!InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf
!define MUI_PAGE_CUSTOMFUNCTION_PRE skip2
!InsertMacro MUI_PAGE_LICENSE Content\Licence2.rtf
#You need two functions skip1 and skip2, they should call `abort` to skip based on some state you determine at run-time
механическая нагрузка:
есть плагин это делает это для вас (не уверен, что он поддерживает RTF)
Я написал код, который делает это с помощью системного плагина, вы можете найти что на форуме НСИ. Использовать этот код, вы бы включить ваши файлы лицензий с normal File
команды и извлеките тот, который вы хотите $pluginsdir и загрузите его в функцию обратного вызова на странице лицензии.
есть более простой способ. Я использую этот код:
!insertmacro MUI_PAGE_LICENSE $(MUILicense)
кроме того, вы должны поместить свои строки кода следующим образом:
LicenseLangString MUILicense ${LANG_POLISH} "SomeDirectory\licencja_pl.txt"
LicenseLangString MUILicense ${LANG_ENGLISH} "SomeDirectory\license_en.txt"
Они не должны появляться перед установкой лицензии макро. В моем коде я определил их чуть ниже, и он работает нормально.