2017-12-04 4 views
0

Als Folge zu this answer, ich versuche, die Verknüpfung nach der Ausgabe Abbrechen Befehl hinzuzufügen, aber aus irgendeinem Grund erscheint es nicht, keine Spur davon in Spy ++ angezeigt. enter image description hereLink zur Seite Abort hinzufügen

Die Idee ist, den Link über dem Fortschrittsbalken hinzuzufügen, aber irgendwie funktioniert das Makro nicht. Gibt es einen Grund dafür, dass ich vermisse und es möglich ist, diesen Link nach dem Aufruf von Abbruch hinzuzufügen? Ich habe irgendwo gelesen, dass der Abort-Befehl unterschiedliche Auswirkungen haben kann, also vermute ich, dass dies einer davon ist.

Ich habe versucht, dieses Beispiel Skript so knapp wie möglich zu machen und würde jede Hilfe sehr schätzen, da ich noch NSIS lerne.

!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 

Antwort

1

Abort stoppt den Abschnitt (en) die Ausführung von Code, müssen Sie tun, was Sie vor dem Aufruf von Abort tun müssen.

Das Hinzufügen von Steuerelementen in einem Abschnitt kann problematisch sein, da es in einem anderen Thread ausgeführt wird und die Fenster an den Thread gebunden sind, der sie erstellt hat. Wenn Sie das Fenster länger als das Installationsthread verwenden möchten, können Sie es als verstecktes Fenster auf der Seite instfiles anzeigen. Rufen Sie einfach ShowWindow im Abschnitt auf, wenn Sie es anzeigen müssen ...

+0

Vielen Dank für den Hinweis , @anders! – sjlewis

Verwandte Themen