Mercurial > trustbridge
diff ui/installwrapper.h @ 256:84ae353688e0
Add installwrapper class to handle process communication
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Tue, 01 Apr 2014 10:52:06 +0000 |
parents | |
children | f23e0ccd5d14 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/installwrapper.h Tue Apr 01 10:52:06 2014 +0000 @@ -0,0 +1,66 @@ +#ifndef UI_INSTALLWRAPPER_H +#define UI_INSTALLWRAPPER_H + +#include <QString> +#include <QStringList> +#include <QProcess> +#include <QThread> + +#include "certificate.h" +/** @file installwrapper.h + * @brief Wrapper around the call to the updated process */ + + /** @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] instructions a list of instructions to execute. + */ + InstallWrapper(QObject* parent, const QString& path, + const QStringList& instructions); + +private: + const QString mCertListFile; + const QStringList mInstructions; +#ifdef WIN32 + SHELLEXECUTEINFOW mExecInfo; +#else + QProcess cinstProc; +#endif + +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); +}; + +#endif // UI_INSTALLWRAPPER_H