Condividi tramite


Funzione MsiDeterminePatchSequenceA (msi.h)

La funzione MsiDeterminePatchSequence accetta un set di file patch, file XML e BLOB XML e determina la sequenza di applicazione migliore per le patch in un prodotto installato specificato. Questa funzione rappresenta le patch già applicate al prodotto e gli account per patch obsolete e sostituite.

Sintassi

UINT MsiDeterminePatchSequenceA(
  [in]           LPCSTR                 szProductCode,
  [in, optional] LPCSTR                 szUserSid,
  [in]           MSIINSTALLCONTEXT      dwContext,
  [in]           DWORD                  cPatchInfo,
  [in]           PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Parametri

[in] szProductCode

Prodotto che rappresenta la destinazione per il set di patch. Il valore deve essere il GUID ProductCode per il prodotto.

[in, optional] szUserSid

Stringa con terminazione Null che specifica un SID (Security Identifier) di un utente. Questo parametro limita il contesto dell'enumerazione per questo account utente. Questo parametro non può essere rappresentato dalle stringhe SID speciali "S-1-1-0" (tutti) o "S-1-5-18" (sistema locale). Per il contesto del computer dwContext è impostato su MSIINSTALLCONTEXT_MACHINE e szUserSid deve essere NULL. Per il contesto utente corrente szUserSid può essere null e dwContext può essere impostato su MSIINSTALLCONTEXT_USERMANAGED o MSIINSTALLCONTEXT_USERUNMANAGED.

[in] dwContext

Limita l'enumerazione a un contesto per utente non gestito, per utente gestito o per computer. Questo parametro può essere uno dei valori seguenti.

Tipo di contesto Significato
MSIINSTALLCONTEXT_USERMANAGED
Le patch vengono considerate per tutte le installazioni gestite dall'utente del prodotto per l'utente specificato da szUserSid. Uno szUserSid null con questo contesto indica l'utente corrente.
MSIINSTALLCONTEXT_USERUNMANAGED
Le patch vengono considerate per tutte le installazioni non gestite per utente per l'utente specificato da szUserSid. Uno szUserSid null con questo contesto indica l'utente corrente.
MSIINSTALLCONTEXT_MACHINE
Le patch sono considerate per l'installazione per computer. Quando dwContext è impostato su MSIINSTALLCONTEXT_MACHINE il parametro szUserSid deve essere Null.

[in] cPatchInfo

Numero di patch nella matrice.

[in] pPatchInfo

Puntatore a una matrice di strutture MSIPATCHSEQUENCEINFO .

Valore restituito

La funzione MsiDeterminePatchSequence restituisce i valori seguenti.

Valore Significato
ERROR_FUNCTION_FAILED
La funzione non è riuscita in modo non coperto negli altri codici di errore.
ERROR_INVALID_PARAMETER
Un argomento non è valido.
ERROR_PATCH_NO_SEQUENCE
Non è possibile trovare alcuna sequenza valida per il set di patch.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
Impossibile aprire un pacchetto di installazione a cui fa riferimento il percorso.
ERROR_SUCCESS
Le patch sono state ordinate correttamente.
ERROR_FILE_NOT_FOUND
Impossibile trovare il file .msi.
ERROR_PATH_NOT_FOUND
Impossibile trovare il percorso del file di .msi.
ERROR_INVALID_PATCH_XML
I dati della patch XML non sono validi.
ERROR_INSTALL_PACKAGE_INVALID
Il pacchetto di installazione non è valido.
ERROR_ACCESS_DENIED
Un utente che non è un amministratore ha tentato di chiamare la funzione con un contesto di un utente diverso.
ERROR_BAD_CONFIGURATION
I dati di configurazione per una patch o un prodotto registrato non sono validi.
ERROR_UNKNOWN_PRODUCT
Il GUID ProductCode specificato non è registrato.
ERROR_FUNCTION_NOT_CALLED
Windows Installer versione 3.0 è necessario per determinare la sequenza di patch migliore. La funzione è stata chiamata con szProductCode non ancora installata con Windows Installer versione 3.0.
ERROR_CALL_NOT_IMPLEMENTED
Questo errore può essere restituito se la funzione è stata chiamata da un'azione personalizzata o se MSXML 3.0 non è installato.
ERROR_UNKNOWN_PATCH
La patch specificata è sconosciuta.

Commenti

Gli utenti che non dispongono di privilegi di amministratore possono chiamare questa funzione solo nel proprio contesto o computer. Gli utenti amministratori possono chiamarlo per altri utenti.

Se questa funzione viene chiamata da un'azione personalizzata ha esito negativo e restituisce ERROR_CALL_NOT_IMPLEMENTED. La funzione richiede che MSXML versione 3.0 elabori XML e restituisca ERROR_CALL_NOT_IMPLEMENTED se MSXML 3.0 non è installato.

La funzione MsiDeterminePatchSequence imposta i membri uStatus e dwOrder di ogni struttura MSIPATCHSEQUENCEINFO a cui punta 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 valore 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 applicazione migliore per le patch a partire da zero.

Se la funzione ha esito positivo, le patch escluse dalla sequenza di applicazione di patch migliore restituiscono una struttura MSIPATCHSEQUENCEINFO con 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 MsiDeterminePatchSequence 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

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. Per informazioni sul Service Pack minimo di Windows richiesto da una versione di Windows Installer, vedere Windows Installer Run-Time Requirements .See the Windows Installer requirements for information about the minimum Windows Service Pack that is required by a Windows Installer version.
Piattaforma di destinazione Windows
Intestazione msi.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

Non supportato in Windows Installer 2.0 e versioni precedenti

ProductCode