This reverts commit 76fd6e8f2953347ea0bf7a57b643968784bc9acc.
The change caused that two installation files were needed -
one executable and one dat file. Many users did not find it acceptable.
We need to figure out something else.
Change-Id: Ief12cd47f9897cee8a234d8611a5c18296d42b1c
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Signing was not possible for maintenancetool since metadata was
added to binary. Separated metadata to installer.dat like in OS X.
Task-number: QTIFW-667
Change-Id: I74ef307c51a2f43059475dd943d6f0910925fa86
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
The mkdmg.sh script which is used to create .dmg files made some effort
to calculate the size of the file system contained in the .dmg file.
However, it neglected to consider that a .dmg file is not always
(never?) totally empty. A sample session on OS X 10.10.5 shows:
$ hdiutil create /tmp/foo.dmg -megabytes 33 -ov -volname foo -type UDIF -fs HFS+
... <a lot more dots here>
created: /tmp/foo.dmg
$ hdid /tmp/foo.dmg
/dev/disk3 GUID_partition_scheme
/dev/disk3s1 Apple_HFS /Volumes/foo
$ df /Volumes/foo
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk3s1 67504 1584 65920 3% 196 8240 2% /Volumes/foo
About 792kB are apparently used for bookkeeping (in ".Trashes" and
".fseventsd") directories.
Since mkdmg.sh failed to account for these 792kB, the .dmg file it
creates was occasionally too small, causing an error message to be
printed by the 'cp' command in the mkdmg.sh script (but that error
message was never printed anywhere, at least I never noticed when
executing binarycreator - always only when running mkdmg.sh directly).
Instead of fixing the allocated size, let's just make use of the
'-srcfolder' argument to 'hdiutil create' which does all of this
automatically. It requires no copying around or calculating sizes, which
not only makes the script much simpler, it also avoids the
above-mentioned issue but also makes the script run faster: about 30%
faster in my experiments.
With this, the mkdmg.sh script is so small (just one hdiutil and one rm
call) that we may just as well drop it completely and perform those
operations straight from the C++ code.
A final nice side-effect is that '-srcfolder' can be specified multiple
times: this makes it very easy to copy multiple directory trees in the
resulting .dmg file. This in turn is useful to create nicely styled .dmg
files with custom background image and icon arrangements.
Change-Id: I54d63a00e56d1ee9fa61c2690ca42d512fda37b1
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
This patch introduces -s/--sign switches for binarycreator which are
only available on OS X. Using these switches, a 'Code Signing Identity'
can be configured which should be used for signing the generated .app
bundle.
Signing the application bundles avoids that Apple's Gatekeeper complains
about the application coming from an unidentified publisher.
Change-Id: I507c6cac0b99faf19faf48c21e47a2df054b0b11
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
...by simply not using any timeout anymore. I believe this was the
original intention of the code (it's arguably hideous that the default
value of the waitForFinished() method is a 30000ms timeout).
What happened for me is that the mkdmg.sh script took longer than 30
seconds. As a consequence
1. the 'waitForFinished()' call returned
2. The mkdgm.sh script was deleted
3. The QProcess object went out of scope, terminating the shell process
4. The binarycreator process terminated successfully
The resulting .dmg file seemed plausible (it was fairly large already)
but it wasn't usable yet since the hdiutil process started by mkdmg.sh
was still running, i.e. the .dmg file was still growing. Hence, the
caller of binarycreator (e.g. some CI system) continued processing a
malformed .dmg file (and the temporary file created by mkdmg.sh never
got deleted).
Last but not least, proper error handling would have been nice of course
but I considered that to be out of scope for this particular commit.
Change-Id: I767ff89d20802306189660804cea617c148a943e
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Reviewed-by: Katja Marttila <katja.marttila@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>
* Enclose file paths in ""
* Localize file paths with QDir::toNativeSeparators.
* Make sure sentences end with a '.'
* Append error details always by ':', e.g.
tr("Failed to copy file '%1': %2").(...)
* Use 'directory' instead of 'folder' everywhere
Change-Id: Ie045f429f72ad5045c96537465c5fb9d2e99d250
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Use the Version value defined in config.xml as the product version
exclusively instead of sometimes using it as the repository format
version in components.xml (which must be 1.0.0) and sometimes as the
product version.
Change-Id: I63864947bf131ac6e246a2aaf6febdda0555c13d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Generated Updates.xml was missing DownloadableArchives property and
component size was not calculated properly in case package directory
contains files that are packaged into 7zip archives by the installer.
Change-Id: I73e3d16b73cfbe25cb8b2e55b9c93f48b1ecdb1c
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Rename the IFW_VERSION to IFW_VERSION_STR, and add a new IFW_VERSION
define that encodes the version in hex. This follows the pattern of
QT_VERSION and QT_VERSION_STR, and allows easy checking of the IFW
version e.g. in macros.
Change-Id: I232c8aa53c9a04522810208cdd1ac595d8676879
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
We need to keep a specific order, otherwise the data might endup in
the resource file as well and gets appended twice to the installer
binary.
Task-number: QTIFW-564
Change-Id: Idcadb5d65043d1855846556b63191898a4a54027
Reviewed-by: Christoph Vogtländer <c.vogtlaender@sigma-surface-science.com>
Reviewed-by: Niels Weber <niels.weber@digia.com>
Adjust some naming. Add documentation. Make the Resource class
handle files only, this is sufficient to read and map inbuild
resources. Keep the QResources inside the manager as well, no
need to handle them separate. Remove read, write functions from
collection class, the API was just unclear how to use. Still it
is far from intuitive in the manager class either. If we open a
Resource, we need to close it on our own case they are pointers.
Change-Id: Ic8aa32a84a15ac774fe1194ba0dbb5733f7216d6
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Adjust some minor implementation details. Some renaming of member
variables and function names is left out but will follow in later
patches. Add some documentation.
Change-Id: I929dcbe13fa701be5224b9e5fdf8d19bfff81235
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Niels Weber <niels.weber@digia.com>
For some reason the former code did not work anyore as expected,
the issue seems to be in QFileInfo::isBundle or how we used it.
To not depend on a possible fix in Qt, we now always resolve the
path before we ask QFileInfo if it is a bundle.
Fixes also the behavior change introduced in cead4555. On OSX,
we get the .dat file passed that's inside the bundle, still we
need to read the data from a .dat file that's located beside
the app bundle...
Change-Id: Idaa7adc6fbad6bd8e9ce90c383b34ea51fe40e8f
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Follow up on 924ebcdbc9b9e590a5f0905941e2d05ac34d4be2 (Part 1).
Get rid of KDSaveFile, reuse QTemporaryFile. After changing
KDSaveFile to inherit from QFileDevice, it turns out to be not
working properly anymore and crashing e.g. binarycreator while
using it. To save fixing it we just switch to QTemporaryFile.
Change-Id: I785a04db91b431f5e122f193ecf2ef3c54e34b1c
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Also adjust the API to use QFileDevice instead of QIODevice to
make clear we just operate on files here and not on any possible
device like sockets, processes etc...
Change-Id: I4ecbb6e244fe4bb666ed12e62f9f5586bc1347f0
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Use the name of the application bundle (input.outputPath) to give the
disc image a volume name instead of using the file name of the .dat
file ("out" is set to 'installer.dat' at construction time).
Change-Id: I0f53ca7fcafb83353f4fea61b62037f48281375e
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Also fixes the generator note.
Change-Id: Ic9a9a033d74320221563c46611122d0fef216c23
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Change-Id: I2e362d255bf2526f216cbb872bbb64d37383d229
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Reviewed-by: Michal Klocek <michal.klocek@digia.com>
- they are including the sha1 files so the old name was misleading
Change-Id: I6156b5590bc98ed319a093c82be32d9f79699d28
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Don't, Can't, etc abbreviations are used in informal speech. This is
okay in code comments etc, but user output should use the correct,
non-abbreviated terms.
Change-Id: I53c0dfa91596c151bfa7ef7b65f57d5084ceccde
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
When the user calls repogen or binarycreator using the include or
exclude parameter, those packages that were given but could not
be found in the packages directory are now listed in a warning.
Task-number: QTIFW-233
Change-Id: Iaadd0a14d2c6d834daa6dbe956118d674e048fac
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
The signature change is kind of a cosmetic one, but I think it
is more obvious that passing a reference into a function might
modify the parameter.
Change-Id: I424c06ed7a449204bd0b243ff07c2d36669b7381
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
There's no need to parse the config file a second time.
Change-Id: I7303b86a30f9ce17a8cfa419b70fc70b5948d151
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Fix broken function naming. Copy only files that are referenced
inside the config file. Replace ":" as well, copy fails here on W8.
Task-number: QTIFW-221
Change-Id: Ic039a8c54d4bb391fcd644c9da0dba7b20bda0f5
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Use exit codes more consequent. Delete the meta dir even if an
exception was thrown.
Change-Id: I87354218091b562147fbc04c20181952fdc967ca
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>