2012-09-24 66 views
0

我們有一個CustomTable,它在創建時添加到我們的msi中。此自定義表格包含我們的部署軟件在將msi上傳到部署服務器時讀取的一些二進制數據(xml文件)。要包含在補丁msp文件中的自定義表

我們現在需要支持msp文件的部署。這意味着如果用戶將msp文件上傳到我們的部署服務器,我們的軟件仍應能夠讀取我們的CustomTable中的二進制數據。然而,我一直無法找到一種方法來確保我們創建的msp文件包含相同的CustomTable。

我知道msp包含更新的xml,因爲我使用ORCA來查看更新的表和文件。不幸的是,我似乎無法以編程方式從我們的CustomTable中讀取數據,因爲它沒有(顯然)在補丁中存在。有誰知道從msp文件訪問CustomTable的方法嗎?

謝謝 - 如果需要澄清,請告訴我!

回答

0

好的,所以最後有一個解決我的問題。

由於我們沒有原始msi,因此我們可以在臨時目錄中創建一個空msi,然後使用ApplyTransform將msp應用於此。提供我們創建的預期表格,並填充虛擬數據(幸運的是,我們事先知道該表格中預計有哪些行),在我們的虛擬msi頂部應用修補程序的過程允許我們成功查詢_Storages表格並訪問更新的流包含新的xml。這可以在我們的msp上傳過程中進行處理。

不漂亮,但它的作品。

0

補丁(msp)應該只包含對以前MSI軟件包的更改。如果您沒有在MSI軟件包的較新版本中更改自定義表格,則該修補程序中不會提及它。這是預料之中的。

應用修補程序時,它會更改最初的MSI軟件包(實際上會修補它)並運行重新安裝。這意味着,如果讀取自定義表的自定義操作未明確計劃爲不在重新安裝時運行,那麼它將運行並找到自定義表。

+0

感謝您的回覆 - 這很好地突出了我們的問題 - 自定義表格不會被自定義操作讀取,我們也不會在修補程序正在執行/應用時嘗試讀取自定義表格中的數據。當補丁上傳到我們的部署服務器時,我們嘗試讀取這些信息 - 當我們只處理msi時,這很好地工作,但現在我們需要將此擴展到與msp一起工作 –