mirror of
https://github.com/QuasarApp/installer-framework.git
synced 2025-05-05 09:49:32 +00:00
Merge remote-tracking branch 'origin/2.0'
Conflicts: src/libs/installer/packagemanagercore.cpp Change-Id: Ie3d94fe3a633e189c260bf20682c00a2bb901bc8
This commit is contained in:
commit
1be5082af8
@ -5,7 +5,12 @@
|
|||||||
- Fix --checkupdates mode.
|
- Fix --checkupdates mode.
|
||||||
- Prevent disabled component to be selected using the Select All button. (QTIFW-635)
|
- Prevent disabled component to be selected using the Select All button. (QTIFW-635)
|
||||||
- Windows: Fix crashes in elevated installation. (QTIFW-6656, QTIFW-659)
|
- Windows: Fix crashes in elevated installation. (QTIFW-6656, QTIFW-659)
|
||||||
|
- OS X: Fix problems with writing settings in elevated installation (QTIFW-709)
|
||||||
- Fix crash on exit for Windows XP, Vista. (QTIFW-652)
|
- Fix crash on exit for Windows XP, Vista. (QTIFW-652)
|
||||||
|
- Re-add handling of zero compression level files supported by 7z.
|
||||||
|
- Improve Proxy Credentials dialog.
|
||||||
|
- Make component checker warning optional (set QT_LOGGING_RULES=ifw.componentChecker=true to enable).
|
||||||
|
- Make code ready to be compiled with Qt 5.5.
|
||||||
- Documentation updates.
|
- Documentation updates.
|
||||||
|
|
||||||
2.0.0
|
2.0.0
|
||||||
|
11
INSTALL
11
INSTALL
@ -26,13 +26,13 @@ See the Qt documentation for the prerequisites and steps to build Qt from source
|
|||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
Adjust the qmake.conf to have a real stand alone working installer:
|
For Qt 5.4, you need to adjust the respective qmake.conf to have a real stand alone
|
||||||
Replace -MD, -MDd with -MT, -MTD in the CFLAGS lines
|
working installer. Replace -MD, -MDd with -MT, -MTD in the CFLAGS lines.
|
||||||
|
|
||||||
'git diff' should show you something like:
|
'git diff' should show you something like:
|
||||||
|
|
||||||
--- a/mkspecs/win32-msvc20XX/qmake.conf
|
--- a/mkspecs/win32-msvc2013/qmake.conf
|
||||||
+++ b/mkspecs/win32-msvc20XX/qmake.conf
|
+++ b/mkspecs/win32-msvc2013/qmake.conf
|
||||||
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t -FS
|
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t -FS
|
||||||
QMAKE_CFLAGS_WARN_ON = -W3
|
QMAKE_CFLAGS_WARN_ON = -W3
|
||||||
QMAKE_CFLAGS_WARN_OFF = -W0
|
QMAKE_CFLAGS_WARN_OFF = -W0
|
||||||
@ -46,6 +46,9 @@ Replace -MD, -MDd with -MT, -MTD in the CFLAGS lines
|
|||||||
QMAKE_CFLAGS_LTCG = -GL
|
QMAKE_CFLAGS_LTCG = -GL
|
||||||
QMAKE_CFLAGS_MP = -MP
|
QMAKE_CFLAGS_MP = -MP
|
||||||
|
|
||||||
|
From Qt 5.5 onwards, you can achieve the same by passing -static-runtime to
|
||||||
|
configure.
|
||||||
|
|
||||||
Recommended configuration options for Microsoft Windows:
|
Recommended configuration options for Microsoft Windows:
|
||||||
|
|
||||||
configure -prefix %CD%\qtbase -release -static -target xp -accessibility -no-opengl -no-icu -no-sql-sqlite -no-qml-debug -nomake examples -nomake tests -skip qtactiveqt -skip qtenginio -skip qtlocation -skip qtmultimedia -skip qtserialport -skip qtquick1 -skip qtquickcontrols -skip qtscript -skip qtsensors -skip qtwebkit -skip qtwebsockets -skip qtxmlpatterns
|
configure -prefix %CD%\qtbase -release -static -target xp -accessibility -no-opengl -no-icu -no-sql-sqlite -no-qml-debug -nomake examples -nomake tests -skip qtactiveqt -skip qtenginio -skip qtlocation -skip qtmultimedia -skip qtserialport -skip qtquick1 -skip qtquickcontrols -skip qtscript -skip qtsensors -skip qtwebkit -skip qtwebsockets -skip qtxmlpatterns
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.
|
The Qt Installer Famework is Copyright (C) 2015 The Qt Company Ltd.
|
||||||
Contact: http://www.qt.io/licensing/
|
Contact: http://www.qt.io/licensing/
|
||||||
|
|
||||||
You may use, distribute and copy the Qt GUI Toolkit under the terms of
|
You may use, distribute and copy the Qt Installer Famework under the terms of
|
||||||
GNU Lesser General Public License version 3, which is displayed below.
|
GNU Lesser General Public License version 3, which is displayed below.
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.
|
The Qt Installer Famework is Copyright (C) 2015 The Qt Company Ltd.
|
||||||
Contact: http://www.qt.io/licensing/
|
Contact: http://www.qt.io/licensing/
|
||||||
|
|
||||||
You may use, distribute and copy the Qt GUI Toolkit under the terms of
|
You may use, distribute and copy the Qt Installer Famework under the terms of
|
||||||
GNU Lesser General Public License version 3, which is displayed below.
|
GNU Lesser General Public License version 3, which is displayed below.
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 8.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 12 KiB |
@ -71,11 +71,12 @@
|
|||||||
|
|
||||||
\section3 Configuring Qt for Windows
|
\section3 Configuring Qt for Windows
|
||||||
|
|
||||||
Before running configure you should tweak Qt to statically link in the C
|
Usually, you want to tweak Qt to statically link in the C
|
||||||
runtime library. This can be done by changing the default mkspec of
|
runtime library. This can be done by changing the default mkspec of
|
||||||
your compiler.
|
your compiler (Qt 5.4) or by passing \c{-static-runtime} to configure (Qt 5.5
|
||||||
|
and newer).
|
||||||
|
|
||||||
If you are using e.g. the Microsoft Visual Studio 2013 compiler, you edit
|
For Qt 5.4, you need to edit
|
||||||
\c{mkspecs\win32-msvc2013\qmake.conf} and replace in the CFLAGS sections
|
\c{mkspecs\win32-msvc2013\qmake.conf} and replace in the CFLAGS sections
|
||||||
'-MD' with '-MT':
|
'-MD' with '-MT':
|
||||||
|
|
||||||
|
@ -716,6 +716,8 @@
|
|||||||
|
|
||||||
\li \l archivegen
|
\li \l archivegen
|
||||||
|
|
||||||
|
\li \l devtool
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\section1 installerbase
|
\section1 installerbase
|
||||||
@ -737,7 +739,7 @@
|
|||||||
###TODO insert link here.
|
###TODO insert link here.
|
||||||
|
|
||||||
For information about how to implement data integration into the
|
For information about how to implement data integration into the
|
||||||
installer binary, see \c QInstaller::BinaryContent ###TODO insert link here.
|
installer binary, see QInstaller::BinaryContent.
|
||||||
|
|
||||||
\note If you change this configuration, you must recompile the
|
\note If you change this configuration, you must recompile the
|
||||||
\c installerbase tool.
|
\c installerbase tool.
|
||||||
@ -936,6 +938,53 @@
|
|||||||
Where \e <name.7z> is the path and file name of the archive to create and
|
Where \e <name.7z> is the path and file name of the archive to create and
|
||||||
\e <data> contains the paths and names of the files or directories to
|
\e <data> contains the paths and names of the files or directories to
|
||||||
package into the archive, separated by spaces.
|
package into the archive, separated by spaces.
|
||||||
|
|
||||||
|
\section1 devtool
|
||||||
|
|
||||||
|
You can use \c devtool to update an existing installer or maintenance tool
|
||||||
|
with a new installer base, to dump binary content from an installer or
|
||||||
|
maintenance tool to a target, and to execute operations. For a summary of
|
||||||
|
available operations, see \l {Operations}.
|
||||||
|
|
||||||
|
\c devtool expects the following parameters in the following order:
|
||||||
|
|
||||||
|
\code
|
||||||
|
devtool [options] binary
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
Where \e binary is the path and name of an existing installer or maintenance
|
||||||
|
tool.
|
||||||
|
|
||||||
|
\section2 Summary of devtool Parameters
|
||||||
|
|
||||||
|
\table
|
||||||
|
\header
|
||||||
|
\li Parameter
|
||||||
|
\li Use
|
||||||
|
\row
|
||||||
|
\li -?, -h, --help
|
||||||
|
\li Display help.
|
||||||
|
\row
|
||||||
|
\li -v, --version
|
||||||
|
\li Display version information.
|
||||||
|
\row
|
||||||
|
\li --verbose
|
||||||
|
\li Display additional information.
|
||||||
|
\row
|
||||||
|
\li --update <file>
|
||||||
|
\li Update an existing installer or maintenance tool with a new
|
||||||
|
installer base.
|
||||||
|
\row
|
||||||
|
\li --dump <folder>
|
||||||
|
\li Dump the binary content that belongs to an installer or
|
||||||
|
maintenance tool into the target.
|
||||||
|
\row
|
||||||
|
\li --operation <mode,name,args,...>
|
||||||
|
\li Execute an operation with a list of arguments.
|
||||||
|
|
||||||
|
\c mode can be \c DO or \c UNDO, depending on whether the step
|
||||||
|
contains instructions for the installer or uninstaller.
|
||||||
|
\endtable
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -34,7 +34,11 @@
|
|||||||
\title Controller Scripting
|
\title Controller Scripting
|
||||||
|
|
||||||
For each installer, you can specify a control script that interacts with certain parts of
|
For each installer, you can specify a control script that interacts with certain parts of
|
||||||
the installer's UI or functionality. The script format has to be compatible with QJSEngine.
|
the installer's UI or functionality. The control script can add and remove pages to the
|
||||||
|
wizard, change existing pages, do additional checks, and interact with the UI by
|
||||||
|
simulating user clicks. This allows for example unattended installations.
|
||||||
|
|
||||||
|
The script format has to be compatible with QJSEngine.
|
||||||
|
|
||||||
This section describes the functions that are called to implement such a control script.
|
This section describes the functions that are called to implement such a control script.
|
||||||
It also gives an overview of installer pages and the widgets that are available on each
|
It also gives an overview of installer pages and the widgets that are available on each
|
||||||
@ -63,7 +67,7 @@
|
|||||||
{
|
{
|
||||||
var widget = gui.currentPageWidget(); // get the current wizard page
|
var widget = gui.currentPageWidget(); // get the current wizard page
|
||||||
if (widget != null) {
|
if (widget != null) {
|
||||||
widget.setColoredTitle("New title."); // set the page title
|
widget.title = "New title."; // set the page title
|
||||||
widget.MessageLabel.setText("New Message."); // set the welcome text
|
widget.MessageLabel.setText("New Message."); // set the welcome text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,10 +114,8 @@
|
|||||||
In addition, a special argument, UNDOEXECUTE, separates the DO step of the operation
|
In addition, a special argument, UNDOEXECUTE, separates the DO step of the operation
|
||||||
from the UNDO step.
|
from the UNDO step.
|
||||||
|
|
||||||
example:
|
Example:
|
||||||
\code
|
\c{component.addOperation("Execute", "touch", "test.txt", "UNDOEXECUTE", "rm", "test.txt")}
|
||||||
component.addOperation("Execute", "touch", "test.txt", "UNDOEXECUTE", "rm", "test.txt")
|
|
||||||
\endcode
|
|
||||||
\row
|
\row
|
||||||
\li CreateShortcut
|
\li CreateShortcut
|
||||||
\li "CreateShortcut" \c filename \c linkname [\c arguments]
|
\li "CreateShortcut" \c filename \c linkname [\c arguments]
|
||||||
@ -127,7 +125,7 @@
|
|||||||
\c arguments. On Unix, this creates a symbolic link.
|
\c arguments. On Unix, this creates a symbolic link.
|
||||||
\row
|
\row
|
||||||
\li CreateDesktopEntry
|
\li CreateDesktopEntry
|
||||||
\li "CreateDesktopEntry" \c filename \c "key=value[\nkey2=value2[\nkey3=value3]]]"
|
\li "CreateDesktopEntry" \c {filename "key=value[ key2=value2[ key3=value3]]]"}
|
||||||
\li Creates a .desktop initialization file, as specified by
|
\li Creates a .desktop initialization file, as specified by
|
||||||
freedesktop.org.
|
freedesktop.org.
|
||||||
|
|
||||||
@ -173,7 +171,7 @@
|
|||||||
registry) or by \c application and \c company name. Set \c scope
|
registry) or by \c application and \c company name. Set \c scope
|
||||||
to "SystemScope" to create an entry in the system scope.
|
to "SystemScope" to create an entry in the system scope.
|
||||||
|
|
||||||
\note: The operation is using QSettings to store the key value pair. QSettings
|
\note The operation is using QSettings to store the key value pair. QSettings
|
||||||
always treats backslash as a special character and provides no API for reading
|
always treats backslash as a special character and provides no API for reading
|
||||||
or writing such entries. Do not use slashes ('/' and '\') in section or key names;
|
or writing such entries. Do not use slashes ('/' and '\') in section or key names;
|
||||||
the backslash character is used to separate sub keys. On windows, '\' are converted
|
the backslash character is used to separate sub keys. On windows, '\' are converted
|
||||||
|
@ -59,4 +59,6 @@
|
|||||||
A custom button.
|
A custom button.
|
||||||
\value buttons.CustomButton3
|
\value buttons.CustomButton3
|
||||||
A custom button.
|
A custom button.
|
||||||
|
|
||||||
|
\sa {Controller Scripting}
|
||||||
*/
|
*/
|
||||||
|
@ -156,16 +156,11 @@
|
|||||||
Emitted when the component has been loaded.
|
Emitted when the component has been loaded.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal component::selectedChanged(boolean isSelected)
|
|
||||||
|
|
||||||
Emitted when the component selection has changed to \a isSelected.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlsignal component::valueChanged(string key, string value)
|
\qmlsignal component::valueChanged(string key, string value)
|
||||||
|
|
||||||
Emitted when the variable with name \a key has changed to \a value.
|
Emitted when the value of the variable with the name \a key changes to
|
||||||
|
\a value.
|
||||||
|
|
||||||
\sa setValue
|
\sa setValue
|
||||||
*/
|
*/
|
||||||
@ -180,8 +175,9 @@
|
|||||||
\qmlmethod string component::value(string key, string value = "")
|
\qmlmethod string component::value(string key, string value = "")
|
||||||
|
|
||||||
Returns the value of variable name \a key. If \a key is not known yet, \a defaultValue is returned.
|
Returns the value of variable name \a key. If \a key is not known yet, \a defaultValue is returned.
|
||||||
Note: If a component is virtual and you ask for the component value with key "Default", it will always
|
|
||||||
return \c false.
|
\note If a component is virtual and you ask for the component value with the
|
||||||
|
key "Default", it will always return \c false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -199,7 +195,8 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod QWidget component::userInterface(string name)
|
\qmlmethod QWidget component::userInterface(string name)
|
||||||
|
|
||||||
Returns the QWidget created for \a name or 0 if the widget already has been deleted or cannot be found.
|
Returns the QWidget created for \a name or \c 0 if the widget has been
|
||||||
|
deleted or cannot be found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -207,11 +204,12 @@
|
|||||||
|
|
||||||
Creates all operations needed to install this component's \a path. \a path is a full qualified
|
Creates all operations needed to install this component's \a path. \a path is a full qualified
|
||||||
filename including the component's name. This method gets called from
|
filename including the component's name. This method gets called from
|
||||||
component::createOperationsForArchive. You can override it by providing a method with
|
createOperationsForArchive. You can override it by providing a method with
|
||||||
the same name in the component script.
|
the same name in the component script.
|
||||||
|
|
||||||
\note RSA signature files are omitted by this method.
|
\note RSA signature files are omitted by this method.
|
||||||
\note If you call this method from a script, it won't call the scripts method with the same name.
|
\note If you call this method from a script, it will not call the script's
|
||||||
|
method with the same name.
|
||||||
|
|
||||||
The default implementation is recursively creating Copy and Mkdir operations for all files
|
The default implementation is recursively creating Copy and Mkdir operations for all files
|
||||||
and folders within \a path.
|
and folders within \a path.
|
||||||
@ -221,10 +219,11 @@
|
|||||||
\qmlmethod void component::createOperationsForArchive(string archive)
|
\qmlmethod void component::createOperationsForArchive(string archive)
|
||||||
|
|
||||||
Creates all operations needed to install this component's \a archive. This method gets called
|
Creates all operations needed to install this component's \a archive. This method gets called
|
||||||
from component::createOperations. You can override this method by providing a method with the
|
from createOperations. You can override this method by providing a method with the
|
||||||
same name in the component script.
|
same name in the component script.
|
||||||
|
|
||||||
\note If you call this method from a script, it won't call the scripts method with the same name.
|
\note If you call this method from a script, it will not call the script's
|
||||||
|
method with the same name.
|
||||||
|
|
||||||
The default implementation calls createOperationsForPath for everything contained in the archive.
|
The default implementation calls createOperationsForPath for everything contained in the archive.
|
||||||
If \a archive is a compressed archive known to the installer system, an Extract operation is
|
If \a archive is a compressed archive known to the installer system, an Extract operation is
|
||||||
@ -251,11 +250,20 @@
|
|||||||
\qmlmethod void component::createOperations()
|
\qmlmethod void component::createOperations()
|
||||||
|
|
||||||
Creates all operations needed to install this component.
|
Creates all operations needed to install this component.
|
||||||
You can override this method by providing a method with the same name in the component script.
|
You can override this method by providing a method with the same name in the component script:
|
||||||
|
|
||||||
\note If you call this method from a script, it won't call the scripts method with the same name.
|
\code
|
||||||
|
Component.prototype.createOperations = function()
|
||||||
|
{
|
||||||
|
// call default implementation
|
||||||
|
component.createOperations();
|
||||||
|
// ... add custom operations
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
The default implementation calls createOperationsForArchive for all archives in this component.
|
The default implementation calls createOperationsForArchive for all archives in this component.
|
||||||
|
|
||||||
|
\sa component::addOperation()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -288,8 +296,8 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod void component::addStopProcessForUpdateRequest(string process)
|
\qmlmethod void component::addStopProcessForUpdateRequest(string process)
|
||||||
|
|
||||||
Adds a request for quitting the process \a process before installing/updating/uninstalling the
|
Adds a request for quitting the process \a process before installing,
|
||||||
component.
|
updating, or uninstalling the component.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -301,13 +309,9 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod void component::setStopProcessForUpdateRequest(string process, boolean requested)
|
\qmlmethod void component::setStopProcessForUpdateRequest(string process, boolean requested)
|
||||||
|
|
||||||
Convenience: Add/remove request depending on \a requested (add if \c true, remove if \c false).
|
A convenience method for adding or removing the request for stopping
|
||||||
*/
|
\a process depending on whether \a requested is \c true (add) or \c false
|
||||||
|
(remove).
|
||||||
/*!
|
|
||||||
\qmlmethod boolean component::addOperation(string operation, string parameter1 = "", string parameter2 = "", ..., string parameter10 = "")
|
|
||||||
|
|
||||||
Convenience method for calling addOperation(string, stringlist) with up to 10 arguments.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -316,6 +320,14 @@
|
|||||||
Creates and adds an installation operation for \a operation. Add any number of parameters.
|
Creates and adds an installation operation for \a operation. Add any number of parameters.
|
||||||
The contents of the parameters get variables like "@TargetDir@" replaced with their values,
|
The contents of the parameters get variables like "@TargetDir@" replaced with their values,
|
||||||
if contained.
|
if contained.
|
||||||
|
|
||||||
|
The method is typically called from within \l component::createOperations().
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean component::addOperation(string operation, string parameter1 = "", string parameter2 = "", ..., string parameter10 = "")
|
||||||
|
|
||||||
|
Convenience method for calling addOperation(string, stringlist) with up to 10 arguments.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -355,7 +367,7 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::isAutoDependOn(QSet<string> componentsToInstall)
|
\qmlmethod boolean component::isAutoDependOn(QSet<string> componentsToInstall)
|
||||||
|
|
||||||
Determines if the component comes as an auto dependency. Returns \c true if the component needs
|
Determines whether the component comes as an auto dependency. Returns \c true if the component needs
|
||||||
to be installed.
|
to be installed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -372,31 +384,32 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::isInstalled()
|
\qmlmethod boolean component::isInstalled()
|
||||||
|
|
||||||
Determines if the component is installed.
|
Determines whether the component is installed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::installationRequested()
|
\qmlmethod boolean component::installationRequested()
|
||||||
|
|
||||||
Determines if the user wants to install the component
|
Determines whether the user wants to install the component.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlmethod void component::setUpdateAvailable(boolean isUpdateAvailable)
|
\qmlmethod void component::setUpdateAvailable(boolean isUpdateAvailable)
|
||||||
|
|
||||||
Sets a flag that the core found an update
|
Sets a flag that the core found an update.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::updateRequested()
|
\qmlmethod boolean component::updateRequested()
|
||||||
|
|
||||||
Determines if the user wants to install the update for this component
|
Determines whether the user wants to install the update for this component.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::componentChangeRequested()
|
\qmlmethod boolean component::componentChangeRequested()
|
||||||
|
|
||||||
Returns \c true if that component will be changed (update/installation/uninstallation).
|
Returns \c true if this component will be changed (update, installation, or
|
||||||
|
uninstallation).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -408,13 +421,13 @@
|
|||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::isUninstalled()
|
\qmlmethod boolean component::isUninstalled()
|
||||||
|
|
||||||
Determines if the component is uninstalled.
|
Determines whether the component is uninstalled.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\qmlmethod boolean component::uninstallationRequested()
|
\qmlmethod boolean component::uninstallationRequested()
|
||||||
|
|
||||||
Determines if the user wants to uninstall the component.
|
Determines whether the user wants to uninstall the component.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
737
doc/scripting-api/packagemanagercore.qdoc
Normal file
737
doc/scripting-api/packagemanagercore.qdoc
Normal file
@ -0,0 +1,737 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2015 The Qt Company Ltd.
|
||||||
|
** Contact: http://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Installer Framework.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:FDL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and The Qt Company. For licensing terms
|
||||||
|
** and conditions see http://qt.io/terms-conditions. For further
|
||||||
|
** information use the contact form at http://www.qt.io/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Free Documentation License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Free
|
||||||
|
** Documentation License version 1.3 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file included in the packaging of
|
||||||
|
** this file. Please review the following information to ensure
|
||||||
|
** the GNU Free Documentation License version 1.3 requirements
|
||||||
|
** will be met: http://www.gnu.org/copyleft/fdl.html.
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmltype installer
|
||||||
|
\inqmlmodule scripting
|
||||||
|
|
||||||
|
\brief Provides access to core functionality of the Qt Installer Framework.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod array installer::components()
|
||||||
|
|
||||||
|
Returns an array of all available components.
|
||||||
|
|
||||||
|
\sa component
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::aboutCalculateComponentsToInstall()
|
||||||
|
|
||||||
|
Emitted before the ordered list of components to install is calculated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::finishedCalculateComponentsToInstall()
|
||||||
|
|
||||||
|
Emitted after the ordered list of components to install was calculated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::aboutCalculateComponentsToUninstall()
|
||||||
|
|
||||||
|
Emitted before the ordered list of components to uninstall is calculated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::finishedCalculateComponentsToUninstall()
|
||||||
|
|
||||||
|
Emitted after the ordered list of components to uninstall was calculated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::componentAdded(Component component)
|
||||||
|
|
||||||
|
Emitted when a new root component is added.
|
||||||
|
|
||||||
|
\sa rootComponentsAdded, updaterComponentsAdded
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::rootComponentsAdded(list<Component> components)
|
||||||
|
|
||||||
|
Emitted when a new list of root components is added.
|
||||||
|
|
||||||
|
\sa componentAdded, updaterComponentsAdded
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::updaterComponentsAdded(list<Component> components)
|
||||||
|
|
||||||
|
Emitted when a new list of updater components is added.
|
||||||
|
|
||||||
|
\sa componentAdded, rootComponentsAdded
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::valueChanged(string key, string value)
|
||||||
|
|
||||||
|
Emitted when a value changes.
|
||||||
|
|
||||||
|
\sa setValue
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::statusChanged(Status status)
|
||||||
|
|
||||||
|
Emitted when the installer status changes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::currentPageChanged(int page)
|
||||||
|
|
||||||
|
Emitted when the current page changes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::finishButtonClicked()
|
||||||
|
|
||||||
|
Emitted when the user clicks the \uicontrol Finish button of the installer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::metaJobProgress(int progress)
|
||||||
|
|
||||||
|
Triggered with progress updates of the communication with a remote
|
||||||
|
repository. Progress ranges from 0 to 100.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::metaJobInfoMessage(string message)
|
||||||
|
|
||||||
|
Triggered with informative updates of the communication with a remote repository.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::startAllComponentsReset()
|
||||||
|
|
||||||
|
Triggered when the list of components starts to get updated.
|
||||||
|
|
||||||
|
\sa finishAllComponentsReset
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::finishAllComponentsReset(list<Component> rootComponents)
|
||||||
|
|
||||||
|
Triggered when the list of new root components has been updated.
|
||||||
|
|
||||||
|
\sa startAllComponentsReset
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::startUpdaterComponentsReset()
|
||||||
|
|
||||||
|
Triggered when components start to get updated during a remote update.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::finishUpdaterComponentsReset(list<Component> componentsWithUpdates)
|
||||||
|
|
||||||
|
Triggered when the list of available remote updates has been updated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::installationStarted()
|
||||||
|
|
||||||
|
Triggered when installation has started.
|
||||||
|
|
||||||
|
\sa installationFinished installationInterrupted
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::installationInterrupted()
|
||||||
|
|
||||||
|
Triggered when installation has been interrupted (cancelled).
|
||||||
|
|
||||||
|
\sa interrupt installationStarted installationFinished
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::installationFinished()
|
||||||
|
|
||||||
|
Triggered when installation has finished.
|
||||||
|
|
||||||
|
\sa installationStarted installationInterrupted
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::updateFinished()
|
||||||
|
|
||||||
|
Triggered when an update has finished.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::uninstallationStarted()
|
||||||
|
|
||||||
|
Triggered when uninstallation has started.
|
||||||
|
|
||||||
|
\sa uninstallationFinished
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::uninstallationFinished()
|
||||||
|
|
||||||
|
Triggered when uninstallation has finished.
|
||||||
|
|
||||||
|
\sa uninstallationStarted
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::titleMessageChanged(string title)
|
||||||
|
|
||||||
|
Emitted when the text of the installer status (on the PerformInstallation page) changes to
|
||||||
|
\a title.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::wizardPageInsertionRequested(Widget widget, WizardPage page)
|
||||||
|
|
||||||
|
Emitted when a custom \a widget is about to be inserted into \a page by addWizardPage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::wizardPageRemovalRequested(Widget widget)
|
||||||
|
|
||||||
|
Emitted when a \a widget is removed by removeWizardPage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::wizardWidgetInsertionRequested(Widget widget, WizardPage page)
|
||||||
|
|
||||||
|
Emitted when a \a widget is inserted into \a page by addWizardPageItem.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::wizardWidgetRemovalRequested(Widget widget)
|
||||||
|
|
||||||
|
Emitted when a \a widget is removed by removeWizardPageItem.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::wizardPageVisibilityChangeRequested(bool visible, int page)
|
||||||
|
|
||||||
|
Emitted when the visibility of the page with id \a page changes to \a visible.
|
||||||
|
|
||||||
|
\sa setDefaultPageVisible
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::setValidatorForCustomPageRequested(Component component, string name,
|
||||||
|
string callbackName)
|
||||||
|
|
||||||
|
Triggered when setValidatorForCustomPage is called.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::setAutomatedPageSwitchEnabled(bool request)
|
||||||
|
|
||||||
|
Triggered when the automatic switching from PerformInstallation to InstallationFinished page
|
||||||
|
is enabled (\a request = \c true) or disabled (\a request = \c false).
|
||||||
|
|
||||||
|
The automatic switching is disabled automatically when for example the user expands or unexpands
|
||||||
|
the \gui Details section of the PerformInstallation page.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal installer::coreNetworkSettingsChanged()
|
||||||
|
|
||||||
|
Emitted when the network settings are changed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setCompleteUninstallation(bool complete)
|
||||||
|
|
||||||
|
Sets the uninstallation to be \a complete. If \a complete is false, only components deselected
|
||||||
|
by the user will be uninstalled. This option applies only on uninstallation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::cancelMetaInfoJob()
|
||||||
|
|
||||||
|
Cancels the retrieval of meta information from a remote repository.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::componentsToInstallNeedsRecalculation()
|
||||||
|
|
||||||
|
Ensures that component dependencies are re-calculated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::autoAcceptMessageBoxes()
|
||||||
|
|
||||||
|
Automatically accept all user message boxes.
|
||||||
|
|
||||||
|
\sa autoRejectMessageBoxes, setMessageBoxAutomaticAnswer
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::autoRejectMessageBoxes()
|
||||||
|
|
||||||
|
Automatically reject all user message boxes.
|
||||||
|
|
||||||
|
\sa autoAcceptMessageBoxes, setMessageBoxAutomaticAnswer
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setMessageBoxAutomaticAnswer(string identifier, int button)
|
||||||
|
|
||||||
|
Automatically close the message box with ID \a identifier as if the user had pressed \a button.
|
||||||
|
|
||||||
|
This can be used for unattended (automatic) installations.
|
||||||
|
|
||||||
|
\sa QMessageBox, autoAcceptMessageBoxes, autoRejectMessageBoxes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod float installer::requiredDiskSpace()
|
||||||
|
|
||||||
|
Returns the additional estimated amount of disk space in bytes required after installation.
|
||||||
|
|
||||||
|
\sa requiredTemporaryDiskSpace
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod float installer::requiredTemporaryDiskSpace()
|
||||||
|
|
||||||
|
Returns the estimated required disk space during installation in bytes.
|
||||||
|
|
||||||
|
\sa requiredDiskSpace
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isFileExtensionRegistered(string extension)
|
||||||
|
|
||||||
|
Returns whether a file extension is already registered in the Windows registry. Returns \c false
|
||||||
|
on all other platforms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::fileExists(string filePath)
|
||||||
|
|
||||||
|
Returns \c true if the \a filePath exists; otherwise returns \c false.
|
||||||
|
|
||||||
|
\note If the file is a symlink that points to a non existing
|
||||||
|
file, \c false is returned.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::addWizardPage(Component component, string name, int page)
|
||||||
|
|
||||||
|
Adds the widget with objectName() \a name registered by \a component as a new page
|
||||||
|
into the installer's GUI wizard. The widget is added before \a page.
|
||||||
|
|
||||||
|
See \l{Controller Scripting} for the possible values of \a page.
|
||||||
|
|
||||||
|
Returns \c true if the operation succeeded.
|
||||||
|
|
||||||
|
\sa removeWizardPage, setDefaultPageVisible
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::removeWizardPage(Component component, string name)
|
||||||
|
|
||||||
|
Removes the widget with objectName() \a name previously added to the installer's wizard
|
||||||
|
by \a component.
|
||||||
|
|
||||||
|
Returns \c true if the operation succeeded.
|
||||||
|
|
||||||
|
\sa addWizardPage, setDefaultPageVisible, wizardPageRemovalRequested
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::setDefaultPageVisible(int page, boolean visible)
|
||||||
|
|
||||||
|
Sets the visibility of the default page with the ID \a page to \a visible. That is,
|
||||||
|
removes it from or adds it to the wizard. This works only for pages that were
|
||||||
|
in the installer when it was started.
|
||||||
|
|
||||||
|
Returns \c true.
|
||||||
|
|
||||||
|
\sa addWizardPage, removeWizardPage
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setValidatorForCustomPage(Component component, string name,
|
||||||
|
string callbackName)
|
||||||
|
|
||||||
|
\sa setValidatorForCustomPageRequested
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::addWizardPageItem(Component component, string name, int page)
|
||||||
|
|
||||||
|
Adds the widget with objectName() \a name registered by \a component as a GUI element
|
||||||
|
into the installer's GUI wizard. The widget is added on \a page.
|
||||||
|
|
||||||
|
See \l{Controller Scripting} for the possible values of \a page.
|
||||||
|
|
||||||
|
\sa removeWizardPageItem, wizardWidgetInsertionRequested
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::removeWizardPageItem(Component component, string name)
|
||||||
|
|
||||||
|
Removes the widget with objectName() \a name previously added to the installer's wizard
|
||||||
|
by \a component.
|
||||||
|
|
||||||
|
\sa addWizardPageItem
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::addUserRepositories(stringlist repositories)
|
||||||
|
|
||||||
|
Registers additional \a repositories.
|
||||||
|
|
||||||
|
\sa setTemporaryRepositories
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setTemporaryRepositories(stringlist repositories, boolean replace)
|
||||||
|
|
||||||
|
Sets additional \a repositories for this instance of the installer or updater.
|
||||||
|
Will be removed after invoking it again.
|
||||||
|
|
||||||
|
\sa addUserRepositories
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::calculateComponentsToInstall()
|
||||||
|
|
||||||
|
Calculates an ordered list of components to install based on the current run mode. Also auto
|
||||||
|
installed dependencies are resolved. The aboutCalculateComponentsToInstall() signal is emitted
|
||||||
|
before the calculation starts, the finishedCalculateComponentsToInstall() signal once all
|
||||||
|
calculations are done.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::calculateComponentsToUninstall()
|
||||||
|
|
||||||
|
Calculates a list of components to uninstall based on the current run mode. Auto installed
|
||||||
|
dependencies are not yet resolved. The aboutCalculateComponentsToUninstall() signal is emitted
|
||||||
|
before the calculation starts, the finishedCalculateComponentsToUninstall() signal once all
|
||||||
|
calculations are done. Always returns \c true.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::gainAdminRights()
|
||||||
|
|
||||||
|
Tries to gain admin rights. On success, it returns \c true.
|
||||||
|
|
||||||
|
\sa dropAdminRights
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::dropAdminRights()
|
||||||
|
|
||||||
|
Drops admin rights gained by gainAdminRights.
|
||||||
|
|
||||||
|
\sa gainAdminRights
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isProcessRunning(string name)
|
||||||
|
|
||||||
|
Returns \c true if a process with \a name is running. On Windows, the comparison
|
||||||
|
is case-insensitive.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::killProcess(string absoluteFilePath)
|
||||||
|
|
||||||
|
Returns \c true if a process with \a absoluteFilePath could be killed or is
|
||||||
|
not running.
|
||||||
|
|
||||||
|
\note This is implemented in a semi blocking way (to keep the main thread to paint the UI).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setDependsOnLocalInstallerBinary()
|
||||||
|
|
||||||
|
Makes sure the installer runs from a local drive. Otherwise the user will get an
|
||||||
|
appropriate error message.
|
||||||
|
|
||||||
|
\note This only works on Windows.
|
||||||
|
|
||||||
|
\sa localInstallerBinaryUsed
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::localInstallerBinaryUsed()
|
||||||
|
|
||||||
|
Returns \c false if the installer is run on Windows, and the installer has been started from
|
||||||
|
a remote file system drive. Otherwise returns \c true.
|
||||||
|
|
||||||
|
\sa setDependsOnLocalInstallerBinary
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod array installer::execute(string program, stringlist arguments = undefined,
|
||||||
|
string stdin = "")
|
||||||
|
|
||||||
|
Starts the program \a program with the arguments \a arguments in a
|
||||||
|
new process and waits for it to finish.
|
||||||
|
|
||||||
|
\a stdin is sent as standard input to the application.
|
||||||
|
|
||||||
|
Returns an empty array if the program could not be executed, otherwise
|
||||||
|
the output of command as the first item, and the return code as the second.
|
||||||
|
|
||||||
|
\note On Unix, the output is just the output to stdout, not to stderr.
|
||||||
|
|
||||||
|
\sa executeDetached
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::executeDetached(string program, stringlist arguments = undefined,
|
||||||
|
string workingDirectory = "")
|
||||||
|
|
||||||
|
Starts the program \a program with the arguments \a arguments in a
|
||||||
|
new process, and detaches from it. Returns \c true on success;
|
||||||
|
otherwise returns \c false. If the installer exits, the
|
||||||
|
detached process will continue to live.
|
||||||
|
|
||||||
|
\note Arguments that contain spaces are not passed to the
|
||||||
|
process as separate arguments.
|
||||||
|
|
||||||
|
\b{Unix:} The started process will run in its own session and act
|
||||||
|
like a daemon.
|
||||||
|
|
||||||
|
\b{Windows:} Arguments that contain spaces are wrapped in quotes.
|
||||||
|
The started process will run as a regular standalone process.
|
||||||
|
|
||||||
|
The process will be started in the directory \a workingDirectory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod string installer::environmentVariable(string name)
|
||||||
|
|
||||||
|
Returns the content of the environment variable \a name. An empty string is returned if the
|
||||||
|
environment variable is not set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::performOperation(string name, stringlist arguments)
|
||||||
|
|
||||||
|
Instantly performs the operation \a name with \a arguments.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::versionMatches(string version, string requirement)
|
||||||
|
|
||||||
|
Returns \c true when \a version matches the \a requirement.
|
||||||
|
\a requirement can be a fixed version number or it can be prefixed by the comparators '>', '>=',
|
||||||
|
'<', '<=' and '='.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod string installer::findLibrary(string name, stringlist paths = [])
|
||||||
|
|
||||||
|
Finds a library named \a name in \a paths.
|
||||||
|
If \a paths is empty, it gets filled with platform dependent default paths.
|
||||||
|
The resulting path is returned.
|
||||||
|
|
||||||
|
This method can be used by scripts to check external dependencies.
|
||||||
|
|
||||||
|
\sa findPath
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod string installer::findPath(string name, stringlist paths = [])
|
||||||
|
|
||||||
|
Tries to find a file name \a name in one of \a paths.
|
||||||
|
The resulting path is returned.
|
||||||
|
|
||||||
|
This method can be used by scripts to check external dependencies.
|
||||||
|
|
||||||
|
\sa findLibrary
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setInstallerBaseBinary(string path)
|
||||||
|
|
||||||
|
Sets the \c installerbase binary to use when writing the maintenance tool.
|
||||||
|
Set the path if an update to the binary is available.
|
||||||
|
|
||||||
|
If not set, the executable segment of the running installer or uninstaller
|
||||||
|
will be used.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod string installer::value(string key, string defaultValue = "")
|
||||||
|
|
||||||
|
Returns the installer value for \a key. If \a key is not known to the system, \a defaultValue is
|
||||||
|
returned. Additionally, on Windows, \a key can be a registry key.
|
||||||
|
|
||||||
|
\sa setValue, containsValue, valueChanged
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod stringlist installer::values(string key, stringlist defaultValue = [])
|
||||||
|
|
||||||
|
Returns the installer value for \a key. If \a key is not known to the system, \a defaultValue is
|
||||||
|
returned. Additionally, on Windows, \a key can be a registry key.
|
||||||
|
|
||||||
|
\sa value
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setValue(string key, string value)
|
||||||
|
|
||||||
|
Sets the installer value for \a key to \a value.
|
||||||
|
|
||||||
|
\sa value, containsValue, valueChanged
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::containsValue(string key)
|
||||||
|
|
||||||
|
Returns \c true if the installer contains a value for \a key.
|
||||||
|
|
||||||
|
\sa value, setValue, valueChanged
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setSharedFlag(string key, boolean value)
|
||||||
|
|
||||||
|
Sets a shared flag with name \a key to \a value. This is one option
|
||||||
|
to share information between scripts.
|
||||||
|
|
||||||
|
Deprecated since 2.0.0. Use setValue instead.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::sharedFlag(string key)
|
||||||
|
|
||||||
|
Returns shared flag with name \a key. This is one option
|
||||||
|
to share information between scripts.
|
||||||
|
|
||||||
|
Deprecated since 2.0.0. Use \l value or \l values instead.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::interrupt()
|
||||||
|
|
||||||
|
Cancels an ongoing installation.
|
||||||
|
|
||||||
|
\sa installationInterrupted
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setCanceled()
|
||||||
|
|
||||||
|
Cancels the installation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isInstaller()
|
||||||
|
|
||||||
|
Returns \c true if the application, binary, or executable is executed in
|
||||||
|
installer mode.
|
||||||
|
|
||||||
|
\sa isUninstaller, isUpdater, isPackageManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isOfflineOnly()
|
||||||
|
|
||||||
|
Returns \c true if this is an offline-only installer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setUninstaller()
|
||||||
|
|
||||||
|
Forces an uninstaller context.
|
||||||
|
|
||||||
|
\sa isUninstaller, setUpdater, setPackageManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isUninstaller()
|
||||||
|
|
||||||
|
Returns \c true if the the application, binary, or executable is executed in
|
||||||
|
uninstaller mode.
|
||||||
|
|
||||||
|
\sa setUninstaller, isInstaller, isUpdater, isPackageManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setUpdater()
|
||||||
|
|
||||||
|
Forces an updater context.
|
||||||
|
|
||||||
|
\sa isUpdater, setUninstaller, setPackageManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isUpdater()
|
||||||
|
|
||||||
|
Returns \c true if the the application, binary, or executable is executed in
|
||||||
|
updater mode.
|
||||||
|
|
||||||
|
\sa setUpdater, isInstaller, isUninstaller, isPackageManager
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::setPackageManager()
|
||||||
|
|
||||||
|
Forces a package manager context.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::isPackageManager()
|
||||||
|
|
||||||
|
Returns \c true if the the application, binary, or executable is executed in
|
||||||
|
package manager mode.
|
||||||
|
|
||||||
|
\sa setPackageManager, isInstaller, isUninstaller, isUpdater
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::runInstaller()
|
||||||
|
|
||||||
|
Runs the installer. Returns \c true on success, \c false otherwise.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::runUninstaller()
|
||||||
|
|
||||||
|
Runs the uninstaller. Returns \c true on success, \c false otherwise.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod boolean installer::runPackageUpdater()
|
||||||
|
|
||||||
|
Runs the package updater. Returns \c true on success, \c false otherwise.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod void installer::languageChanged()
|
||||||
|
|
||||||
|
Calls languangeChanged on all components.
|
||||||
|
*/
|
@ -121,6 +121,10 @@
|
|||||||
component::addOperation(). If you need to run an operation that requires
|
component::addOperation(). If you need to run an operation that requires
|
||||||
administrative rights, use component::addElevatedOperation() instead.
|
administrative rights, use component::addElevatedOperation() instead.
|
||||||
|
|
||||||
|
Operations need to be added before the actual installation step. Override
|
||||||
|
\l component::createOperations() to register custom operations for a
|
||||||
|
component.
|
||||||
|
|
||||||
Each operation has a unique key used for identification and can take up to
|
Each operation has a unique key used for identification and can take up to
|
||||||
five parameters. In the parameter values, you can use variables as set in
|
five parameters. In the parameter values, you can use variables as set in
|
||||||
installer::setValue(). For more information, see \l{Predefined Variables}.
|
installer::setValue(). For more information, see \l{Predefined Variables}.
|
||||||
|
@ -91,6 +91,10 @@
|
|||||||
\printuntil }
|
\printuntil }
|
||||||
\dots
|
\dots
|
||||||
|
|
||||||
|
\l installer::addWizardPage() registers a new page to the installer. \l gui::pageWidgetByObjectName()
|
||||||
|
is then used to retrieve the root widget of the new page, with its name being \c "Dynamic" + the object
|
||||||
|
name of the root widget as set in the .ui file.
|
||||||
|
|
||||||
\section1 Generating the Example Installer
|
\section1 Generating the Example Installer
|
||||||
|
|
||||||
To create the example installer, switch to the example source directory on
|
To create the example installer, switch to the example source directory on
|
||||||
|
@ -162,9 +162,10 @@ Component.prototype.readyToInstallWidgetEntered = function () {
|
|||||||
var widget = gui.pageWidgetByObjectName("DynamicReadyToInstallWidget");
|
var widget = gui.pageWidgetByObjectName("DynamicReadyToInstallWidget");
|
||||||
if (widget != null) {
|
if (widget != null) {
|
||||||
var html = "<b>Components to install:</b><ul>";
|
var html = "<b>Components to install:</b><ul>";
|
||||||
for (i = 0; i < installer.components.length; ++i) {
|
var components = installer.components();
|
||||||
if (installer.components[i].installationRequested())
|
for (i = 0; i < components.length; ++i) {
|
||||||
html = html + "<li>" + installer.components[i].displayName + "</li>"
|
if (components[i].installationRequested())
|
||||||
|
html = html + "<li>" + components[i].displayName + "</li>"
|
||||||
}
|
}
|
||||||
html = html + "</ul>";
|
html = html + "</ul>";
|
||||||
widget.showDetailsBrowser.html = html;
|
widget.showDetailsBrowser.html = html;
|
||||||
|
@ -133,7 +133,7 @@ static const QLatin1String scForcedInstallation("ForcedInstallation");
|
|||||||
|
|
||||||
The URLs are prefixed with \c {installer://}.
|
The URLs are prefixed with \c {installer://}.
|
||||||
|
|
||||||
\sa addDownloadableArchive, removeDownloadableArchive
|
\sa addDownloadableArchive(), removeDownloadableArchive()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -185,13 +185,7 @@ static const QLatin1String scForcedInstallation("ForcedInstallation");
|
|||||||
/*!
|
/*!
|
||||||
\fn Component::loaded()
|
\fn Component::loaded()
|
||||||
|
|
||||||
Emitted when the component has been loaded.
|
\sa {component::loaded}{component.loaded}
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn Component::selectedChanged(bool selected)
|
|
||||||
|
|
||||||
Emitted when the component selection changes to \a selected.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -199,13 +193,13 @@ static const QLatin1String scForcedInstallation("ForcedInstallation");
|
|||||||
|
|
||||||
Emitted when the value of the variable with the name \a key changes to \a value.
|
Emitted when the value of the variable with the name \a key changes to \a value.
|
||||||
|
|
||||||
\sa setValue
|
\sa {component::valueChanged}{component.valueChanged}, setValue()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn Component::virtualStateChanged()
|
\fn Component::virtualStateChanged()
|
||||||
|
|
||||||
Emitted when the virtual state of the component changes.
|
\sa {component::virtualStateChanged}{component.virtualStateChanged}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -384,7 +378,9 @@ QString Component::value(const QString &key, const QString &defaultValue) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the value of the variable \a key to \a value.
|
Sets the value of the variable with \a key to \a value.
|
||||||
|
|
||||||
|
\sa {component::setValue}{component.setValue}
|
||||||
*/
|
*/
|
||||||
void Component::setValue(const QString &key, const QString &value)
|
void Component::setValue(const QString &key, const QString &value)
|
||||||
{
|
{
|
||||||
@ -653,6 +649,8 @@ QHash<QString, QPair<QString, QString> > Component::licenses() const
|
|||||||
/*!
|
/*!
|
||||||
Returns the QWidget created for \a name or \c 0 if the widget has been deleted or cannot
|
Returns the QWidget created for \a name or \c 0 if the widget has been deleted or cannot
|
||||||
be found.
|
be found.
|
||||||
|
|
||||||
|
\sa {component::userInterface}{component.userInterface}
|
||||||
*/
|
*/
|
||||||
QWidget *Component::userInterface(const QString &name) const
|
QWidget *Component::userInterface(const QString &name) const
|
||||||
{
|
{
|
||||||
@ -662,7 +660,7 @@ QWidget *Component::userInterface(const QString &name) const
|
|||||||
/*!
|
/*!
|
||||||
Creates all operations needed to install this component's \a path. \a path is a fully qualified
|
Creates all operations needed to install this component's \a path. \a path is a fully qualified
|
||||||
filename including the component's name. This method gets called from
|
filename including the component's name. This method gets called from
|
||||||
Component::createOperationsForArchive. You can override it by providing a method with
|
createOperationsForArchive. You can override it by providing a method with
|
||||||
the same name in the component script.
|
the same name in the component script.
|
||||||
|
|
||||||
\note RSA signature files are omitted by this method.
|
\note RSA signature files are omitted by this method.
|
||||||
@ -671,6 +669,8 @@ QWidget *Component::userInterface(const QString &name) const
|
|||||||
|
|
||||||
The default implementation is recursively creating Copy and Mkdir operations for all files
|
The default implementation is recursively creating Copy and Mkdir operations for all files
|
||||||
and folders within \a path.
|
and folders within \a path.
|
||||||
|
|
||||||
|
\sa {component::createOperationsForPath}{component.createOperationsForPath}
|
||||||
*/
|
*/
|
||||||
void Component::createOperationsForPath(const QString &path)
|
void Component::createOperationsForPath(const QString &path)
|
||||||
{
|
{
|
||||||
@ -715,6 +715,8 @@ void Component::createOperationsForPath(const QString &path)
|
|||||||
The default implementation calls createOperationsForPath for everything contained in the archive.
|
The default implementation calls createOperationsForPath for everything contained in the archive.
|
||||||
If \a archive is a compressed archive known to the installer system, an Extract operation is
|
If \a archive is a compressed archive known to the installer system, an Extract operation is
|
||||||
created, instead.
|
created, instead.
|
||||||
|
|
||||||
|
\sa {component::createOperationsForArchive}{component.createOperationsForArchive}
|
||||||
*/
|
*/
|
||||||
void Component::createOperationsForArchive(const QString &archive)
|
void Component::createOperationsForArchive(const QString &archive)
|
||||||
{
|
{
|
||||||
@ -741,18 +743,7 @@ void Component::createOperationsForArchive(const QString &archive)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Starts the component installation.
|
\sa {component::beginInstallation}{component.beginInstallation}
|
||||||
You can override this method by providing a method with the same name in the component script.
|
|
||||||
|
|
||||||
\code
|
|
||||||
Component.prototype.beginInstallation = function()
|
|
||||||
{
|
|
||||||
// call default implementation
|
|
||||||
component.beginInstallation();
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
void Component::beginInstallation()
|
void Component::beginInstallation()
|
||||||
{
|
{
|
||||||
@ -761,14 +752,8 @@ void Component::beginInstallation()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Creates all operations needed to install this component.
|
\sa {component::createOperations}{component.createOperations}
|
||||||
You can override this method by providing a method with the same name in the component script.
|
\sa createOperationsForArchive()
|
||||||
|
|
||||||
\note If you call this method from a script, it will not call the script's method with the same
|
|
||||||
name.
|
|
||||||
|
|
||||||
The default implementation calls createOperationsForArchive() for all archives in this
|
|
||||||
component.
|
|
||||||
*/
|
*/
|
||||||
void Component::createOperations()
|
void Component::createOperations()
|
||||||
{
|
{
|
||||||
@ -789,6 +774,8 @@ void Component::createOperations()
|
|||||||
Registers the file or directory at \a path for being removed when this component gets uninstalled.
|
Registers the file or directory at \a path for being removed when this component gets uninstalled.
|
||||||
In case of a directory, this will be recursive. If \a wipe is set to \c true, the directory will
|
In case of a directory, this will be recursive. If \a wipe is set to \c true, the directory will
|
||||||
also be deleted if it contains changes made by the user after installation.
|
also be deleted if it contains changes made by the user after installation.
|
||||||
|
|
||||||
|
\sa {component::registerPathForUninstallation}{component.registerPathForUninstallation}
|
||||||
*/
|
*/
|
||||||
void Component::registerPathForUninstallation(const QString &path, bool wipe)
|
void Component::registerPathForUninstallation(const QString &path, bool wipe)
|
||||||
{
|
{
|
||||||
@ -822,7 +809,8 @@ QStringList Component::archives() const
|
|||||||
downloaded from an online repository. When adding \a path, it will be downloaded from the
|
downloaded from an online repository. When adding \a path, it will be downloaded from the
|
||||||
repository when the installation starts.
|
repository when the installation starts.
|
||||||
|
|
||||||
\sa removeDownloadableArchive, fromOnlineRepository, archives
|
\sa {component::addDownloadableArchive}{component.addDownloadableArchive}
|
||||||
|
\sa removeDownloadableArchive(), fromOnlineRepository, archives
|
||||||
*/
|
*/
|
||||||
void Component::addDownloadableArchive(const QString &path)
|
void Component::addDownloadableArchive(const QString &path)
|
||||||
{
|
{
|
||||||
@ -836,7 +824,8 @@ void Component::addDownloadableArchive(const QString &path)
|
|||||||
Removes the archive \a path previously added via addDownloadableArchive() from this component.
|
Removes the archive \a path previously added via addDownloadableArchive() from this component.
|
||||||
This can only be called if this component was downloaded from an online repository.
|
This can only be called if this component was downloaded from an online repository.
|
||||||
|
|
||||||
\sa addDownloadableArchive, fromOnlineRepository, archives
|
\sa {component::removeDownloadableArchive}{component.removeDownloadableArchive}
|
||||||
|
\sa addDownloadableArchive(), fromOnlineRepository, archives
|
||||||
*/
|
*/
|
||||||
void Component::removeDownloadableArchive(const QString &path)
|
void Component::removeDownloadableArchive(const QString &path)
|
||||||
{
|
{
|
||||||
@ -855,6 +844,8 @@ QStringList Component::downloadableArchives() const
|
|||||||
/*!
|
/*!
|
||||||
Adds a request for quitting the process \a process before installing, updating, or uninstalling
|
Adds a request for quitting the process \a process before installing, updating, or uninstalling
|
||||||
the component.
|
the component.
|
||||||
|
|
||||||
|
\sa {component::addStopProcessForUpdateRequest}{component.addStopProcessForUpdateRequest}
|
||||||
*/
|
*/
|
||||||
void Component::addStopProcessForUpdateRequest(const QString &process)
|
void Component::addStopProcessForUpdateRequest(const QString &process)
|
||||||
{
|
{
|
||||||
@ -863,6 +854,8 @@ void Component::addStopProcessForUpdateRequest(const QString &process)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Removes the request for quitting the process \a process again.
|
Removes the request for quitting the process \a process again.
|
||||||
|
|
||||||
|
\sa {component::removeStopProcessForUpdateRequest}{component.removeStopProcessForUpdateRequest}
|
||||||
*/
|
*/
|
||||||
void Component::removeStopProcessForUpdateRequest(const QString &process)
|
void Component::removeStopProcessForUpdateRequest(const QString &process)
|
||||||
{
|
{
|
||||||
@ -872,6 +865,8 @@ void Component::removeStopProcessForUpdateRequest(const QString &process)
|
|||||||
/*!
|
/*!
|
||||||
A convenience function for adding or removing the request for stopping \a process depending on
|
A convenience function for adding or removing the request for stopping \a process depending on
|
||||||
whether \a requested is \c true (add) or \c false (remove).
|
whether \a requested is \c true (add) or \c false (remove).
|
||||||
|
|
||||||
|
\sa {component::setStopProcessForUpdateRequest}{component.addStopProcessForUpdateReques}
|
||||||
*/
|
*/
|
||||||
void Component::setStopProcessForUpdateRequest(const QString &process, bool requested)
|
void Component::setStopProcessForUpdateRequest(const QString &process, bool requested)
|
||||||
{
|
{
|
||||||
@ -1006,6 +1001,8 @@ Operation *Component::createOperation(const QString &operationName, const QStrin
|
|||||||
Convenience method for calling the operation \a operation with up to ten parameters:
|
Convenience method for calling the operation \a operation with up to ten parameters:
|
||||||
\a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
|
\a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
|
||||||
\a parameter7, \a parameter8, \a parameter9, and \a parameter10.
|
\a parameter7, \a parameter8, \a parameter9, and \a parameter10.
|
||||||
|
|
||||||
|
\sa {component::addOperation}{component.addOperation}
|
||||||
*/
|
*/
|
||||||
bool Component::addOperation(const QString &operation, const QString ¶meter1, const QString ¶meter2,
|
bool Component::addOperation(const QString &operation, const QString ¶meter1, const QString ¶meter2,
|
||||||
const QString ¶meter3, const QString ¶meter4, const QString ¶meter5, const QString ¶meter6,
|
const QString ¶meter3, const QString ¶meter4, const QString ¶meter5, const QString ¶meter6,
|
||||||
@ -1039,6 +1036,8 @@ bool Component::addOperation(const QString &operation, const QStringList ¶me
|
|||||||
Convenience method for calling the elevated operation \a operation with up to ten parameters:
|
Convenience method for calling the elevated operation \a operation with up to ten parameters:
|
||||||
\a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
|
\a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
|
||||||
\a parameter7, \a parameter8, \a parameter9, and \a parameter10.
|
\a parameter7, \a parameter8, \a parameter9, and \a parameter10.
|
||||||
|
|
||||||
|
\sa {component::addElevatedOperation}{component.addElevatedOperation}
|
||||||
*/
|
*/
|
||||||
bool Component::addElevatedOperation(const QString &operation, const QString ¶meter1,
|
bool Component::addElevatedOperation(const QString &operation, const QString ¶meter1,
|
||||||
const QString ¶meter2, const QString ¶meter3, const QString ¶meter4, const QString ¶meter5,
|
const QString ¶meter2, const QString ¶meter3, const QString ¶meter4, const QString ¶meter5,
|
||||||
@ -1074,6 +1073,8 @@ bool Component::addElevatedOperation(const QString &operation, const QStringList
|
|||||||
Specifies whether operations should be automatically created when the installation starts. This
|
Specifies whether operations should be automatically created when the installation starts. This
|
||||||
would be done by calling createOperations(). If you set this to \c false, it is completely up
|
would be done by calling createOperations(). If you set this to \c false, it is completely up
|
||||||
to the component's script to create all operations.
|
to the component's script to create all operations.
|
||||||
|
|
||||||
|
\sa {component::autoCreateOperations}{component.autoCreateOperations}
|
||||||
*/
|
*/
|
||||||
bool Component::autoCreateOperations() const
|
bool Component::autoCreateOperations() const
|
||||||
{
|
{
|
||||||
@ -1131,6 +1132,7 @@ bool Component::validatePage()
|
|||||||
/*!
|
/*!
|
||||||
Adds the component specified by \a newDependency to the list of dependencies.
|
Adds the component specified by \a newDependency to the list of dependencies.
|
||||||
|
|
||||||
|
\sa {component::addDependency}{component.addDependency}
|
||||||
\sa dependencies
|
\sa dependencies
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1154,8 +1156,7 @@ QStringList Component::autoDependencies() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
\sa {component::setInstalled}{component.setInstalled}
|
||||||
Sets the component's state to installed.
|
|
||||||
*/
|
*/
|
||||||
void Component::setInstalled()
|
void Component::setInstalled()
|
||||||
{
|
{
|
||||||
@ -1166,6 +1167,8 @@ void Component::setInstalled()
|
|||||||
Determines whether the component comes as an auto dependency. Returns \c true if all components
|
Determines whether the component comes as an auto dependency. Returns \c true if all components
|
||||||
in \a componentsToInstall are already installed or selected for installation and this component
|
in \a componentsToInstall are already installed or selected for installation and this component
|
||||||
thus needs to be installed as well.
|
thus needs to be installed as well.
|
||||||
|
|
||||||
|
\sa {component::isAutoDependOn}{component.isAutoDependOn}
|
||||||
*/
|
*/
|
||||||
bool Component::isAutoDependOn(const QSet<QString> &componentsToInstall) const
|
bool Component::isAutoDependOn(const QSet<QString> &componentsToInstall) const
|
||||||
{
|
{
|
||||||
@ -1225,7 +1228,9 @@ bool Component::isInstalled() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns whether the user wants to install the component
|
Returns whether the user wants to install the component.
|
||||||
|
|
||||||
|
\sa {component::installationRequested}{component.installationRequested}
|
||||||
*/
|
*/
|
||||||
bool Component::installationRequested() const
|
bool Component::installationRequested() const
|
||||||
{
|
{
|
||||||
@ -1242,6 +1247,8 @@ bool Component::isSelectedForInstallation() const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the \a isUpdateAvailable flag to \c true to indicate that the core found an update.
|
Sets the \a isUpdateAvailable flag to \c true to indicate that the core found an update.
|
||||||
|
|
||||||
|
\sa {component::setUpdateAvailable}{component.setUpdateAvailable}
|
||||||
*/
|
*/
|
||||||
void Component::setUpdateAvailable(bool isUpdateAvailable)
|
void Component::setUpdateAvailable(bool isUpdateAvailable)
|
||||||
{
|
{
|
||||||
@ -1249,7 +1256,9 @@ void Component::setUpdateAvailable(bool isUpdateAvailable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns whether the user wants to install the update for this component
|
Returns whether the user wants to install the update for this component.
|
||||||
|
|
||||||
|
\sa {component::updateRequested}{component.updateRequested}
|
||||||
*/
|
*/
|
||||||
bool Component::updateRequested()
|
bool Component::updateRequested()
|
||||||
{
|
{
|
||||||
@ -1258,6 +1267,8 @@ bool Component::updateRequested()
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if that component will be changed (update, installation, or uninstallation).
|
Returns \c true if that component will be changed (update, installation, or uninstallation).
|
||||||
|
|
||||||
|
\sa {component::componentChangeRequested}{component.componentChangeRequested}
|
||||||
*/
|
*/
|
||||||
bool Component::componentChangeRequested()
|
bool Component::componentChangeRequested()
|
||||||
{
|
{
|
||||||
@ -1266,7 +1277,7 @@ bool Component::componentChangeRequested()
|
|||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the component state to uninstalled.
|
\sa {component::setUninstalled}{component.setUninstalled}
|
||||||
*/
|
*/
|
||||||
void Component::setUninstalled()
|
void Component::setUninstalled()
|
||||||
{
|
{
|
||||||
@ -1275,6 +1286,8 @@ void Component::setUninstalled()
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns whether the component is uninstalled.
|
Returns whether the component is uninstalled.
|
||||||
|
|
||||||
|
\sa {component::isUninstalled}{component.isUninstalled}
|
||||||
*/
|
*/
|
||||||
bool Component::isUninstalled() const
|
bool Component::isUninstalled() const
|
||||||
{
|
{
|
||||||
@ -1283,6 +1296,8 @@ bool Component::isUninstalled() const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns whether the user wants to uninstall the component.
|
Returns whether the user wants to uninstall the component.
|
||||||
|
|
||||||
|
\sa {component::uninstallationRequested}{component.uninstallationRequested}
|
||||||
*/
|
*/
|
||||||
bool Component::uninstallationRequested() const
|
bool Component::uninstallationRequested() const
|
||||||
{
|
{
|
||||||
@ -1294,7 +1309,8 @@ bool Component::uninstallationRequested() const
|
|||||||
/*!
|
/*!
|
||||||
Returns whether this component has been loaded from an online repository.
|
Returns whether this component has been loaded from an online repository.
|
||||||
|
|
||||||
\sa addDownloadableArchive, fromOnlineRepository
|
\sa {component::isFromOnlineRepository}{component.isFromOnlineRepository}
|
||||||
|
\sa addDownloadableArchive(), fromOnlineRepository
|
||||||
*/
|
*/
|
||||||
bool Component::isFromOnlineRepository() const
|
bool Component::isFromOnlineRepository() const
|
||||||
{
|
{
|
||||||
|
@ -203,7 +203,6 @@ public Q_SLOTS:
|
|||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void loaded();
|
void loaded();
|
||||||
void virtualStateChanged();
|
void virtualStateChanged();
|
||||||
void selectedChanged(bool selected);
|
|
||||||
void valueChanged(const QString &key, const QString &value);
|
void valueChanged(const QString &key, const QString &value);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
@ -89,6 +89,7 @@ void registerArc7z();
|
|||||||
void registerCodecBCJ();
|
void registerCodecBCJ();
|
||||||
void registerCodecBCJ2();
|
void registerCodecBCJ2();
|
||||||
|
|
||||||
|
void registerCodecCopy();
|
||||||
void registerCodecLZMA();
|
void registerCodecLZMA();
|
||||||
void registerCodecLZMA2();
|
void registerCodecLZMA2();
|
||||||
|
|
||||||
@ -107,6 +108,8 @@ static void initArchives()
|
|||||||
|
|
||||||
registerCodecBCJ();
|
registerCodecBCJ();
|
||||||
registerCodecBCJ2();
|
registerCodecBCJ2();
|
||||||
|
|
||||||
|
registerCodecCopy();
|
||||||
registerCodecLZMA();
|
registerCodecLZMA();
|
||||||
registerCodecLZMA2();
|
registerCodecLZMA2();
|
||||||
|
|
||||||
|
@ -1141,12 +1141,13 @@ void Lib7z::createArchive(QFileDevice *archive, const QStringList &sourcePaths,
|
|||||||
|
|
||||||
NWildcard::CCensor censor;
|
NWildcard::CCensor censor;
|
||||||
foreach (const QString &path, sourcePaths) {
|
foreach (const QString &path, sourcePaths) {
|
||||||
const UString sourcePath = QString2UString(QDir::toNativeSeparators(path));
|
const QString cleanPath = QDir::toNativeSeparators(QDir::cleanPath(path));
|
||||||
if (UString2QString(sourcePath) != QDir::toNativeSeparators(path))
|
const UString nativePath = QString2UString(cleanPath);
|
||||||
throw UString2QString(sourcePath).toLatin1().data();
|
if (UString2QString(nativePath) != cleanPath) {
|
||||||
// Only pass recursive with true if path is a directory, otherwise we include the file and
|
throw SevenZipException(QCoreApplication::translate("Lib7z", "Could not convert"
|
||||||
// possible folders located on the same directory level as the file into the created archive.
|
"path: %1.").arg(path));
|
||||||
censor.AddItem(true, sourcePath, QFileInfo(path).isDir());
|
}
|
||||||
|
censor.AddItem(true /* always include item */, nativePath, false /* never recurse*/);
|
||||||
}
|
}
|
||||||
callback->setSourcePaths(sourcePaths);
|
callback->setSourcePaths(sourcePaths);
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -997,6 +997,15 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinary(QFile *const input, q
|
|||||||
QInstaller::appendInt64(&dataOut, 4 * sizeof(qint64)); // data block size
|
QInstaller::appendInt64(&dataOut, 4 * sizeof(qint64)); // data block size
|
||||||
QInstaller::appendInt64(&dataOut, BinaryContent::MagicUninstallerMarker);
|
QInstaller::appendInt64(&dataOut, BinaryContent::MagicUninstallerMarker);
|
||||||
QInstaller::appendInt64(&dataOut, BinaryContent::MagicCookie);
|
QInstaller::appendInt64(&dataOut, BinaryContent::MagicCookie);
|
||||||
|
|
||||||
|
{
|
||||||
|
QFile dummy(resourcePath.filePath(QLatin1String("installer.dat")));
|
||||||
|
if (dummy.exists() && !dummy.remove()) {
|
||||||
|
throw Error(tr("Could not remove data file '%1': %2").arg(dummy.fileName(),
|
||||||
|
dummy.errorString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!dataOut.rename(resourcePath.filePath(QLatin1String("installer.dat")))) {
|
if (!dataOut.rename(resourcePath.filePath(QLatin1String("installer.dat")))) {
|
||||||
throw Error(tr("Could not write maintenance tool data to %1: %2").arg(out.fileName(),
|
throw Error(tr("Could not write maintenance tool data to %1: %2").arg(out.fileName(),
|
||||||
out.errorString()));
|
out.errorString()));
|
||||||
|
@ -250,28 +250,27 @@ public:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void PackageManagerGui::interrupted()
|
\fn void PackageManagerGui::interrupted()
|
||||||
This signal is emitted when the end user chooses to cancel the installation
|
\sa {gui::interrupted}{gui.interrupted}
|
||||||
and quit the installer.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void PackageManagerGui::languageChanged()
|
\fn void PackageManagerGui::languageChanged()
|
||||||
This signal is emitted when the application language changes.
|
\sa {gui::languageChanged}{gui.languageChanged}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void PackageManagerGui::finishButtonClicked()
|
\fn void PackageManagerGui::finishButtonClicked()
|
||||||
This signal is emitted when the \uicontrol Finish button is clicked.
|
\sa {gui::finishButtonClicked}{gui.finishButtonClicked}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void PackageManagerGui::gotRestarted()
|
\fn void PackageManagerGui::gotRestarted()
|
||||||
This signal is emitted when the installer is restarted.
|
\sa {gui::gotRestarted}{gui.gotRestarted}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void PackageManagerGui::settingsButtonClicked()
|
\fn void PackageManagerGui::settingsButtonClicked()
|
||||||
This signal is emitted when the \uicontrol Settings button is clicked.
|
\sa {gui::settingsButtonClicked}{gui.settingsButtonClicked}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -411,6 +410,8 @@ void PackageManagerGui::setAutomatedPageSwitchEnabled(bool request)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the default text for the button specified by \a wizardButton.
|
Returns the default text for the button specified by \a wizardButton.
|
||||||
|
|
||||||
|
\sa {gui::defaultButtonText}{gui.defaultButtonText}
|
||||||
*/
|
*/
|
||||||
QString PackageManagerGui::defaultButtonText(int wizardButton) const
|
QString PackageManagerGui::defaultButtonText(int wizardButton) const
|
||||||
{
|
{
|
||||||
@ -439,6 +440,8 @@ static bool swapFinishButton(PackageManagerCore *core, int currentId, int button
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Clicks the button specified by \a wb after the delay specified by \a delay.
|
Clicks the button specified by \a wb after the delay specified by \a delay.
|
||||||
|
|
||||||
|
\sa {gui::clickButton}{gui.clickButton}
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::clickButton(int wb, int delay)
|
void PackageManagerGui::clickButton(int wb, int delay)
|
||||||
{
|
{
|
||||||
@ -456,6 +459,8 @@ void PackageManagerGui::clickButton(int wb, int delay)
|
|||||||
/*!
|
/*!
|
||||||
Returns \c true if the button specified by \a wb is enabled. Returns \c false
|
Returns \c true if the button specified by \a wb is enabled. Returns \c false
|
||||||
if a button of the specified type is not found.
|
if a button of the specified type is not found.
|
||||||
|
|
||||||
|
\sa {gui::isButtonEnabled}{gui.isButtonEnabled}
|
||||||
*/
|
*/
|
||||||
bool PackageManagerGui::isButtonEnabled(int wb)
|
bool PackageManagerGui::isButtonEnabled(int wb)
|
||||||
{
|
{
|
||||||
@ -661,6 +666,8 @@ void PackageManagerGui::wizardPageVisibilityChangeRequested(bool visible, int p)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the page specified by \a id.
|
Returns the page specified by \a id.
|
||||||
|
|
||||||
|
\sa {gui::pageById}{gui.pageById}
|
||||||
*/
|
*/
|
||||||
QWidget *PackageManagerGui::pageById(int id) const
|
QWidget *PackageManagerGui::pageById(int id) const
|
||||||
{
|
{
|
||||||
@ -669,6 +676,8 @@ QWidget *PackageManagerGui::pageById(int id) const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the page specified by the object name \a name from a UI file.
|
Returns the page specified by the object name \a name from a UI file.
|
||||||
|
|
||||||
|
\sa {gui::pageByObjectName}{gui.pageByObjectName}
|
||||||
*/
|
*/
|
||||||
QWidget *PackageManagerGui::pageByObjectName(const QString &name) const
|
QWidget *PackageManagerGui::pageByObjectName(const QString &name) const
|
||||||
{
|
{
|
||||||
@ -683,7 +692,7 @@ QWidget *PackageManagerGui::pageByObjectName(const QString &name) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the current page.
|
\sa {gui::currentPageWidget}{gui.currentPageWidget}
|
||||||
*/
|
*/
|
||||||
QWidget *PackageManagerGui::currentPageWidget() const
|
QWidget *PackageManagerGui::currentPageWidget() const
|
||||||
{
|
{
|
||||||
@ -693,6 +702,8 @@ QWidget *PackageManagerGui::currentPageWidget() const
|
|||||||
/*!
|
/*!
|
||||||
For dynamic pages, returns the widget specified by \a name read from the UI
|
For dynamic pages, returns the widget specified by \a name read from the UI
|
||||||
file.
|
file.
|
||||||
|
|
||||||
|
\sa {gui::pageWidgetByObjectName}{gui.pageWidgetByObjectName}
|
||||||
*/
|
*/
|
||||||
QWidget *PackageManagerGui::pageWidgetByObjectName(const QString &name) const
|
QWidget *PackageManagerGui::pageWidgetByObjectName(const QString &name) const
|
||||||
{
|
{
|
||||||
@ -709,8 +720,7 @@ QWidget *PackageManagerGui::pageWidgetByObjectName(const QString &name) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Asks end users whether they want to cancel the operation and quit the installer, uninstaller,
|
\sa {gui::cancelButtonClicked}{gui.cancelButtonClicked}
|
||||||
or package manager.
|
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::cancelButtonClicked()
|
void PackageManagerGui::cancelButtonClicked()
|
||||||
{
|
{
|
||||||
@ -752,8 +762,7 @@ void PackageManagerGui::cancelButtonClicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Quits the installer, uninstaller, or package manager without asking end
|
\sa {gui::rejectWithoutPrompt}{gui.rejectWithoutPrompt}
|
||||||
users for confirmation.
|
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::rejectWithoutPrompt()
|
void PackageManagerGui::rejectWithoutPrompt()
|
||||||
{
|
{
|
||||||
@ -777,7 +786,7 @@ void PackageManagerGui::setModified(bool value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Shows the next page.
|
\sa {gui::showFinishedPage}{gui.showFinishedPage}
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::showFinishedPage()
|
void PackageManagerGui::showFinishedPage()
|
||||||
{
|
{
|
||||||
@ -790,6 +799,8 @@ void PackageManagerGui::showFinishedPage()
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Shows the \uicontrol Settings button if \a show is \c true.
|
Shows the \uicontrol Settings button if \a show is \c true.
|
||||||
|
|
||||||
|
\sa {gui::showSettingsButton}{gui.showSettingsButton}
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::showSettingsButton(bool show)
|
void PackageManagerGui::showSettingsButton(bool show)
|
||||||
{
|
{
|
||||||
@ -841,6 +852,8 @@ void PackageManagerGui::updateButtonLayout()
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Enables the \uicontrol Settings button by setting \a enabled to \c true.
|
Enables the \uicontrol Settings button by setting \a enabled to \c true.
|
||||||
|
|
||||||
|
\sa {gui::setSettingsButtonEnabled}{gui.setSettingsButtonEnabled}
|
||||||
*/
|
*/
|
||||||
void PackageManagerGui::setSettingsButtonEnabled(bool enabled)
|
void PackageManagerGui::setSettingsButtonEnabled(bool enabled)
|
||||||
{
|
{
|
||||||
|
@ -65,8 +65,6 @@ void sendPacket(QIODevice *device, const QByteArray &command, const QByteArray &
|
|||||||
break;
|
break;
|
||||||
packet.remove(0, bytesWritten);
|
packet.remove(0, bytesWritten);
|
||||||
}
|
}
|
||||||
// needed for big packages over TCP on Windows
|
|
||||||
device->waitForBytesWritten(-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -106,6 +106,7 @@ bool RemoteObject::connectToServer(const QVariantList &arguments)
|
|||||||
out << arg;
|
out << arg;
|
||||||
|
|
||||||
sendPacket(m_socket, Protocol::Create, data);
|
sendPacket(m_socket, Protocol::Create, data);
|
||||||
|
m_socket->flush();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -151,6 +151,7 @@ private:
|
|||||||
out << arg3;
|
out << arg3;
|
||||||
|
|
||||||
sendPacket(m_socket, name.toLatin1(), data);
|
sendPacket(m_socket, name.toLatin1(), data);
|
||||||
|
m_socket->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -165,6 +165,7 @@ void RemoteServerConnection::run()
|
|||||||
if (m_signalReceiver) {
|
if (m_signalReceiver) {
|
||||||
QMutexLocker _(&m_signalReceiver->m_lock);
|
QMutexLocker _(&m_signalReceiver->m_lock);
|
||||||
sendData(&socket, m_signalReceiver->m_receivedSignals);
|
sendData(&socket, m_signalReceiver->m_receivedSignals);
|
||||||
|
socket.flush();
|
||||||
m_signalReceiver->m_receivedSignals.clear();
|
m_signalReceiver->m_receivedSignals.clear();
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@ -179,6 +180,7 @@ void RemoteServerConnection::run()
|
|||||||
} else {
|
} else {
|
||||||
qDebug() << "Unknown command:" << command;
|
qDebug() << "Unknown command:" << command;
|
||||||
}
|
}
|
||||||
|
socket.flush();
|
||||||
} else {
|
} else {
|
||||||
// authorization failed, connection not wanted
|
// authorization failed, connection not wanted
|
||||||
socket.close();
|
socket.close();
|
||||||
|
@ -319,6 +319,10 @@ QJSValue ScriptEngine::newQObject(QObject *object)
|
|||||||
return jsValue;
|
return jsValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Creates a JavaScript object of class Array with the specified \a length.
|
||||||
|
*/
|
||||||
|
|
||||||
QJSValue ScriptEngine::newArray(uint length)
|
QJSValue ScriptEngine::newArray(uint length)
|
||||||
{
|
{
|
||||||
return m_engine.newArray(length);
|
return m_engine.newArray(length);
|
||||||
|
@ -57,7 +57,7 @@ CommandLineParser::CommandLineParser()
|
|||||||
QLatin1String("Verbose mode. Prints out more information.")));
|
QLatin1String("Verbose mode. Prints out more information.")));
|
||||||
|
|
||||||
m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::Proxy),
|
m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::Proxy),
|
||||||
QLatin1String("Use system proxy on Windows and OS X. This option has no effect on Linux.")));
|
QLatin1String("Use system proxy on Windows and Linux. This option has no effect on OS X.")));
|
||||||
|
|
||||||
m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::Script),
|
m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::Script),
|
||||||
QLatin1String("Execute the script given as argument."), QLatin1String("file")));
|
QLatin1String("Execute the script given as argument."), QLatin1String("file")));
|
||||||
|
@ -50,6 +50,11 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#if defined(Q_OS_OSX)
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define QUOTE_(x) #x
|
#define QUOTE_(x) #x
|
||||||
#define QUOTE(x) QUOTE_(x)
|
#define QUOTE(x) QUOTE_(x)
|
||||||
#define VERSION "IFW Version: \"" QUOTE(IFW_VERSION_STR) "\""
|
#define VERSION "IFW Version: \"" QUOTE(IFW_VERSION_STR) "\""
|
||||||
@ -144,6 +149,14 @@ int main(int argc, char *argv[])
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(Q_OS_OSX)
|
||||||
|
// make sure effective == real user id.
|
||||||
|
uid_t realUserId = getuid();
|
||||||
|
uid_t effectiveUserId = geteuid();
|
||||||
|
if (realUserId != effectiveUserId)
|
||||||
|
setreuid(effectiveUserId, -1);
|
||||||
|
#endif
|
||||||
|
|
||||||
QInstaller::RemoteServer *server = new QInstaller::RemoteServer;
|
QInstaller::RemoteServer *server = new QInstaller::RemoteServer;
|
||||||
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()));
|
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()));
|
||||||
server->init(socketName, key, (production ? QInstaller::Protocol::Mode::Production
|
server->init(socketName, key, (production ? QInstaller::Protocol::Mode::Production
|
||||||
|
@ -90,7 +90,12 @@ class tst_PackageManagerCore : public QObject
|
|||||||
private:
|
private:
|
||||||
void setIgnoreMessage(const QString &testDirectory)
|
void setIgnoreMessage(const QString &testDirectory)
|
||||||
{
|
{
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||||
const QString message = "\"\t- arguments: %1\" ";
|
const QString message = "\"\t- arguments: %1\" ";
|
||||||
|
#else
|
||||||
|
const QString message = "\"\\t- arguments: %1\" ";
|
||||||
|
#endif
|
||||||
|
QTest::ignoreMessage(QtDebugMsg, "Operations sanity check succeeded.");
|
||||||
QTest::ignoreMessage(QtDebugMsg, "\"backup operation: Mkdir\" ");
|
QTest::ignoreMessage(QtDebugMsg, "\"backup operation: Mkdir\" ");
|
||||||
QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(testDirectory)));
|
QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(testDirectory)));
|
||||||
QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(testDirectory)));
|
QTest::ignoreMessage(QtDebugMsg, qPrintable(message.arg(testDirectory)));
|
||||||
@ -233,6 +238,7 @@ private slots:
|
|||||||
void testRequiredDiskSpace()
|
void testRequiredDiskSpace()
|
||||||
{
|
{
|
||||||
// test installer
|
// test installer
|
||||||
|
QTest::ignoreMessage(QtDebugMsg, "Operations sanity check succeeded.");
|
||||||
PackageManagerCore core(QInstaller::BinaryContent::MagicInstallerMarker,
|
PackageManagerCore core(QInstaller::BinaryContent::MagicInstallerMarker,
|
||||||
QList<QInstaller::OperationBlob>());
|
QList<QInstaller::OperationBlob>());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user