MsiGetFeatureCostW, fonction (msiquery.h)
La fonction MsiGetFeatureCost retourne l’espace disque requis par une fonctionnalité et ses enfants et ses fonctionnalités parentes sélectionnées.
Syntaxe
UINT MsiGetFeatureCostW(
[in] MSIHANDLE hInstall,
[in] LPCWSTR szFeature,
[in] MSICOSTTREE iCostTree,
[in] INSTALLSTATE iState,
[out] LPINT piCost
);
Paramètres
[in] hInstall
Gérez l’installation fournie à une action personnalisée DLL ou obtenue via msiOpenPackage, MsiOpenPackageExou MsiOpenProduct.
[in] szFeature
Spécifie le nom de la fonctionnalité.
[in] iCostTree
Spécifie la valeur utilisée par la fonction pour déterminer les besoins en espace disque. Ce paramètre peut être l’une des valeurs suivantes.
[in] iState
Spécifie l’état d’installation. Ce paramètre peut être l’une des valeurs suivantes.
[out] piCost
Reçoit les besoins en espace disque en unités de 512 octets. Ce paramètre ne doit pas être null.
Valeur de retour
La fonction MsiGetFeatureCost retourne les valeurs suivantes :
Remarques
Consultez appels de fonctions de base de données à partir de programmes.
Avec la fonction MsiGetFeatureCost, la valeur MSICOSTTREE_SELFONLY indique la quantité totale d’espace disque (en unités de 512 octets) requise par la fonctionnalité spécifiée uniquement. Cette valeur retournée n’inclut pas les enfants ou les fonctionnalités parentes de la fonctionnalité spécifiée. Ce coût total est constitué des coûts de disque attribués à chaque composant lié à la fonctionnalité.
La valeur MSICOSTTREE_CHILDREN indique la quantité totale d’espace disque (en unités de 512 octets) requise par la fonctionnalité spécifiée et ses enfants. Pour chaque fonctionnalité, le coût total est constitué des coûts de disque attribués à chaque composant lié à la fonctionnalité.
La valeur MSICOSTTREE_PARENTS indique la quantité totale d’espace disque (en unités de 512 octets) requise par la fonctionnalité spécifiée et ses fonctionnalités parentes (jusqu’à la racine de la table de fonctionnalités ). Pour chaque fonctionnalité, le coût total est constitué des coûts de disque attribués à chaque composant lié à la fonctionnalité.
msiGetFeatureCost dépend de plusieurs autres fonctions pour réussir. L’exemple suivant illustre l’ordre dans lequel ces fonctions doivent être appelées :
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
Le processus d’interrogation du coût des fonctionnalités planifiées à supprimer est légèrement différent :
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
Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.
Note
L’en-tête msiquery.h définit MsiGetFeatureCost comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP |
plateforme cible | Windows |
d’en-tête | msiquery.h |
bibliothèque | Msi.lib |
DLL | Msi.dll |
Voir aussi
Fonctions de sélection du programme d’installation
passage de null en tant qu’argument des fonctions Windows Installer