InnoTools Downloader не работает с Inno 5.5
По рекомендации нескольких постов здесь, в SO, я работал с загрузчиком InnoTools, чтобы попытаться установить стороннюю зависимость для нашего приложения во время установки скрипта в настройке Inno.
К сожалению, InnoTools Downloader не обновлялся в течение нескольких лет и начинает выглядеть так, как будто он несовместим с текущей настройкой Inno Tools (5.5.2 (u) на моем компьютере в настоящее время). Параметры PChar в ITD были заменены параметрами PAnsiChar, и когда я пытаюсь запустить различные процедуры ITD_xxx, это дает мне различные степени сбоя:
ITD_DownloadFiles
выдает ошибку несоответствия типов и не компилируется в Inno SetupITD_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;