Funzione MsiDetermineApplicablePatchesA (msi.h)
La funzione MsiDetermineApplicablePatches accetta un set di file di patch, file XML e BLOB XML e determina quali patch si applicano a un pacchetto di Windows Installer specificato e in quale sequenza. La funzione può essere usata per le patch sostituite o obsolete. Questa funzione non tiene conto di prodotti o patch installati nel sistema che non sono specificati nel set.
Sintassi
UINT MsiDetermineApplicablePatchesA(
[in] LPCSTR szProductPackagePath,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);
Parametri
[in] szProductPackagePath
Percorso completo di un file .msi. La funzione determina le patch applicabili a questo pacchetto e in quale sequenza.
[in] cPatchInfo
Numero di patch nella matrice. Deve essere maggiore di zero.
[in] pPatchInfo
Puntatore a una matrice di strutture MSIPATCHSEQUENCEINFO .
Valore restituito
La funzione MsiDetermineApplicablePatches restituisce i valori seguenti.
Valore | Significato |
---|---|
|
La funzione non è riuscita in modo da non essere coperta negli altri codici di errore. |
|
Un argomento non è valido. |
|
Non è possibile trovare alcuna sequenza valida per il set di patch. |
|
Le patch sono state ordinate correttamente. |
|
Il file .msi non è stato trovato. |
|
Non è stato trovato il percorso del file .msi. |
|
I dati delle patch XML non sono validi. |
|
Impossibile aprire un pacchetto di installazione a cui fa riferimento il percorso. |
|
Questo errore può essere restituito se la funzione è stata chiamata da un'azione personalizzata o se MSXML 3.0 non è installato. |
Commenti
Se questa funzione viene chiamata da un'azione personalizzata ha esito negativo e restituisce ERROR_CALL_NOT_IMPLEMENTED. La funzione richiede msXML versione 3.0 per elaborare XML e restituisce ERROR_CALL_NOT_IMPLEMENTED se MSXML 3.0 non è installato.
La funzione MsiDetermineApplicablePatches imposta i membri uStatus e dwOrder di ogni struttura MSIPATCHSEQUENCEINFO a cui fa riferimento pPatchInfo. Ogni struttura contiene informazioni su una determinata patch.
Se la funzione ha esito positivo, la struttura MSIPATCHSEQUENCEINFO di ogni patch che può essere applicata al prodotto restituisce con un uStatus di ERROR_SUCCESS e un dwOrder maggiore o uguale a zero. I valori di dwOrder maggiori o uguali a zero indicano la sequenza di applicazioni migliore per le patch a partire da zero.
Se la funzione ha esito positivo, le patch escluse dalla sequenza di patch migliore restituiscono una struttura MSIPATCHSEQUENCEINFO con un dwOrder uguale a -1. In questi casi, un campo uStatus di ERROR_SUCCESS indica una patch obsoleta o sostituita per il prodotto. Un campo uStatus di ERROR_PATCH_TARGET_NOT_FOUND indica una patch inapplicabile al prodotto.
Se la funzione ha esito negativo, la struttura MSIPATCHSEQUENCEINFO per ogni patch restituisce un dwOrder uguale a -1. In questo caso, i campi uStatus possono contenere errori con altre informazioni sulle singole patch. Ad esempio, ERROR_PATCH_NO_SEQUENCE viene restituito per le patch con informazioni di sequenziazione circolare.
Nota
L'intestazione msi.h definisce MsiDetermineApplicablePatches 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 3.0 o versione successiva in Windows Server 2003 o Windows XP. Per informazioni sul Service Pack minimo di Windows Richiesto da una versione di Windows Installer, vedere i requisiti di Windows Installer Run-Time. |
Piattaforma di destinazione | Windows |
Intestazione | msi.h |
Libreria | Msi.lib |
DLL | Msi.dll |
Vedi anche
Non supportato in Windows Installer 2.0 e versioni precedenti