msiDatabaseGenerateTransformA 函式 (msiquery.h)
MsiDatabaseGenerateTransform函式會產生兩個資料庫之間差異的轉換檔案。 轉換是記錄對資料庫的變更而不改變原始資料庫的方式。 您也可以使用 MsiDatabaseGenerateTransform 來測試兩個資料庫是否相同,而不需建立轉換。
語法
UINT MsiDatabaseGenerateTransformA(
[in] MSIHANDLE hDatabase,
[in] MSIHANDLE hDatabaseReference,
[in] LPCSTR szTransformFile,
[in] int iReserved1,
[in] int iReserved2
);
參數
[in] hDatabase
從 MsiOpenDatabase 取得的資料庫控制碼,其中包含變更。
[in] hDatabaseReference
從不包含變更的 MsiOpenDatabase 取得之資料庫的控制碼。
[in] szTransformFile
以 Null 結尾的字串,指定所產生之轉換檔的名稱。 此參數可以是 null。 如果 szTransformFile 為 null,您可以使用 MsiDatabaseGenerateTransform 來測試兩個資料庫是否相同,而不需建立轉換。 如果資料庫相同,函式會傳回ERROR_NO_DATA。 如果資料庫不同,函式會傳回 NOERROR。
[in] iReserved1
這是保留的引數,必須設定為 0。
[in] iReserved2
這是保留的引數,必須設定為 0。
傳回值
MsiDatabaseGenerateTransform函式會傳回下列其中一個值:
備註
若要在兩個資料庫之間產生差異檔案,請使用 MsiDatabaseGenerateTransform 函式。 轉換包含插入和刪除資料行和資料列的相關資訊。 驗證旗標會儲存在轉換檔案的摘要資訊資料流程中。
對於存在於這兩個資料庫中的資料表,允許的兩個架構之間唯一的差異是將資料行加入參考資料表結尾。 您無法將主鍵資料行加入資料表,或變更基表中所定義現有資料行的順序或名稱或資料行定義。 換句話說,如果兩個數據表都不包含資料和資料行,則產生的資料表與基表相同。
因為轉換的清單分隔符號、來源和修補程式是分號,所以不應該將此字元用於檔案名或路徑。
此函式不會產生摘要資訊資料流程。 使用 MsiCreateTransformSummaryInfo 建立現有轉換的資料流程。
如果 szTransformFile 為 null,您可以測試兩個資料庫是否相同,而不需建立轉換。 如果資料庫相同,則會傳回ERROR_NO_DATA,如果發現差異,則會傳回 NOERROR。
無法從自訂動作呼叫此函式。 從自訂動作呼叫此函式會導致函式失敗。
如果函式失敗,您可以使用 MsiGetLastErrorRecord取得擴充錯誤資訊。
注意
msiquery.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiDatabaseGenerateTransform 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
需求
最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer |
目標平台 | Windows |
標頭 | msiquery.h |
程式庫 | Msi.lib |
Dll | Msi.dll |
另請參閱
意見反應
提交並檢視相關的意見反應