Nsis 添加到中止页面的链接

Nsis 添加到中止页面的链接,nsis,Nsis,作为后续操作,我试图在发出Abort命令后添加链接,但由于某些原因,它没有出现,在Spy++中查看时没有任何痕迹 这样做的目的是在进度条上方添加链接,但宏无法正常工作。是否有我丢失的原因?是否可以在调用Abort后添加该链接?我在某个地方读到过Abort命令可以有不同的效果,所以我猜这就是其中之一 我已经尽力使这个示例脚本尽可能简洁,并将非常感谢任何帮助,因为我仍在学习NSIS !include "MUI2.nsh" ;-------------------------------- ;Gen

作为后续操作,我试图在发出Abort命令后添加链接,但由于某些原因,它没有出现,在Spy++中查看时没有任何痕迹

这样做的目的是在进度条上方添加链接,但宏无法正常工作。是否有我丢失的原因?是否可以在调用Abort后添加该链接?我在某个地方读到过Abort命令可以有不同的效果,所以我猜这就是其中之一

我已经尽力使这个示例脚本尽可能简洁,并将非常感谢任何帮助,因为我仍在学习NSIS

!include "MUI2.nsh"

;--------------------------------
;General
ShowInstDetails hide
SetCompressor /SOLID lzma

;Request application privileges for Windows Vista
RequestExecutionLevel user

;--------------------------------
;Interface Configuration

!define MUI_ABORTWARNING
!define MANUAL_DOWNLOAD_TEXT "Automatic download not working? Click here to download manually."

;--------------------------------
;Macros
!macro AddDownloadLink yCoord
    FindWindow $0 "#32770" "" $HWNDPARENT ; Find the inner dialog
    System::Call 'USER32::CreateWindowEx(i0, t "STATIC", t "${MANUAL_DOWNLOAD_TEXT}", i${WS_CHILD}|${WS_VISIBLE}|${SS_NOTIFY}, i 1, i ${yCoord}, i 500, i 50, p $0, i 0x666, p 0, p 0)p.s'
    Pop $0
    SetCtlColors $0 0000ff transparent 
    CreateFont $1 "$(^Font)" "$(^FontSize)" "400" /UNDERLINE
    SendMessage $0 ${WM_SETFONT} $1 1

    GetFunctionAddress $1 fnLinkClicked
    ButtonEvent::AddEventHandler 0x666 $1
!macroend

;--------------------------------
;Pages
!insertmacro MUI_PAGE_INSTFILES

;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"

;--------------------------------
;Installer Sections
Section
    Var /global Filename    
    StrCpy $Filename "test100Mb.db"

    Var /global DownloadUrl 
    StrCpy $DownloadUrl "http://speedtest.ftp.otenet.gr/files/$Filename"

    !insertmacro AddDownloadLink 70

    inetc::get /caption "Downloading package" $DownloadUrl "$Filename" /end 
    Pop $R0 ;Get the return value
    StrCmp $R0 "OK" 0 dlfailed

    Goto quit

dlfailed:
    DetailPrint "Download failed: $R0 $DownloadUrl"
    SetDetailsView show 
    Abort

    !insertmacro AddDownloadLink 1

quit:
    Quit
SectionEnd

Function fnLinkClicked
    ExecShell "open" "$DownloadUrl"
FunctionEnd

Abort
停止执行节代码,在调用
Abort
之前,必须执行任何需要执行的操作


在节中添加控件可能会有问题,因为它在不同的线程上执行,并且窗口绑定到创建它们的线程。如果您需要窗口比安装线程停留的时间更长,您可以在instfiles页面的show callback中将其创建为一个隐藏窗口,并在需要显示窗口时在部分中调用
ShowWindow

谢谢您的建议,@anders!