Partager via


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.

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é uniquement est incluse dans le coût.

[in] iState

Spécifie l’état d’installation. Ce paramètre peut prendre les 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 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