Funzione MsiGetFeatureCostA (msiquery.h)
La funzione MsiGetFeatureCost restituisce lo spazio su disco richiesto da una funzionalità e dalle relative caratteristiche 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, MsiOpenPackageExo 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ò essere uno dei valori seguenti.
[in] iState
Specifica lo stato di installazione. Questo parametro può essere uno dei valori seguenti.
[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:
Osservazioni
Vedere Chiamata di funzioni di database da programmi.
Con la funzione msiGetFeatureCost
Il valore MSICOSTTREE_CHILDREN indica la quantità totale di spazio su disco (in unità di 512 byte) richiesta 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) richiesta dalla funzionalità specificata e dalle relative funzionalità padre (fino alla radice della tabella delle funzionalità ). Per ogni funzionalità, il costo totale è costituito dai costi del disco attribuiti a ogni componente collegato alla funzionalità.
msiGetFeatureCost dipende da diverse altre funzioni per avere esito positivo. L'esempio seguente illustra l'ordine in cui devono essere chiamate queste funzioni:
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 una 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 non riesce, è possibile ottenere informazioni estese sull'errore 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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
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 | Finestre |
intestazione |
msiquery.h |
libreria |
Msi.lib |
dll | Msi.dll |
Vedere anche
Funzioni di selezione del programma di installazione
passaggio di Null come argomento delle funzioni di Windows Installer