0

我需要在安装前询问用户几个路径,但我无法在 NSIS 中完成。好像我的代码没有在 MUI 中被引用:

!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico""
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_CUSTOMPAGECOMMANDS
!define MUI_DIRECTORYPAGE
!define MUI_CUSTOMFUNCTION_COMPONENTS_LEAVE ComponentPost
!define MUI_CUSTOMFUNCTION_DIRECTORY_SHOW DirectoryShow
!define MUI_CUSTOMFUNCTION_DIRECTORY_LEAVE DirectoryLeave

在编译时我得到

  install function "ComponentPost" not referenced - zeroing code (0-2) out

  install function "DirectoryShow" not referenced - zeroing code (2-49) out

  install function "DirectoryLeave" not referenced - zeroing code (49-61) out

显然,这三个函数的代码没有被执行

4

1 回答 1

2

我第一次看到!define MUI_CUSTOMPAGECOMMANDS和其他一些。NSIS 或手册中没有对它们的参考。它们是什么?

如果要将页面目录添加到安装程序中,请使用名为MUI_PAGE_DIRECTORY的宏(而不是 MUI_DIRECTORYPAGE)

要为此页面添加 PRE/SHOW/LEAVE 功能,请使用

MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVE function

这些定义应该在插入页面宏之前设置。

我认为对您来说最简单的方法是修改现有示例(可以在 NSIS\Examples 目录中找到),您的脚本根本没有意义。

于 2013-04-08T10:48:36.130 回答