Как открыть скачанный .ехе файл?



  • Всем привет.

    Проблема собственно вот в чём: используя библиотеки QNetworkReply и QNetworkAccessManager я скачал .exe файл, но не понимаю как его открыть. Его негде нету. Такое чувство, что он просто в оперативе сидит и как вытащить я не знаю. Может кто подскажет?

    Если постоянно скачивать файл, то размер приложения будет расти и не падать.

    Исходный код прилагаю

    Он очень простой

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
    	QMainWindow(parent),
    	ui(new Ui::MainWindow)
    {
    	ui->setupUi(this);
    
    	NetworkManager = new QNetworkAccessManager();
    	process = new QProcess(this);
    
    	connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::startDownload);
    	connect(NetworkManager, &QNetworkAccessManager::finished, this, &MainWindow::downloadFinished);
    }
    
    MainWindow::~MainWindow()
    {
    	delete ui;
    }
    
    void MainWindow::startDownload()
    {
    	QNetworkRequest downloadRequest(QUrl("http://www.eqdrive.com.ua/files/Updates/UpdateEQDriveConfig/UpdaterEQDrive.exe"));
    
    	QNetworkReply *reply = NetworkManager->get(downloadRequest);
    	connect(reply, &QNetworkReply::downloadProgress, this, &MainWindow::downloadProgress);
    }
    
    void MainWindow::downloadFinished()
    {
    	qDebug("Download Finished");
    	QFile downloadedFile("UpdaterEQDrive.exe");
    	if(!downloadedFile.open(QIODevice::ReadOnly))
    		qDebug() << "Error open file: " + downloadedFile.errorString();
    
    	process->start("UpdaterEQDrive.exe");
    }
    
    void MainWindow::downloadProgress(qint64 ist, qint64 max)
    {
    	ui->progressBar->setRange(0, max);
    	ui->progressBar->setValue(ist);
    }
    
    


  • This post is deleted!


  • This post is deleted!


  • Сам справился, всем спасибо. Логика открытия .ехе файла немного другая в отличии от файлов .тхт и прочих
    Кому интересно, код ниже. Мне не жалко.

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
    	QMainWindow(parent),
    	ui(new Ui::MainWindow)
    {
    	ui->setupUi(this);
    
    	NetworkManager = new QNetworkAccessManager();
    	process = new QProcess(this);
    
    	connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::startDownload);
    	connect(NetworkManager, &QNetworkAccessManager::finished, this, &MainWindow::downloadFinished);
    }
    
    MainWindow::~MainWindow()
    {
    	delete ui;
    }
    
    void MainWindow::startDownload()
    {
    	QUrl url("http://www.eqdrive.com.ua/files/Updates/UpdateEQDriveConfig/UpdaterEQDrive.exe");
    	QNetworkRequest downloadRequest;
    	downloadRequest.setUrl(url);
    	NetworkManager->get(downloadRequest);
    
    	QNetworkReply *reply = NetworkManager->get(downloadRequest);
    	connect(reply, &QNetworkReply::downloadProgress, this, &MainWindow::downloadProgress);
    	//connect(reply, &QNetworkReply::readyRead, this, &MainWindow::saveDownloadedFile);
    }
    
    void MainWindow::downloadFinished(QNetworkReply *reply)
    {
    	if(reply->error())
    	{
    		qDebug() << reply->errorString();
    	} else {
    		QByteArray downloadedFile = reply->readAll();
    		QFile *file = new QFile("UpdaterEQDrive.exe");
    		if(file->open(QFile::WriteOnly))
    		{
    			file->write(downloadedFile);
    			file->close();
    			qDebug("Download Finished");
    			process->start("UpdaterEQDrive.exe");
    		}
    	}
    }
    
    void MainWindow::downloadProgress(qint64 ist, qint64 max)
    {
    	ui->progressBar->setRange(0, max);
    	ui->progressBar->setValue(ist);
    }
    

 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.