summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-10-16 15:04:28 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2013-10-16 15:51:30 +0200
commit0f4ceb1950c18d7de27265504e104a65f2be7628 (patch)
treea4e1f245ff59cd5848410a61d5e11770cbb80ec5 /tools
parent27a63dd497c25f9cc1c97b4decfacd618114521c (diff)
Implement a way to replace the default resource.
Change-Id: I2e362d255bf2526f216cbb872bbb64d37383d229 Reviewed-by: Tim Jenssen <tim.jenssen@digia.com> Reviewed-by: Michal Klocek <michal.klocek@digia.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/binarycreator/binarycreator.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/tools/binarycreator/binarycreator.cpp b/tools/binarycreator/binarycreator.cpp
index 8792eb537..688ecf4db 100644
--- a/tools/binarycreator/binarycreator.cpp
+++ b/tools/binarycreator/binarycreator.cpp
@@ -400,7 +400,7 @@ private:
const QString oldPath;
};
-static QString createBinaryResourceFile(const QString &directory)
+static QString createBinaryResourceFile(const QString &directory, const QString &binaryName)
{
QTemporaryFile projectFile(directory + QLatin1String("/rccprojectXXXXXX.qrc"));
if (!projectFile.open())
@@ -408,16 +408,19 @@ static QString createBinaryResourceFile(const QString &directory)
projectFile.close();
const WorkingDirectoryChange wd(directory);
- const QString binaryName = generateTemporaryFileName();
const QString projectFileName = QFileInfo(projectFile.fileName()).absoluteFilePath();
// 1. create the .qrc file
- runRcc(QStringList() << QLatin1String("rcc") << QLatin1String("-project")
- << QLatin1String("-o") << projectFileName);
+ if (runRcc(QStringList() << QLatin1String("rcc") << QLatin1String("-project") << QLatin1String("-o")
+ << projectFileName) != EXIT_SUCCESS) {
+ throw Error(QString::fromLatin1("Could not create rcc project file."));
+ }
// 2. create the binary resource file from the .qrc file
- runRcc(QStringList() << QLatin1String("rcc") << QLatin1String("-binary")
- << QLatin1String("-o") << binaryName << projectFileName);
+ if (runRcc(QStringList() << QLatin1String("rcc") << QLatin1String("-binary") << QLatin1String("-o")
+ << binaryName << projectFileName) != EXIT_SUCCESS) {
+ throw Error(QString::fromLatin1("Could not compile rcc project file."));
+ }
return binaryName;
}
@@ -467,6 +470,9 @@ static void printUsage()
std::cout << " -r|--resources r1,.,rn include the given resource files into the binary" << std::endl;
std::cout << " -v|--verbose Verbose output" << std::endl;
+ std::cout << " -rcc|--compile-resource Compiles the default resource and outputs the result into"
+ << std::endl;
+ std::cout << " 'update.rcc' in the current path." << std::endl;
std::cout << std::endl;
std::cout << "Packages are to be found in the current working directory and get listed as "
"their names" << std::endl << std::endl;
@@ -483,6 +489,9 @@ static void printUsage()
std::cout << std::endl;
std::cout << "Creates an installer for the SDK without qt and qt creator." << std::endl;
std::cout << std::endl;
+ std::cout << "Example update.rcc:" << std::endl;
+ std::cout << " " << appName << " -c installer-config" << sep << "config.xml -p packages-directory "
+ "-rcc" << std::endl;
}
void copyConfigData(const QString &configFile, const QString &targetDir)
@@ -578,6 +587,7 @@ int main(int argc, char **argv)
QStringList resources;
QStringList filteredPackages;
QInstallerTools::FilterType ftype = QInstallerTools::Exclude;
+ bool compileResource = false;
const QStringList args = app.arguments().mid(1);
for (QStringList::const_iterator it = args.begin(); it != args.end(); ++it) {
@@ -663,6 +673,8 @@ int main(int argc, char **argv)
} else if (*it == QLatin1String("--ignore-translations")
|| *it == QLatin1String("--ignore-invalid-packages")) {
continue;
+ } else if (*it == QLatin1String("-rcc") || *it == QLatin1String("--compile-resource")) {
+ compileResource = true;
} else {
if (it->startsWith(QLatin1String("-"))) {
return printErrorAndUsageAndExit(QString::fromLatin1("Error: Unknown option \"%1\" used. Maybe you "
@@ -691,7 +703,7 @@ int main(int argc, char **argv)
ftype = QInstallerTools::Include;
}
- if (target.isEmpty())
+ if (target.isEmpty() && compileResource)
return printErrorAndUsageAndExit(QString::fromLatin1("Error: Target parameter missing."));
if (configFile.isEmpty())
@@ -722,11 +734,11 @@ int main(int argc, char **argv)
if (!target.endsWith(QLatin1String(".app")) && !target.endsWith(QLatin1String(".dmg")))
target += QLatin1String(".app");
#endif
- {
+ if (!compileResource) {
Input input;
input.outputPath = target;
input.installerExePath = templateBinary;
- input.binaryResourcePath = createBinaryResourceFile(tmpMetaDir);
+ input.binaryResourcePath = createBinaryResourceFile(tmpMetaDir, generateTemporaryFileName());
input.binaryResources = createBinaryResourceFiles(resources);
QInstallerTools::copyComponentData(packagesDirectory, tmpMetaDir, &packages);
@@ -754,6 +766,9 @@ int main(int argc, char **argv)
QFile::remove(input.binaryResourcePath);
foreach (const QString &resource, input.binaryResources)
QFile::remove(resource);
+ } else {
+ createBinaryResourceFile(tmpMetaDir, QDir::currentPath() + QLatin1String("/update.rcc"));
+ exitCode = EXIT_SUCCESS;
}
} catch (const Error &e) {
std::cerr << "Caught exception: " << e.message() << std::endl;