Edison007
Что бы нормально отрисовать второй прогресс, нужно использовать значения штатного и что бы штатный прогресс показывал максимальное значение распакованных файлов. Но в действительности это не так. Проверки показали, что ProgressGauge.Max гораздо меньше общего размера распакованных файлов. Точки останова в BeforeInstall и AfterInstall показали, что ProgressGauge.Position меняется на меньшую величину, чем размер распаковываемого файла. Но на самом деле получается, что суммарный размер распакованных файлов делится на определенный коэффициент до тех пор, пока получившееся значение не станет удовлетворять типу Longint.
Поэтому товарищу South пришла мысль, посмотреть в исходники инно и было выяснено, что в инно действительно используется коэффициент для деления, и все было бы не так страшно, если бы не одно большое НО. В общем случае вычисляется размер файлов, которые будут распакованы. т.е. если у тебя есть [Components], [Tasks] и т.д. и файлы распаковываются в зависимости от того, что выбрано, то ProgressGauge.Max= размеру распаковываемых файлов, а не общему объему содержащемуся в инсталляторе + туда добавляется кол-во строк секции [icons]*1000 + кол-во строк секции [registry]*1000 +кол-во строк секции [ini]*1000. Когда все это сложится, получившееся значение начинает делится на 2 до тех пор, пока результат не будет меньше Cardinal($10000000), т.е потолок для ProgressGauge.Max - 268435456. Вот такая вот вот загогулина. В инно сохраняется получившийся коэффициент деления в переменной ProgressShiftCount, но в срипте этот коэффициент не получить, по крайней мере как получить неизвестно...
Вывод: второй прогрессбар по человечески не сделать без исправления исходников инно...
Добавлено через 6 минут
ЗЫ. Но если ты знаешь, как получить ProgressShiftCount, то да, это меняет дело. Поделись плиз