Qt Installer Framework-防止在非空文件夹中安装

鲍勃

我使用Qt安装程序框架。

我想知道如何防止在非空文件夹中安装?

此外,如何使卸载程序仅删除其已安装的文件和文件夹,而不能删除其文件夹的所有内容?

先感谢您

Aleph0

由于Qt文档的原因,您可以访问Scripting API中QDesktopServices,其中包含函数findFiles(string path,string pattern),在您的情况下该函数应不返回任何函数,其中path是安装的目标目录。

在Tar​​getDirectory Installer安装程序页面中,您可以通过Installer Page访问设置的TargetDirectory ,如果进行一些编辑,可以将其连接到该目录。

我花了一些时间来找出以下解决方案,但我必须承认,这不是我想事先获得它的方式。

首先,您需要一个控制脚本,该脚本需要在中设置config.xml它被调用controlScript.js并与您的目录位于同一目录中config.xml

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<Installer>
    <Name>Your application</Name>
    <Version>1.0.0</Version>
    <Title>Your application Installer</Title>
    <Publisher>Your vendor</Publisher>
    <StartMenuDir>Super App</StartMenuDir>
    <TargetDir>@HomeDir@/InstallationDirectory</TargetDir>
    <ControlScript>controlScript.js</ControlScript>
</Installer>

现在,我带来的唯一解决方案是:

controlScript.js

function Controller()
{
    console.log("Control script");
}

Controller.prototype.ComponentSelectionPageCallback = function() {
    var widget = gui.currentPageWidget();
    widget.title="Select empty directory!";
    var targetDirWidget = gui.pageById(QInstaller.TargetDirectory);

    var targetDir=targetDirWidget.TargetDirectoryLineEdit.text;

    var files=QDesktopServices.findFiles(targetDir, "*.*");
    if (files.length!=0) {
        var result = QMessageBox.warning("quit.question", "You selected a non-empty directory!", targetDir,QMessageBox.Ok);
        gui.clickButton(buttons.BackButton);        
    }    

}

基本上,用户输入目标目录并按下BackButton。如果目标目录为非空,则会显示一个消息框,并按下“组件选择”中的BackButton。

我想要的解决方案是事先停用TargetDirectory页面中的NextButton,但是我的所有尝试都是徒劳的。即使下面的禁用NextButton都应该起作用,如此答案所示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Qt Installer Framework:如何检查是否选择了要安装的组件

如何在Qt Installer Framework中运行可执行文件?

如何使用Qt Framework Installer创建注册文件类型及其图标?

Qt 5.5和Qt Installer Framework 2.0.1:尽管config.xml中存在徽标,但不显示徽标

Qt Installer Framework:使用参数创建快捷方式

Qt Installer Framework可以返回失败退出代码吗?

如何隐藏我自己的页面(Qt Installer Framework)

Qt Installer Framework-读取下载的软件包版本

将主机中的空文件夹安装到Docker中的非空文件夹

在Qt Creator中运行Wt Framework

删除Windows Installer文件夹中的文件

为什么在构建安装程序时Visual&Installer总是创建“输出”文件夹?

为什么在构建安装程序时Visual&Installer总是创建“输出”文件夹?

使用composer将软件包安装在非空文件夹中

在Qt C ++中列出带有Qtreewidget的文件夹

Qt:在getSaveFileName中隐藏文件夹

在Qt,C ++中检查文件夹是否存在(并创建文件夹)

如何在Windows 10中清理Windows \ Installer文件夹?

在Entity Framework Core中建模文件夹结构

Zend Framework 3中的公用文件夹

在子域的文件夹中运行Slim Framework

重命名非空文件夹

flashplugin-installer的安装失败

电子生成器 dist 文件夹中的 installer 和 win-unpacked 文件夹有什么区别?

如何从MAC中的/ Library / Framework文件夹中的C ++文件中包含文件

WIndows Installer将快捷方式放入带有属性的自定义文件夹中

Qt C++:包括项目文件夹中的所有库文件

Qt-QFileSystemModel如何获取文件夹中的文件(菜鸟)

使用任何 QT 小部件打印特定文件夹中的文件名