You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QtInstallerFramework卸载流程中添加自定义向导页?

Qt Installer Framework 卸载流程添加自定义页面问题解决

问题根源

卸载流程里组件脚本(componentscript.js)不会被加载,所以你在componentLoaded里注册的自定义页面只会在安装阶段生效。而controlscript.js是全局控制脚本,本身没有component对象,直接调用自然会报未定义错误。

可行解决步骤

1. 改用全局脚本加载自定义页面

卸载阶段只能通过controlscript.js来添加自定义页面,不用依赖组件的配置:

  • 把custompage.ui放到安装包根目录(或者打包进资源文件),不需要在package.xml的<UserInterfaces>节点里配置(因为组件没加载,这个配置在卸载时不生效)
  • 在controlscript.js里选合适的卸载回调函数,直接通过全局的gui对象加载UI并添加到流程中,比如:
    function ReadyForUninstallationPageCallback() {
        // 加载UI文件,路径根据实际存放位置调整
        var customUninstallPage = gui.loadUi("./custompage.ui");
        // 将页面添加到"准备卸载"页面之后
        installer.addWizardPage(customUninstallPage, "ReadyForUninstallation");
    }
    

2. 选对卸载阶段的回调时机

卸载流程的回调和安装不同,常用的几个回调:

  • UninstallerPageCallback:卸载向导初始化时触发
  • BeginUninstallationCallback:点击"开始卸载"按钮后触发
  • ReadyForUninstallationPageCallback:进入"准备卸载"页面时触发
    根据你想要插入页面的位置,选对应的回调即可。

3. 页面交互逻辑处理

如果自定义页面需要处理用户操作,直接在controlscript.js里给控件绑定事件,比如:

function ReadyForUninstallationPageCallback() {
    var customUninstallPage = gui.loadUi("./custompage.ui");
    
    // 给页面上的确认按钮绑定点击事件
    customUninstallPage.confirmBtn.clicked.connect(function() {
        // 这里写你的自定义逻辑,比如记录用户选择
        installer.wizard().next(); // 继续卸载流程
    });
    
    installer.addWizardPage(customUninstallPage, "ReadyForUninstallation");
}

重要提醒

  • 卸载流程不会加载任何组件的脚本和配置,所以package.xml里的<UserInterfaces>对卸载无效,必须在全局脚本里直接加载UI文件
  • controlscript.js里只能使用installer、gui这些全局对象,不能用组件脚本里的component对象
  • 打包时要确保custompage.ui被包含到安装包里,可以在config.xml的<Files>节点里添加配置:
    <Files>
        <LocalFile>custompage.ui</LocalFile>
    </Files>
    

内容的提问来源于stack exchange,提问作者peco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:11