Как предотвратить отображение пользовательского интерфейса удаления загрузчика wix в процессе обновления - PullRequest
0 голосов
/ 27 мая 2019

У меня есть собственный установщик приложения начальной загрузки, который хорошо работал с такими обычными функциями, как установка, удаление и так далее. Но теперь мне нужно добавить функцию обновления для установщика именно для комплекта, но он всегда показывает интерфейс установки или деинсталляции во время процесса установки нового установщика комплекта. Я знаю, что старая версия должна быть удалена во время этого процесса, но я ожидаю, что предыдущая версия будет удалена до того, как будет установлена ​​более новая версия, и процесс удаления должен быть в режиме молчания.

Я новичок в Wix, но я прочитал много статей в StackOverflow и попробовал большинство связанных решений. Такие как следующие ссылки:

Как обнаружить установленные в настоящее время функции во время MajorUpgrade с помощью пакетов WiX Burn MBA?

Как выполнить обновление Wix с помощью пользовательского загрузчика

Wix не удаляет предыдущую версию Burn Exe во время серьезного обновления

Обновление записи WiX показывает UI удаления в конце

К сожалению, никто из них не работает для меня. Я плохо знаю стеки вызовов движка записи, поэтому я отправляю свой код на здесь !

В своем коде я попробовал следующие решения:

private void DetectComplete(object sender, DetectCompleteEventArgs e)
{
    if (LaunchAction.Uninstall == WixBA.Model.Command.Action)
    {
    WixBA.Model.Engine.Log(LogLevel.Verbose, "Invoking automatic plan for uninstall");
    WixBA.Plan(LaunchAction.Uninstall);
    }
}


private void BootstrapperApplication_ApplyComplete(object sender, ApplyCompleteEventArgs e)
{
    if (this.model.BootstrapperApplication.Command.Action == LaunchAction.Uninstall && isRelatedBundlePresent) // this will be called in case of Upgrade of the bundle
    {
            CustomBootstrapperApplication.Dispatcher.InvokeShutdown();
    }
}

Если бы кто-нибудь мог помочь мне просмотреть мой код, это было бы полезно. Когда вы загрузите мой код, измените параметр MsiVersion на номер версии и измените параметр ProjectRootDir на ваш локальный путь к файлу решения в файле "ccnetcall-build-language-package.bat" в папке "Build" и затем создайте разные версии установщиков, запустив файл bat.

Заранее спасибо!

1 Ответ

1 голос
/ 27 мая 2019

Структура BootstrapperApplication.Command содержит поле display, которое ваш БА должен учитывать при принятии решения об отображении пользовательского интерфейса (или нет).

Во время обновления старой версии значение должно быть Display.Embedded илиDisplay.None (я забыл, что у меня на макушке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...