[英]WiX Toolset: How to store a file from Binary Table in a Custom Action
[英]Wix Toolset: How to determine installation mode in a Custom Action
是否有機會在“自定義操作”中檢查安裝模式的類型。 我想為安裝和卸載模式創建一個自定義操作,但是根據該模式執行不同的邏輯。
就像是:
public static ActionResult CreateBackUpAction(Session session)
{
//if (InstallType == "Install")
//{
// BackUpFiles();
//}
//else if (InstallType == "Remove")
//{
// DeleteBackUpFiles();
//}
return ActionResult.Success;
}
我知道理想情況下,兩種情況下我應該有兩種不同的操作,但是我想減少安裝程序源中的行數。
您應該能夠使用會話對象的Item獲取當前安裝的屬性值。 session [“ REMOVE”](應該為“ ALL”)的值將告訴您這是卸載,而session [“ Installed”]的值則是全新安裝。
但是,是的,出於以下幾個原因,您應該使用以下類型的條件來調用單獨的自定義操作:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370543(v=vs.85).aspx
對進程外方法的托管代碼自定義操作調用並不便宜。 當您可以使用“未安裝”作為條件時,您將調用所有該機制並返回。 如果您具有可以更改的功能或維修,那么如果您在通話中沒有任何條件,則將再次呼叫並再次返回(什么也沒做)。
您沒有應對回滾的好方法,因為(例如)如果卸載失敗並回滾,我認為您實際上更希望保留要用代碼刪除的那些備份文件。 換句話說,在安裝失敗,卸載失敗,回滾以及升級現有已安裝產品的情況下,不清楚要如何處理這些備份文件。
我也認為,比起一大堆有條件的大型代碼,執行某件事的幾個較小的,集中的自定義操作更易於處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.