Condividi tramite


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.

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ò essere uno dei valori seguenti.

Valore Significato
INSTALLSTATE_UNKNOWN
Il prodotto o la funzionalità non è riconosciuto.
INSTALLSTATE_ABSENT
Il prodotto o la funzionalità viene disinstallato.
INSTALLSTATE_LOCAL
Il prodotto o la funzionalità viene installato nell'unità locale.
INSTALLSTATE_SOURCE
Il prodotto o la funzionalità viene installato per l'esecuzione dall'origine, dal CD o dalla rete.
INSTALLSTATE_DEFAULT
Il prodotto o la funzionalità verranno installati per usare il percorso predefinito: locale o di 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:

Osservazioni

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) richiesta 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) 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