Funzione MsiGetFeatureCostA (msiquery.h)

La funzione MsiGetFeatureCost restituisce lo spazio su disco richiesto da una funzionalità e le relative funzionalità figlio e padre selezionate.

Sintassi

UINT MsiGetFeatureCostA(
  [in]  MSIHANDLE    hInstall,
  [in]  LPCSTR       szFeature,
  [in]  MSICOSTTREE  iCostTree,
  [in]  INSTALLSTATE iState,
  [out] LPINT        piCost
);

Parametri

[in] hInstall

Gestire l'installazione fornita a un'azione personalizzata DLL o ottenuta tramite MsiOpenPackage, MsiOpenPackageEx o MsiOpenProduct.

[in] szFeature

Specifica il nome della funzionalità.

[in] iCostTree

Specifica il valore usato dalla funzione per determinare i requisiti di spazio su disco. Questo parametro può avere uno dei valori seguenti.

Valore Significato
MSICOSTTREE_CHILDREN
I figli della funzionalità indicata sono inclusi nel costo.
MSICOSTTREE_PARENTS
Le funzionalità padre della funzionalità indicata sono incluse nel costo.
MSICOSTTREE_SELFONLY
La funzionalità è inclusa solo nel costo.

[in] iState

Specifica lo stato di installazione. Questo parametro può avere uno dei valori seguenti.

Valore Significato
INSTALLSTATE_UNKNOWN
Il prodotto o la funzionalità non viene riconosciuto.
INSTALLSTATE_ABSENT
Il prodotto o la funzionalità vengono disinstallati.
INSTALLSTATE_LOCAL
Il prodotto o la funzionalità vengono installati nell'unità locale.
INSTALLSTATE_SOURCE
Il prodotto o la funzionalità vengono installati per l'esecuzione da origine, CD o rete.
INSTALLSTATE_DEFAULT
Il prodotto o la funzionalità verranno installati per usare il percorso predefinito: locale o origine.

[out] piCost

Riceve i requisiti di spazio su disco in unità di 512 byte. Questo parametro non deve essere null.

Valore restituito

La funzione MsiGetFeatureCost restituisce i valori seguenti:

Commenti

Vedere Chiamata di funzioni di database da programmi.

Con la funzione MsiGetFeatureCost , il valore MSICOSTTREE_SELFONLY indica la quantità totale di spazio su disco (in unità di 512 byte) richieste solo dalla funzionalità specificata. Questo valore restituito non include gli elementi figlio o le funzionalità padre della funzionalità specificata. Questo costo totale è costituito dai costi del disco attribuiti a ogni componente collegato alla funzionalità.

Il valore MSICOSTTREE_CHILDREN indica la quantità totale di spazio su disco (in unità di 512 byte) richieste dalla funzionalità specificata e dai relativi elementi figlio. Per ogni funzionalità, il costo totale è costituito dai costi del disco attribuiti a ogni componente collegato alla funzionalità.

Il valore MSICOSTTREE_PARENTS indica la quantità totale di spazio su disco (in unità di 512 byte) richieste dalla funzionalità specificata e dalle relative funzionalità padre (fino alla radice della tabella Feature). Per ogni funzionalità, il costo totale è costituito dai costi del disco attribuiti a ogni componente collegato alla funzionalità.

MsiGetFeatureCost dipende da diverse altre funzioni. Nell'esempio seguente viene illustrato l'ordine in cui queste funzioni devono essere chiamate:

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

Il processo per eseguire query sul costo delle funzionalità pianificate per la rimozione è leggermente diverso:

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

Se la funzione ha esito negativo, è possibile ottenere informazioni di errore estese usando MsiGetLastErrorRecord.

Nota

L'intestazione msiquery.h definisce MsiGetFeatureCost come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

   
Client minimo supportato Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP
Piattaforma di destinazione Windows
Intestazione msiquery.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

Funzioni di selezione del programma di installazione

Passaggio di Null come argomento delle funzioni di Windows Installer