簡體   English   中英

WiX:安排一些對話框之后和CostFinalize之前的自定義操作

[英]WiX: Scheduling a custom action after some dialog and before CostFinalize

我有一個自定義操作,例如CA1,可與從對話框(例如Dlg1)輸入的PIDKEY一起使用。 根據PIDKEY的值,CA1將某些值寫入屬性,某些組件將其作為該條件的一部分。 由於CA1需要PIDKEY並且在CostFinalize中評估組件條件,因此必須將CA1放在Dlg1之后和CostFilnalize之前。(Dlg1-> CA1-> CostFinalize)

但是看來,除非我手動編寫這些操作的序列號,否則CostFinalize(InstallUISequence和InstallExecuteSequence中的1000 )操作始終位於Dlg1(InstallUISequence中的1297 )之前。 因此,我只是在CostFinalize和Dlg1之前計划了CA1(在InstallExecuteSequnce中)。( CA1- > CostFinalize-> Dlg1)有趣的是,盡管我預期錯誤的結果,但它的工作原理與預期的完全一樣。

我檢查了日志文件,它顯示的順序(Dlg1-> CA1-> CostFinalize)根本與MSI表不一致。 我不了解發生了什么,想知道如何通過查看MSI表(InstallUISequence和InstallExecuteSequence)來確定首先執行的操作。

按下按鈕“安裝”后,即通過Dlg1之后,將執行InstallExecuteSequence中的所有操作。

鏈接的文章中詳細說明了如何通過MSI執行自定義操作和標准操作,並附帶一些圖形。

您應該考慮PIDKEY輸入錯誤或無效的可能性。 因此,我將使用DoAction ControlEvent從對話框的“下一步”按鈕調用自定義動作。 執行SpawnDialog以顯示錯誤(如果無效),並允許轉換到下一個對話框(如果有效)。

還應該在InstallExecuteSequence中安排自定義操作,以支持靜默安裝。 如果PIDKEY證明無效,請使用Type 19 Error自定義操作中止安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM