Установщик NSIS - Отображение различных лицензий

Я пытаюсь изменить существующий сценарий установки NSIS, чтобы позволить, чтобы различные файлы лицензии были представлены пользователю в зависимости от того, являются ли они новым или существующим пользователем. У меня есть существующий ранее код, который обнаруживает существующую установку в разделе .onInit.

Однако я сталкиваюсь с ударами, пытающимися использовать NSIS, обеспеченный экран лицензии, например.

!InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf

Я хотел бы смочь выбрать между Лицензией и Licence2.rtf (хотя они будут переименованы во что-то представительное в окончательной версии).

Я попытался использовать выбираемые разделы, вызывающие функции, которые вкладывают! insertmacro, но это не работает, потому что это должно быть на основном уровне сценария.

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

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

Спасибо

6
задан Wysawyg 12 March 2010 в 16:57
поделиться

1 ответ

Есть два варианта:

  • Использовать 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)

Я написал код, который делает это с помощью системного плагина, вы можете найти его на форуме nsis. Чтобы использовать этот код, вы должны включить ваши файлы лицензий с помощью обычных команд File, извлечь нужный вам файл в $pluginsdir и загрузить его в функцию обратного вызова show страницы лицензии.

8
ответ дан 8 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: