Mercurial > trustbridge
view ui/installwrapper.h @ 841:216a65d7fc4b
(issue66) Implement is_system_install and use it
This has completly different implementations for linux
and Windows. The commit also moves some code into util.c
for better reuse.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 29 Jul 2014 18:12:57 +0200 |
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