Я пытаюсь изменить существующий сценарий установки NSIS, чтобы позволить, чтобы различные файлы лицензии были представлены пользователю в зависимости от того, являются ли они новым или существующим пользователем. У меня есть существующий ранее код, который обнаруживает существующую установку в разделе .onInit.
Однако я сталкиваюсь с ударами, пытающимися использовать NSIS, обеспеченный экран лицензии, например.
!InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf
Я хотел бы смочь выбрать между Лицензией и Licence2.rtf (хотя они будут переименованы во что-то представительное в окончательной версии).
Я попытался использовать выбираемые разделы, вызывающие функции, которые вкладывают! insertmacro, но это не работает, потому что это должно быть на основном уровне сценария.
Я не могу изменить параметр, чтобы быть временем выполнения, определимым, потому что это должно знать то, что файл должен во время компиляции встроить его в установщик.
Я знаю, что могу прокрутить свою собственную страницу, названную от функции, и сделать это тот путь, но я задавался вопросом, был ли у кого-либо установщик NSIS, работающий с использованием MUI_PAGE_LICENSE и различных лицензий.
Спасибо
Есть два варианта:
!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)
Я написал код, который делает это с помощью системного плагина, вы можете найти его на форуме nsis. Чтобы использовать этот код, вы должны включить ваши файлы лицензий с помощью обычных команд File
, извлечь нужный вам файл в $pluginsdir и загрузить его в функцию обратного вызова show страницы лицензии.