【问题标题】:How to do bundle update in Wix custom bootstrapper application?如何在 Wix 自定义引导程序应用程序中进行捆绑更新?
【发布时间】:2020-03-12 14:39:20
【问题描述】:

我正在尝试更新使用自定义引导程序应用程序的捆绑包,但我不知道该怎么做。首先,我尝试将 BA UpdateReplace 设置为 LaunchAction,但它根本不起作用。在阅读this 之后,我尝试使用 Install 作为 LaunchAction。

我正在尝试增加捆绑包的版本,UpgradeCode 已修复。捆绑包中的所有内容都是固定的,只有版本被更改。

新捆绑包的日志文件分为两部分。第一部分检测现有包和相关包(旧版本,操作: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.

没有别的了。没有异常或错误。

在程序和功能中存在两个不同版本的捆绑包。因此,据我了解,安装了新版本,但没有删除旧版本。

问题是:这里发生了什么以及如何使它工作?

【问题讨论】:

    标签: c# wix bootstrapper burn


    【解决方案1】:

    好的,我终于找到了管理更新的方法。

    首先,我们需要创建具有相同 UpgradeCode 但版本更高的新 Bundle。我们需要在 Bundle bootstrap 应用程序中启动 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();
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多