Bagikan melalui


Fungsi MsiGetFeatureCostA (msiquery.h)

Fungsi MsiGetFeatureCost mengembalikan ruang disk yang diperlukan oleh fitur dan fitur turunan dan induk yang dipilih.

Sintaks

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

Parameter

[in] hInstall

Tangani penginstalan yang disediakan untuk tindakan kustom DLL atau diperoleh melalui MsiOpenPackage, MsiOpenPackageEx, atau MsiOpenProduct.

[in] szFeature

Menentukan nama fitur.

[in] iCostTree

Menentukan nilai yang digunakan fungsi untuk menentukan persyaratan ruang disk. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
MSICOSTTREE_CHILDREN
Anak-anak dari fitur yang ditunjukkan termasuk dalam biaya.
MSICOSTTREE_PARENTS
Fitur induk dari fitur yang ditunjukkan disertakan dalam biaya.
MSICOSTTREE_SELFONLY
Fitur ini hanya disertakan dalam biaya.

[in] iState

Menentukan status penginstalan. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
INSTALLSTATE_UNKNOWN
Produk atau fitur tidak dikenali.
INSTALLSTATE_ABSENT
Produk atau fitur dihapus instalannya.
INSTALLSTATE_LOCAL
Produk atau fitur diinstal pada drive lokal.
INSTALLSTATE_SOURCE
Produk atau fitur diinstal untuk dijalankan dari sumber, CD, atau jaringan.
INSTALLSTATE_DEFAULT
Produk atau fitur akan diinstal untuk menggunakan lokasi default: lokal atau sumber.

[out] piCost

Menerima persyaratan ruang disk dalam satuan 512 byte. Parameter ini tidak boleh null.

Mengembalikan nilai

Fungsi MsiGetFeatureCost mengembalikan nilai berikut:

Keterangan

Lihat Memanggil Fungsi Database Dari Program.

Dengan fungsi MsiGetFeatureCost , nilai MSICOSTTREE_SELFONLY menunjukkan jumlah total ruang disk (dalam unit 512 byte) yang diperlukan oleh fitur yang ditentukan saja. Nilai yang dikembalikan ini tidak termasuk turunan atau fitur induk dari fitur yang ditentukan. Total biaya ini terdiri dari biaya disk yang diatribusikan ke setiap komponen yang ditautkan ke fitur tersebut.

Nilai MSICOSTTREE_CHILDREN menunjukkan jumlah total ruang disk (dalam unit 512 byte) yang diperlukan oleh fitur yang ditentukan dan turunannya. Untuk setiap fitur, total biaya terdiri dari biaya disk yang dikaitkan dengan setiap komponen yang ditautkan ke fitur tersebut.

Nilai MSICOSTTREE_PARENTS menunjukkan jumlah total ruang disk (dalam unit 512 byte) yang diperlukan oleh fitur yang ditentukan dan fitur induknya (hingga akar tabel Fitur). Untuk setiap fitur, total biaya terdiri dari biaya disk yang dikaitkan dengan setiap komponen yang ditautkan ke fitur tersebut.

MsiGetFeatureCost bergantung pada beberapa fungsi lain agar berhasil. Contoh berikut menunjukkan urutan di mana fungsi-fungsi ini harus dipanggil:

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

Proses untuk mengkueri biaya fitur yang dijadwalkan untuk dihapus sedikit berbeda:

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

Jika fungsi gagal, Anda dapat memperoleh informasi kesalahan yang diperluas dengan menggunakan MsiGetLastErrorRecord.

Catatan

Header msiquery.h mendefinisikan MsiGetFeatureCost sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosektor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

   
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Windows Installer pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Fungsi Pemilihan Alat Penginstal

Meneruskan Null sebagai Argumen Fungsi Pemasang Windows