Функция 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 |
целевая платформа | Виндоус |
заголовка | msiquery.h |
библиотеки |
Msi.lib |
DLL | Msi.dll |
См. также
Функции выбора установщика
передачи null в качестве аргумента функций установщика Windows