簡體   English   中英

如何在 Wix 自定義引導程序應用程序中進行捆綁更新?

[英]How to do bundle update in Wix custom bootstrapper application?

我正在嘗試更新使用自定義引導程序應用程序的包,但我不明白該怎么做。 起初,我嘗試將 BA UpdateReplace 設置為 LaunchAction,但它根本不起作用。 閱讀本文后,我嘗試將安裝用作 LaunchAction。

我正在嘗試增加捆綁包的版本,升級代碼已修復。 捆綁包中的所有內容都是固定的,只有版本發生了變化。

新包的日志文件分為兩部分。 第一部分檢測現有包和相關包(舊版本,操作:MajorUpgrade),計划包和舊包的卸載。 然后第一個日志以這一行結束:

Applying execute package: {9b21f135-98c9-4126-bd07-2b64c9aaa6f5}, action: Uninstall, path: C:\ProgramData\Package Cache\{9b21f135-98c9-4126-bd07-2b64c9aaa6f5}\Bootstrapper.exe, arguments: '"C:\ProgramData\Package Cache\{9b21f135-98c9-4126-bd07-2b64c9aaa6f5}\Bootstrapper.exe" -uninstall -quiet -burn.related.upgrade -burn.ancestors={c641576c-eee6-47c9-bf0c-00c42e8ff5c1} -burn.filehandle.self=984'

第二個日志文件包含以下信息:

Burn v3.11.1.2318, Windows v10.0 (Build 17763: Service Pack 0), path: C:\ProgramData\Package Cache\{9b21f135-98c9-4126-bd07-2b64c9aaa6f5}\Bootstrapper.exe
Initializing string variable 'Var1' to value 'false'
Initializing string variable 'Var2' to value 'false'
This bundle is being run by a related bundle as type 'Upgrade'.
Command Line: '"-burn.clean.room=C:\ProgramData\Package Cache\{9b21f135-98c9-4126-bd07-2b64c9aaa6f5}\Bootstrapper.exe" -burn.filehandle.attached=616 -burn.filehandle.self=632 -uninstall -quiet -burn.related.upgrade -burn.ancestors={c641576c-eee6-47c9-bf0c-00c42e8ff5c1} -burn.filehandle.self=984 -burn.embedded BurnPipe.{6DD039C2-BF8D-4A6E-B96B-3EA4784A1B37} {7B93845A-F588-4A34-97FD-8243D81D5B26} 7948'
Setting string variable 'WixBundleLog' to value 'C:\Users\BALAKI~1.ELE\AppData\Local\Temp\Производственная_система_20200312142440.log'
Setting string variable 'WixBundleManufacturer' to value 'Kirumata'
Loading managed bootstrapper application.
Creating BA thread to run asynchronously.

沒有別的。 沒有異常或錯誤。

在程序和功能中有兩個不同版本的捆綁包。 所以,據我所知,安裝了新版本,但沒有刪除舊版本。

問題是:這里發生了什么以及如何使其發揮作用?

好的,我終於找到了管理更新的方法。

首先,我們需要創建具有相同 UpgradeCode 但版本更高的新 Bundle。 我們需要在 Bundle bootstapp 應用程序中啟動 LaunchAction = Install。

Burn 將安裝新的 Bundle,然后卸載舊版本。 這就是關鍵:自定義 BA 的 Run() 方法將重新啟動,但第二次啟動將處於靜默模式 所以我們需要通過 UI 和靜默模式來管理安裝。 像這樣:

     if (this.Command.Display == Display.Full)
                {
                    //UX
                    view.Show(); 
                }

                else
                {
                    //Some kind of silent installation
                    model.PlanAction(this.Command.Action);
                    model.ApplyAction();
                }

暫無
暫無

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

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