Каркас установщика Qt: удалите переключатели из деинсталлятора

Я создал простой установщик для нашего продукта только с одним компонентом и без менеджера удаленных репозиториев.

Когда я запускаю программу удаления, на странице введения отображаются 3 переключателя:

  • Менеджер пакетов

  • Обновление компонентов

  • Удалить все компоненты

Мне нужен только третий, поэтому я проверил эту документацию:

http://doc-snapshot.qt-project.org/qtifw-master/noninteractive.html

Как я понял и не смог скрыть кнопки, я добавил это в свой файл install.qs:

function Controller()
{
}

Controller.prototype.IntroductionPageCallback = function()
{
    gui.clickButton(buttons.NextButton);
}

Это должно автоматически щелкнуть Далее на странице введения, чтобы перейти непосредственно на страницу удаления.

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

Кто-нибудь знает, как это решить?

1 ответ

Я думаю, что у меня есть 2 рабочих решения.

Первое решение, если вы хотите удалить программу на одной странице:

Вам нужно создать контроллер, подобный тому, который вы запускали раньше:

function Controller() {
    if (installer.isUninstaller()) {
        installer.setDefaultPageVisible(QInstaller.Introduction, false);
        installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
        installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
    }
}

Это отключит все страницы в классическом рабочем процессе установки / удаления. Убедитесь, что вы находитесь в режиме удаления.

Если вы хотите удалить 2 страницы:

function Controller()
{

}

Controller.prototype.IntroductionPageCallback = function()
{
    if (installer.isUninstaller()) {
        // Get the current wizard page
        var widget = gui.currentPageWidget(); 
        if (widget != null) {
            // Don't show buttons because we just want to uninstall the software
            widget.findChild("PackageManagerRadioButton").visible = false;
            widget.findChild("UpdaterRadioButton").visible = false;
            widget.findChild("UninstallerRadioButton").visible = false;
        }
    }
}

бонус

В режиме установщика по умолчанию выберите "Я принимаю" лицензионное соглашение. Серьезно, а кто нет?

Controller.prototype.LicenseAgreementPageCallback = function()
{
    var widget = gui.currentPageWidget();
    if (widget != null) {
        widget.AcceptLicenseRadioButton.checked = true;
    }
}
Другие вопросы по тегам