Стоимость файла
Затраты — это процесс определения общего объема дискового пространства, необходимого для установки. Элементы, вычисляемые в процессе расчета стоимости файлов, включают объем дискового пространства, в котором устанавливаются или удаляются файлы, а также объем дискового пространства, занимаемого записями реестра, ярлыками и другими прочими файлами. Существующие файлы, которые планируется перезаписать, также вычисляются в общих затратах на диск.
Общие затраты накапливаются по каждому компоненту и состоят из трех отдельных частей: локальные затраты, затраты на источники и затраты на удаление. Эти части соответствуют затратам на диск, которые возникают при локальной установке компонента, установке для запуска с исходного носителя или удалении.
Все вычисления, связанные с затратами на установку файлов, зависят от тома диска, на котором должен быть установлен или удален файл. При каждом изменении каталога, связанного с компонентом, необходимо пересчитать затраты на файлы установки, управляемые этим компонентом. Например, поскольку изменение каталога может также означать изменение тома, необходимо пересчитать размеры кластеризованных файлов. Кроме того, необходимо проверить новый каталог, чтобы определить, следует ли учитывать существующие файлы, которые могут быть перезаписаны.
После вызова действия CostInitialize необходимо вызвать действие FileCost . Действие CostInitialize инициализирует внутренние подпрограммы установщика, которые динамически вычисляют затраты на диск, связанные со стандартными действиями по установке. На этом этапе никакие другие динамические расчеты затрат не выполняются.
Далее необходимо вызвать действие CostFinalize . Это действие завершает все вычисления затрат и делает данные о затратах доступными через таблицу Компонент .
После завершения выполнения действия CostFinalize таблица Компонентов полностью инициализируется, и при необходимости можно инициировать последовательность диалоговых окон пользовательского интерфейса, содержащую элемент управления SelectionTree . Диалоговые окна пользовательского интерфейса могут предложить пользователю изменить состояние выбора или целевой каталог любого компонента в таблице компонентов . Процесс аналогичен при изменении состояния выбора компонента; Однако в этом случае пересчитывается только динамическая стоимость измененного компонента.
После завершения выбора компонентов в пользовательском интерфейсе следует вызвать действие InstallValidate . Это действие проверяет, что все тома, к которым относится стоимость, имеют достаточно места для установки.