Fungsi MsiDetermineApplicablePatchesA (msi.h)

Fungsi MsiDetermineApplicablePatches mengambil sekumpulan file patch, file XML, dan blob XML dan menentukan patch mana yang berlaku untuk paket Pemasang Windows tertentu dan dalam urutan apa. Fungsi ini dapat mempertanyakan patch yang digantikan atau usang. Fungsi ini tidak mempertimbangan produk atau patch yang diinstal pada sistem yang tidak ditentukan dalam set.

Sintaks

UINT MsiDetermineApplicablePatchesA(
  [in] LPCSTR                 szProductPackagePath,
  [in] DWORD                  cPatchInfo,
  [in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Parameter

[in] szProductPackagePath

Jalur lengkap ke file .msi. Fungsi menentukan patch yang berlaku untuk paket ini dan dalam urutan apa.

[in] cPatchInfo

Jumlah patch dalam array. Harus lebih besar dari nol.

[in] pPatchInfo

Penunjuk ke array struktur MSIPATCHSEQUENCEINFO .

Nilai kembali

Fungsi MsiDetermineApplicablePatches mengembalikan nilai berikut.

Nilai Makna
ERROR_FUNCTION_FAILED
Fungsi gagal dengan cara yang tidak tercakup dalam kode kesalahan lainnya.
ERROR_INVALID_PARAMETER
Argumen tidak valid.
ERROR_PATCH_NO_SEQUENCE
Tidak ada urutan yang valid yang dapat ditemukan untuk kumpulan patch.
ERROR_SUCCESS
Patch berhasil diurutkan.
ERROR_FILE_NOT_FOUND
File .msi tidak ditemukan.
ERROR_PATH_NOT_FOUND
Jalur ke file .msi tidak ditemukan.
ERROR_INVALID_PATCH_XML
Data patch XML tidak valid.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
Paket penginstalan yang direferensikan oleh jalur tidak dapat dibuka.
ERROR_CALL_NOT_IMPLEMENTED
Kesalahan ini dapat dikembalikan jika fungsi dipanggil dari tindakan kustom atau jika MSXML 3.0 tidak diinstal.

Keterangan

Jika fungsi ini dipanggil dari tindakan kustom, fungsi gagal dan mengembalikan ERROR_CALL_NOT_IMPLEMENTED. Fungsi ini memerlukan MSXML versi 3.0 untuk memproses XML dan mengembalikan ERROR_CALL_NOT_IMPLEMENTED jika MSXML 3.0 tidak diinstal.

Fungsi MsiDetermineApplicablePatches menetapkan anggota uStatus dan dwOrder dari setiap struktur MSIPATCHSEQUENCEINFO yang ditunjukkan oleh pPatchInfo. Setiap struktur berisi informasi tentang patch tertentu.

Jika fungsi berhasil, struktur MSIPATCHSEQUENCEINFO dari setiap patch yang dapat diterapkan ke produk mengembalikan dengan uStatus ERROR_SUCCESS dan dwOrder lebih besar dari atau sama dengan nol. Nilai dwOrder yang lebih besar dari atau sama dengan nol menunjukkan urutan aplikasi terbaik untuk patch yang dimulai dengan nol.

Jika fungsi berhasil, patch yang dikecualikan dari urutan patching terbaik mengembalikan struktur MSIPATCHSEQUENCEINFO dengan dwOrder yang sama dengan -1. Dalam kasus ini, bidang uStatus ERROR_SUCCESS menunjukkan patch yang usang atau digantikan untuk produk. Bidang uStatus ERROR_PATCH_TARGET_NOT_FOUND menunjukkan patch yang tidak dapat diterapkan ke produk.

Jika fungsi gagal, struktur MSIPATCHSEQUENCEINFO untuk setiap patch mengembalikan dwOrder yang sama dengan -1. Dalam hal ini, bidang uStatus dapat berisi kesalahan dengan informasi selengkapnya tentang patch individual. Misalnya, ERROR_PATCH_NO_SEQUENCE dikembalikan untuk patch yang memiliki informasi urutan melingkar.

Catatan

Header msi.h mendefinisikan MsiDetermineApplicablePatches sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor 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 3.0 atau yang lebih baru pada Windows Server 2003 atau Windows XP. Lihat Persyaratan Run-Time Penginstal Windows untuk informasi tentang paket layanan Windows minimum yang diperlukan oleh versi Pemasang Windows.
Target Platform Windows
Header msi.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

MsiDeterminePatchSequence

Tidak Didukung di Windows Installer 2.0 dan yang lebih lama

ProductCode