2012-09-13 51 views
1

Windows文檔指出MsiVerifyPackage函數驗證文件是安裝包。這裏驗證了多少?如果內容文件中的一個字節被損壞/不正確,這會被捕獲嗎?或者它只是檢查MSI數據是否可讀?MsiVerifyPackage WinAPI函數用於驗證MSI的功能是什麼?

該函數的MSDN頁面是在這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/aa370508(v=vs.85).aspx

+1

此功能不檢查包裝的完整性。我只是試圖用一個十六進制編輯器(從文件中間的某個地方到最後)破壞一個包,並返回'ERROR_SUCCESS',所以它最有可能在文件頭中檢查* something *。 – TLama

+0

如果你把它作爲答案,你會得到一些觀點! –

+0

@StephenHewlett:他們並沒有說什麼它做,只是啥子也沒有:) – Deanna

回答

0

我認爲你缺少API的點。 SDK doco告訴你它的功能:

MsiVerifyPackage函數驗證給定的文件是否爲 安裝包。

但是你真正要問的是「它是做什麼的? API的全部要點是從實現細節中抽象出你。如果沒有訪問源代碼,這個問題是不能回答的。即使那樣,我也不確定應該如何回答,因爲您可能會依賴這種行爲。

順便說一句,什麼是你真正的問題?我懷疑這更多的是好奇心,並且在那裏有一些真正的問題。

+0

個人而言,我懷疑這只是發展過程中把API的調試方法,以驗證該文件實際上的MSI數據庫(複合結構化存儲文件)。他們可能想要一種方法來檢查這一點,而不需要實際打開數據庫並返回句柄。在我16年的編寫安裝程序中,我從來不需要使用這個功能。 –

+0

我的問題是,程序包在多大程度上被驗證?它沒有通過驗證之前會有多少錯誤? –

+0

打開微軟的門票並轉到Windows安裝程序團隊,您可能會得到該問題的答案。否則它是不可知的。 (除非你與微軟有一些共享的源代碼協議,你可以自己去查看。) –

相關問題