Как обойти NSIS при загрузке ошибка "подключение к хосту" - PullRequest
0 голосов
/ 28 ноября 2010

Итак, я пытаюсь загрузить и установить 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 - это то, что я пытаюсь загрузить.

Файл явно загружается из веб-браузера, но NSIS выдает ошибку «подключение к хосту» при попытке подключения. Я пытался придать ему большое значение тайм-аута. Это проблема с прокси? Как я могу обойти это без включения файла в мой установщик?

Edit:

Благодаря Андерсу, я отредактировал мой код следующим образом:

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

Что теперь дает мне ошибку «302 (перенаправление)». Файл и место загрузки не изменились.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2010

NSISdl использует простые сокеты и завершится ошибкой, если сервер выполняет перенаправление и трюки / отслеживание cookie, попробуйте INetC , он использует WinInet API более высокого уровня

0 голосов
/ 03 февраля 2012
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`
...