2017-12-04 15 views
0

this answerへのフォローアップとして、Abortコマンドを発行した後にリンクを追加しようとしていますが、何らかの理由でSpy ++で表示されても何も表示されません。 enter image description hereリンクをAbortページに追加する

考え方は、進行状況バーの上にリンクを追加することですが、何らかの形でマクロが機能しません。私が行方不明になっている理由はありますか?また、Abortを呼び出した後にそのリンクを追加することは可能ですか?私はどこかでAbortコマンドが異なる効果を持つことがあるので、これが1つだと推測しています。

私はこのサンプルスクリプトをできるだけ簡潔にしようとしましたが、私はまだ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 

答えて

1

Abort停止し、あなたがAbortを呼び出す前に行う必要があるものは何でもしなければなりません。

セクション内のコントロールを追加することは、別のスレッドで実行され、ウィンドウがそれらを作成したスレッドに関連付けられているため、問題があります。ウィンドウをインストールスレッドより長くしなければならない場合は、instfilesページのショーコールバックで隠しウィンドウとして作成し、表示する必要があるときにセクション内のShowWindowを呼び出してください。

+0

アドバイスありがとう、@anders! – sjlewis

関連する問題