Condividi tramite


Funzione MsiDatabaseGenerateTransformW (msiquery.h)

La funzione MsiDatabaseGenerateTransform genera un file di trasformazione delle differenze tra due database. Una trasformazione è un modo per registrare le modifiche apportate a un database senza modificare il database originale. È anche possibile usare MsiDatabaseGenerateTransform per verificare se due database sono identici senza creare una trasformazione.

Sintassi

UINT MsiDatabaseGenerateTransformW(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCWSTR   szTransformFile,
  [in] int       iReserved1,
  [in] int       iReserved2
);

Parametri

[in] hDatabase

Handle per il database ottenuto da MsiOpenDatabase che include le modifiche.

[in] hDatabaseReference

Handle per il database ottenuto da MsiOpenDatabase che non include le modifiche.

[in] szTransformFile

Stringa con terminazione Null che specifica il nome del file di trasformazione generato. Questo parametro può essere Null. Se szTransformFile è null, è possibile usare MsiDatabaseGenerateTransform per verificare se due database sono identici senza creare una trasformazione. Se i database sono identici, la funzione restituisce ERROR_NO_DATA. Se i database sono diversi, la funzione restituisce NOERROR.

[in] iReserved1

Si tratta di un argomento riservato e deve essere impostato su 0.

[in] iReserved2

Si tratta di un argomento riservato e deve essere impostato su 0.

Valore restituito

La funzione msiDatabaseGenerateTransform restituisce uno dei valori seguenti:

Osservazioni

Per generare un file di differenza tra due database, usare la funzione msiDatabaseGenerateTransform . Una trasformazione contiene informazioni relative all'inserimento e all'eliminazione di colonne e righe. I flag di convalida vengono archiviati nel flusso di informazioni di riepilogo del file di trasformazione.

Per le tabelle presenti in entrambi i database, l'unica differenza tra i due schemi consentiti è l'aggiunta di colonne alla fine della tabella di riferimento. Non è possibile aggiungere colonne chiave primaria a una tabella o modificare l'ordine o i nomi o le definizioni di colonna delle colonne esistenti, come definito nella tabella di base. In altre parole, se nessuna delle tabelle contiene dati e colonne viene rimossa dalla tabella di riferimento, la tabella risultante è identica alla tabella di base.

Poiché il delimitatore di elenco per trasformazioni, origini e patch è un punto e virgola, questo carattere non deve essere usato per nomi file o percorsi.

Questa funzione non genera un flusso di informazioni di riepilogo. Usare MsiCreateTransformSummaryInfo per creare il flusso per una trasformazione esistente.

Se szTransformFile è Null, è possibile verificare se due database sono identici senza creare una trasformazione. Se i database sono identici, viene restituito ERROR_NO_DATA, se vengono rilevate differenze, viene restituito NOERROR.

Questa funzione non può essere chiamata da azioni personalizzate. Una chiamata a questa funzione da un'azione personalizzata causa l'esito negativo della funzione.

Se la funzione non riesce, è possibile ottenere informazioni estese sull'errore usando MsiGetLastErrorRecord.

Nota

L'intestazione msiquery.h definisce MsiDatabaseGenerateTransform 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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
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 in Windows Server 2003 o Windows XP
piattaforma di destinazione Finestre
intestazione msiquery.h
libreria Msi.lib
dll Msi.dll

Vedere anche

funzioni di gestione del database

trasformazioni di database