Функция MsiEnumComponentCostsA (msiquery.h)
Функция MsiEnumComponentCosts перечисляет место на диске, необходимое для установки компонента. Эти сведения необходимы для отображения затрат на дисковое пространство, необходимое для всех дисков в пользовательском интерфейсе. Возвращаемые затраты на дисковое пространство выражаются в кратных 512 байтах.
MsiEnumComponentCosts следует запускать только после завершения установщиком определения стоимости файла и действия CostFinalize. Дополнительные сведения см. в разделе Стоимость файлов.
Синтаксис
UINT MsiEnumComponentCostsA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szComponent,
[in] DWORD dwIndex,
[in] INSTALLSTATE iState,
[out] LPSTR szDriveBuf,
[in, out] LPDWORD pcchDriveBuf,
[out] LPINT piCost,
[out] LPINT piTempCost
);
Параметры
[in] hInstall
Дескриптор установки, предоставленной пользовательскому действию DLL или полученной через MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.
[in] szComponent
Строка с пустым завершением, указывающая имя компонента, указанное в столбце Компонент таблицы Компонент. Этот параметр может быть нулевым. Если szComponent имеет значение NULL или пустую строку, MsiEnumComponentCosts перечисляет общее дисковое пространство для каждого диска, используемого во время установки. В этом случае iState игнорируется. Затраты на установщик включают в себя расходы на кэширование базы данных в защищенной папке, а также затраты на создание сценария установки. Обратите внимание, что общий объем дискового пространства, использованного во время установки, может быть больше, чем пространство, используемое после установки компонента.
[in] dwIndex
Индекс дисков на основе 0. Этот параметр должен быть равен нулю для первого вызова функции MsiEnumComponentCosts , а затем увеличиваться для последующих вызовов.
[in] iState
Запрошенное состояние компонента для перечисления. Если szComponent передается как NULL или пустая строка, установщик игнорирует параметр iState .
[out] szDriveBuf
Буфер, содержащий имя диска, включая признак конца null. Это пустая строка в случае ошибки.
[in, out] pcchDriveBuf
Указатель на переменную, указывающую размер (в TCHAR) буфера, на который указывает параметр lpDriveBuf . Этот размер должен включать завершающий символ NULL. Если предоставленный буфер слишком мал, переменная, на которую указывает 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 |
Целевая платформа | Windows |
Header | msiquery.h |
Библиотека | Msi.lib |
DLL | Msi.dll |