view ui/installwrapper.h @ 289:9ad00a3255f4

Change cinst from stdin input to use arguments. As we have to execute this process on Windows over the shell a stdin / stdout communication is not really possible without some major hacks. So you now have to supply an instructions file and the path to the certificatelist as arguments when this process is called
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 02 Apr 2014 13:52:02 +0000
parents f23e0ccd5d14
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/