所以我正在尝试下载并安装PySVN作为我程序堆栈的一部分。我正在下载而不是包含,但下载失败的原因不明。这是代码:
!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}
我正在尝试下载$ {PYSVN_DOWNLOAD_LOC} = http://pysvn.tigris.org/files/documents/1233/45661/py25-pysvn-svn161-1.7.0-1177.exe。
该文件显然可以从Web浏览器下载,但NSIS在尝试连接时会抛出“连接到主机”错误。我试过给它一个很大的超时值。这是代理问题吗?如何在不在安装程序中包含文件的情况下解决这个问题?
修改
感谢Anders我编写了如下代码:
${If} $pythonVersion == "2.5"
inetc::get "${PYSVN_DOWNLOAD_LOC}" "${PYSVN_FILE}" /END
${Else}
inetc::get "${PYSVN2_DOWNLOAD_LOC}" "${PYSVN_FILE}" /END
${EndIf}
现在给我一个“302(重定向)”错误。文件和下载位置没有改变。
答案 0 :(得分:2)
NSISdl使用普通套接字,如果服务器进行重定向和cookie技巧/跟踪,则会失败,请尝试INetC,它使用更高级别的WinInet API
答案 1 :(得分: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`