Вопрос Как реализовать копирование файлов + правка *.ini по железу?

Infest

Новичок
Ну что то неправильно встало, вот и не работает
С этим уже разобрался. Компиляторы работают.

А вот со скриптом дела обстоят интереснее!!!
Итак, решил его протестировать, так сказать, "по крупному". Для теста задействовал 2 компа, ноут и 4 виртуальные машины (VMWare Workstation 10).
Машины:
1. Win7 x64 (comp1)
2. Win7 x64 (comp2)
3. Win7 x86 (notebook)
4. WinXP x86/64 (vmware)
5. Win8.1 x64 (vmware)
6. Win10 x64 (vmware)

Судя по тесту, скрипт компилируется успешно на всех машинах, однако работает (копирует) только на win8/8.1 и win10. Такие вот дела.
Для пущей убеждённости, скинул инсталлятор двум знакомым, у одного win7, у второго win10. Сказал, какие создать папки и попросил скинуть туда любое содержимое. Итог теста подтвердился, у человека с семёркой скрипт не сработал, с десяткой всё тип-топ.
 

YURSHAT

Тех. админ
Администратор
У меня XP. У тов. Krinkels 7
Попробуйте скомпиленным инсталлом. Создайте на диске C две папки: CopyFrom и CopyTo. В CopyFrom положите какие-нибудь файлы и запустите инсталл из аттача
 

Вложения

Последнее редактирование:

Infest

Новичок
Ошибка говорит, что языковый файл не подходит к этой версии компиля. Это косяк сборки. Нужно рапортовать товарищу @LexBell
С этой ошибкой я уже разобрался, скопировав Default.isl от официальной 5.5.1 в InnoUltra.

У меня XP. У тов. Krinkels 7
Попробуйте скомпиленным инсталлом. Создайте на диске C две папки: CopyFrom и CopyTo. В CopyFrom положите какие-нибудь файлы и запустите инсталл из аттача
Как бы странно это не звучало, но всё скопировалось.

Лично у меня интересная штука получается. Инсталляторы, скомпилированные на 8/8.1 и 10 также успешно работают на других осях (хр, 7). Самое интересное, что во всех случаях, во время теста, ставил InnoUltra, которую посоветовал товарищ Krinkels. Отсюда следует вывод, что косяк кроется либо в компиляторах, либо в ОС. Для теста, может кто нибудь скинуть свою папку Inno Setup в лс? Просто интересно, в чём же всё таки загвоздка?
 

Infest

Новичок
Это то что у меня стоит
Мистика! Всё заработало! Значит косяк был не в системе, а всё же в IS, а именно в сборке InnoUltra, т.к. почти в основном только её и ставил.

От всей души благодарю! Взял на пользование :)

зы: теперь буду думать, как привязать этот скрипт к diredit :scratchhead:
 

Krinkels

Он где то тут
Администратор
Дык в нужном месте вставить функцию. Можно конечно его немного доделать, поставить, например, отображение копирования в прогрессбар, но это уже не ко мне :)
 

Infest

Новичок
Итак, первые тесты скрипта.
1. Кнопка "Отмена копирования" работает :yahoo: Правда жалко, что не выдаёт сообщение во время отмены копирования.
2. Массивные файлы копирует шустро, а вот со множество мелкими копирование подвисает. Однако это не отменяет того факта, что файловый массив, весом в 20гб (как с мелкими, так и тяжёлыми файлами) скопировало за каких то 20 минут (и это на зелёном харде с умирающим смартом)))
3. А вот с функциями NumToStr( mCopySize ) и NumToStr( AllSize ) творятся чудеса.
3.1. Функция NumToStr( AllSize ) показывает отрицательное значение.

3.2. В функции NumToStr( mCopySize ), при достижении достижении значения ~2200к байт, значение превращается в отрицательное и начинает возрастать "из минуса".
4. Неприятный баг. Во время копирования файлов, если свернуть инсталлятор, он больше не разворачивается.
5. Чисто технический нюанс. Когда деинсталлируешь программу, скопированные файлы не удаляются.

Дык в нужном месте вставить функцию.
Эх... если бы я был так умён как вы :D
К сожалению, у меня почти нету навыков в работе с delphi.

Можно конечно его немного доделать, поставить, например, отображение копирования в прогрессбар, но это уже не ко мне :)
Где-то видел в рунете подобные скрипты, попробую прикрутить))

Кстати, возник ряд вопросов, относительно скрипта.
1. Можно ли как нибудь указать в (PathOut) отдельный файл, т.е. не используя маску. При использовании маски он в упор не хотит копировать то, что мне нужно. Точнее копирует, но не всегда тот файл, который нужен + папки и файлы с обрезанными кусками в их именах.
2. В (PathIn) как заставить работать константу {app}?
3. И исходя из второго пункта, если там всё же как то можно прицепить константы, как реализовать автоматическое определение, куда копировать файлы. Пробовал через {reg:HKLM\....}. Безуспешно.

 

Krinkels

Он где то тут
Администратор
Правда жалко, что не выдаёт сообщение во время отмены копирования.
Это можно дописать, мне для тестов это было незачем

а вот со множество мелкими копирование подвисает.
Винда так же очень плохо копирует кучу мелких файлов

А вот с функциями NumToStr( mCopySize ) и NumToStr( AllSize ) творятся чудеса.
Нужно немного поиграться с параметрами( мне )

отдельный файл,
А почему бы не сделать через стандартную функцию?

2. В (PathIn) как заставить работать константу {app}?
var app: String;
.....
app := ExpandConstant('{app}');

Далее просто используем app+'\1.txt'
 

Infest

Новичок
А почему бы не сделать через стандартную функцию?
А у вас это реализовано намного круче :D А вообще я уже писал маленький скриптик (правда немного по другому), результат не впечатлил. Как итог - быстрая загрузка установочных файлов и после их завершение, когда произошёл переход на FinishedPage, начинается долгое и муторное копирование. Вот поэтому и спрашиваю, как можно вашим способом скопировать отдельные файлы без применение маски))

var app: String;
.....
app := ExpandConstant('{app}');

Далее просто используем app+'\1.txt'
Огромное спасибо! Правда так и не понял, как быть с реестром :scratchhead:
 

Krinkels

Он где то тут
Администратор
Вот поэтому и спрашиваю, как можно вашим способом скопировать отдельные файлы без применение маски))
Не, теоретически вписать файл вместо маски, практически я пока это не пробовал

Правда так и не понял, как быть с реестром :scratchhead:
Я тоже :)
 

Krinkels

Он где то тут
Администратор
Немного подправил либу. Теперь вместо маски указываем файл, параметр поиска подпапок ставим как False
 

Вложения

Infest

Новичок
Очень жаль, тогда цены бы не было скрипту))

Немного подправил либу. Теперь вместо маски указываем файл, параметр поиска подпапок ставим как False
Большущее спасибо! Теперь буду ковырять скрипт))
 

Krinkels

Он где то тут
Администратор
Немного обновил либу.
1. Данные теперь передаются в килобайтах, а не в байтах.
2. Исправил опечатку в имени функции, теперь "BreakCopy" вместо "BeakCopy"

Ну и выложил сорцы, ежели кому будет интересно.
 

Вложения

Shegorat

Lord of Madness
Администратор
Одно маааленькое такое дополнение ко всему вышесказанному, по поводу ISCopyFile.
Тот пример, как есть, будет нормально работать только на Unicode Inno.
Для Ansi нужно строки конвертировать в WideChar.
 

Infest

Новичок
Рыская по FAQ, наткнулся на интересный скрипт. Вопрос: а можно ли его как нибудь совместить со скриптом, который выложил товарищ Shegorat во втором посту данной темы? При этом, чтобы чекбокс был на TasksPage. Есть у кого какие идеи?
 
Сверху