Partager via


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.

Valeur Signification
MSICOSTTREE_CHILDREN
Les enfants de la fonctionnalité indiquée sont inclus dans le coût.
MSICOSTTREE_PARENTS
Les fonctionnalités parentes de la fonctionnalité indiquée sont incluses dans le coût.
MSICOSTTREE_SELFONLY
La fonctionnalité est incluse uniquement dans le coût.

[in] iState

Spécifie l’état d’installation. Ce paramètre peut être l’une des valeurs suivantes.

Valeur Signification
INSTALLSTATE_UNKNOWN
Le produit ou la fonctionnalité n’est pas reconnu.
INSTALLSTATE_ABSENT
Le produit ou la fonctionnalité est désinstallé.
INSTALLSTATE_LOCAL
Le produit ou la fonctionnalité est installé sur le lecteur local.
INSTALLSTATE_SOURCE
Le produit ou la fonctionnalité est installé pour s’exécuter à partir de la source, du CD ou du réseau.
INSTALLSTATE_DEFAULT
Le produit ou la fonctionnalité sera installé pour utiliser l’emplacement par défaut : local ou source.

[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