Функция MsiEnumComponentCostsW (msiquery.h)
Функция MsiEnumComponentCosts перечисляет место на диск, необходимое для установки компонента. Эти сведения необходимы для отображения затрат на дисковое пространство, необходимые для всех дисков в пользовательском интерфейсе. Возвращаемые затраты на дисковое пространство выражаются в нескольких 512 байтах.
MsiEnumComponentCosts следует запускать только после завершения затрат на файл установщика и после действия CostFinalize. Дополнительные сведения см. в стоимости файлов.
Синтаксис
UINT MsiEnumComponentCostsW(
[in] MSIHANDLE hInstall,
[in] LPCWSTR szComponent,
[in] DWORD dwIndex,
[in] INSTALLSTATE iState,
[out] LPWSTR szDriveBuf,
[in, out] LPDWORD pcchDriveBuf,
[out] LPINT piCost,
[out] LPINT piTempCost
);
Параметры
[in] hInstall
Дескриптор установки, предоставленного пользовательскому действию DLL или полученному через MsiOpenPackage, MsiOpenPackageExили MsiOpenProduct.
[in] szComponent
Строка, завершающая значение NULL, указывающая имя компонента, как указано в столбце компонента таблицы компонентов . Этот параметр может иметь значение NULL. Если szComponent имеет значение NULL или пустая строка, MsiEnumComponentCosts перечисляет общее дисковое пространство на диск, используемое во время установки. В этом случае iState игнорируется. Затраты установщика включают эти затраты на кэширование базы данных в безопасной папке, а также затраты на создание скрипта установки. Обратите внимание, что общее дисковое пространство, используемое во время установки, может быть больше места, используемого после установки компонента.
[in] dwIndex
Индекс на основе 0 для дисков. Этот параметр должен быть равен нулю для первого вызова функции MsiEnumComponentCosts, а затем увеличивается для последующих вызовов.
[in] iState
Запрошенное состояние компонента для перечисления. Если szComponent передается как null или пустая строка, установщик игнорирует параметр iState.
[out] szDriveBuf
Буфер, содержащий имя диска, включая конечный элемент NULL. Это пустая строка в случае ошибки.
[in, out] pcchDriveBuf
Указатель на переменную, указывающую размер буфера, на который указывает параметр lpDriveBuf. Этот размер должен содержать завершающийся пустой символ. Если предоставленный буфер слишком мал, переменная, на которую указывает pcchDriveBuf содержит количество символов, не включая терминатор NULL.
[out] piCost
Стоимость компонента на диск, выраженная в нескольких 512 байтах. Это значение равно 0, если произошла ошибка. Значение, возвращаемое в piCost, является окончательным дисковым пространством, используемым компонентом после установки. Если szComponent передается как null или пустая строка, установщик задает значение по piCost 0.
[out] piTempCost
Стоимость компонента на диск в течение длительности установки или 0, если произошла ошибка. Значение в *piTempCost представляет временные требования к пространству для длительности установки. Это временное требование к пространству требуется только для длительности установки. Это не влияет на окончательное требование места на диске.
Возвращаемое значение
Возвращаемое значение | Значение |
---|---|
|
Данные конфигурации повреждены. |
|
Недопустимый параметр был передан функции. |
|
Нет больше дисков для возврата. |
|
Было перечислено значение. |
|
Компонент отсутствует. |
|
Затраты не завершены. |
|
Буфер недостаточно велик для имени диска. |
|
Предоставленный дескриптор недопустим или неактивен. |
Замечания
Рекомендуемый метод перечисления затрат на дисковое пространство на диск выглядит следующим образом. Начните с dwIndex с 0 и добавите его по одному после каждого вызова. Продолжайте перечисление, пока MsiEnumComponentCosts возвращает ERROR_SUCCESS.
msiEnumComponentCosts могут вызываться из пользовательских действий.
Общая итоговая стоимость диска для установки — это сумма затрат на все компоненты, а также стоимость установщика Windows (szComponent = null).
Заметка
Заголовок msiquery.h определяет MsiEnumComponentCosts в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP |
целевая платформа | Виндоус |
заголовка | msiquery.h |
библиотеки |
Msi.lib |
DLL | Msi.dll |