Функция MsiGetFeatureCostA (msiquery.h)
Функция MsiGetFeatureCost возвращает дисковое пространство, необходимое компоненту, а также выбранные дочерние и родительские компоненты.
Синтаксис
UINT MsiGetFeatureCostA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szFeature,
[in] MSICOSTTREE iCostTree,
[in] INSTALLSTATE iState,
[out] LPINT piCost
);
Параметры
[in] hInstall
Дескриптор установки, предоставленной пользовательскому действию DLL или полученной через MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.
[in] szFeature
Указывает имя компонента.
[in] iCostTree
Задает значение, которое функция использует для определения требований к месту на диске. Этот параметр может принимать одно из указанных ниже значений.
[in] iState
Указывает состояние установки. Этот параметр может принимать одно из указанных ниже значений.
[out] piCost
Получает требования к месту на диске в единицах по 512 байт. Этот параметр не должен иметь значение null.
Возвращаемое значение
Функция MsiGetFeatureCost возвращает следующие значения:
Комментарии
См. статью Вызов функций базы данных из программ.
При использовании функции MsiGetFeatureCost значение MSICOSTTREE_SELFONLY указывает общий объем дискового пространства (в единицах 512 байт), необходимый только для указанного компонента. Это возвращаемое значение не включает дочерние или родительские признаки указанного компонента. Эта общая стоимость состоит из затрат на диск, связанных с каждым компонентом, связанным с компонентом.
Значение MSICOSTTREE_CHILDREN указывает общий объем дискового пространства (в единицах 512 байт), необходимый для указанного компонента и его дочерних элементов. Для каждого компонента общая стоимость состоит из затрат на диск, которые относятся к каждому компоненту, связанному с компонентом.
Значение MSICOSTTREE_PARENTS указывает общий объем дискового пространства (в единицах 512 байт), необходимый для указанного компонента и его родительских компонентов (вплоть до корня таблицы признаков). Для каждого компонента общая стоимость состоит из затрат на диск, которые относятся к каждому компоненту, связанному с компонентом.
MsiGetFeatureCost зависит от нескольких других функций. В следующем примере показано, в каком порядке должны вызываться эти функции:
MSIHANDLE hInstall; //product handle, must be closed
int iCost; //cost returned by MsiGetFeatureCost
MsiOpenPackage("Path to package....",&hInstall); //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize"); //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall); //close the open product handle
Процесс запроса стоимости компонентов, которые планируется удалить, немного отличается:
MSIHANDLE hInstall; //product handle, must be closed
int iCost; //cost returned by MsiGetFeatureCost
MsiOpenPackage("Path to package....",&hInstall); //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize"); //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiSetFeatureState(hInstall,"FeatureName",INSTALLSTATE_ABSENT); //set the feature's state to "not installed"
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall); //close the open product handle
В случае сбоя функции можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.
Примечание
Заголовок msiquery.h определяет MsiGetFeatureCost в качестве псевдонима, который автоматически выбирает версию 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 |
См. также раздел
Передача null в качестве аргумента функций установщика Windows