一个自定义 NSIS 页面中的多个 nsDialogs 图像图标

Multiple nsDialogs image-icons in one custom NSIS page

我正在尝试使用 nsDialogs 将各种图像(作为图标)放在一个自定义页面中。

我提供的这个例子就是这样做的,但它只显示了第一张图片。但是如果我comment/delete第一张图片的代码,显示第二张,如果我对第二张做同样的事情,它会显示第三张,依此类推。

截图:Custom page with the code provided:设置四个相同代码时只显示一个图标。

对我来说,我遗漏了一些东西,但我已经搜索了一个使用 NSD_CreateIcon/NSD_SetIcon 来帮助解决这个问题的例子,运气好的话。我也尝试使用 NSD_CreateBitmap/NSD_SetBitmap 代替,但我遇到了同样的问题(我希望图标更好,因为它们具有透明度)。

代码如下:

Name "Example NSD Icon Test"
Outfile "ExampleNSDiconsTest.exe"

RequestExecutionLevel user
Unicode True
XPStyle on

!include nsDialogs.nsh
!include LogicLib.nsh

Page Custom FirstCreate
Page Custom SecondCreate
Page instfiles

Function .onGuiInit
    InitPluginsDir
    File /oname=$PLUGINSDIR.ico "1.ico"
    File /oname=$PLUGINSDIR.ico "2.ico"
    File /oname=$PLUGINSDIR.ico "3.ico"
    File /oname=$PLUGINSDIR.ico "4.ico"
FunctionEnd

Function FirstCreate

    nsDialogs::Create 1018
    
    ${NSD_CreateIcon} 8u 12u 32px 32px
        Pop 
        ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R1
    
    ${NSD_CreateIcon} 8u 47u 32px 32px
        Pop 
        ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R2
    
    ${NSD_CreateIcon} 8u 60u 32px 32px
        Pop 
        ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R3
        
    ${NSD_CreateIcon} 8u 84u 32px 32px
        Pop 
        ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R4
    
    nsDialogs::Show
    
FunctionEnd

Function SecondCreate
    nsDialogs::Create 1018
    nsDialogs::Show
FunctionEnd

Section
    
SectionEnd

可以下载带有图标和示例的完整包here(已更新)

谢谢!

编辑:

做更多的测试,我发现如果我在第一个页面之后使用 nsDialogs 创建第二个自定义页面,完全是空的,第一页只显示“1”,你可以转到第二页,返回第一个,它显示“1”和“2”。我用新示例更新了此页面中的所有内容。

  1. 您在 nsDialogs::Create 之后缺少 Pop。
  2. 没有px后缀。
  3. 您在创建控件时缺少最后一个参数。

RequestExecutionLevel User


!include nsDialogs.nsh

Page Custom FirstCreate

Function .onGUIInit
    InitPluginsDir
    File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
    File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-grey.ico"
    File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico"
    File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico"

FunctionEnd

Function FirstCreate

    nsDialogs::Create 1018
    Pop [=10=]
    
    ${NSD_CreateIcon} 8u 12u 32 32 ""
    Pop 
    ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R1
    
    ${NSD_CreateIcon} 8u 47u 32 32 ""
    Pop 
    ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R2
    
    ${NSD_CreateIcon} 8u 60u 32 32 ""
    Pop 
    ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R3
        
    ${NSD_CreateIcon} 8u 84u 32 32 ""
    Pop 
    ${NSD_SetIcon}  "$PLUGINSDIR.ico" $R4
    
    nsDialogs::Show
    ${NSD_FreeIcon} $R1
    ${NSD_FreeIcon} $R2
    ${NSD_FreeIcon} $R3
    ${NSD_FreeIcon} $R4
    
FunctionEnd


Section
SectionEnd