我正在尝试修改现有的NSIS安装脚本,以允许向用户呈现不同的许可证文件,具体取决于他们是新用户还是现有用户.我有预先存在的代码,用于检测.onInit部分中的现有安装.
然而,我正试图使用NSIS提供的许可证屏幕,例如
!InsertMacro MUI_PAGE_LICENSE Content\Licence.rtf
Run Code Online (Sandbox Code Playgroud)
我希望能够在License和Licence2.rtf之间进行选择(尽管它们将在最终版本中重命名为代表).
我尝试使用可调节的部分调用嵌套!insertmacro的函数,但这不起作用,因为它需要在脚本的基本级别.
我无法将参数更改为运行时可定义,因为它需要在编译时知道文件是什么,以将其构建到安装程序中.
我知道我可以滚动我自己调用的自定义页面,并按照这种方式进行操作,但我想知道是否有人使用MUI_PAGE_LICENSE和不同的许可证使NSIS安装程序工作.
谢谢
皮肤猫有两种方法:
!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
Run Code Online (Sandbox Code Playgroud)
有一个插件可以为您执行此操作(不确定它是否支持RTF)
我写了一些使用系统插件执行此操作的代码,您可以在nsis论坛上找到它.要使用该代码,您可以将许可文件包含在普通File命令中,并将所需的文件解压缩到$ pluginsdir并将其加载到许可页面的show callback函数中.
小智 6
有一种更简单的方法.我用这个代码:
!insertmacro MUI_PAGE_LICENSE $(MUILicense)
Run Code Online (Sandbox Code Playgroud)
此外,你必须像这样输入你的代码行:
LicenseLangString MUILicense ${LANG_POLISH} "SomeDirectory\licencja_pl.txt"
LicenseLangString MUILicense ${LANG_ENGLISH} "SomeDirectory\license_en.txt"
Run Code Online (Sandbox Code Playgroud)
在插入许可证宏之前不必显示它们.在我的代码中,我在下面定义它们并且它工作正常.
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |