我正在爲非常大的包創作一個非常小的修補程序,它的唯一目的是更新單個文件並添加四個較小的修補程序。防止自定義操作在修補程序中運行
使用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上發現了另一個與我具有完全相同問題的人,但沒有迴應該查詢。
我不能相信我錯過了。這工作!非常感謝。 – user3380664