Qt安装程序框架:从卸载程序中删除单选按钮

时间:2014-12-04 09:07:29

标签: qt uninstaller qt-installer

我为我们的产品创建了一个简单的安装程序,只有一个组件,没有远程存储库管理器。

当我启动卸载程序时,介绍页面会显示3个单选按钮:

  • 包管理器

  • 更新组件

  • 删除所有组件

我只需要第三个,所以我查看了这个文档:

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

由于我已经理解并且无法隐藏按钮,我将其添加到我的install.qs文件中:

function Controller()
{
}

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

这应该在简介页面上自动点击“下一步”,这样它就可以直接进入卸载页面。

没有任何事情发生,我在Controller功能中编写的内容,介绍页面显示了3个单选按钮。我在函数中添加了一些消息框,它们永远不会被调用。

有人知道如何解决它?

1 个答案:

答案 0 :(得分:4)

我认为我有2个工作解决方案。

第一个解决方案,如果您想要单页卸载程序:

您需要创建一个 Controller ,就像之前开始的那样:

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;
    }
}