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 |