Mercurial > trustbridge
view ui/installwrapper.h @ 502:e551de11d8b6
Properly handle the case that the file does not exist.
TRUNCATE makes create file fail if the file does not exist
but we need TRUNCATE in the case that the file already exists
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 28 Apr 2014 09:18:07 +0000 |
parents | 17e1c8f37d72 |
children | f89b41fa7048 |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #ifndef UI_INSTALLWRAPPER_H #define UI_INSTALLWRAPPER_H #include <QFileInfo> #include <QString> #include <QStringList> #include <QTemporaryFile> #include <QThread> #include "certificate.h" /** @file installwrapper.h * @brief Wrapper around the call to the updated process */ /** @brief Get the FileInfo for the installation process. * * This points to the file where the installation process is * supposed to be. * * @returns A FileInfo with the path of the installation process.*/ QFileInfo getCinstProcInfo(); /** @brief wrapper around installer process * * This wrapper is mostly needed because QProcess executes * a process on Windows directly with CreateProcess and * thus can not be used to elevate the Process. * * On Windows this class uses ShellExecuteExW to control * the child process. On Linux systems QProcess is used. * * It subclasses QThread so the installation can be done * asynchronusly. */ class InstallWrapper : public QThread { Q_OBJECT public: /** * @brief Construct an installwrapper for a certificateList * * The install wrapper will start the cinst process to execute * the specified instructions with the provided certificatelist. * * The cinst executable is expected to be in the same directory * as the current application. * * @param[in] parent the parent object. * @param[in] listFileName the absolute path to the certificatelist. * @param[in] choices a list of R: / I: <cert> lines to execute. */ InstallWrapper(QObject* parent, const QString& path, const QStringList& instructions); private: /**@brief write the choices made into a temporary file * * @param[in] choicesFile the temporary file to write. * * @returns true on success. false on error. */ bool writeChoices(QTemporaryFile* choicesFile) const; const QString mCertListFile; const QStringList mChoices; protected: void run(); Q_SIGNALS: /** * @brief An error happened * * @param[out] message: A localized message to show. Can be empty. */ void error(const QString &message); /** * @brief The installation was successful * * This only means the installation was successful as far as we * can tell as there is no backchannel from the installation processes. */ void installationSuccessful(); }; #endif // UI_INSTALLWRAPPER_H