ISHash

DLL ISHash 1.0.1.142

Нет прав для скачивания

peterf1999

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

ChiffaFox

Пользователь
Подскажите, пожалуйста, с чем может быть связана следующая проблема:
Прогоняю через ISHash набор файлов из массива строк. Всего файлов 20. Соответственно в параметр PctOfTotal функции CheckFileHash прописываю 5 (100 / 20 = 5).Функция отрабатывает нормально, но общий прогрессбар при обработке каждого файла скачет в промежуске между 5% и 10%, и по окончанию обработки остается на 10%, вместо 100%.
 

peterf1999

Пользователь
Подскажите, пожалуйста, с чем может быть связана следующая проблема:
Прогоняю через ISHash набор файлов из массива строк. Всего файлов 20. Соответственно в параметр PctOfTotal функции CheckFileHash прописываю 5 (100 / 20 = 5).Функция отрабатывает нормально, но общий прогрессбар при обработке каждого файла скачет в промежуске между 5% и 10%, и по окончанию обработки остается на 10%, вместо 100%.
pctoftotal=percents of total files size

e.g.:

1st file= 300000 bytes
2nd file= 1000000 bytes

1st file= (300000/1300000)*100=23%
2nd file=(1000000/1300000)*100=77%

CheckFileHash(ExpandConstant('{src}\myfile1'),'3B3CE297E6654BD068D29665ED5E8C8DAB2C4A8764B2D6659E78042C2FECD26A',23,@HashProgress,DCP_SHA256);
CheckFileHash(ExpandConstant('{src}\myfile2'),'5A9BCDE72025D6831026E19D6C9362024C3F453E9928E06927FAAA44041641C2',77,@HashProgress,DCP_SHA256);


It works like ISDone's ISArcExtract function.
 

ChiffaFox

Пользователь
I use IS7ZipExtract function, but don't think it matters.
So I have to calculate file sizes and can't assume all files have the equal size? What if I need to check 20 files of the same size?
I have no issues with such approach in ISDone - it displays progressbar correctly, up to 100%.
 

ChiffaFox

Пользователь
Попробовал реализовать через размеры файлов. Сразу наткнулся на проблему. В моем случае один файл из списка может быть и в тысячу раз больше остальных. А параметр PctOfTotal типа integer. Т.е. у меня получается, что для этого большого файла PctOfTotal = 100 или 99, а вот для всех остальных он округляется до 0. И CheckFileHash(), естественно, вылетает с ошибкой.
 

peterf1999

Пользователь
The value of pctoftotal must be within the range 1-100 (integer value).

The function was originally written to check freearc's archive installation files integrity in Inno Setup (for few files and not for hundreds).

However you can ignore overallprogress value from callback function (one progress bar needed).
 
Последнее редактирование:

ChiffaFox

Пользователь
The value of pctoftotal must be within the range 1-100 (integer value).
The function was originally written to check freearc's archive installation files integrity in Inno Setup (for few files and not for hundreds).
However you can ignore overallprogress value from callback function (one progress bar needed).
There are 10-20 files usually, not more. It's not files quantity issue, but their size differences. One file of 100Mb and second one of 10Kb will produce same result. So it seems I have no choice but turn off overall progress at all. :(
 

peterf1999

Пользователь
ISHash.dll v1.0.0.11
  • PctOfTotal parameter now is an extended floating point value instead an integer.
  • CheckFileHash function can returns another error (DCP_ERROR_GENERAL).
 

ChiffaFox

Пользователь
Thank you! Tried version 1.0.0.11 with file sizes calculated. Looks like it starts counting total progress for every file from 0.
The same picture with your example.iss included.
 

peterf1999

Пользователь
ISHash.dll v1.0.0.13
  • CheckFileHash function keeps track of overall progress although the return code of its call is an error.
 
Последнее редактирование:

SBalykov

Старожил
Все хорошо, но есть одна проблема. При проверке контрольной суммы более двух файлов, происходит сброс общего прогресс бара до размера второго файла и так дальше. В итоге общий прогресс бар после проверки показывает общий процент распаковки первых двух, а не 100%, как положено.
Подскажите, пожалуйста, как можно это исправить?!
All well and good, but there is one problem. When checking the checksum over two files, it resets the total progress bar to the size of the second file, and so on. As a result, overall progress bar after validation shows the total percentage indicator of the first two, not 100%, as expected.
Please tell me how to fix it?!
 

agent555

Пользователь
Ребята, а в чем разница IShash'a и этого http://krinkels.org/threads/ismd5.1943/
Т.е разницы нет? IShash лучше т.к поддерживает больше алгоритмов, а там только один ?
Просто непонятно, ведь все они проверяют сумму файлов
 

Andreo Fadio

Пользователь
Проверка при наличие выборочных файлов (пропуск если они отсутствуют) - осуществима или тут только строгое наличие файлов в каталоге?
 

SBalykov

Старожил
Проверка при наличие выборочных файлов (пропуск если они отсутствуют) - осуществима или тут только строгое наличие файлов в каталоге?
Здесь, как впрочем и в других темах, дан пример использования библиотеки, а уж реализация идей,- все в Ваших руках ...
 

Andreo Fadio

Пользователь
Как исправить шкалу общего прогресса, чтобы при повторной проверки он не добавлял проценты от прошлой проверки? (Или как сделать без общего прогресса, только проверку файлов).
 
Сверху