Mercurial > trustbridge
view ui/createinstallerdialog.h @ 856:797aa8d9c785
(issue48) Fallback to HKEY_USERS on hive load failure
If the hive can not be loaded it might mean that the user
is currently logged on. In that case we can access his
registry via HKEY_USERS.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 31 Jul 2014 12:56:26 +0200 |
parents | 49168bcb02e2 |
children | ae571e7ecdc9 |
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 CREATEINSTALLERDIALOG_H #define CREATEINSTALLERDIALOG_H #include <QDialog> #include <QMainWindow> #include <QLineEdit> #include <QProcess> #include <QProgressDialog> #include <QDir> /** * @file createinstallerdialog.h * @brief The dialog to show settings and create an installer. */ class QListWidget; class QTemporaryDir; class CreateInstallerDialog : public QDialog { Q_OBJECT public: /** @brief Create a dialog showing settings for the create installer * process * */ CreateInstallerDialog(QMainWindow *parent); private: void setupGUI(); QLineEdit *mCertFile; QLineEdit *mBinaryFolder; QLineEdit *mSaveFile; QProcess mNSISProc; QProgressDialog mProgress; QString mInstallerPath; QTemporaryDir *mCurrentWorkingDir; /** @brief show an error message with QMessageBox * * @param [in] msg The message to show */ void showErrorMessage(const QString &msg); private slots: void openCertificateSelect(); void openFolderSelect(); void openSaveLocation(); /**@brief entry point for installer creation * * check the selected parameters (certificate / folder etc.) and * create the nsis installer. This also creates the signatures. */ void createInstaller(); /**@brief Create tempoary dir with signed binaries from sourcedir * * Copies all files from the sourceDir to a temporary directory * and signs all .exe files in that directory. * * The caller needs to delete the temporary directory. If an error * occurs NULL is returned. * * @param[in] sourceDir the directory with the binaries to sign * @returns a pointer to a temporary dir containing the signed binaries * or NULL. */ QTemporaryDir *codesignBinaries(const QDir& sourceDir); /**@brief Sign a file with the codesigning certificate from mCertFile * * Calls osslsigncode to sign the file pointed to in filePath. * The signing operation is logged. * * Sign information (hash algo / publisher / url) can be set at * build time or in the settings with the variables: * * sign_hash # the hash algorithm to use. Values are the same as in singtool * sign_publisher # the publisher information * sign_url # the product url to use in the signature * * @param[in] filePath the absolute path to the file. * @returns true on success, false on error */ bool signFile(QString filePath); /**@brief Append a base64 encoded sha256 RSA signature to a file. * * The format of the added signature line will be: * S:<signature>\r\n * For the signature the key in mCertFile is used. * * @param[in] input The absolute path of the file to sign * @param[out] output The absolute path of the file to write * * @returns true on success, false on failure */ bool appendTextSignatureToFile(const QString& input, const QString& output); /* Slots for the creator process */ void processError(QProcess::ProcessError error); void processFinished(int exitCode, QProcess::ExitStatus exitStatus); }; /** @brief The dialog shown after the installer was created. */ class FinishedDialog : public QDialog { Q_OBJECT public: /** @brief constructor for the dialog * * @param [in] parent the parent window * @param [in] msg the message to show * @param [in] details verbose information * @param [in] isErr if the dialog should be shown as an error*/ FinishedDialog(QDialog *parent, QString msg, QString details, bool isErr); }; #endif // CREATEINSTALLERDIALOG_H