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.
[in] iState
Specifica lo stato di installazione. Questo parametro può avere 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:
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