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

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