view ui/installwrapper.h @ 1140:f67a6873d9c1

Mergerd
author Sascha Wilde <wilde@intevation.de>
date Wed, 17 Sep 2014 18:53:58 +0200
parents 78798d3af8f0
children c8f698ca6355
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */
#ifndef UI_INSTALLWRAPPER_H
#define UI_INSTALLWRAPPER_H

#include <QFileInfo>
#include <QString>
#include <QStringList>
#include <QTemporaryFile>
#include <QThread>

#include "certificate.h"
/** @file installwrapper.h
 * @brief Wrapper around the call to the updated process */

/** @brief Get the FileInfo for the installation process.
 *
 * This points to the file where the installation process is
 * supposed to be.
 *
 * @returns A FileInfo with the path of the installation process.*/
QFileInfo getCinstProcInfo();

 /** @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] path the absolute path to the certificatelist.
     * @param[in] instructions a list of R: / I: \<cert\> lines to execute.
     */
    InstallWrapper(QObject* parent, const QString& path,
                   const QStringList& instructions);

private:
    /**@brief write the choices made into a temporary file
     *
     * @param[in] choicesFile the temporary file to write.
     *
     * @returns true on success. false on error.
     */
    bool writeChoices(QTemporaryFile* choicesFile) const;

    const QString mCertListFile;
    const QStringList mChoices;

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);

    /**
     * @brief The installation was successful
     *
     * This only means the installation was successful as far as we
     * can tell as there is no backchannel from the installation processes.
     */
    void installationSuccessful();
};

#endif // UI_INSTALLWRAPPER_H

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