Fungsi MsiGetFeatureValidStatesA (msiquery.h)

Fungsi MsiGetFeatureValidStates mengembalikan status penginstalan yang valid.

Sintaks

UINT MsiGetFeatureValidStatesA(
  [in]  MSIHANDLE hInstall,
  [in]  LPCSTR    szFeature,
  [out] LPDWORD   lpInstallStates
);

Parameter

[in] hInstall

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

[in] szFeature

Menentukan nama fitur.

[out] lpInstallStates

Menerima lokasi untuk menahan status penginstalan yang valid. Untuk setiap status penginstalan yang valid, alat penginstal mengatur pInstallState ke kombinasi nilai berikut. Parameter ini tidak boleh null.

Nilai Desimal Makna
2
INSTALLSTATE_ADVERTISED
Fitur ini dapat diiklankan.
4
INSTALLSTATE_ABSENT
Fitur ini bisa tidak ada.
8
INSTALLSTATE_LOCAL
Fitur ini dapat diinstal pada drive lokal.
16
INSTALLSTATE_SOURCE
Fitur ini dapat dikonfigurasi untuk dijalankan dari sumber, CD-ROM, atau jaringan.
32
INSTALLSTATE_DEFAULT
Fitur ini dapat dikonfigurasi untuk menggunakan lokasi default: lokal atau sumber.

Nilai kembali

Fungsi MsiGetFeatureValidStates mengembalikan nilai berikut:

Keterangan

Lihat Memanggil Fungsi Database Dari Program.

Fungsi MsiGetFeatureValidStates menentukan validitas status dengan mengkueri semua komponen yang ditautkan ke fitur yang ditentukan tanpa mempertimbangkan status komponen apa pun yang diinstal saat ini.

Status yang valid untuk fitur ditentukan sebagai berikut:

  • Jika fitur tidak berisi komponen, INSTALLSTATE_LOCAL dan INSTALLSTATE_SOURCE adalah status yang valid untuk fitur tersebut.
  • Jika setidaknya satu komponen fitur memiliki atribut msidbComponentAttributesLocalOnly atau msidbComponentAttributesOptional, INSTALLSTATE_LOCAL adalah status yang valid untuk fitur tersebut.
  • Jika setidaknya satu komponen fitur memiliki atribut msidbComponentAttributesSourceOnly atau msidbComponentAttributesOptional, INSTALLSTATE_SOURCE adalah status yang valid untuk fitur tersebut.
  • Jika file komponen milik fitur di-patch atau dari sumber terkompresi, maka INSTALLSTATE_SOURCE tidak disertakan sebagai status yang valid untuk fitur tersebut.
  • INSTALLSTATE_ADVERTISE bukan status yang valid jika fitur melarang iklan (msidbFeatureAttributesDisallowAdvertise) atau fitur tersebut memerlukan dukungan platform untuk iklan (msidbFeatureAttributesNoUnsupportedAdvertise) dan platform tidak mendukungnya.
  • INSTALLSTATE_ABSENT adalah status yang valid untuk fitur jika atributnya tidak menyertakan msidbFeatureAttributesUIDisallowAbsent.
  • Status valid untuk fitur anak yang ditandai untuk mengikuti fitur induk (msidbFeatureAttributesFollowParent) didasarkan pada tindakan fitur induk atau status terinstal.
Setelah memanggil MsiGetFeatureValidStates , pernyataan bersyarat kemudian dapat digunakan untuk menguji status penginstalan fitur yang valid. Misalnya, panggilan berikut ke MsiGetFeatureValidStates mendapatkan status penginstalan Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Jika Feature1 memiliki atribut nilai 0 (mendukung lokal), dan Feature1 memiliki satu komponen dengan atribut nilai 0 (hanya lokal), nilai dwValidStates setelah panggilan adalah 14. Ini menunjukkan bahwa INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT, dan INSTALLSTATE_ADVERTISED adalah status yang valid untuk Feature1. Pernyataan kondisional berikut mengevaluasi ke True jika lokal adalah status yang valid untuk fitur ini.

( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) = = ( 1 << INSTALLSTATE_LOCAL ) )

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

Catatan

Header msiquery.h mendefinisikan MsiGetFeatureValidStates sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praproscessor 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

Persyaratan Nilai
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