NSIS安装程序-显示不同的许可证

NSIS安装程序-显示不同的许可证,nsis,Nsis,我正在尝试修改现有NSIS安装脚本,以允许根据用户是新用户还是现有用户向用户显示不同的许可证文件。我有一个预先存在的代码,可以检测.onInit部分中的现有安装 然而,我在尝试使用NSIS提供的许可证屏幕时遇到了麻烦,例如 !InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf 我希望能够在License和License2.rtf之间进行选择(尽管在最终版本中它们将被重命名为具有代表性的名称) 我已经尝试过使用可选的部分调用函数来嵌套!insertm

我正在尝试修改现有NSIS安装脚本,以允许根据用户是新用户还是现有用户向用户显示不同的许可证文件。我有一个预先存在的代码,可以检测.onInit部分中的现有安装

然而,我在尝试使用NSIS提供的许可证屏幕时遇到了麻烦,例如

!InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf
我希望能够在License和License2.rtf之间进行选择(尽管在最终版本中它们将被重命名为具有代表性的名称)

我已经尝试过使用可选的部分调用函数来嵌套!insertmacro,但这不起作用,因为它需要位于脚本的基本级别

我不能将参数更改为运行时可定义的,因为它需要知道编译时的文件是什么,才能将其构建到安装程序中

我知道我可以滚动我自己的自定义页面,从一个函数调用,并这样做,但我想知道是否有人有NSIS安装程序使用MUI_page_许可证和不同的许可证


谢谢

给这只猫剥皮有两种方法:

  • 使用2个许可证页面并跳过其中一个页面
  • 在运行时手动加载许可证文件
两页: 手动加载: 有一个可以为您这样做(不确定它是否支持RTF)


我用系统插件写了一些代码,你可以找到。要使用该代码,您需要使用普通的
File
命令包含许可证文件,并提取您想要的$pluginsdir并将其加载到许可证页面的show回调函数中。

有一种更简单的方法。我使用以下代码:

!insertmacro MUI_PAGE_LICENSE $(MUILicense)
此外,您还必须输入如下代码行:

LicenseLangString MUILicense ${LANG_POLISH} "SomeDirectory\licencja_pl.txt"
LicenseLangString MUILicense ${LANG_ENGLISH} "SomeDirectory\license_en.txt"

它们不必在插入许可证宏之前出现。在我的代码中,我在下面定义了它们,它工作得很好。

谢谢,这正是我正在搜索的,所有其他文档/答案都告诉我以下错误之一:在第一行脚本中的MUILicense var周围缺少$(),在同一行中使用静态文件名而不是var,使用LANG_XY而不是${LANG_XY}等等。
LicenseLangString MUILicense ${LANG_POLISH} "SomeDirectory\licencja_pl.txt"
LicenseLangString MUILicense ${LANG_ENGLISH} "SomeDirectory\license_en.txt"