MsiDatabaseGenerateTransformA, fonction (msiquery.h)
La fonction MsiDatabaseGenerateTransform génère un fichier de transformation de différences entre deux bases de données. Une transformation est un moyen d’enregistrer les modifications apportées à une base de données sans modifier la base de données d’origine. Vous pouvez également utiliser MsiDatabaseGenerateTransform pour tester si deux bases de données sont identiques sans créer de transformation.
Syntaxe
UINT MsiDatabaseGenerateTransformA(
[in] MSIHANDLE hDatabase,
[in] MSIHANDLE hDatabaseReference,
[in] LPCSTR szTransformFile,
[in] int iReserved1,
[in] int iReserved2
);
Paramètres
[in] hDatabase
Gérez la base de données obtenue à partir de MsiOpenDatabase qui inclut les modifications.
[in] hDatabaseReference
Gérez la base de données obtenue à partir de MsiOpenDatabase qui n’inclut pas les modifications.
[in] szTransformFile
Chaîne terminée par null qui spécifie le nom du fichier de transformation en cours de génération. Ce paramètre peut être null. Si szTransformFile est null, vous pouvez utiliser MsiDatabaseGenerateTransform pour tester si deux bases de données sont identiques sans créer de transformation. Si les bases de données sont identiques, la fonction retourne ERROR_NO_DATA. Si les bases de données sont différentes, la fonction retourne NOERROR.
[in] iReserved1
Il s’agit d’un argument réservé et doit être défini sur 0.
[in] iReserved2
Il s’agit d’un argument réservé et doit être défini sur 0.
Valeur de retour
La fonction msiDatabaseGenerateTransform
Remarques
Pour générer un fichier de différence entre deux bases de données, utilisez la fonction MsiDatabaseGenerateTransform. Une transformation contient des informations sur l’insertion et la suppression de colonnes et de lignes. Les indicateurs de validation sont stockés dans le flux d’informations récapitulative du fichier de transformation.
Pour les tables qui existent dans les deux bases de données, la seule différence entre les deux schémas autorisés est l’ajout de colonnes à la fin de la table de référence. Vous ne pouvez pas ajouter de colonnes clés primaires à une table ou modifier l’ordre ou les noms ou définitions de colonnes des colonnes existantes telles que définies dans la table de base. En d’autres termes, si aucune table ne contient de données et de colonnes sont supprimées de la table de référence, la table résultante est identique à la table de base.
Étant donné que le délimiteur de liste pour les transformations, les sources et les correctifs est un point-virgule, ce caractère ne doit pas être utilisé pour les noms de fichiers ou les chemins d’accès.
Cette fonction ne génère pas de flux d’informations récapitulatives. Utilisez MsiCreateTransformSummaryInfo pour créer le flux d’une transformation existante.
Si szTransformFile a la valeur Null, vous pouvez tester si deux bases de données sont identiques sans créer de transformation. Si les bases de données sont identiques, ERROR_NO_DATA est retournée, NOERROR est retourné si des différences sont trouvées.
Cette fonction ne peut pas être appelée à partir d’actions personnalisées. Un appel à cette fonction à partir d’une action personnalisée provoque l’échec de la fonction.
Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.
Note
L’en-tête msiquery.h définit MsiDatabaseGenerateTransform comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP |
plateforme cible | Windows |
d’en-tête | msiquery.h |
bibliothèque | Msi.lib |
DLL | Msi.dll |