Funzione MsiDatabaseGenerateTransformA (msiquery.h)

La funzione MsiDatabaseGenerateTransform genera un file di trasformazione di 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 MsiDatabaseGenerateTransformA(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCSTR    szTransformFile,
  [in] int       iReserved1,
  [in] int       iReserved2
);

Parametri

[in] hDatabase

Gestire il database ottenuto da MsiOpenDatabase che include le modifiche.

[in] hDatabaseReference

Gestire 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:

Commenti

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 elenco per le trasformazioni, le origini e le patch è un punto e virgola, questo carattere non deve essere usato per i nomi file o i 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, viene restituito NOERROR se vengono trovate differenze.

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 ha esito negativo, è possibile ottenere informazioni di errore estese 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 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

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 Windows
Intestazione msiquery.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

Funzioni di gestione del database

Trasformazioni del database