2014-03-04 32 views
0

我正在爲非常大的包創作一個非常小的修補程序,它的唯一目的是更新單個文件並添加四個較小的修補程序。防止自定義操作在修補程序中運行

使用WiX的幫助,指導我能夠生成MSP文件。

然而,一個補丁運行顯然它運行原包裝在重新安裝模式,與所有與它一起去的自定義操作和諸如此類的東西,這不是我想要的。

進一步的研究轉向了MsiPatchMetadata表的OptimizeCA屬性,應用補丁時跳過它允許自定義操作維克斯相當於OptimizeCustomActions。

這聽起來正是我想要的,但不幸的是預期它不工作。原包有一堆的XML配置文件更改自定義操作,並看着它似乎是示數出來的時候它擊中XMLFILE的CA日誌:

MSI (s) (58!74) [14:53:24:928]: PROPERTY CHANGE: Adding ExecXmlFileRollback property. Its value is (stuff deleted) 
MSI (s) (58:74) [14:53:24:928]: Doing action: ExecXmlFileRollback 
Action 14:53:24: ExecXmlFileRollback. 
Action start 14:53:24: ExecXmlFileRollback. 
MSI (s) (58:74) [14:53:24:928]: Skipping Action: ExecXmlFileRollback. It is being skipped as per the value provided for OptimizeCA in MsiPatchMetadata table of an applicable patch 
Action ended 14:53:24: ExecXmlFileRollback. Return value 0. 
SchedXmlFile: Error 0x8007065a: Failed MsiDoAction on deferred action 
SchedXmlFile: Error 0x8007065a: failed to schedule ExecXmlFileRollback for file: (file) 
SchedXmlFile: Error 0x8007065a: failed to begin file change for file: (file) 
Action ended 14:53:24: SchedXmlFile. Return value 3. 

你可以看到OptimizeCA屬性被尊重ExecXmlFileRollback動作,因爲它正在被跳過,但是當它試圖調度它並導致整個事件崩潰安裝程序時出錯。

這是我的WiX補丁創作的相關部分:

<OptimizeCustomActions 
    SkipAssignment="no" 
    SkipImmediate="no" 
    SkipDeferred="yes"> 
</OptimizeCustomActions> 

我真的有一個很難搞清楚試下什麼。我在wix-users上發現了另一個與我具有完全相同問題的人,但沒有迴應該查詢。

回答

1

包括一個條件「打補丁」應防止CA的補丁在安裝過程中運行。

另外,「未安裝」會阻止其運行,如果該產品已安裝,因爲它看起來像你一個修復過程中也有類似的問題。

+0

我不能相信我錯過了。這工作!非常感謝。 – user3380664

相關問題