Ivan Pirogov
июль 2015.
756

Как программа установки рассчитывает, сколько времени осталось до конца установки?

Ответить
Ответить
Комментировать
0
Подписаться
1
2 ответа
Поделиться

На самом деле работа счетчика оставшегося времени установки полностью зависит от разработчиков.

Ничего не мешает им так запрограммировать установщик, что он встанет на значение 50% сразу после начала установки и "достигнет" 100% ровно в тот момент, когда установка закончена. А что, простенько и со вкусом.

Но если мы допустим, что разработчики решили сделать честный установщик с реалистичным индикатором процесса установки, то им предстоит разобраться, что именно отнимает время: копирование файлов, распаковка архивов, запуск каких-то сопутствующих задач, взаимодействие с ОС, может быть что-то еще. Для каждого из этапов будут свои собственные способы измерения оставшегося времени.

С копированием и распаковкой все более-менее просто: мы начинаем копировать файлы, смотрим, сколько байтов уже скопировано, сколько еще осталось скопировать, делим одно на другое, умножаем на потраченное время и получаем время, которое осталось. С прочими процедурами может быть сложнее если неясно, как их замерять. Тут можно справиться двумя похожими друг на друга способами: 1) присвоить им произвольное значение (1 минута, 30 секунд), 2) узнать, сколько времени займут эти операции на среднем компьютере - провести это измерение 10, 100 или 1000 раз в зависимости от перфекционизма исследователя - и присвоить им это значение.

Из-за высокой доли человеческого фактора в программировании установщика, обычно у больших серьезных продуктов время установки ближе к истине - у них есть больше программистов, которые могут потратить больше времени только на инсталлятор. Компании помельче предпочитают эти ресурсы направить на улучшение самого продукта.

Всё очень просто. Программа установки имеет свой алгоритм, а именно: она обязана положить все каталоги и файлы в указанное место, установить связи между ними (если это необходимо по алгоритму устанавливаемой программы), записать в реестр информацию инициализации программы, может быть что-то извлечь из архива. Когда все действия завершены, программа считает, что завершила 100% операций. Сама программа установки имеет n операций (действий). 100 / n - процент одной операции. То есть, выполнив одну операцию, программа записывает выполнение этого процента. Посчитав время выполнения одной операции и зная количество оставшихся операций, нетрудно дать приблизительное время окончания установки. Таким образом работает строка процесса и таймер оставшегося времени установки.

Ответить