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

http://wald.intevation.org/projects/trustbridge/