Mercurial > trustbridge
view ui/installwrapper.h @ 285:f23e0ccd5d14
Fix call to windows process.
This now uses the correct parameters, emits the signals
correctly as errors and waits for the process to finish instead
of relying on NOASYNC which did not work for runas and also
made it impossible to get the return code
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 02 Apr 2014 13:45:57 +0000 |
parents | 84ae353688e0 |
children | dc4efb0a70cb |
line wrap: on
line source
#ifndef UI_INSTALLWRAPPER_H #define UI_INSTALLWRAPPER_H #include <QString> #include <QStringList> #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; 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