簡體   English   中英

自定義Wix Burn引導程序無法檢測MSI安裝狀態

[英]Custom Wix Burn bootstrapper doesn't detect MSI install state

我正在創建一個基於Wix / Burn(3.6發行版)的自定義向導式引導程序。 我基於Wix 3.6引導程序代碼。

問題是我無法讓引導程序檢測到作為bundle的一部分的setup.msi的安裝狀態。

據我所知,所需要的只是調用Engine.Detect(),其中Engine是Bootstrapper應用程序中Wix引擎的一個實例。 那時我應該能夠查看Bootstrapper.Command.Action以查看所需的啟動操作。

我的包包含兩個項目:.NET 4(Web安裝)和我的setup.msi。

我懷疑我缺少確定我的向導應該進入維護模式還是安裝模式的步驟。

首先,要確定是否正在檢測包,您可以檢查當前用戶的臨時目錄中的日志文件。 它將告訴您是否已檢測到包裝。

現在確定是否進入維護模式還是安裝模式,您可以通過訂閱DetectPackageComplete事件來檢查軟件包狀態。 在下面的示例中,我的UI使用兩個屬性InstallEnabled和UninstallEnabled來確定要呈現給用戶的“模式”。

private void OnDetectPackageComplete(object sender, DetectPackageCompleteEventArgs e)
    {
        if (e.PackageId == "DummyInstallationPackageId")
        {
            if (e.State == PackageState.Absent)
                InstallEnabled = true;
            else if (e.State == PackageState.Present)
                UninstallEnabled = true;
        }
    }

上面的代碼示例摘自我的博客文章,內容涉及創建自定義WiX托管引導程序所需的最少代碼。

確定您的Bundle是否已安裝的簡單方法是使用WixBundleInstalled變量。 成功安裝捆綁包后,該值將設置為非零。

此外,在WiX v3.7 +中, OnDetectBegin回調現在可以告訴您是否已安裝捆綁軟件,因此您不必正常查詢變量。

進行這些更改是為了更容易檢測維護模式,以避免@BryanJ建議的完全合理的解決方案。

暫無
暫無

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

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