InnoTools Downloader не работает с Inno 5.5

По рекомендации нескольких постов здесь, в SO, я работал с загрузчиком InnoTools, чтобы попытаться установить стороннюю зависимость для нашего приложения во время установки скрипта в настройке Inno.

К сожалению, InnoTools Downloader не обновлялся в течение нескольких лет и начинает выглядеть так, как будто он несовместим с текущей настройкой Inno Tools (5.5.2 (u) на моем компьютере в настоящее время). Параметры PChar в ITD были заменены параметрами PAnsiChar, и когда я пытаюсь запустить различные процедуры ITD_xxx, это дает мне различные степени сбоя:

  • ITD_DownloadFiles выдает ошибку несоответствия типов и не компилируется в Inno Setup
  • ITD_DownloadFile компилируется, но отображаемый файл имеет длину 6 КБ и не может быть запущен.

Кто-нибудь заставил ITP работать с более новыми версиями Unno (post-5.3.0) Unicode? Или я должен искать другое решение?

РЕДАКТИРОВАТЬ Просто чтобы прояснить ситуацию немного, я попытался зайти в файл it_download.iss и заменить все экземпляры PChar на PAnsiChar. Это помогло мне избежать ошибок компиляции, когда я впервые попытался интегрировать ITD со своим сценарием установки.

Вот пример раздела скрипта Inno:

[Code]
procedure InitializeWizard();
begin
  ITD_Init; // initialize the InnoTools Downloader
  // install 3rd party tool (ex. Git) from the internet.
  if ITD_DownloadFile('http://git-scm.com/download/win',expandconstant('{tmp}\GitInstaller.exe'))=ITDERR_SUCCESS then begin
     MsgBox(expandconstant('{tmp}\GitInstaller.exe'), mbInformation, MB_OK);
     Exec(ExpandConstant('{tmp}\GitInstaller.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, tmpResult);
  end
end;

Когда он запустится, появится диалоговое окно с указанием, где он "скачал" и сохранил файл - на моем компьютере он находится в подкаталоге c:\Users\\AppData\Local\Temp. Этот файл имеет размер 6 КБ, в отличие от файла, загруженного с сайта http://git-scm.com/download/win, который в настоящее время составляет 15 221 КБ.

ITP_DownloadAfter Метод дает аналогичный результат.

1 ответ

Решение

Кроме замены всех PChar введите вхождения с PAnsiChar вам нужно будет заменить все вхождения string введите с AnsiString в it_download.iss файл. Следующая проблема - это URL, который вы пытаетесь получить. Размер файла отличается от ожидаемого, поскольку вы загружаете документ HTML вместо двоичного файла, на который перенаправляется этот сайт. Итак, если у вас есть готовый ITD для Unicode, измените URL в вашем скрипте на direct binary URL, Обратите внимание, что я не использовал HTTPS, потому что ITD в настоящее время не поддерживает SSL. Кодовое доказательство может выглядеть так:

[Code]
const
  GitSetupURL = 'http://msysgit.googlecode.com/files/Git-1.8.4-preview20130916.exe';

procedure InitializeWizard;
var
  Name: string;
  Size: Integer;
begin
  Name := ExpandConstant('{tmp}\GitInstaller.exe');

  ITD_Init;  
  if ITD_DownloadFile(GitSetupURL, Name) = ITDERR_SUCCESS then
  begin
    if FileSize(Name, Size) then
      MsgBox(Name + #13#10 + 'Size: ' + IntToStr(Size) + ' B',
        mbInformation, MB_OK)
    else
      MsgBox('FileSize function failed!', mbError, MB_OK);
  end;
end;
Другие вопросы по тегам