2016-01-22 13 views
0

我想創建一個補丁(.msp文件)使用wix,我在哪裏複製一些文件到應用程序的安裝路徑(程序文件)並且還試圖添加註冊表項。
安裝(使用msi)時,它可以正常工作,更新二進制文件。 但是當我嘗試應用修補程序它不起作用,意味着二進制文件沒有得到更新。應用程序和二進制文件沒有得到更新時,應用補丁在試圖添加註冊表項

但是,我觀察到,當我嘗試再次應用該補丁時,二進制文件似乎被更新。
似乎在這裏我通過提供Guuid添加組件。

問題是:爲什麼它適用於全新安裝,但不適用於使用補丁程序? 是否有可能使用補丁(msp)添加新的guuid組件?需要

+0

歡迎的StackOverflow!我重新格式化了你的問題(並修正了一點語法),使它更具可讀性。我不是wix專家,但我想他們需要更多的信息來說明你做了什麼來回答你的問題。 –

+0

你究竟想達到什麼目的?主要是如果您正在對應用程序進行完整升級(例如添加功能),則不應使用修補程序。如果您需要替換之前安裝的一個或多個文件,那麼您可以使用修補程序在先前的msi中更改一口大小。 – ProjectNapalm

回答

1

一些更精確的信息:

「雖然安裝(使用MSI)如預期正常工作,二進制文件更新」。

這是全新安裝還是某種升級?如果是全新安裝,並且安裝會替換較舊的二進制文件,因爲它們的版本較低,那麼這是可以預料的。你只是在現有文件上進行安裝,但如果它們以前是由MSI(你的或任何人)安裝的,那麼你可能沒有正確更新它們。

可以使用補丁添加組件,但規則可能很複雜。修補程序的目的主要是修復現有的組件,而不是添加它們。另外,如果您將某個組件作爲補丁的一部分移除,則該補丁將無法正常工作。您需要了解的主要問題是組件規則,而不是在修補程序或升級中將其破壞。

http://robmensching.com/blog/posts/2003/10/18/component-rules-101/

添加組件或做任何改變您的情況做最安全的事情(除了固定的現有文件等)是一個重大的升級。

要了解更新過程中是否已破壞組件規則(如修補程序),請採用詳細日誌並查找與刪除不受支持的組件相關的SELMGR消息。還設置MSIENFORCEUPGRADECOMPONENTRULES = 1,以便更新將在規則被破壞時失敗。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370093(v=vs.85).aspx

http://robmensching.com/blog/posts/2007/1/4/doing-a-small-update-or-minor-upgrade-in-msi-use/

+0

感謝您的回覆。 「安裝(使用msi)時,它可以正常工作,二進制文件被更新」。在這裏,我的意思是說,當我執行全新安裝時,我得到了預期的結果,我得到複製的新文件並添加了註冊表項。我在應用程序中所做的更改也可以看到。我正在獲取更新的應用程序。但是,當我嘗試使用msp文件應用修補程序時,它不執行這些更改。並沒有看到升級。 – sai

相關問題