提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近做项目,需要给客户写一个软件,需求:选中文件夹后,将文件夹做成一个压缩包,然后在生成一个run的文件,并且可以在下位机中(linux板卡)运行。
类似于图片中的形式,上面是脚本,下面是一个压缩包;
开始之前理想中的难点:
1.怎做一个压缩包。
2.怎么生成点.run文件
一、.run是什么?
后缀名为.run的文件一般为Linux应用软件的安装文件,类似Windows系统上的.exe文件,故可以将其看成Linux系统的可执行文件,可以通过Linux系统的命令行终端进行打开。
二、使用步骤
1.制作一个压缩包
制作压缩包我们用的是QZipWriter来实现
(1)头文件
这两个头文件,一个是压缩头文件,一个解压头文件
(2).pro文件中添加模块
(3).cpp代码片段
获取文件夹路径,QZipWrite *writer = new QZipWriter(zipUrl);zipUrl应该是压缩包存储的路径+压缩包的名称。
例:“D:/Users/Administrator/Desktop/img/img.zip”
参考文章:https://blog.csdn.net/weixin_43246170/article/details/124295516
这篇文章感觉写的非常好,比较简单实用,适合初学者门观看,需要注意的是new QZipWriter的时候的路径,我在这里研究了好长时间,刚开始的时候没有加压缩包名称,每次执行完都没看到压缩包。
2.生成一个.run文件
以前在linux环境下做一个.run文件很简单,用"echo"和"cat"就可以了。在windows环境下是没有办法用shell命令的。
在这里遇到两个难题:
1.生成的文件在下位机(板卡)中打开的时候带有^M的回车字符,在使用./*.run的时候就会报错,
这里有一种方法可以解决这个问题,使用bash *.run可以正常运行;
原因是我在打开文件的时候,用 if(!file.open(QFile::ReadWrite|QFile::Text)),然后用QTextStream写到文件里;问题在QFile::Text这里和QTextStream
解决方法:直接用if(!file.open(QIODevice::ReadWrite));打开文件
然后用file.write(QByteArray);写入文件当中;
2.将做成的压缩包添加到.run文件的末尾;在这里犯了和上一点一样错误;用 if(!file.open(QFile::ReadWrite|QFile::Text)),然后用QTextStream写到文件里;
解决方法:也是和上一点一样;不累赘了。直接上代码;
总结
第一次写这样的文章,尽量用白话文讲述清楚。
这里面参考了很多博客博主的文章,感谢各位博主们的文章。