2010-11-27 37 views
0

J'essaie donc de télécharger et d'installer PySVN dans le cadre de la pile de mon programme. Je télécharge plutôt que d'inclure, mais le téléchargement échoue pour des raisons inconnues. Voici le code:Comment faire pour contourner l'erreur de téléchargement NSIS "se connecter à l'hôte"

!define PYSVN_FILE "py25-pysvn-svn161-1.7.0-1177.exe" 
!define PYSVN_DOWNLOAD_LOC "http://pysvn.tigris.org/files/documents/1233/45661/py25-pysvn-svn161-1.7.0-1177.exe" 
${If} $pythonVersion == "2.5" 
    NSISdl::download "${PYSVN_DOWNLOAD_LOC}" ${PYSVN_FILE} 
${Else} 
    NSISdl::download "${PYSVN2_DOWNLOAD_LOC}" ${PYSVN_FILE} 
${EndIf} 

Où $ {} = PYSVN_DOWNLOAD_LOC http://pysvn.tigris.org/files/documents/1233/45661/py25-pysvn-svn161-1.7.0-1177.exe est ce que je suis en train de télécharger. Il est évident que le fichier se télécharge correctement à partir d'un navigateur Web, mais NSIS renvoie une erreur «se connectant à l'hôte» lorsqu'il tente de se connecter. J'ai essayé de lui donner une grande valeur de timeout. Est-ce un problème de proxy? Comment puis-je contourner cela sans inclure le fichier dans mon installateur?

Edit:

Merci à Anders j'ai édité mon code comme suit:

${If} $pythonVersion == "2.5" 
     inetc::get "${PYSVN_DOWNLOAD_LOC}" "${PYSVN_FILE}" /END 
    ${Else} 
     inetc::get "${PYSVN2_DOWNLOAD_LOC}" "${PYSVN_FILE}" /END 
    ${EndIf} 

Ce qui me donne maintenant un "302 (redirection)" erreur. L'emplacement du fichier et du téléchargement n'a pas changé.

Répondre

0
inetc::get /NOCANCEL /RESUME "" "http://file.blah" "$TEMP\Setup.exe" 
    Pop $0 
    StrCmp $0 "OK" dlok 
    MessageBox MB_OK|MB_ICONEXCLAMATION "Error downloading. Click OK to abort installation." /SD IDOK 
dlok: 
    !insertmacro closeAllBrowsers 
    ; install plugin 
    ExecWait `$TEMP\Setup.exe` 
2

NSISdl utilise des sockets simples et échouera si le serveur ne redirige et astuces cookies/suivi, essayez INetC, il utilise le niveau supérieur WinInet API

+0

Cela me donne une erreur 302 « de redirection ». J'ai cherché quelque chose qui traite spécifiquement de cette erreur, mais il semble qu'il n'y a rien? –

+0

INetC a travaillé pour moi. Lancez Wireshark et jetez un oeil à ce qui se passe quand il échoue ... – Anders

+0

J'ai essayé Wireshark (je ne suis pas familier avec) et il donne une retransmission TCP: 302 déplacé temporairement message quand je tente de télécharger. Je pense qu'il ya une page de redirection HTML qui pointe vers http://pysvn.tigris.org/servlets/ProjectDocumentDownload?documentID=45661, qui donne aussi la même erreur. J'utilise le code "inetc :: get" $ {PYSVN_DOWNLOAD_LOC} "$ {PYSVN_FILE}" Je ne pense pas manquer d'options ici ... –