Workaround issues of IFW not being able to work on elevated mode
caused by changes in qtbase, namely when initializing socket
connection between remote installer client and server, and writing
maintenance tool binary.
Switch to using unbuffered mode for QFSFileEngine instances as
buffered mode support has been dropped. Fix calls to QFile::copy()
when running elevated installer process. Make minor modifications
for unit tests to pass. Explicitly fail and return when performing
CreateLocalRepositoryOperation on non-owned directory.
Task-number: QTIFW-1312
Change-Id: I3db72547ee95c87d8c02d27e5b31c7b30e793431
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
It was impossible to pass Unicode data safely to a process started via
installer.execute(), or to read Unicode data printed by that process
safely back in. The reason for this is that the code hardcoded the
latin1 codec for converting between strings used in the script
interpreter and bytes used by the QProcessWrapper API.
Fix this by adding two new optional arguments to installer.execute()
which can be used to define the codec to be used for writing to stdin
resp. reading from stdout. This defaults to latin1 for backwards
compatibility.
Change-Id: I290d8d9617b286ef90b2f0a05c6e7a47f6df317f
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Reviewed-by: Frerich Raabe <raabe@froglogic.com>
This reverts commit eb574d77b0ab9a92b61e7738d089cd4ea4304e51.
The change will not work with Qt5.5 as it is causing constant
crashes in Qt installers. Using this change will require a fix
for Qt5. As we are about to make Qt installers based on 2.0 we
need to revert this change for now.
Change-Id: Ia7906d02db645f2407ab07d14f5a037224574b29
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
By using QQmlV4Function to get the parameters, empty strings passed
are correctly kept as empty and not null.
Task-number: QTIFW-724
Change-Id: I592e2230e574ba82e765bd0079964db29452b2e9
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Was failing in Windows because NativeSeparators was not taken into account
when verifying the error message
Change-Id: I79c17ad91875918501d84b102d16f84bb2008038
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Prefer using the stream operator logic instead of using
QString::fromLatin1. Add a noquote() where a QString should be printed
without any quotes/escapes.
This also fixes the tests with Qt 5.5, where QString's are further
escaped.
Change-Id: Ie3afd14b9355101d3c0b52f30f66ec759c76526c
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Make sure the current list of components is used when referencing
installer.components in a controller script.
Change-Id: I9468110d61a958f13edba66da0059d6622aa7037
Task-number: QTIFW-601
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Since qtdeclarative change e2c1e7b8a exceptions in JS slots do _not_ set
the engine to an error state anymore, but are rather printed to console,
and ignored. This prevents exceptions to silently propagate ...
Change-Id: Icb065314730cf2142eedbde14b0c77c21bdd6f6f
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Make the QWidget representing a UI file known to the engine, so that
e.g. child objects can be always accessed :
component.userInterface("RegisterFileCheckBoxForm").RegisterFileCheckBox.checked;
This worked reliably only if the .ui file has been shown to the user,
which might not always been the case.
Change-Id: I7a87773e29f6210ab7160d8e33c41f6ebeeb82d6
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
We need to make sure objects like pageWidgetByObjectName are augmented
too (so that one can access child objects). This is achieved by
a proxy object that augments all raw QObject * and QWidget * return
values.
This fixes e.g. the dynamicpage example.
Task-number: QTIFW-605
Change-Id: If26dc59220946a7445ef0f9ec7caa15e5b04eaa8
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Rename addQObjectChildren, removeQObjectChildren methods to
addToGlobalObject, removeToGlobalObject, and merge the augmentation
of the properties with newQObject.
Also, don't recursively register all objects with their objectNames
in the global scope. This avoids name pollution.
Change-Id: I28f1bc67e6febecc7b5142982c918432b61ed96f
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Re-add the findChild, findChildren methods known from Qt Script.
Change-Id: I3db6be53ccd89a09b2c7de14ba7f96ebb26dbdbb
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Dead since commit 5359d0a3e8d84699701e73d3d15163fb20200bb0
Change-Id: I40af485876d70a6a68406eafe14258b185e16323
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Setting a dynamic property of a dynamic page from JS doesn't have
any effect anymore, as the properties are not synced. Now we define
the property directly on the JavaScript object and connect it to
corresponding C++ page with static Qt properties.
Task-number: QTIFW-562
Change-Id: If95222a94ebee7f8bb455792eab96c5e9bc19b86
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
- use two different script engine instances
- one which lives from the beginning -> the controlScriptEngine
- the other one which will be reset if there are some new repositories
loaded
- now the core has a pointer to the gui object, but it should only be
used by the script engine so a QObject type should be enough
- engines are deleted as QObject children from the PackageManagerCore
- registered downloaded archives are removed
Change-Id: I60a4a32fb2e409059839ec11b10c57357454f57a
Reviewed-by: Michal Klocek <michal.klocek@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
- also renamed it to better name: executeControlScript
Change-Id: Id2bb7cada2386561c2b25b158c6aa101382e5cc4
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
- there wasn't any error information if a C++ triggered signal resulted
in a JS method which has an error, now it will create an exception for it
- creating messagebox inside the lib is something what we want to avoid,
so the developer itself is responsible to catch these exceptions
- most cases of the installer code does that already
Change-Id: I07486f73be9de13a486de235f14e3a7d7b54f5b1
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
- destructor deletes components, so there was a double deletion
Change-Id: I5c4f14bb3b964297be542821d10a7ebb27925af5
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
- since we are using one scriptengine the component needs to be
registered on the packagemangercore to load the script
Change-Id: I931b75e8d68328c2317dd4a55ab9cc298229caba
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
- it uses one scriptengine for everything and adds the components
or/and the install-controller in javascript closure contexts
- added the gui object to the component script context
- removed tabController from controlscript context
Change-Id: I3bd6c5dcf470666c30add1b7d04a8fdd094f5f11
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>