Закачка всех файлов в текущем каталоге адреса

220 views
Skip to first unread message

XNET Vladislav

unread,
Jan 8, 2015, 7:59:07 AM1/8/15
to inno-downl...@googlegroups.com
Я видел функцию загрузку файлов всех что есть в каталоге у хоста, но она не работает, как загрузить все файлы и переместить что скачал в каталог куда ставится программа?
В zip не подходит вариант

Mitrich K

unread,
Jan 8, 2015, 1:01:28 PM1/8/15
to inno-downl...@googlegroups.com
Я видел функцию загрузку файлов всех что есть в каталоге у хоста, но она не работает
Где? Нет в IDP такой функции :)
Позже добавлю такую возможность, но только для FTP.
Пока могу предложить только хранить на сервере текстовый файл со списком файлов, подлежащих загрузке. Затем, для скачивания всех файлов, указанных в filelist.txt использовать такой код:

; This example downloads text file, which lists files to download, then downloads each file, specified in filelist.txt
; File list has following format: each file name on new line:
; file1.xyz
; file2.xyz
; file3.xyz

[Code]
var FileList: TStringList;

procedure InitializeWizard();
var i: Integer;
begin
    //Downloading file list
    idpDownloadFile('http://127.0.0.1/FileList.txt', ExpandConstant('{tmp}\FileList.txt'));
   
    FileList := TStringList.Create;
    FileList.LoadFromFile(ExpandConstant('{tmp}\FileList.txt'));
   
    for i := 0 to FileList.Count-1 do
        //Add each file to download queque
        idpAddFile('http://127.0.0.1/' + FileList[i], ExpandConstant('{tmp}\') + FileList[i]);
   
    idpDownloadAfter(wpReady);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var i: Integer;
begin
    if CurStep = ssPostInstall then
    begin
        // Copy downloaded files to application directory
        for i := 0 to FileList.Count-1 do
            FileCopy(ExpandConstant('{tmp}\') + FileList[i], ExpandConstant('{app}\') + FileList[i], false);
    end;
end;




XNET Vladislav

unread,
Jan 8, 2015, 1:23:30 PM1/8/15
to inno-downl...@googlegroups.com
function idpDownloadFiles: Boolean;

Immediately download all files, previously added with idpAddFile procedure, without UI indication. Returns when all files downloaded. This function always downloads all files, ignoring component selection.

Returns:

True if all files was successfully downloaded, False otherwise

See also:

idpDownloadFilesComp
idpDownloadFile
idpDownloadAfter

В справке нашел

XNET Vladislav

unread,
Jan 8, 2015, 1:55:42 PM1/8/15
to inno-downl...@googlegroups.com
Не только файлы, и папки с файлами, которые будут меняться, сможете сделать до 14-15 числа такую функцию? модуль хороший, но мелочь убрали в новых версиях ((

Mitrich K

unread,
Jan 8, 2015, 2:13:29 PM1/8/15
to inno-downl...@googlegroups.com
В справке нашел
idpDownloadFiles скачивает файлы, которые были перед этим добавлены вызовами ф-ции idpAddFile.
Её можно использовать вместо idpDownloadAfter, от которой она отличается тем, что скачивает файлы сразу после её вызова и без показа страницы скачивания.


Не только файлы, и папки с файлами, которые будут меняться, сможете сделать до 14-15 числа такую функцию?
Для FTP?

XNET Vladislav

unread,
Jan 8, 2015, 2:35:25 PM1/8/15
to inno-downl...@googlegroups.com
Да, хотя бы, чтоб качалось по адресу все содержимое без указаний вручную на них

XNET Vladislav

unread,
Jan 11, 2015, 1:08:38 AM1/11/15
to inno-downl...@googlegroups.com
А когда примерно ждать новую версию?

Mitrich K

unread,
Jan 11, 2015, 5:04:13 AM1/11/15
to inno-downl...@googlegroups.com
Думаю, через пару дней.

XNET Vladislav

unread,
Jan 14, 2015, 12:42:00 AM1/14/15
to inno-downl...@googlegroups.com
Напишите сюда, когда обновите плагин

Mitrich K

unread,
Jan 14, 2015, 5:21:09 AM1/14/15
to
Готово. Теперь есть такая вот функция:

procedure idpAddFtpDir(url, mask, destdir: String; recursive: Boolean);
procedure idpAddFtpDirComp(url, mask, destdir: String; recursive: Boolean; components: String);

Используется также, как и idpAddFile
Параметры:
  • url - адрес
  • mask - маска файла, вида *.xyz, или пустая строка если нужно качать всё
  • destdir - целевой каталог
  • recursive - включать подкаталоги или нет
  • components - компоненты, также как и в idpAddFileComp или секции [Files]
Пример:

//Все файлы по заданному адресу, включая подкаталоги
idpAddFtpDir('ftp://ftpserver.com/pub/myfiles', '', ExpandConstant('{tmp}'), true);

//Только файлы *.dll files; не лезем в подкаталоги
idpAddFtpDir('ftp://ftpserver.com/pub/myfiles', '*.dll', ExpandConstant('{tmp}'), false);


Скачать - idpsetup-1.5.0.exe

XNET Vladislav

unread,
Jan 14, 2015, 9:44:09 AM1/14/15
to inno-downl...@googlegroups.com
А есть скрипт idp.iss без функций ISPP? а то старый без них убрал и шла компиляция, а щас жалуется жалуется на #

Mitrich K

unread,
Jan 14, 2015, 11:31:10 AM1/14/15
to inno-downl...@googlegroups.com
В смысле, у вас стоит старый Inno Setup без препроцессора? Если так, то в чём проблема установить?

XNET Vladislav

unread,
Jan 14, 2015, 12:42:09 PM1/14/15
to inno-downl...@googlegroups.com
Разобрался, у меня ansi версия от китайцев

XNET Vladislav

unread,
Jan 14, 2015, 1:15:14 PM1/14/15
to inno-downl...@googlegroups.com
Есть такая проблема, скачивает файлы по ftp, потом когда заканчивает, пишет - cannot create file, вот кусок кода что использовал

If CurPageID=wpReady then
begin
     idpAddFtpDir('ftp://dlink.ru/pub/Multimedia', '', ExpandConstant('{app}'), true);
     idpDownloadAfter(wpReady);
end;


Mitrich K

unread,
Jan 14, 2015, 1:21:16 PM1/14/15
to inno-downl...@googlegroups.com
Это потому, что каталога {app} пока ещё не существует - он создается позже.
Решение - создавать его самому, добавив строчку
ForceDirectories(ExpandConstant('{app}'));


XNET Vladislav

unread,
Jan 14, 2015, 1:34:09 PM1/14/15
to inno-downl...@googlegroups.com
А куда вписать, а то ошибка вылезает если подменить - ExpandConstant('{app}'), true);

Mitrich K

unread,
Jan 14, 2015, 1:47:05 PM1/14/15
to inno-downl...@googlegroups.com
Вот сюда например и добавить:

procedure CurPageChanged(CurPageID: Integer);
begin
   
if CurPageID = wpReady then
   
begin
       
ForceDirectories(ExpandConstant('{app}')); //Создаем каталог {app} вручную

        idpAddFtpDir
('ftp://dlink.ru/pub/Multimedia', '', ExpandConstant('{app}'), true);
        idpDownloadAfter
(wpReady);
   
end;
end;


XNET Vladislav

unread,
Jan 14, 2015, 2:02:49 PM1/14/15
to inno-downl...@googlegroups.com
Спс, помогло

vdemed...@amcbridge.com

unread,
Dec 8, 2016, 12:54:11 PM12/8/16
to Inno Download Plugin
Поддержка закачки директории по http (по аналогии с ftp) планируется?
Reply all
Reply to author
Forward
0 new messages