2014-10-28 38 views
0

我正在創建一個修補程序,用於更新我在WiX中構建的MSI。我有一個組件只有一個sqlupdatescript,它可以處理我所有的數據庫更改。Wix組件在修補時不會更新

當我需要更新我的數據庫時,我在該組件中添加了另一個sqlscript。問題是,如果我創建的補丁只在該組件中添加了sqlscript,補丁將不會執行任何操作。如果我在文件中進行更改(在同一功能中),sqlscript也會運行。

這是WiX的預期行爲嗎?

回答

0

Windows Installer通過標記爲KeyPath的資源更改來檢測更改。例如,它可以是文件或註冊表項。我想你的組件包含一個單獨的文件,這會自動使它成爲關鍵路徑。因此,當您僅更改腳本時,該文件不會更改,並且Windows Installer不知道某些內容已更改。否則,它會正確檢測到更改並應用修補程序。

+0

事實上,我的組件根本不包含任何文件。只有sqlscripts。你的意思是用「keyfile」標記它會使wix看到改變嗎?或者我必須添加一個僞文件,每次我只想運行我的腳本時都會更新它? – pezmannen 2014-10-28 13:15:05

+0

如果它不是一個關鍵路徑項目,那麼是的,它不會被檢測爲已更改,這就是爲什麼最佳實踐是讓每個組件都有一個資源,標記爲關鍵。更改不是關鍵路徑的腳本不會被檢測爲已更改的內容。修改修補程序中的關鍵路徑關係是不明智的,因此在進行重大升級之前不要更改它。 – PhilDW 2014-10-29 16:05:31