MsiGetFeatureCostA, fonction (msiquery.h)
La fonction MsiGetFeatureCost retourne l’espace disque requis par une fonctionnalité et ses enfants et fonctionnalités parentes sélectionnées.
Syntaxe
UINT MsiGetFeatureCostA(
[in] MSIHANDLE hInstall,
[in] LPCSTR 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, MsiOpenPackageEx ou MsiOpenProduct.
[in] szFeature
Spécifie le nom de la fonctionnalité.
[in] iCostTree
Spécifie la valeur que la fonction utilise pour déterminer les besoins en espace disque. Ce paramètre peut prendre les valeurs suivantes.
[in] iState
Spécifie l’état d’installation. Ce paramètre peut prendre les valeurs suivantes.
[out] piCost
Reçoit l’espace disque requis en unités de 512 octets. Ce paramètre ne doit pas être null.
Valeur retournée
La fonction MsiGetFeatureCost retourne les valeurs suivantes :
Notes
Consultez Appel 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 composé 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 Fonctionnalité). Pour chaque fonctionnalité, le coût total est composé 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 pour être supprimées 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.
Notes
L’en-tête msiquery.h définit MsiGetFeatureCost en tant qu’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. La combinaison 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.
Spécifications
Client minimal 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 |
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