Как выполнить обновление пакета в пользовательском приложении начальной загрузки Wix? - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь сделать обновление пакета, использующего пользовательское приложение начальной загрузки, и я не понимаю, как это сделать. Сначала я попытался установить в BA UpdateReplace как LaunchAction, но это не сработало вообще. После прочтения this я попытался использовать Install as 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.

И больше ничего. Никаких исключений или ошибок.

В разделе «Программы и компоненты» присутствуют два пакета с разными версиями. Итак, насколько я понимаю, новая версия была установлена, но старая не была удалена.

Вопрос в том, что здесь происходит и как заставить это работать?

1 Ответ

0 голосов
/ 17 марта 2020

Хорошо, наконец-то я нашел способ управлять обновлением.

Прежде всего, нам нужно создать новый Bundle с тем же кодом UpgradeCode, но большей версией. И нам нужно запустить LaunchAction = Install в Bundle загрузочном приложении.

Burn установит новый Bundle и после этого удалит старую версию. Это ключ: метод Run () пользовательского BA будет перезапущен, но второй запуск будет в тихом режиме . Поэтому нам нужно управлять установкой как с помощью пользовательского интерфейса, так и в режиме без вывода сообщений. Как это:

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

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