summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog10
-rw-r--r--dist/config/config.xml2
-rw-r--r--doc/config/ifw.qdocconf2
-rw-r--r--doc/examples/config.xml2
-rw-r--r--doc/includes/installerfw-examples-configuring.qdocinc13
-rw-r--r--doc/includes/installerfw-examples-packaging.qdocinc8
-rw-r--r--doc/installerfw-cpp-classes.qdoc10
-rw-r--r--doc/installerfw-examples.qdoc6
-rw-r--r--doc/installerfw-reference.qdoc4
-rw-r--r--doc/installerfw.qdoc225
-rw-r--r--doc/noninteractive.qdoc30
-rw-r--r--doc/operations.qdoc2
-rw-r--r--doc/scripting-qmlmodule.qdoc7
-rw-r--r--doc/scripting.qdoc4
-rw-r--r--doc/tutorial.qdoc33
-rw-r--r--examples/doc/changeuserinterface.qdoc2
-rw-r--r--examples/doc/componenterror.qdoc3
-rw-r--r--examples/doc/dynamicpage.qdoc77
-rw-r--r--examples/doc/images/qtifw-examples-dynamicpages.pngbin0 -> 29084 bytes
-rw-r--r--examples/doc/images/qtifw-examples-modifyextract.pngbin0 -> 27489 bytes
-rw-r--r--examples/doc/images/qtifw-examples-openreadme.pngbin0 -> 24131 bytes
-rw-r--r--examples/doc/images/qtifw-examples-quit_installer.pngbin0 -> 19682 bytes
-rw-r--r--examples/doc/images/qtifw-examples-registerfileextension.pngbin0 -> 24599 bytes
-rw-r--r--examples/doc/images/qtifw-examples-startmenu.pngbin0 -> 15605 bytes
-rw-r--r--examples/doc/modifyextract.qdoc32
-rw-r--r--examples/doc/openreadme.qdoc50
-rw-r--r--examples/doc/quit_installer.qdoc40
-rw-r--r--examples/doc/registerfileextension.qdoc72
-rw-r--r--examples/doc/startmenu.qdoc35
-rw-r--r--examples/doc/systeminfo.qdoc3
-rw-r--r--examples/dynamicpage/config/config.xml4
-rw-r--r--examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2.txt (renamed from examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2..txt)0
-rw-r--r--examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js8
-rw-r--r--examples/modifyextract/config/config.xml8
-rw-r--r--examples/modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml4
-rw-r--r--examples/openreadme/config/config.xml8
-rw-r--r--examples/quit_installer/config/config.xml4
-rw-r--r--examples/quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js6
-rw-r--r--examples/registerfileextension/config/config.xml4
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs55
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxform.ui (renamed from examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui)4
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml8
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxform.ui (renamed from examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui)4
-rw-r--r--examples/startmenu/config/config.xml4
-rw-r--r--examples/startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs4
-rw-r--r--installerfw.pri2
-rw-r--r--src/libs/7zip/7zip.pri1
-rw-r--r--src/libs/installer/component.cpp12
-rw-r--r--src/libs/installer/component_p.cpp10
-rw-r--r--src/libs/installer/component_p.h19
-rw-r--r--src/libs/installer/componentchecker.cpp73
-rw-r--r--src/libs/installer/componentmodel.cpp79
-rw-r--r--src/libs/installer/createlocalrepositoryoperation.cpp2
-rw-r--r--src/libs/installer/installercalculator.cpp3
-rw-r--r--src/libs/installer/messageboxhandler.cpp2
-rw-r--r--src/libs/installer/observer.cpp19
-rw-r--r--src/libs/installer/packagemanagercore.cpp95
-rw-r--r--src/libs/installer/packagemanagercore.h1
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp27
-rw-r--r--src/libs/installer/packagemanagercoredata.cpp2
-rw-r--r--src/libs/installer/packagemanagergui.cpp118
-rw-r--r--src/libs/installer/packagemanagergui.h33
-rw-r--r--src/libs/installer/remoteobject.h2
-rw-r--r--src/libs/installer/remoteserverconnection.cpp6
-rw-r--r--src/libs/installer/scriptengine.cpp261
-rw-r--r--src/libs/installer/scriptengine.h6
-rw-r--r--src/libs/installer/scriptengine_p.h45
-rw-r--r--src/libs/installer/settings.cpp13
-rw-r--r--src/libs/installer/settings.h4
-rw-r--r--src/libs/installer/uninstallercalculator.cpp6
-rw-r--r--src/libs/installer/utils.cpp2
-rw-r--r--src/sdk/commandlineparser.cpp2
-rw-r--r--src/sdk/constants.h2
-rw-r--r--src/sdk/installerbase.cpp5
-rw-r--r--src/sdk/installerbase.qrc16
-rw-r--r--src/sdk/installerbasecommons.cpp10
-rw-r--r--src/sdk/sdk.pro4
-rw-r--r--src/sdk/translations/de.ts (renamed from src/sdk/translations/de_de.ts)3142
-rw-r--r--src/sdk/translations/en.ts (renamed from src/sdk/translations/en_us.ts)0
-rw-r--r--src/sdk/translations/fr.ts (renamed from src/sdk/translations/fr_fr.ts)0
-rw-r--r--src/sdk/translations/ja.ts (renamed from src/sdk/translations/ja_jp.ts)945
-rw-r--r--src/sdk/translations/ru.ts (renamed from src/sdk/translations/ru_ru.ts)0
-rw-r--r--src/sdk/translations/sv.ts (renamed from src/sdk/translations/sv_se.ts)0
-rw-r--r--tests/auto/installer/scriptengine/data/dynamicpage.qs10
-rw-r--r--tests/auto/installer/scriptengine/data/form.ui32
-rw-r--r--tests/auto/installer/scriptengine/data/userinterface.qs5
-rw-r--r--tests/auto/installer/scriptengine/scriptengine.qrc2
-rw-r--r--tests/auto/installer/scriptengine/tst_scriptengine.cpp17
-rw-r--r--tests/auto/installer/settings/data/full_config.xml1
-rw-r--r--tests/auto/installer/settings/tst_settings.cpp3
-rw-r--r--tools/binarycreator/binarycreator.cpp2
-rw-r--r--tools/binarycreator/binarycreator.pro1
92 files changed, 3442 insertions, 2397 deletions
diff --git a/Changelog b/Changelog
index 0b5211392..e06e31235 100644
--- a/Changelog
+++ b/Changelog
@@ -35,14 +35,16 @@
- Fixed binary data extraction. (QTIFW-574)
- Fixed uninstall after installing into a target with elevated permissions. (QTIFW-447, QTIFW-479)
- Allow spaces in RunProgramArguments. (QTIFW-227)
-- Various bugs fixed. (QTIFW-397, QTIFW-524, QTIFW-538, QTIFW-541, QTIFW-542, QTIFW-562, QTIFW-564, QTIFW-568, QTIFW-569)
- Removed some deprecated things.
-- Improved documentation. (QTIFW-526)
-- Updated and improved translations.
- Removed SetQtCreatorArrayValue, AddQtCreatorArrayValue operations.
- Removed ApplyProductKey, ReplaceInstallNames, QtPatch operations.
-- Added systemInfo to the scripting API (QTIFW-592).
+- Added systemInfo to the scripting API. (QTIFW-592)
- Changed default of 'AllowSpaceInPath' from false to true.
+- Added possibility to specify a control script on installer creation. (QTIFW-166, QTIFW-495)
+- Introduced a setting for Wizard default height and width. (QTIFW-47)
+- Improved documentation. (QTIFW-526)
+- Updated and improved translations.
+- Fixed various bugs. (QTIFW-397, QTIFW-481, QTIFW-524, QTIFW-538, QTIFW-541, QTIFW-542, QTIFW-562, QTIFW-564, QTIFW-568, QTIFW-569, QTIFW-583, QTIFW-593, QTIFW-600)
Thanks go to Christoph Vogtländer, Sze Howe Koh, Ray Donnelly, Tasuku Suzuki and Sascha Cunz for contributions.
diff --git a/dist/config/config.xml b/dist/config/config.xml
index d643c79b8..39ee262bc 100644
--- a/dist/config/config.xml
+++ b/dist/config/config.xml
@@ -6,7 +6,7 @@
<Publisher>Qt Project</Publisher>
<ProductUrl>http://qt-project.org</ProductUrl>
<Watermark>watermark.png</Watermark>
- <UninstallerName>Uninstaller</UninstallerName>
+ <MaintenanceToolName>Uninstaller</MaintenanceToolName>
<!-- Tweaked for windows in installscript.qs -->
<TargetDir>@HomeDir@/Qt/QtIFW-2.0.81</TargetDir>
diff --git a/doc/config/ifw.qdocconf b/doc/config/ifw.qdocconf
index 65665177d..a767ccc56 100644
--- a/doc/config/ifw.qdocconf
+++ b/doc/config/ifw.qdocconf
@@ -18,7 +18,7 @@ exampledirs = $SRCDIR ../../examples
headers.fileextensions = "*.h"
sources.fileextensions = "*.qdoc *.qdocinc *.cpp"
-examples.fileextensions = "*.js *.qs *.txt *.xml"
+examples.fileextensions = "*.js *.qs *.txt *.xml *.ui"
examples.imageextensions = "*.png"
indexes += $QT_INSTALL_DOCS/qtcore/qtcore.index \
diff --git a/doc/examples/config.xml b/doc/examples/config.xml
index 147c39246..ef4598425 100644
--- a/doc/examples/config.xml
+++ b/doc/examples/config.xml
@@ -16,7 +16,7 @@
</RunProgramArguments>
<RunProgramDescription>My nice application</RunProgramDescription>
<StartMenuDir>Some Application Entry Dir</StartMenuDir>
- <UninstallerName>SDKMaintenanceTool</UninstallerName>
+ <MaintenanceToolName>SDKMaintenanceTool</MaintenanceToolName>
<AllowNonAsciiCharacters>true</AllowNonAsciiCharacters>
<Background>background.png</Background>
diff --git a/doc/includes/installerfw-examples-configuring.qdocinc b/doc/includes/installerfw-examples-configuring.qdocinc
index b75abab8d..3a29af3dc 100644
--- a/doc/includes/installerfw-examples-configuring.qdocinc
+++ b/doc/includes/installerfw-examples-configuring.qdocinc
@@ -4,17 +4,16 @@
specifies the text and default values used in the installer:
\list
- \li The \c <Name> section specifies the application name that is added
+ \li The \c <Name> element specifies the application name that is added
to the page name and introduction text.
- \li The \c <Version> section specifies the version number of the
- repository format, and must be set to \c 1.0.0.
- \li The \c <Title> section specifies the installer name displayed on the
+ \li The \c <Version> element specifies the application version number.
+ \li The \c <Title> element specifies the installer name displayed on the
title bar.
- \li The \c <Publisher> section specifies the publisher of the software
+ \li The \c <Publisher> element specifies the publisher of the software
(as shown in the Windows Control Panel, for example).
- \li The \c <StartMenuDir> section specifies the name of the default
+ \li The \c <StartMenuDir> element specifies the name of the default
program group for the product in the Windows \gui Start menu.
- \li The \c <TargetDir> section specifies that the default target
+ \li The \c <TargetDir> element specifies that the default target
directory displayed to users is \c IfwExample in the home directory
of the current user (because the predefined variable\c @HomeDir@ is
used as a part of the value). For more information, see
diff --git a/doc/includes/installerfw-examples-packaging.qdocinc b/doc/includes/installerfw-examples-packaging.qdocinc
index d3a873f2c..f8111629a 100644
--- a/doc/includes/installerfw-examples-packaging.qdocinc
+++ b/doc/includes/installerfw-examples-packaging.qdocinc
@@ -4,12 +4,12 @@
directory specifies the components that are available for installation:
\list
- \li The \c <DisplayName> section specifies the human-readable name of
+ \li The \c <DisplayName> element specifies the human-readable name of
the component.
- \li The \c <Description> section specifies the human-readable
+ \li The \c <Description> element specifies the human-readable
description of the component.
- \li The \c <Version> section specifies the version number of the
+ \li The \c <Version> element specifies the version number of the
component.
- \li The \c <ReleaseDate> section specifies the date when this component
+ \li The \c <ReleaseDate> element specifies the date when this component
version was released.
\endlist
diff --git a/doc/installerfw-cpp-classes.qdoc b/doc/installerfw-cpp-classes.qdoc
index 29f1bfc44..04d077314 100644
--- a/doc/installerfw-cpp-classes.qdoc
+++ b/doc/installerfw-cpp-classes.qdoc
@@ -27,12 +27,20 @@
/*!
\contentspage {index.html}{Qt Installer Framework}
- \previouspage Scripting
+ \previouspage Scripting API
\page ifw-cpp-classes.html
\nextpage ifw-knownissues.html
\title C++ Classes
+ The class documentation is written for developers who develop the Qt
+ Installer Framework. It describes the internal API, so there is no
+ compatibility promise. Further, the documentation is a work in progress and
+ therefore parts of it are missing while other parts might be out of date.
+
+ To create customized installers, use the \l{Scripting API}, instead. For
+ more information, see \l {Customizing Installers}.
+
\generatelist{classesbymodule QtInstallerFramework}
\generatelist{classesbymodule kdupdater}
*/
diff --git a/doc/installerfw-examples.qdoc b/doc/installerfw-examples.qdoc
index 2c6795b0f..1b0bd5a0b 100644
--- a/doc/installerfw-examples.qdoc
+++ b/doc/installerfw-examples.qdoc
@@ -27,7 +27,13 @@
/*!
\group qtifwexamples
+ \previouspage ifw-customizing-installers.html
+ \nextpage ifw-reference.html
+
\title Qt Installer Framework Examples
\brief Illustrate how to customize installers.
+ These examples illustrate how to use component scripts for customizing
+ installers.
+
*/
diff --git a/doc/installerfw-reference.qdoc b/doc/installerfw-reference.qdoc
index 4fba00696..d768083c6 100644
--- a/doc/installerfw-reference.qdoc
+++ b/doc/installerfw-reference.qdoc
@@ -27,7 +27,7 @@
/*!
\contentspage {index.html}{Qt Installer Framework}
- \previouspage ifw-customizing-installers.html
+ \previouspage Qt Installer Framework Examples
\page ifw-reference.html
\nextpage ifw-globalconfig.html
@@ -43,7 +43,7 @@
\li \l{Component Scripting}
\li \l{Operations}
\li \l{Tools}
- \li \l{Scripting}
+ \li \l{Scripting API}
\li \l{C++ Classes}
\endlist
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index 06e96b7b8..283537124 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -45,7 +45,7 @@
Windows, and OS X.
\note Report bugs and suggestions for the Qt Installer Framework project
- in the \l{https://bugreports.qt-project.org/browse/QTIFW}{Qt Bugtracker}.
+ in the \l{https://bugreports.qt.io/browse/QTIFW}{Qt Bugtracker}.
\list
\li \l{Overview of Qt Installer Framework}
@@ -75,7 +75,7 @@
\li \l{Component Scripting}
\li \l{Operations}
\li \l{Tools}
- \li \l{Scripting}
+ \li \l{Scripting API}
\li \l{C++ Classes}
\endlist
\li \l{Known Issues}
@@ -153,9 +153,9 @@
\quotefile examples/config.xml
- \section1 Supported Configuration Settings
+ \section1 Summary of Configuration File Elements
- The following table summarizes the settings in the configuration file.
+ The following table summarizes the elements in the configuration file.
\note We recommend that you place all files that you refer to in the
configuration file in the \c config directory. However, you can also use
@@ -163,11 +163,11 @@
the config.xml file.
You can use predefined variables (embedded in @ characters) as values of the
- settings. For more information, see \l{Predefined Variables}.
+ elements. For more information, see \l{Predefined Variables}.
\table
\header
- \li Setting
+ \li Element
\li Description
\row
\li Name
@@ -175,8 +175,9 @@
\li Name of the product being installed. This is mandatory.
\row
\li Version
- \li Version number of the repository format. This is mandatory and
- must always be set to \c 1.0.0.
+ \li Version of the product being installed in the following format:
+ [0-9]+((\\.|-)[0-9]+)* such as 1-1; 1.2-2; 3.4.7. This is
+ mandatory.
\row
\li Title
\li Name of the installer as displayed on the title bar.
@@ -191,7 +192,8 @@
\li Icon
\li Filename for a custom installer icon. The actual file is looked up by attaching
a '.icns' (OS X), '.ico' (Windows) or '.png' (Unix) suffix. Deprecated,
- use InstallerApplicationIcon and / or InstallerWindowIcon instead.
+ use \c <InstallerApplicationIcon> or \c <InstallerWindowIcon>
+ instead.
\row
\li InstallerApplicationIcon
\li Filename for a custom installer icon. The actual file is looked up by attaching
@@ -232,17 +234,18 @@
the action. Provide the full path to the application.
\row
\li RunProgramArguments
- \li Arguments passed to the program specified in RunProgram. You can add several
- \c Argument elements that each specify an argument to \c {RunProgram}.
+ \li Arguments passed to the program specified in \c <RunProgram>.
+ You can add several \c <Argument> child elements that each specify an
+ argument to \c <RunProgram>.
\row
\li RunProgramDescription
\li Text shown next to the check box for running the program after
- the installation. If \gui <RunProgram> is set but no description provided,
- the UI will display \gui {Run <Name> now.} instead.
+ the installation. If \c <RunProgram> is set but no description provided,
+ the UI will display \uicontrol {Run <Name> now.} instead.
\row
\li StartMenuDir
\li Name of the default program group for the product in the Windows
- \gui Start menu.
+ \uicontrol Start menu.
\row
\li TargetDir
\li Default target directory for installation.
@@ -252,9 +255,9 @@
rights.
\row
\li RemoteRepositories
- \li List of remote repositories. You can add several \c Repository
- sections that each specify the \c Url to access the repository.
- For more information, see \l{Configuring Repositories}.
+ \li List of remote repositories. This element can contain several \c <Repository> child
+ elements that each contain the \c <Url> child element that specifies the URL to
+ access the repository. For more information, see \l{Configuring Repositories}.
\row
\li MaintenanceToolName
\li Filename of the generated maintenance tool. Defaults to
@@ -288,8 +291,8 @@
\row
\li Translations
\li List of language codes to be used for translating the user interface. To add several language
- variants, specify several Translation sections that each specify the name of a language
- variant. Optional. For more information, see \l{Translating Pages}.
+ variants, specify several \c <Translation> child elements that each specify the name
+ of a language variant. Optional. For more information, see \l{Translating Pages}.
\row
\li UrlQueryString
\li This string needs to be in the form "key=value" and will be appended to archive download
@@ -297,6 +300,12 @@
\row
\li ControlScript
\li Filename for a custom installer control script. See \l{Controller Scripting}.
+ \row
+ \li CreateLocalRepository
+ \li Set to \c true if you want to create a local repository inside the installation directory.
+ This option has no effect on online installers. The repository will be automatically added
+ to the list of default repositories.
+
\endtable
*/
@@ -305,36 +314,71 @@
\contentspage index.html
\previouspage ifw-updates.html
\page ifw-customizing-installers.html
- \nextpage ifw-reference.html
+ \nextpage Qt Installer Framework Examples
\title Customizing Installers
- The following sections describe how you can extend the predefined installer
- by adding operations to the pages and by adding new pages and language
- variants.
+ You can use scripting to customize installers by:
+
+ \list
+
+ \li Adding Qt Installer Framework \e operations that are prepared by the
+ scripts and performed by the installer.
+
+ \li Adding new pages that you specify in the package.xml file and place
+ in the \c packages directory.
+
+ \li Modifying existing pages by inserting custom user interface
+ elements into them as single widgets.
+
+ \li Adding language variants.
+
+ \endlist
+
+ You can use both \e {component scripts} and a \e {control script} to
+ customize installers. A component script is associated with a particular
+ component by specifying it in the \c Script element of the package.xml
+ file of the component. The script is loaded when the component's metadata is
+ fetched. For more information about component scripts, see
+ \l{Component Scripting}.
+
+ A control script is associated with the whole installer by specifying it
+ in the \c ControlScript element of the control.xml file of the installer.
+ Control scripts can be part of the installer resources or be passed on the
+ command line. They can be used to modify the installer pages that are
+ presented to users before components are loaded. Also, you can use them to
+ modify pages in the uninstaller. For more information, see
+ \l{Controller Scripting}.
+
+ For more information about the global JavaScript objects that can be used in
+ component and control scripts, see \l{Scripting API}.
\section1 Adding Operations
- Components can use the ECMAScript scripting language to perform additional
- operations at any time during the installation process. Typically,
- components manipulate files by moving, copying, or patching them.
+ You can use component scripts to perform Qt Installer Framework operations
+ during the installation process. Typically, operations manipulate files by
+ moving, copying, or patching them. Use the
+ QInstaller::Component::addOperation or
+ QInstaller::Component::addElevatedOperation function to add operations. For
+ more information, see \l {Adding Operations to Components}.
+
+ In addition, you can implement methods to register custom installation
+ operations in the installer by deriving KDUpdater::UpdateOperation. For
+ more information, see \l {Registering Custom Operations}.
- For more information about scripting, see \l{Component Scripting}.
+ For a summary of available operations, see \l {Operations}.
\section1 Adding Pages
A component can contain one or more user interface files, which are placed
- into the installer by a script. The installer automatically loads all user
- interface files listed in package.xml. You can access the loaded widgets
- by calling \c QInstaller::Component::userInterface with the class name of
- the widget, as illustrated by the following code snippet:
+ into the installer by a component or control script. The installer
+ automatically loads all user interface files listed in the
+ \c UserInterfaces element of the package.xml file.
- \code
- component.userInterface( "MyPage" ).checkbox.checked = true;
- \endcode
+ \section2 Using Component Scripts to Add Pages
To add a new page to the installer, use
- the \c QInstaller::Installer::addWizardPage method and specify the location
+ the installer::addWizardPage() method and specify the location
of the new page. For example, the following code adds an instance of
\c MyPage before the ready for installation page:
@@ -342,13 +386,45 @@
installer.addWizardPage( component, "MyPage", QInstaller.ReadyForInstallation );
\endcode
+ You can use component scripts to access the loaded widgets
+ by calling the \l component::userInterface() method with the class name of
+ the widget, as illustrated by the following code snippet:
+
+ \code
+ component.userInterface( "MyPage" ).checkbox.checked = true;
+ \endcode
+
+ \section2 Using Control Scripts to Add Pages
+
+ To register a custom page, use the installer::addWizardPage() method
+ and the object name set in the UI file (for example, \c "MyPage"). Then
+ call the \c{Dynamic${ObjectName}Callback()} function (for example,
+ \c {DynamicMyPageCallback()}):
+
+ \code
+ function Controller()
+ {
+ installer.addWizardPage(component, "MyPage", QInstaller.TargetDirectory)
+ }
+
+ Controller.prototype.DynamicMyPageCallback()
+ {
+ var page = gui.pageWidgetByObjectName("DynamicMyPage");
+ page.myButton.click,
+ page.myWidget.subWidget.setText("hello")
+ }
+ \endcode
+
+ You can access widgets by using their object names that are set in the UI
+ file. For example, \c myButton and \c myWidget are widget object names in
+ the code above.
+
\section1 Adding Widgets
- You can also insert custom user interface elements into the installer as
- single widgets (such as a check box).
+ You can use component or control scripts to insert custom user interface
+ elements into the installer as single widgets (such as a check box).
- To insert a single widget, use the
- \c QInstaller::Installer::addWizardPageItem method.
+ To insert a single widget, use the installer::addWizardPageItem method.
For example, the following code snippet adds an instance of \c MyWidget to
the component selection page from within a script:
@@ -356,6 +432,19 @@
installer.addWizardPageItem( component, "MyWidget", QInstaller.ComponentSelection );
\endcode
+ \section1 Interacting with Installer Functionality
+
+ You can use control scripts to execute installer functions automatically in
+ tests, for example. The following snippet illustrates how to automatically
+ click the \uicontrol Next button on the target directory selection page:
+
+ \code
+ Controller.prototype.TargetDirectoryPageCallback = function()
+ {
+ gui.clickButton(buttons.NextButton);
+ }
+ \endcode
+
\section1 Translating Pages
The installer uses the Qt Translation system to support the translation of
@@ -432,11 +521,11 @@
\quotefile examples/package.xml
- \section2 Summary of Package Information File Settings
+ \section2 Summary of Package Information File Elements
\table
\header
- \li Setting
+ \li Element
\li Description
\row
\li DisplayName
@@ -467,8 +556,11 @@
\li Comma-separated list of identifiers of components that this
component depends on. Optionally, you can specify version
numbers, separated by a dash (-). You can prefix version numbers
- with a comparison operator (=, >, <, >= or <=). Optional. For
- more information, see \l{Component Dependencies}.
+ with a comparison operator (=, >, <, >= or <=). Keep in mind
+ that you have to use the character reference "&lt;" to escape
+ the left angle bracket (use "&lt;" instead of "<" and "&lt;="
+ instead of "<="). Optional. For more information, see
+ \l{Component Dependencies}.
\row
\li AutoDependOn
\li Opposite of dependencies. Defines that this component should be
@@ -484,8 +576,8 @@
\row
\li Licenses
\li List of license agreements to be accepted by the installing
- user. To add several licenses, specify several \c License
- sections that each specify the license \c name and \c file.
+ user. To add several licenses, add several \c <License> child
+ elements that each specify the license \c name and \c file.
If there are translations listed for this component, the installer
will also look for translated licenses. These need to have the
same name as the original license file but with an added
@@ -500,13 +592,13 @@
For more information, see \l{Adding Operations}.
\row
\li UserInterfaces
- \li List of pages to load. To add several pages, specify several
- \c UserInterface sections that each specify the filename of a
+ \li List of pages to load. To add several pages, add several
+ \c <UserInterface> child elements that each specify the filename of a
page. Optional. For more information, see \l{Adding Pages}.
\row
\li Translations
\li List of translation files to load. To add several language
- variants, specify several \c Translation sections that each
+ variants, specify several \c <Translation> child elements that each
specify the filename of a language variant. Optional. For more
information, see \l{Translating Pages}.
\row
@@ -521,7 +613,7 @@
child components.
The boolean values are evaluated directly, while \c script is
resolved during runtime. Add the name of the script as a value
- of the \c Script setting in this file. For an example script,
+ of the \c <Script> element in this file. For an example script,
see \l{Selecting Default Contents}.
\row
\li Essential
@@ -555,8 +647,8 @@
component version. Use a dash (-) to separate version numbers from
identifiers.
- You can prefix version numbers with a comparison operator (=, >, <, >= or
- <=) to indicate that the version number of the package is compared to the
+ You can prefix version numbers with a comparison operator (=, >, &lt; (<), >= or
+ &lt;= (<=)) to indicate that the version number of the package is compared to the
required version and has to be equal to, greater than, less than, greater
than or equal to, or less than or equal to the version number specified in
the dependency. If no comparison operator is given, it defaults to =.
@@ -586,7 +678,7 @@
\contentspage index.html
\previouspage operations.html
\page ifw-tools.html
- \nextpage Scripting
+ \nextpage Scripting API
\title Tools
@@ -835,17 +927,19 @@
\section1 Configuring Repositories
- The \c RemoteRepositories setting in the installer configuration file
+ The \c <RemoteRepositories> element in the installer configuration file
(config.xml) can contain a list of several repositories. Each of them can
have the following settings:
\list
- \li URL, which points to a list of available components.
- \li Enabled, with 0 disabling this repository.
- \li Username, which is used as user on a protected repository.
- \li Password, which sets the password to use on a protected repository.
- \li DisplayName, which optionally sets a String to display instead of the URL.
+ \li \c <Url>, which points to a list of available components.
+ \li \c <Enabled>, with 0 disabling this repository.
+ \li \c <Username>, which is used as user on a protected repository.
+ \li \c <Password>, which sets the password to use on a protected
+ repository.
+ \li \c <DisplayName>, which optionally sets a string to display instead
+ of the URL.
\endlist
@@ -961,7 +1055,7 @@
\li Copy the updated content to the package directory.
- \li Increase the value of the \c{Version} setting for the updated
+ \li Increase the value of the \c <Version> element for the updated
components in the package.xml file.
\li Use the \c repogen tool to recreate the online repository with the
@@ -981,7 +1075,7 @@
the online version number in the file is greater than the local one, the
installer displays it in the list of available updates.
- Increase the value of the \c{Version} setting for the component in the
+ Increase the value of the \c <Version> element for the component in the
package.xml file.
\section1 Recreating Repositories
@@ -1040,7 +1134,8 @@
\endcode
\section2 Adding Repositories
- To update a repository, add the following code to the RepositoryUpdate section:
+ To update a repository, add a \c <Repository> child element to the
+ \c <RepositoryUpdate> element with the following options:
\code
<Repository action="add" url="http://www.example.com/repository" name="user" password="password"
@@ -1048,14 +1143,16 @@
\endcode
\section2 Removing Repositories
- To remove a repository, add the following code to the RepositoryUpdate section:
+ To remove a repository, add a \c <Repository> child element to the
+ \c <RepositoryUpdate> element with the following options:
\code
<Repository action="remove" url="http://www.example.com/repository" />
\endcode
\section2 Replacing repositories
- To replace one repository with another, add the following code to the RepositoryUpdate section:
+ To replace one repository with another, add a \c <Repository> child element to the
+ \c <RepositoryUpdate> element with the following options:
\code
<Repository action="replace" oldurl="http://www.example.com/repository"
@@ -1072,7 +1169,7 @@
\title Known Issues
- Check the \l{https://bugreports.qt-project.org/browse/QTIFW}{Qt Bugtracker}
+ Check the \l{https://bugreports.qt.io/browse/QTIFW}{Qt Bugtracker}
for known issues in the Qt Installer Framework project. If you cannot find
the issue there, create a bug report.
*/
diff --git a/doc/noninteractive.qdoc b/doc/noninteractive.qdoc
index f6d2d2abd..fb5663c1c 100644
--- a/doc/noninteractive.qdoc
+++ b/doc/noninteractive.qdoc
@@ -441,84 +441,84 @@
try again.
\row
- \li AuthorizationError
+ \li \c AuthorizationError
\li Abort, OK
\li Elevated permissions could not be acquired.
\row
- \li OperationDoesNotExistError
+ \li \c OperationDoesNotExistError
\li Abort, Ignore
\li An error occurred while trying to perform an operation, but the operation did not exist.
\row
- \li isAutoDependOnError
+ \li \c isAutoDependOnError
\li OK
\li An error occurred while calling a package script. It was not possible to evaluate
if the package has a auto dependency on other packages.
\row
- \li isDefaultError
+ \li \c isDefaultError
\li OK
\li An error occurred while calling a package script. It was not possible to evaluate
if the package will be installed by default.
\row
- \li DownloadError
+ \li \c DownloadError
\li Retry, Cancel
\li An error occurred while downloading a archive hash from a remote repository. End users
can select \c Retry to try again.
\row
- \li archiveDownloadError
+ \li \c archiveDownloadError
\li Retry, Cancel
\li An error occurred while downloading a archive from a remote repository. End users can
select \c Retry to try again.
\row
- \li WriteError
+ \li \c WriteError
\li OK
\li An error occurred while writing the maintenance tool.
\row
- \li ElevationError
+ \li \c ElevationError
\li OK
\li Elevated permissions could not be acquired.
\row
- \li unknown
+ \li \c unknown
\li OK
\li An unknown error occurred while removing a certain package.
\row
- \li Error
+ \li \c Error
\li OK
\li Generic error.
\row
- \li stopProcessesForUpdates
+ \li \c stopProcessesForUpdates
\li Retry, Ignore, Cancel
\li An error occurred while updating a package. Some running application or process needs
to be quit before the update can be performed. End users can select \c Retry to try
again once they have been stopped.
\row
- \li Installer_Needs_To_Be_Local_Error
+ \li \c Installer_Needs_To_Be_Local_Error
\li OK
\li The installer binary was started from a network location, but the installation over
network is not supported.
\row
- \li TargetDirectoryInUse
+ \li \c TargetDirectoryInUse
\li No
\li The installation's target directory already contains an installation.
\row
- \li WrongTargetDirectory
+ \li \c WrongTargetDirectory
\li OK
\li The installation's target directory is a file or symlink.
\row
- \li AlreadyRunning
+ \li \c AlreadyRunning
\li OK
\li Another application instance is already running.
\endtable
diff --git a/doc/operations.qdoc b/doc/operations.qdoc
index 3e3b05e7c..ed1465648 100644
--- a/doc/operations.qdoc
+++ b/doc/operations.qdoc
@@ -33,7 +33,7 @@
\title Operations
- The operations are prepared by component scripts and performed by the
+ The operations are prepared by component and controller scripts and performed by the
installer.
\note Operations are performed threaded.
diff --git a/doc/scripting-qmlmodule.qdoc b/doc/scripting-qmlmodule.qdoc
index f785d28d2..2134f1e4b 100644
--- a/doc/scripting-qmlmodule.qdoc
+++ b/doc/scripting-qmlmodule.qdoc
@@ -30,6 +30,11 @@
\previouspage ifw-tools.html
\nextpage ifw-cpp-classes.html
- \title Scripting
+ \title Scripting API
\qmlmodule scripting
+
+ \brief Scripting API reference.
+
+ The following table summarizes the global JavaScript objects that you can
+ use in controller and component scripts.
*/
diff --git a/doc/scripting.qdoc b/doc/scripting.qdoc
index 986ca87ac..e8bce396d 100644
--- a/doc/scripting.qdoc
+++ b/doc/scripting.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Installer Framework.
@@ -250,6 +250,8 @@
\row
\li os
\li Current platform: \c "x11", \c "win", or \c "mac".
+
+ This variable is deprecated: Use \l systemInfo instead.
\row
\li RootDir
\li Root directory of the filesystem.
diff --git a/doc/tutorial.qdoc b/doc/tutorial.qdoc
index 19ee8c352..4360c0125 100644
--- a/doc/tutorial.qdoc
+++ b/doc/tutorial.qdoc
@@ -86,30 +86,29 @@
\list
- \li The \c Title section specifies the installer name displayed on the
+ \li The \c <Title> element specifies the installer name displayed on the
title bar (1).
- \li The \c Name section specifies the application name that is added to
+ \li The \c <Name> element specifies the application name that is added to
the page name and introduction text (2).
\endlist
\image ifw-tutorial-introduction-page.png "Introduction page"
- The other settings are used to customize the behavior of the installer:
+ The other elements are used to customize the behavior of the installer:
\list
- \li The \c <Version> section specifies the version number of the
- repository format, and must be set to \c 1.0.0.
+ \li The \c <Version> element specifies the application version number.
- \li The \c <Publisher> section specifies the publisher of the software
+ \li The \c <Publisher> element specifies the publisher of the software
(as shown in the Windows Control Panel, for example).
- \li The \c <StartMenuDir> section specifies the name of the default
+ \li The \c <StartMenuDir> element specifies the name of the default
program group for the product in the Windows \gui Start menu.
- \li The \c <TargetDir> section specifies that the default target
+ \li The \c <TargetDir> element specifies that the default target
directory displayed to users is \c InstallationDirectory in the home
directory of the current user (because the predefined variable
\c @HomeDir@ is used as a part of the value). For more information,
@@ -118,7 +117,7 @@
\endlist
For more information about the configuration file format and the available
- settings, see \l{Configuration File}.
+ elements, see \l{Configuration File}.
\section1 Creating a Package Information File
@@ -129,22 +128,22 @@
\quotefile ../examples/tutorial/packages/com.vendor.product/meta/package.xml
- The sections in the example file are described in more detail below.
+ The elements in the example file are described in more detail below.
For more information about the package information file, see
\l{Package Information File Syntax}.
\section2 Specifying Component Information
- The information from the following sections is displayed on the component
+ The information from the following elements is displayed on the component
selection page:
\list
- \li The \c DisplayName section specifies the name of the component in
+ \li The \c <DisplayName> element specifies the name of the component in
the list of components (1).
- \li The \c Description section specifies the text that is displayed when
+ \li The \c <Description> element specifies the text that is displayed when
the component is selected (2).
\endlist
@@ -153,23 +152,23 @@
\section2 Specifying Installer Version
- The \c Version section enables you to promote updates to users when they
+ The \c <Version> element enables you to promote updates to users when they
become available.
\section2 Adding Licenses
- The \c License section specifies the name of the file that contains the text
+ The \c <License> element specifies the name of the file that contains the text
for the license agreement (1) that is displayed on the license check page:
\image ifw-tutorial-license-check.png "License check page"
\section2 Selecting Default Contents
- The \c Default section specifies whether the component is selected by
+ The \c <Default> element specifies whether the component is selected by
default. The value \c true sets the component as selected. In this example,
we use the value \c script to resolve the value during runtime. The
name of the JavaScript script file, installscript.qs, is specified in the
- \c Script section.
+ \c <Script> element.
\section1 Creating Installer Content
diff --git a/examples/doc/changeuserinterface.qdoc b/examples/doc/changeuserinterface.qdoc
index 25d7d3257..15212756c 100644
--- a/examples/doc/changeuserinterface.qdoc
+++ b/examples/doc/changeuserinterface.qdoc
@@ -30,7 +30,7 @@
\ingroup qtifwexamples
\title Change Installer UI Example
- \brief Changing the installer UI by using a component script.
+ \brief Using a component script to modify the installer UI.
\image qtifw-examples-changeuserinterface.png
diff --git a/examples/doc/componenterror.qdoc b/examples/doc/componenterror.qdoc
index d4e6ef17a..39a0dcb84 100644
--- a/examples/doc/componenterror.qdoc
+++ b/examples/doc/componenterror.qdoc
@@ -30,7 +30,8 @@
\ingroup qtifwexamples
\title Component Error Example
- \brief Stopping the installation if the components cannot be installed.
+ \brief Using a component script to stop the installation if the components
+ cannot be installed.
\image qtifw-examples-componenterror.png
diff --git a/examples/doc/dynamicpage.qdoc b/examples/doc/dynamicpage.qdoc
index 4aba1e743..6c68fe336 100644
--- a/examples/doc/dynamicpage.qdoc
+++ b/examples/doc/dynamicpage.qdoc
@@ -30,11 +30,84 @@
\ingroup qtifwexamples
\title Dynamic Page Installer Example
- \brief Building an installer by using a script and dynamic pages.
+ \brief Using a component script and dynamic pages to build an installer.
+
+ \image qtifw-examples-dynamicpages.png
+
+ \e{Dynamic Page Installer} illustrates how to use the
+ \c component.loaded.connect() function to load custom installer pages (.ui)
+ instead of using the default installer pages and how to add functionality to
+ the pages.
+
+ The \uicontrol {Select Installation Type} page contains icons that are added
+ to a Qt resource file (.qrc) for delivery with the installer.
\include installerfw-examples-configuring.qdocinc
\quotefile dynamicpage/config/config.xml
- \include installerfw-examples-generating.qdocinc
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Script> section specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \li The \c <UserInterfaces> section specifies the file names of the
+ installer pages (.ui files) to use.
+ \li The \c <Name> section provides domain-like identification for the
+ component.
+ \endlist
+
+ \quotefile dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/package.xml
+
+ This installer contains three components that each have their own package
+ information file with slightly different contents.
+
+ \section1 Creating Dynamic Pages
+
+ In installscript.js, we create the installer pages and add functionality to
+ them.
+
+ Qt Installer Framework calls the constructors of all scripts. When all the
+ constructors are finished and all UI files are loaded, a \c loaded signal is
+ emitted for each component.
+
+ To create an installer page, we have to wait for the \c loaded signal that
+ tells us that the UI file has been loaded:
+
+ \quotefromfile dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js
+ \skipto component.loaded
+ \printuntil ;
+
+ We hide the default pages by setting their visibility to \c false:
+
+ \skipto setDefaultPageVisible
+ \printuntil ReadyForInstallation
+
+ We use the \c loaded function that we connected earlier to add functionality
+ to the dynamic installer pages:
+
+ \skipto installerLoaded
+ \printuntil defaultInstall.checked
+ \printuntil }
+ \dots
+
+ \section1 Generating the Example Installer
+
+ To create the example installer, switch to the example source directory on
+ the command line and enter the following command:
+
+ \list
+ \li On Windows:
+ \code
+ ..\..\bin\binarycreator.exe -c config\config.xml -r resources/additional.qrc -p packages installer.exe
+ \endcode
+ \li On Linux or OS X:
+ \code
+ ../../bin/binarycreator -c config/config.xml -r resources/additional.qrc -p packages installer
+ \endcode
+ \endlist
+
+ Because the installer uses additional resources, you must give the
+ \c {-r} option and specify the path to the Qt resource file that contains
+ the resources. The installer is created in the current directory.
*/
diff --git a/examples/doc/images/qtifw-examples-dynamicpages.png b/examples/doc/images/qtifw-examples-dynamicpages.png
new file mode 100644
index 000000000..61a0be894
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-dynamicpages.png
Binary files differ
diff --git a/examples/doc/images/qtifw-examples-modifyextract.png b/examples/doc/images/qtifw-examples-modifyextract.png
new file mode 100644
index 000000000..d189d0b3e
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-modifyextract.png
Binary files differ
diff --git a/examples/doc/images/qtifw-examples-openreadme.png b/examples/doc/images/qtifw-examples-openreadme.png
new file mode 100644
index 000000000..4cebedc75
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-openreadme.png
Binary files differ
diff --git a/examples/doc/images/qtifw-examples-quit_installer.png b/examples/doc/images/qtifw-examples-quit_installer.png
new file mode 100644
index 000000000..12e94f0a1
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-quit_installer.png
Binary files differ
diff --git a/examples/doc/images/qtifw-examples-registerfileextension.png b/examples/doc/images/qtifw-examples-registerfileextension.png
new file mode 100644
index 000000000..467c6f603
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-registerfileextension.png
Binary files differ
diff --git a/examples/doc/images/qtifw-examples-startmenu.png b/examples/doc/images/qtifw-examples-startmenu.png
new file mode 100644
index 000000000..f332f2381
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-startmenu.png
Binary files differ
diff --git a/examples/doc/modifyextract.qdoc b/examples/doc/modifyextract.qdoc
index fd5b5ebe5..7dbd455c2 100644
--- a/examples/doc/modifyextract.qdoc
+++ b/examples/doc/modifyextract.qdoc
@@ -30,11 +30,41 @@
\ingroup qtifwexamples
\title Modify Extract Installer Example
- \brief Using the extract archive hook to modify the target path.
+ \brief Using the extract archive hook in a component script to modify the
+ target path.
+
+ \image qtifw-examples-modifyextract.png
+
+ \e{Modify Extract Installer} illustrates how to overwrite the
+ \c{component.createOperationsForArchive()} function to be able to install a
+ component to a modified path.
\include installerfw-examples-configuring.qdocinc
\quotefile modifyextract/config/config.xml
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Default> section is set to \c true to preselect the
+ component in the installer.
+ \li The \c <Script> section specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \endlist
+
+ \quotefile modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml
+
+ \section1 Modifying Target Path
+
+ In installscript.js, we overwrite the default
+ \c{component.createOperationsForArchive()} implementation to be able to
+ register an \c Extract operation with a custom argument:
+
+ \quotefromfile modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/installscript.js
+ \skipto createOperationsForArchive
+ \printuntil {
+ \skipto component.addOperation
+ \printuntil }
+
\include installerfw-examples-generating.qdocinc
*/
diff --git a/examples/doc/openreadme.qdoc b/examples/doc/openreadme.qdoc
index 165caf4e2..be24df084 100644
--- a/examples/doc/openreadme.qdoc
+++ b/examples/doc/openreadme.qdoc
@@ -30,12 +30,58 @@
\ingroup qtifwexamples
\title Open ReadMe Example
- \brief Adding a check box for opening the readme file to the final
- installer page.
+ \brief Using a component script to add a check box for opening the readme
+ file to the final installer page.
+
+ \image qtifw-examples-openreadme.png
+
+ \e{Open ReadMe} illustrates how to use the \c Component() function to add a
+ check box to the installation finished page and to open the readme file if
+ end users select the check box.
\include installerfw-examples-configuring.qdocinc
\quotefile openreadme/config/config.xml
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Default> section is set to \c true to preselect the
+ component in the installer.
+ \li The \c <Script> section specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \li The \c <UserInterfaces> section specifies the file name of the
+ installer page (.ui file) to use.
+ \endlist
+
+ \quotefile openreadme/packages/or.qtproject.ifw.example.openreadme/meta/package.xml
+
+ \section1 Opening Files After Installation
+
+ In installscript.qs, we use the \c Component() function to connect to the
+ \c installationFinishedPageIsShown signal when the installation is complete
+ and to the \c installationFinished signal when the end users click
+ \uicontrol Finish (\uicontrol Done on OS X):
+
+ \quotefromfile openreadme/packages/or.qtproject.ifw.example.openreadme/meta/installscript.qs
+ \skipto Component()
+ \printuntil }
+
+ We call the component::createOperations() function to override the default
+ method for creating operations:
+
+ \printuntil }
+
+ If the installation is successful, we call the installer::addWizardPageItem()
+ function to replace the last installer page with a custom page that contains
+ the \uicontrol {OpenReadMe} check box:
+
+ \printuntil /^\}/
+
+ We set the \c readMeCheckBox to \c checked by default and use the
+ QDesktopServices::openURL() function to open the readme file:
+
+ \printuntil /^\}/
+
\include installerfw-examples-generating.qdocinc
*/
diff --git a/examples/doc/quit_installer.qdoc b/examples/doc/quit_installer.qdoc
index bb1655ad2..c73dddd48 100644
--- a/examples/doc/quit_installer.qdoc
+++ b/examples/doc/quit_installer.qdoc
@@ -30,11 +30,49 @@
\ingroup qtifwexamples
\title Quit Installer Example
- \brief Quitting an installer by using a script.
+ \image qtifw-examples-quit_installer.png
+
+ \brief Using a component script to quit an installer.
+
+ \e{Quit Installer} illustrates how to use the \c Component() function to
+ display a message box to end users for quitting the installation if some
+ requirements for the installation are not met.
\include installerfw-examples-configuring.qdocinc
\quotefile quit_installer/config/config.xml
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Default> element is set to \c true to preselect the
+ component in the installer.
+ \li The \c <Script> element specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \endlist
+
+ \quotefile quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/package.xml
+
+ \section1 Quitting the Installation
+
+ In installscript.js, we use the \c Component() function to display a
+ message box for quitting the installer to end users:
+
+ \quotefromfile quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js
+ \skipto Component()
+ \printuntil QMessageBox.Ok
+
+ If end users select \uicontrol OK, we use the \c installer::setValue()
+ function to display a message and the \c installer.setDefaultPageVisible()
+ function to hide the subsequent installer pages:
+
+ \printuntil NextButton
+
+ If end users select \uicontrol Cancel, we display the default installer
+ pages and use the \c installer::setValue() function to display another
+ message on the last installer page:
+
+ \printuntil /^\}/
+
\include installerfw-examples-generating.qdocinc
*/
diff --git a/examples/doc/registerfileextension.qdoc b/examples/doc/registerfileextension.qdoc
index 6b9c41e68..4c1cc5769 100644
--- a/examples/doc/registerfileextension.qdoc
+++ b/examples/doc/registerfileextension.qdoc
@@ -30,11 +30,81 @@
\ingroup qtifwexamples
\title Register File Extension Example
- \brief Registering a filename extension on Windows.
+ \brief Using a component script to register a filename extension on Windows.
+
+ \image qtifw-examples-registerfileextension.png
+
+ \e{Register File Extension} illustrates how to register a file type on
+ Windows. We use the \c component.addOperation() function with the
+ \c RegisterFileType operation to register a randomly generated file type to
+ be opened with Notepad.
\include installerfw-examples-configuring.qdocinc
\quotefile registerfileextension/config/config.xml
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Default> element is set to \c true to preselect the
+ component in the installer.
+ \li The \c <Script> element specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \li The \c <UserInterfaces> element specifies the file names of the
+ installer pages (.ui files) to use.
+ \endlist
+
+ \quotefile registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
+
+ \section1 Registering File Extensions
+
+ In installscript.qs, we call the \c Component() function to connect to the
+ \c addRegisterFileCheckBox signal as soon as all components have been
+ loaded:
+
+ \quotefromfile registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
+ \skipto Component()
+ \printuntil addRegisterFileCheckBox
+
+ We use the \c addRegisterFileCheckBox() function to display a check box for
+ registering the generated file type on the last page of the installer.
+ We hide the page when updating and uninstalling:
+
+ \skipto addRegisterFileCheckBox
+ \printuntil )
+ \skipto isInstaller()
+ \printuntil /^\}/
+
+ We connect to the \c openRegisteredFileIfChecked signal when end users
+ select \uicontrol Finish on the last installer page:
+
+ \quotefromfile registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
+ \skipto openRegisteredFileIfChecked
+ \printuntil ;
+
+ We call the \c openRegisteredFileIfChecked function to check that the
+ file type was successfully registered:
+
+ \skipto openRegisteredFileIfChecked
+ \printuntil /^\}/
+
+ We bind the \c unusualFileType variable to the \c generateUnusualFileType()
+ function that randomly generates a file type with the specified length:
+
+ \quotefromfile registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
+ \skipto generateUnusualFileType
+ \printuntil randomString
+ \printuntil }
+
+ We use the \c RegisterFileType operation to create a file of the
+ specified type and to specify the application to open the file with:
+
+ \quotefromfile registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
+ \skipto component.createOperations()
+ \printuntil /^\}/
+
\include installerfw-examples-generating.qdocinc
+
+ After running the installer, double-click the installed file,
+ \c registeredfile.<extension>, to open it in Notepad.
*/
diff --git a/examples/doc/startmenu.qdoc b/examples/doc/startmenu.qdoc
index 1c9c98e49..33ed6d31f 100644
--- a/examples/doc/startmenu.qdoc
+++ b/examples/doc/startmenu.qdoc
@@ -30,11 +30,44 @@
\ingroup qtifwexamples
\title Start Menu Shortcut Example
- \brief Adding an entry to the Windows Start menu.
+ \brief Using a component script to add an entry to the Windows Start menu.
+
+ \image qtifw-examples-startmenu.png
+
+ \e{Start Menu} illustrates how to use the \gui Component function to add an
+ entry for opening a README file to the Windows \uicontrol Start menu.
\include installerfw-examples-configuring.qdocinc
\quotefile startmenu/config/config.xml
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <Default> element is set to \c true to preselect the
+ component in the installer.
+ \li The \c <Script> element specifies the file name of the JavaScript
+ file that is loaded to perform operations.
+ \endlist
+
+ \quotefile startmenu/packages/org.qtproject.ifw.example/meta/package.xml
+
+ \section1 Adding Entries to Start Menu
+
+ In installscript.qs, we use the \c createOperations() function to call the
+ component::createOperations() function, which creates the \c Extract
+ operation by default:
+
+ \quotefromfile startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs
+ \skipto createOperations
+ \printuntil {
+ \skipto createOperations
+ \printuntil ;
+
+ On Windows, we use the component::addOperation function to add a shortcut
+ to the \uicontrol Start menu for opening the readme file:
+
+ \printuntil /^\}/
+
\include installerfw-examples-generating.qdocinc
*/
diff --git a/examples/doc/systeminfo.qdoc b/examples/doc/systeminfo.qdoc
index bd5ed2779..da3b99c10 100644
--- a/examples/doc/systeminfo.qdoc
+++ b/examples/doc/systeminfo.qdoc
@@ -30,7 +30,8 @@
\ingroup qtifwexamples
\title System Information Example
- \brief Checking operating system version and bitness in a script.
+ \brief Using the systemInfo API in a component script to check operating
+ system version and bitness.
The \e{System Information Example} demonstrates how to use the \l{systemInfo} API to detect
details about the target operating system.
diff --git a/examples/dynamicpage/config/config.xml b/examples/dynamicpage/config/config.xml
index d65946b9b..b91922546 100644
--- a/examples/dynamicpage/config/config.xml
+++ b/examples/dynamicpage/config/config.xml
@@ -4,6 +4,6 @@
<Version>1.0.0</Version>
<Title>Dynamic Page Installer Example</Title>
<Publisher>Qt-Project</Publisher>
- <StartMenuDir>Qt Installer Framework Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWDynamicPageInstallerExample</TargetDir>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2..txt b/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2.txt
index f40001983..f40001983 100644
--- a/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2..txt
+++ b/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage.node2/data/data.node2.txt
diff --git a/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js b/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js
index f56bbeaaa..37a79c983 100644
--- a/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js
+++ b/examples/dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Installer Framework.
@@ -36,7 +36,7 @@ var ComponentSelectionPage = null;
var Dir = new function () {
this.toNativeSparator = function (path) {
- if (installer.value("os") == "win")
+ if (systemInfo.productType === "windows")
return path.replace(/\//g, '\\');
return path;
}
@@ -50,7 +50,7 @@ function Component() {
installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
- if (installer.value("os") == "win")
+ if (systemInfo.productType === "windows")
installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
}
@@ -76,7 +76,7 @@ Component.prototype.installerLoaded = function () {
widget.completeInstall.toggled.connect(this, Component.prototype.completeInstallToggled);
widget.defaultInstall.checked = true;
- widget.windowTitle = "Please select a installation type";
+ widget.windowTitle = "Select Installation Type";
}
if (installer.addWizardPage(component, "LicenseWidget", QInstaller.LicenseCheck)) {
diff --git a/examples/modifyextract/config/config.xml b/examples/modifyextract/config/config.xml
index 2f365dbcc..1ff8ead0c 100644
--- a/examples/modifyextract/config/config.xml
+++ b/examples/modifyextract/config/config.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
- <Name>Modify extract Installer Example</Name>
+ <Name>Modify Extract Installer Example</Name>
<Version>1.0.0</Version>
- <Title>Modify extract Installer Example</Title>
+ <Title>Modify Extract Installer Example</Title>
<Publisher>Qt-Project</Publisher>
- <StartMenuDir>Qt Installer Framework Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWModifyExtractInstallerExample</TargetDir>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml b/examples/modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml
index ed7bce619..18f51b39a 100644
--- a/examples/modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml
+++ b/examples/modifyextract/packages/org.qtproject.ifw.example.modifyextract/meta/package.xml
@@ -1,9 +1,9 @@
<?xml version="1.0"?>
<Package>
- <DisplayName>modify extract operation</DisplayName>
+ <DisplayName>Modify extract operation</DisplayName>
<Description>A component that uses a hook to modify the extract operation.</Description>
<Version>1.0.1</Version>
- <ReleaseDate>2013-02-27</ReleaseDate>
+ <ReleaseDate>2014-12-19</ReleaseDate>
<Default>true</Default>
<Script>installscript.js</Script>
</Package>
diff --git a/examples/openreadme/config/config.xml b/examples/openreadme/config/config.xml
index b1ec192e6..bd6092a8a 100644
--- a/examples/openreadme/config/config.xml
+++ b/examples/openreadme/config/config.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
- <Name>Qt Installer Framework - Open ReadMe Example</Name>
+ <Name>Open Readme Example</Name>
<Version>1.0.0</Version>
- <Title>Qt Installer Framework - Open Readme Example</Title>
+ <Title>Open Readme Example</Title>
<Publisher>Qt-Project</Publisher>
- <StartMenuDir>Qt Installer Framework - 'Open ReadMe' Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWOpenReadMeExample</TargetDir>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/quit_installer/config/config.xml b/examples/quit_installer/config/config.xml
index 36717025c..896c9f91b 100644
--- a/examples/quit_installer/config/config.xml
+++ b/examples/quit_installer/config/config.xml
@@ -4,6 +4,6 @@
<Version>1.0.0</Version>
<Title>Quit Installer Example</Title>
<Publisher>Qt-Project</Publisher>
- <StartMenuDir>Qt Installer Framework Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWQuitInstallerExample</TargetDir>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js b/examples/quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js
index 6075a00f1..713f86765 100644
--- a/examples/quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js
+++ b/examples/quit_installer/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js
@@ -35,9 +35,9 @@
function Component()
{
var result = QMessageBox["question"]("test.quit", "Installer", "Do you want to quit the installer?<br>" +
- "This message box was created through javascript.", QMessageBox.Ok | QMessageBox.Cancel);
+ "This message box was created using JavaScript.", QMessageBox.Ok | QMessageBox.Cancel);
if (result == QMessageBox.Ok) {
- installer.setValue("FinishedText", "<font color='red' size=10>This installer was quit.</font>");
+ installer.setValue("FinishedText", "<font color='red' size=3>The installer was quit.</font>");
installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
@@ -47,6 +47,6 @@ function Component()
gui.clickButton(buttons.NextButton);
} else {
installer.setValue("FinishedText",
- "<font color='green' size=10>The installer was not quit from javascript.</font>");
+ "<font color='green' size=3>The installer was not quit by JavaScript.</font>");
}
}
diff --git a/examples/registerfileextension/config/config.xml b/examples/registerfileextension/config/config.xml
index fbc5e3b79..f7bff22f7 100644
--- a/examples/registerfileextension/config/config.xml
+++ b/examples/registerfileextension/config/config.xml
@@ -4,6 +4,6 @@
<Version>1.0.0</Version>
<Title>Register File Extension Example</Title>
<Publisher>Qt-Project</Publisher>
- <StartMenuDir>Register File Extension Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWRegisterFileExtensionExample</TargetDir>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
index cd45bd548..c4724e509 100644
--- a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
@@ -34,10 +34,10 @@
function Component()
{
- component.loaded.connect(this, my_componentLoaded);
- installer.finishButtonClicked.connect(this, my_installationFinished);
- installer.installationFinished.connect(this, my_installationFinishedPageIsShown);
- component.unusalFileType = generateUnusualFileType(5)
+ component.loaded.connect(this, addRegisterFileCheckBox);
+ installer.installationFinished.connect(this, addOpenFileCheckBoxToFinishPage);
+ installer.finishButtonClicked.connect(this, openRegisteredFileIfChecked);
+ component.unusualFileType = generateUnusualFileType(5)
}
generateUnusualFileType = function(length)
@@ -51,65 +51,56 @@ generateUnusualFileType = function(length)
}
// called as soon as the component was loaded
-my_componentLoaded = function()
+addRegisterFileCheckBox = function()
{
- // don't show when updating / de-installing
+ // don't show when updating or uninstalling
if (installer.isInstaller()) {
- installer.addWizardPageItem(component, "RegisterFileCheckBoxesForm", QInstaller.TargetDirectory);
- component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.text =
- component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.text + component.unusalFileType;
+ installer.addWizardPageItem(component, "RegisterFileCheckBoxForm", QInstaller.TargetDirectory);
+ component.userInterface("RegisterFileCheckBoxForm").RegisterFileCheckBox.text =
+ component.userInterface("RegisterFileCheckBoxForm").RegisterFileCheckBox.text + component.unusualFileType;
}
}
-// called after everything is set up, but before any fie is written
-Component.prototype.beginInstallation = function()
-{
- // call default implementation which is necessary for most hooks
- // in beginInstallation case it makes nothing
- component.beginInstallation();
-
- component.registeredFile = installer.value("TargetDir") + "/registeredfile." + component.unusalFileType;
-}
-
// here we are creating the operation chain which will be processed at the real installation part later
Component.prototype.createOperations = function()
{
// call default implementation to actually install the registeredfile
component.createOperations();
- var iconId = 0;
- var notepadPath = installer.environmentVariable("SystemRoot") + "\\notepad.exe";
- var isRegisterFileChecked = component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.checked;
+ var isRegisterFileChecked = component.userInterface("RegisterFileCheckBoxForm").RegisterFileCheckBox.checked;
if (installer.value("os") === "win") {
+ var iconId = 0;
+ var notepadPath = installer.environmentVariable("SystemRoot") + "\\notepad.exe";
component.addOperation("RegisterFileType",
- component.unusalFileType,
+ component.unusualFileType,
notepadPath + " '%1'",
"QInstaller Framework example file type",
"text/plain",
notepadPath + "," + iconId,
- "ProgId=QtProject.QtInstallerFramework." + component.unusalFileType);
+ "ProgId=QtProject.QtInstallerFramework." + component.unusualFileType);
}
- component.addOperation("Move", "@TargetDir@/registeredfile", component.registeredFile);
+ component.fileWithRegisteredType = installer.value("TargetDir") + "/registeredfile." + component.unusualFileType
+ component.addOperation("Move", "@TargetDir@/registeredfile", component.fileWithRegisteredType);
}
-my_installationFinished = function()
+openRegisteredFileIfChecked = function()
{
if (!component.installed)
return;
if (installer.value("os") == "win" && installer.isInstaller() && installer.status == QInstaller.Success) {
- var isOpenRegisteredFileChecked = component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.checked;
+ var isOpenRegisteredFileChecked = component.userInterface("OpenFileCheckBoxForm").OpenRegisteredFileCheckBox.checked;
if (isOpenRegisteredFileChecked) {
- QDesktopServices.openUrl("file:///" + component.registeredFile);
+ QDesktopServices.openUrl("file:///" + component.fileWithRegisteredType);
}
}
}
-my_installationFinishedPageIsShown = function()
+addOpenFileCheckBoxToFinishPage = function()
{
if (installer.isInstaller() && installer.status == QInstaller.Success) {
- installer.addWizardPageItem(component, "OpenFileCheckBoxesForm", QInstaller.InstallationFinished);
- component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.text =
- component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.text + component.unusalFileType;
+ installer.addWizardPageItem(component, "OpenFileCheckBoxForm", QInstaller.InstallationFinished);
+ component.userInterface("OpenFileCheckBoxForm").OpenRegisteredFileCheckBox.text =
+ component.userInterface("OpenFileCheckBoxForm").OpenRegisteredFileCheckBox.text + component.unusualFileType;
}
}
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxform.ui
index b9bcd24da..84b097685 100644
--- a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxform.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>OpenFileCheckBoxesForm</class>
- <widget class="QWidget" name="OpenFileCheckBoxesForm">
+ <class>OpenFileCheckBoxForm</class>
+ <widget class="QWidget" name="OpenFileCheckBoxForm">
<property name="geometry">
<rect>
<x>0</x>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
index daa47c10c..4ac1ea897 100644
--- a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<Package>
- <DisplayName>register a file extension</DisplayName>
- <Description>Register a random generated file extension to open with notepad.exe</Description>
+ <DisplayName>Register a file extension</DisplayName>
+ <Description>Register a randomly generated file extension to open with notepad.exe</Description>
<Version>1.0.0-1</Version>
<ReleaseDate>2013-01-01</ReleaseDate>
<Default>true</Default>
<Script>installscript.qs</Script>
<UserInterfaces>
- <UserInterface>registerfilecheckboxesform.ui</UserInterface>
- <UserInterface>openfilecheckboxesform.ui</UserInterface>
+ <UserInterface>registerfilecheckboxform.ui</UserInterface>
+ <UserInterface>openfilecheckboxform.ui</UserInterface>
</UserInterfaces>
</Package>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxform.ui
index ccddacda2..4db8f0daf 100644
--- a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxform.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>RegisterFileCheckBoxesForm</class>
- <widget class="QWidget" name="RegisterFileCheckBoxesForm">
+ <class>RegisterFileCheckBoxForm</class>
+ <widget class="QWidget" name="RegisterFileCheckBoxForm">
<property name="geometry">
<rect>
<x>0</x>
diff --git a/examples/startmenu/config/config.xml b/examples/startmenu/config/config.xml
index e95445d1b..8da61b26e 100644
--- a/examples/startmenu/config/config.xml
+++ b/examples/startmenu/config/config.xml
@@ -5,6 +5,6 @@
<Title>Start Menu Shortcut Example</Title>
<Publisher>Qt-Project</Publisher>
<!-- Directory name is used in component.xml -->
- <StartMenuDir>Qt Installer Framework Example</StartMenuDir>
- <TargetDir>@HomeDir@/IFWStartMenuExample</TargetDir>
+ <StartMenuDir>Qt Installer Framework Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwExample</TargetDir>
</Installer>
diff --git a/examples/startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs b/examples/startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs
index 15af2df12..7fbdf258d 100644
--- a/examples/startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs
+++ b/examples/startmenu/packages/org.qtproject.ifw.example/meta/installscript.qs
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Installer Framework.
@@ -42,7 +42,7 @@ Component.prototype.createOperations = function()
// call default implementation to actually install README.txt!
component.createOperations();
- if (installer.value("os") === "win") {
+ if (systemInfo.productType === "windows") {
component.addOperation("CreateShortcut", "@TargetDir@/README.txt", "@StartMenuDir@/README.lnk",
"workingDirectory=@TargetDir@", "iconPath=%SystemRoot%/system32/SHELL32.dll",
"iconId=2");
diff --git a/installerfw.pri b/installerfw.pri
index b1c772875..bed0451a9 100644
--- a/installerfw.pri
+++ b/installerfw.pri
@@ -4,7 +4,7 @@
IFW_PRI_INCLUDED = 1
IFW_VERSION_STR = 2.0.81
-IFW_VERSION = 0x010681
+IFW_VERSION = 0x020081
IFW_REPOSITORY_FORMAT_VERSION = 1.0.0
IFW_NEWLINE = $$escape_expand(\\n\\t)
diff --git a/src/libs/7zip/7zip.pri b/src/libs/7zip/7zip.pri
index c128d0397..823e3ab1d 100644
--- a/src/libs/7zip/7zip.pri
+++ b/src/libs/7zip/7zip.pri
@@ -3,6 +3,7 @@ win32 {
INCLUDEPATH += $$7ZIP_BASE/C $$7ZIP_BASE/CPP
DEFINES += WIN_LONG_PATH _UNICODE _NO_CRYPTO
QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
+ QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
}
unix {
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp
index 2d6836ed0..86388cc2e 100644
--- a/src/libs/installer/component.cpp
+++ b/src/libs/installer/component.cpp
@@ -72,7 +72,7 @@ static const QLatin1String scForcedInstallation("ForcedInstallation");
\qmltype component
\inqmlmodule scripting
- \brief The component type represents the current component that the Qt Script belongs to.
+ \brief Represents the current component that the Qt Script belongs to.
A minimal valid script needs to contain a constructor, which can look like this:
@@ -156,7 +156,7 @@ static const QLatin1String scForcedInstallation("ForcedInstallation");
/*!
\qmlproperty stringlist component::autoDependencies
- Returns the value of the \c <AutoDependsOn> tag in the package information file.
+ Returns the value of the \c <AutoDependOn> tag in the package information file.
*/
/*!
@@ -342,8 +342,10 @@ quint64 Component::updateUncompressedSize()
{
quint64 size = 0;
- if (installationRequested() || updateRequested())
+ if (installAction() == ComponentModelHelper::Install
+ || installAction() == ComponentModelHelper::KeepInstalled) {
size = d->m_vars.value(scUncompressedSize).toLongLong();
+ }
foreach (Component* comp, d->m_allChildComponents)
size += comp->updateUncompressedSize();
@@ -534,8 +536,7 @@ void Component::loadTranslations(const QDir &directory, const QStringList &qms)
{
QDirIterator it(directory.path(), qms, QDir::Files);
const QStringList translations = d->m_core->settings().translations();
- const QString uiLanguage = QLocale().uiLanguages().value(0, QLatin1String("en_us"))
- .replace(QLatin1Char('-'), QLatin1Char('_'));
+ const QString uiLanguage = QLocale().uiLanguages().value(0, QLatin1String("en"));
while (it.hasNext()) {
const QString filename = it.next();
const QString basename = QFileInfo(filename).baseName();
@@ -583,6 +584,7 @@ void Component::loadUserInterfaces(const QDir &directory, const QStringList &uis
throw Error(tr("Could not load the requested UI file '%1'. Error: %2").arg(it.fileName(),
loader.errorString()));
}
+ d->scriptEngine()->newQObject(widget);
d->m_userInterfaces.insert(widget->objectName(), widget);
}
}
diff --git a/src/libs/installer/component_p.cpp b/src/libs/installer/component_p.cpp
index 4bcfbf5dc..18ba4b7b5 100644
--- a/src/libs/installer/component_p.cpp
+++ b/src/libs/installer/component_p.cpp
@@ -204,6 +204,16 @@ void ComponentModelHelper::setSelectable(bool selectable)
changeFlags(selectable, Qt::ItemIsSelectable);
}
+ComponentModelHelper::InstallAction ComponentModelHelper::installAction() const
+{
+ return data(ComponentModelHelper::Action).value<ComponentModelHelper::InstallAction>();
+}
+
+void ComponentModelHelper::setInstallAction(ComponentModelHelper::InstallAction action)
+{
+ setData(QVariant::fromValue<ComponentModelHelper::InstallAction>(action), ComponentModelHelper::Action);
+}
+
/*!
Returns the item flags for the component. The item flags determine how the user can interact with the
component.
diff --git a/src/libs/installer/component_p.h b/src/libs/installer/component_p.h
index 15834d1f2..87e067ba4 100644
--- a/src/libs/installer/component_p.h
+++ b/src/libs/installer/component_p.h
@@ -93,18 +93,28 @@ class INSTALLER_EXPORT ComponentModelHelper
{
public:
enum Roles {
- LocalDisplayVersion = Qt::UserRole + 1,
+ Action = Qt::UserRole + 1,
+ LocalDisplayVersion,
RemoteDisplayVersion,
ReleaseDate,
UncompressedSize
};
+ enum InstallAction {
+ Install,
+ Uninstall,
+ KeepInstalled,
+ KeepUninstalled
+ };
+
enum Column {
NameColumn = 0,
+ ActionColumn,
InstalledVersionColumn,
NewVersionColumn,
ReleaseDateColumn,
- UncompressedSizeColumn
+ UncompressedSizeColumn,
+ LastColumn
};
explicit ComponentModelHelper();
@@ -125,6 +135,9 @@ public:
bool isSelectable() const;
void setSelectable(bool selectable);
+ InstallAction installAction() const;
+ void setInstallAction(InstallAction action);
+
Qt::ItemFlags flags() const;
void setFlags(Qt::ItemFlags flags);
@@ -148,4 +161,6 @@ private:
} // namespace QInstaller
+Q_DECLARE_METATYPE(QInstaller::ComponentModelHelper::InstallAction)
+
#endif // COMPONENT_P_H
diff --git a/src/libs/installer/componentchecker.cpp b/src/libs/installer/componentchecker.cpp
index 5f07c74fd..64ce851a0 100644
--- a/src/libs/installer/componentchecker.cpp
+++ b/src/libs/installer/componentchecker.cpp
@@ -48,51 +48,68 @@ QStringList ComponentChecker::checkComponent(Component *component)
const bool defaultPropertyValue = component->variables().value(scDefault).compare(scTrue, Qt::CaseInsensitive) == 0;
if (!component->autoDependencies().isEmpty()) {
if (component->forcedInstallation()) {
- checkResult << tr("Component %1 specifies \"ForcedInstallation\" property "
- "together with \"AutoDependOn\" list. This combination of states "
- "may not work properly."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies \"ForcedInstallation\" property "
+ "together with \"AutoDependOn\" list. This combination of states may not work properly.")
+ .arg(component->name());
}
if (defaultPropertyScriptValue) {
- checkResult << tr("Component %1 specifies script value for \"Default\" property "
- "together with \"AutoDependOn\" list. This combination of states "
- "may not work properly."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies script value for \"Default\" "
+ "property together with \"AutoDependOn\" list. This combination of states may not "
+ "work properly.").arg(component->name());
}
if (defaultPropertyValue) {
- checkResult << tr("Component %1 specifies \"Default\" property "
- "together with \"AutoDependOn\" list. This combination of states "
- "may not work properly."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies \"Default\" property together "
+ "with \"AutoDependOn\" list. This combination of states may not work properly.")
+ .arg(component->name());
}
}
if (component->packageManagerCore()->isInstaller()) {
if (component->isTristate()) {
if (defaultPropertyScriptValue) {
- checkResult << tr("Component %1 specifies script value for \"Default\" property "
- "while not being a leaf node. The \"Default\" property "
- "will get a \"false\" value."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies script value for \"Default\" "
+ "property while not being a leaf node. The \"Default\" property will get a "
+ "\"false\" value.").arg(component->name());
}
if (defaultPropertyValue) {
- checkResult << tr("Component %1 specifies \"Default\" property "
- "while not being a leaf node. The \"Default\" property "
- "will get a \"false\" value."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies \"Default\" property "
+ "while not being a leaf node. The \"Default\" property will get a \"false\" value.")
+ .arg(component->name());
}
}
if (!component->isCheckable()) {
if (defaultPropertyScriptValue) {
- checkResult << tr("Component %1 specifies script value for \"Default\" property "
- "while being not checkable. The \"Default\" property "
- "will get a \"false\" value."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies script value for \"Default\" "
+ "property while being not checkable. The \"Default\" property will get a \"false\" "
+ "value.").arg(component->name());
}
if (defaultPropertyValue) {
- checkResult << tr("Component %1 specifies \"Default\" property "
- "while being not checkable. The \"Default\" property "
- "will get a \"false\" value."
- ).arg(component->name());
+ checkResult << QString::fromLatin1("Component %1 specifies \"Default\" property "
+ "while being not checkable. The \"Default\" property will get a \"false\" value.")
+ .arg(component->name());
+ }
+ }
+ if (component->childCount()) {
+ const QStringList autoDependencies = component->autoDependencies();
+ if (!autoDependencies.isEmpty()) {
+ checkResult << QString::fromLatin1("Component %1 auto depends on other components "
+ "while having children components. This will not work properly.")
+ .arg(component->name());
+ }
+
+ // TODO: search also for components which autodepend on "component"
+ // (something like core->autodependees(component))
+
+ if (!component->dependencies().isEmpty()) {
+ checkResult << QString::fromLatin1("Component %1 depends on other components "
+ "while having children components. This will not work properly.")
+ .arg(component->name());
+ }
+
+ PackageManagerCore *core = component->packageManagerCore();
+ if (!core->dependees(component).isEmpty()) {
+ checkResult << QString::fromLatin1("Other components depend on component %1 "
+ "which has children components. This will not work properly.")
+ .arg(component->name());
}
}
}
diff --git a/src/libs/installer/componentmodel.cpp b/src/libs/installer/componentmodel.cpp
index 4c4bda080..d2537dea0 100644
--- a/src/libs/installer/componentmodel.cpp
+++ b/src/libs/installer/componentmodel.cpp
@@ -36,6 +36,7 @@
#include "component.h"
#include "packagemanagercore.h"
+#include <QIcon>
namespace QInstaller {
@@ -71,6 +72,20 @@ namespace QInstaller {
or unchecked, or some individual component's checked state has changed.
*/
+class IconCache
+{
+public:
+ IconCache() {
+ }
+
+ QIcon icon(ComponentModelHelper::InstallAction action) const {
+ return m_icons.value(action);
+ }
+private:
+ QMap<ComponentModelHelper::InstallAction, QIcon> m_icons;
+};
+
+Q_GLOBAL_STATIC(IconCache, iconCache)
/*!
Constructs an component model with the given number of \a columns and \a core as parent.
@@ -179,6 +194,25 @@ QVariant ComponentModel::data(const QModelIndex &index, int role) const
if (index.column() > 0) {
if (role == Qt::CheckStateRole)
return QVariant();
+ if (index.column() == ComponentModelHelper::ActionColumn) {
+ if (role == Qt::DecorationRole)
+ return iconCache->icon(component->installAction());
+ if (role == Qt::ToolTipRole) {
+ switch (component->installAction()) {
+ case ComponentModelHelper::Install:
+ return tr("Component is marked for installation.");
+ case ComponentModelHelper::Uninstall:
+ return tr("Component is marked for uninstallation.");
+ case ComponentModelHelper::KeepInstalled:
+ return tr("Component is installed.");
+ case ComponentModelHelper::KeepUninstalled:
+ return tr("Component is not installed.");
+ default:
+ return QString();
+ }
+ }
+ return QVariant();
+ }
if (role == Qt::EditRole || role == Qt::DisplayRole || role == Qt::ToolTipRole)
return component->data(Qt::UserRole + index.column());
}
@@ -202,6 +236,8 @@ bool ComponentModel::setData(const QModelIndex &index, const QVariant &value, in
return false;
if (role == Qt::CheckStateRole) {
+ if (index.column() != 0)
+ return false;
ComponentSet nodes = component->childItems().toSet();
Qt::CheckState newValue = Qt::CheckState(value.toInt());
if (newValue == Qt::PartiallyChecked) {
@@ -459,6 +495,15 @@ void ComponentModel::updateAndEmitModelState()
}
emit checkStateChanged(m_modelState);
+
+ foreach (const Component *component, m_rootComponentList) {
+ emit dataChanged(indexFromComponentName(component->name()),
+ indexFromComponentName(component->name()));
+ QList<Component *> children = component->childItems();
+ foreach (const Component *child, children)
+ emit dataChanged(indexFromComponentName(child->name()),
+ indexFromComponentName(child->name()));
+ }
}
void ComponentModel::collectComponents(Component *const component, const QModelIndex &parent) const
@@ -470,15 +515,6 @@ void ComponentModel::collectComponents(Component *const component, const QModelI
namespace ComponentModelPrivate {
-struct NameGreaterThan
-{
- bool operator() (const Component *lhs, const Component *rhs) const
- {
- return lhs->name() > rhs->name();
- }
-};
-
-// call it only for items with childern
static Qt::CheckState verifyPartiallyChecked(Component *component)
{
bool anyChecked = false;
@@ -514,22 +550,19 @@ static Qt::CheckState verifyPartiallyChecked(Component *component)
QSet<QModelIndex> ComponentModel::updateCheckedState(const ComponentSet &components, Qt::CheckState state)
{
// get all parent nodes for the components we're going to update
- ComponentSet nodes = components;
- foreach (Component *const component, components) {
- if (Component *parent = component->parentComponent()) {
- nodes.insert(parent);
- while (parent->parentComponent() != 0) {
- parent = parent->parentComponent();
- nodes.insert(parent);
- }
+ QMap<QString, Component *> sortedNodesMap;
+ foreach (Component *component, components) {
+ while (component && !sortedNodesMap.values(component->name()).contains(component)) {
+ sortedNodesMap.insertMulti(component->name(), component);
+ component = component->parentComponent();
}
}
QSet<QModelIndex> changed;
- // sort the nodes, so we can start in descending order to check node and tri-state nodes properly
- ComponentList sortedNodes = nodes.toList();
- std::sort(sortedNodes.begin(), sortedNodes.end(), ComponentModelPrivate::NameGreaterThan());
- foreach (Component *const node, sortedNodes) {
+ const ComponentList sortedNodes = sortedNodesMap.values();
+ // we can start in descending order to check node and tri-state nodes properly
+ for (int i = sortedNodes.count(); i > 0; i--) {
+ Component * const node = sortedNodes.at(i - 1);
if (!node->isCheckable())
continue;
@@ -559,10 +592,6 @@ QSet<QModelIndex> ComponentModel::updateCheckedState(const ComponentSet &compone
break;
}
}
-
- // update all nodes uncompressed size
- foreach (Component *const node, m_rootComponentList)
- node->updateUncompressedSize(); // this is a recursive call
return changed;
}
diff --git a/src/libs/installer/createlocalrepositoryoperation.cpp b/src/libs/installer/createlocalrepositoryoperation.cpp
index b2f7232d8..c53cebee6 100644
--- a/src/libs/installer/createlocalrepositoryoperation.cpp
+++ b/src/libs/installer/createlocalrepositoryoperation.cpp
@@ -291,7 +291,7 @@ bool CreateLocalRepositoryOperation::performOperation()
if (!isOpen) // If we reach that point, either the resource was opened already.
resource->close(); // or we did open it and have to close it again.
}
- emit progressChanged(.65f + ((double(i) / double(name.count())) * .25f));
+ emit progressChanged(.65f + ((double(i) / double(names.count())) * .25f));
}
}
diff --git a/src/libs/installer/installercalculator.cpp b/src/libs/installer/installercalculator.cpp
index e4773460d..10f7327db 100644
--- a/src/libs/installer/installercalculator.cpp
+++ b/src/libs/installer/installercalculator.cpp
@@ -101,9 +101,6 @@ QString InstallerCalculator::componentsToInstallError() const
void InstallerCalculator::realAppendToInstallComponents(Component *component)
{
if (!component->isInstalled() || component->updateRequested()) {
- // remove the checkState method if we don't use selected in scripts
- component->setCheckState(Qt::Checked);
-
m_orderedComponentsToInstall.append(component);
m_toInstallComponentIds.insert(component->name());
}
diff --git a/src/libs/installer/messageboxhandler.cpp b/src/libs/installer/messageboxhandler.cpp
index 266558d93..86e28eb39 100644
--- a/src/libs/installer/messageboxhandler.cpp
+++ b/src/libs/installer/messageboxhandler.cpp
@@ -44,7 +44,7 @@
\qmltype QMessageBox
\inqmlmodule scripting
- \brief The QMessageBox type provides a modal dialog for informing the user or asking the user
+ \brief Provides a modal dialog for informing the user or asking the user
a question and receiving an answer.
diff --git a/src/libs/installer/observer.cpp b/src/libs/installer/observer.cpp
index cfb3d3c31..4bc6d6721 100644
--- a/src/libs/installer/observer.cpp
+++ b/src/libs/installer/observer.cpp
@@ -68,14 +68,15 @@ QString FileTaskObserver::progressText() const
if (bytesReceived.endsWith(tmp))
bytesReceived.chop(tmp.length());
- progressText = bytesReceived + tr(" of ") + bytesToReceive;
+ progressText = tr("%1 of %2").arg(bytesReceived).arg(bytesToReceive);
} else {
if (m_bytesTransfered > 0)
- progressText = QInstaller::humanReadableSize(m_bytesTransfered) + tr(" received.");
+ progressText = tr("%1 received.").arg(QInstaller::humanReadableSize(m_bytesTransfered));
}
- progressText += QLatin1String(" (") + QInstaller::humanReadableSize(m_bytesPerSecond) + tr("/sec")
- + QLatin1Char(')');
+ if (!progressText.isEmpty())
+ progressText += QLatin1Char(' ');
+ progressText += tr("(%1/sec)").arg(QInstaller::humanReadableSize(m_bytesPerSecond));
if (m_bytesToTransfer > 0 && m_bytesPerSecond > 0) {
const qint64 time = (m_bytesToTransfer - m_bytesTransfered) / m_bytesPerSecond;
@@ -86,22 +87,22 @@ QString FileTaskObserver::progressText() const
QString days;
if (d > 0)
- days = QString::number(d) + (d < 2 ? tr(" day") : tr(" days")) + QLatin1String(", ");
+ days = tr("%n day(s), ", "", d);
QString hours;
if (h > 0)
- hours = QString::number(h) + (h < 2 ? tr(" hour") : tr(" hours")) + QLatin1String(", ");
+ hours = tr("%n hour(s), ", "", h);
QString minutes;
if (m > 0)
- minutes = QString::number(m) + (m < 2 ? tr(" minute") : tr(" minutes"));
+ minutes = tr("%n minute(s)", "", m);
QString seconds;
if (s >= 0 && minutes.isEmpty()) {
s = (s <= 0 ? 1 : s);
- seconds = QString::number(s) + (s < 2 ? tr(" second") : tr(" seconds"));
+ seconds = tr("%n second(s)", "", s);
}
- progressText += tr(" - ") + days + hours + minutes + seconds + tr(" remaining.");
+ progressText += tr(" - %1%2%3%4 remaining.").arg(days).arg(hours).arg(minutes).arg(seconds);
} else {
progressText += tr(" - unknown time remaining.");
}
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 960c2da93..8600dc114 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -83,7 +83,7 @@
\qmltype installer
\inqmlmodule scripting
- \brief The installer type provides access to core functionality of the Qt Installer Framework.
+ \brief Provides access to core functionality of the Qt Installer Framework.
*/
/*!
@@ -424,7 +424,37 @@ void PackageManagerCore::cancelMetaInfoJob()
*/
void PackageManagerCore::componentsToInstallNeedsRecalculation()
{
- d->m_componentsToInstallCalculated = false;
+ d->clearInstallerCalculator();
+ d->clearUninstallerCalculator();
+ QList<Component*> selectedComponentsToInstall = componentsMarkedForInstallation();
+
+ d->m_componentsToInstallCalculated =
+ d->installerCalculator()->appendComponentsToInstall(selectedComponentsToInstall);
+
+ QList<Component *> componentsToInstall = d->installerCalculator()->orderedComponentsToInstall();
+
+ QList<Component *> selectedComponentsToUninstall;
+ foreach (Component *component, components(ComponentType::All)) {
+ if (component->uninstallationRequested() && !selectedComponentsToInstall.contains(component))
+ selectedComponentsToUninstall.append(component);
+ }
+
+ d->uninstallerCalculator()->appendComponentsToUninstall(selectedComponentsToUninstall);
+
+ QSet<Component *> componentsToUninstall = d->uninstallerCalculator()->componentsToUninstall();
+
+ foreach (Component *component, components(ComponentType::Root | ComponentType::Descendants))
+ component->setInstallAction(component->isInstalled()
+ ? ComponentModelHelper::KeepInstalled
+ : ComponentModelHelper::KeepUninstalled);
+ foreach (Component *component, componentsToUninstall)
+ component->setInstallAction(ComponentModelHelper::Uninstall);
+ foreach (Component *component, componentsToInstall)
+ component->setInstallAction(ComponentModelHelper::Install);
+
+ // update all nodes uncompressed size
+ foreach (Component *const component, components(ComponentType::Root))
+ component->updateUncompressedSize(); // this is a recursive call
}
/*!
@@ -468,15 +498,15 @@ void PackageManagerCore::setMessageBoxAutomaticAnswer(const QString &identifier,
quint64 size(QInstaller::Component *component, const QString &value)
{
- if (!component->isSelected() || component->isInstalled())
- return quint64(0);
- return component->value(value).toLongLong();
+ if (component->installAction() == ComponentModelHelper::Install)
+ return component->value(value).toLongLong();
+ return quint64(0);
}
/*!
\qmlmethod float installer::requiredDiskSpace()
- Returns the estimated amount of disk space in bytes required after installation.
+ Returns the additional estimated amount of disk space in bytes required after installation.
\sa requiredTemporaryDiskSpace
*/
@@ -966,7 +996,7 @@ bool PackageManagerCore::fetchRemotePackagesTree()
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{Wizard Pages} for the possible values of \a page.
+ See \l{Controller Scripting} for the possible values of \a page.
Returns \c true if the operation succeeded.
@@ -1035,7 +1065,7 @@ void PackageManagerCore::setValidatorForCustomPage(Component *component, const Q
Adds the widget with objectName() \a name registered by \a component as an GUI element
into the installer's GUI wizard. The widget is added on \a page.
- See \l{Wizard Pages} for the possible values of \a page.
+ See \l{Controller Scripting} for the possible values of \a page.
\sa removeWizardPageItem, wizardWidgetInsertionRequested
*/
@@ -1235,6 +1265,30 @@ Component *PackageManagerCore::componentByName(const QString &name, const QList<
return 0;
}
+QList<Component *> PackageManagerCore::componentsMarkedForInstallation() const
+{
+ QList<Component*> markedForInstallation;
+ const QList<Component*> relevant = components(ComponentType::Root | ComponentType::Descendants);
+ if (isUpdater()) {
+ foreach (Component *component, relevant) {
+ if (component->updateRequested())
+ markedForInstallation.append(component);
+ }
+ } else {
+ // relevant means all components which are not replaced
+ foreach (Component *component, relevant) {
+ // ask for all components which will be installed to get all dependencies
+ // even dependencies which are changed without an increased version
+ if (component->installationRequested()
+ || (component->isInstalled()
+ && !component->uninstallationRequested())) {
+ markedForInstallation.append(component);
+ }
+ }
+ }
+ return markedForInstallation;
+}
+
/*!
\qmlmethod boolean installer::calculateComponentsToInstall()
@@ -1248,28 +1302,11 @@ bool PackageManagerCore::calculateComponentsToInstall() const
emit aboutCalculateComponentsToInstall();
if (!d->m_componentsToInstallCalculated) {
d->clearInstallerCalculator();
- QList<Component*> componentsToInstall;
- const QList<Component*> relevant = components(ComponentType::Root | ComponentType::Descendants);
- if (isUpdater()) {
- foreach (Component *component, relevant) {
- if (component->updateRequested())
- componentsToInstall.append(component);
- }
- } else if (!isUpdater()) {
- // relevant means all components which are not replaced
- foreach (Component *component, relevant) {
- // ask for all components which will be installed to get all dependencies
- // even dependencies which are changed without an increased version
- if (component->installationRequested() || (component->isInstalled()
- && !component->uninstallationRequested())) {
- componentsToInstall.append(component);
- }
- }
- }
+ QList<Component*> selectedComponentsToInstall = componentsMarkedForInstallation();
d->storeCheckState();
d->m_componentsToInstallCalculated =
- d->installerCalculator()->appendComponentsToInstall(componentsToInstall);
+ d->installerCalculator()->appendComponentsToInstall(selectedComponentsToInstall);
}
emit finishedCalculateComponentsToInstall();
return d->m_componentsToInstallCalculated;
@@ -2441,11 +2478,13 @@ QString PackageManagerCore::findDisplayVersion(const QString &componentName,
ComponentModel *PackageManagerCore::componentModel(PackageManagerCore *core, const QString &objectName) const
{
- ComponentModel *model = new ComponentModel(5, core);
+ ComponentModel *model = new ComponentModel(ComponentModelHelper::LastColumn, core);
model->setObjectName(objectName);
model->setHeaderData(ComponentModelHelper::NameColumn, Qt::Horizontal,
ComponentModel::tr("Component Name"));
+ model->setHeaderData(ComponentModelHelper::ActionColumn, Qt::Horizontal,
+ ComponentModel::tr("Action"));
model->setHeaderData(ComponentModelHelper::InstalledVersionColumn, Qt::Horizontal,
ComponentModel::tr("Installed Version"));
model->setHeaderData(ComponentModelHelper::NewVersionColumn, Qt::Horizontal,
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index df7ac5557..fb16cc29c 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -329,6 +329,7 @@ private:
QString findDisplayVersion(const QString &componentName, const QHash<QString, QInstaller::Component*> &components,
const QString& versionKey, QHash<QString, bool> &visited);
ComponentModel *componentModel(PackageManagerCore *core, const QString &objectName) const;
+ QList<Component *> componentsMarkedForInstallation() const;
private:
PackageManagerCorePrivate *const d;
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index ba28c6871..7735f280c 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -78,6 +78,9 @@
#include <qt_windows.h>
#endif
+#define QUOTE_(x) #x
+#define QUOTE(x) QUOTE_(x)
+
namespace QInstaller {
class OperationTracer
@@ -433,17 +436,20 @@ ScriptEngine *PackageManagerCorePrivate::controlScriptEngine() const
void PackageManagerCorePrivate::clearAllComponentLists()
{
- qDeleteAll(m_rootComponents);
+ QList<QInstaller::Component*> toDelete;
+
+ toDelete << m_rootComponents;
m_rootComponents.clear();
m_rootDependencyReplacements.clear();
const QList<QPair<Component*, Component*> > list = m_componentsToReplaceAllMode.values();
for (int i = 0; i < list.count(); ++i)
- delete list.at(i).second;
+ toDelete << list.at(i).second;
m_componentsToReplaceAllMode.clear();
m_componentsToInstallCalculated = false;
+ qDeleteAll(toDelete);
cleanUpComponentEnvironment();
}
@@ -460,8 +466,6 @@ void PackageManagerCorePrivate::clearUpdaterComponentLists()
usedComponents.insert(list.at(i).second);
}
- qDeleteAll(usedComponents);
-
m_updaterComponents.clear();
m_updaterComponentsDeps.clear();
@@ -470,6 +474,7 @@ void PackageManagerCorePrivate::clearUpdaterComponentLists()
m_componentsToReplaceUpdaterMode.clear();
m_componentsToInstallCalculated = false;
+ qDeleteAll(usedComponents);
cleanUpComponentEnvironment();
}
@@ -563,8 +568,7 @@ void PackageManagerCorePrivate::initialize(const QHash<QString, QString> &params
}
if (isInstaller() || packagesInfo.applicationVersion().isEmpty()) {
- // TODO: this seems to be wrong, we should ask for ProductVersion defaulting to applicationVersion...
- packagesInfo.setApplicationVersion(m_data.settings().applicationVersion());
+ packagesInfo.setApplicationVersion(QLatin1String(QUOTE(IFW_REPOSITORY_FORMAT_VERSION)));
}
if (isInstaller()) {
@@ -1475,11 +1479,10 @@ bool PackageManagerCorePrivate::runInstaller()
info.setFileName(componentsXmlPath());
// Clear the packages as we might install into an already existing installation folder.
info.clearPackageInfoList();
- // also update the application name and version, might be set from a script as well
+ // also update the application name, might be set from a script as well
info.setApplicationName(m_data.value(QLatin1String("ProductName"),
m_data.settings().applicationName()).toString());
- info.setApplicationVersion(m_data.value(QLatin1String("ProductVersion"),
- m_data.settings().applicationVersion()).toString());
+ info.setApplicationVersion(QLatin1String(QUOTE(IFW_REPOSITORY_FORMAT_VERSION)));
const int progressOperationCount = countProgressOperations(componentsToInstall)
// add one more operation as we support progress
@@ -1638,7 +1641,9 @@ bool PackageManagerCorePrivate::runPackageUpdater()
} else if (isPackageManager()) {
// We found the component, the component is still checked and the dependency solver did not
// add the component as install dependency, keep it.
- if (component && component->isSelected() && !componentsToInstall.contains(component)) {
+ if (component
+ && component->installAction() == ComponentModelHelper::KeepInstalled
+ && !componentsToInstall.contains(component)) {
nonRevertedOperations.append(operation);
continue;
}
@@ -2088,7 +2093,7 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages()
if (packagesInfo.applicationName().isEmpty())
packagesInfo.setApplicationName(m_data.settings().applicationName());
if (packagesInfo.applicationVersion().isEmpty())
- packagesInfo.setApplicationVersion(m_data.settings().applicationVersion());
+ packagesInfo.setApplicationVersion(QLatin1String(QUOTE(IFW_REPOSITORY_FORMAT_VERSION)));
}
if (packagesInfo.error() != KDUpdater::PackagesInfo::NoError)
diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp
index d8b6d3a28..3acc24a76 100644
--- a/src/libs/installer/packagemanagercoredata.cpp
+++ b/src/libs/installer/packagemanagercoredata.cpp
@@ -108,7 +108,7 @@ PackageManagerCoreData::PackageManagerCoreData(const QHash<QString, QString> &va
// fill the variables defined in the settings
m_variables.insert(QLatin1String("ProductName"), m_settings.applicationName());
- m_variables.insert(QLatin1String("ProductVersion"), m_settings.applicationVersion());
+ m_variables.insert(QLatin1String("ProductVersion"), m_settings.version());
m_variables.insert(scTitle, m_settings.title());
m_variables.insert(scPublisher, m_settings.publisher());
m_variables.insert(QLatin1String("Url"), m_settings.url());
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 5b9e7493a..46ba310ba 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -177,7 +177,8 @@ protected:
void addPageAndProperties(ScriptEngine *engine)
{
- engine->addQObjectChildren(this);
+ engine->addToGlobalObject(this);
+ engine->addToGlobalObject(widget());
static const QStringList properties = QStringList() << QStringLiteral("final")
<< QStringLiteral("commit") << QStringLiteral("complete");
@@ -203,7 +204,8 @@ class PackageManagerGui::Private
{
public:
Private()
- : m_modified(false)
+ : m_currentId(-1)
+ , m_modified(false)
, m_autoSwitchPage(true)
, m_showSettingsButton(false)
{
@@ -225,7 +227,7 @@ public:
QLatin1String("unknown button"));
}
-
+ int m_currentId;
bool m_modified;
bool m_autoSwitchPage;
bool m_showSettingsButton;
@@ -281,7 +283,7 @@ PackageManagerGui::PackageManagerGui(PackageManagerCore *core, QWidget *parent)
connect(m_core, SIGNAL(uninstallationFinished()), this, SLOT(showFinishedPage()),
Qt::QueuedConnection);
- connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(executeControlScript(int)));
+ connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(currentPageChanged(int)));
connect(this, SIGNAL(currentIdChanged(int)), m_core, SIGNAL(currentPageChanged(int)));
connect(button(QWizard::FinishButton), SIGNAL(clicked()), this, SIGNAL(finishButtonClicked()));
connect(button(QWizard::FinishButton), SIGNAL(clicked()), m_core, SIGNAL(finishButtonClicked()));
@@ -511,8 +513,8 @@ void PackageManagerGui::wizardPageRemovalRequested(QWidget *widget)
continue;
removePage(pageId);
d->m_defaultPages.remove(pageId);
- packageManagerCore()->controlScriptEngine()->removeQObjectChildren(dynamicPage);
- packageManagerCore()->componentScriptEngine()->removeQObjectChildren(dynamicPage);
+ packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(dynamicPage);
+ packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(dynamicPage);
}
}
@@ -522,8 +524,8 @@ void PackageManagerGui::wizardWidgetInsertionRequested(QWidget *widget,
Q_ASSERT(widget);
if (QWizardPage *const p = QWizard::page(page)) {
p->layout()->addWidget(widget);
- packageManagerCore()->controlScriptEngine()->addQObjectChildren(p);
- packageManagerCore()->componentScriptEngine()->addQObjectChildren(p);
+ packageManagerCore()->controlScriptEngine()->addToGlobalObject(p);
+ packageManagerCore()->componentScriptEngine()->addToGlobalObject(p);
}
}
@@ -531,8 +533,8 @@ void PackageManagerGui::wizardWidgetRemovalRequested(QWidget *widget)
{
Q_ASSERT(widget);
widget->setParent(0);
- packageManagerCore()->controlScriptEngine()->removeQObjectChildren(widget);
- packageManagerCore()->componentScriptEngine()->removeQObjectChildren(widget);
+ packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(widget);
+ packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(widget);
}
void PackageManagerGui::wizardPageVisibilityChangeRequested(bool visible, int p)
@@ -698,26 +700,6 @@ void PackageManagerGui::setSettingsButtonEnabled(bool enabled)
btn->setEnabled(enabled);
}
-/**
- Returns the first descendant of \a parent that has \a objectName as name.
-
- This method is meant to be invoked from script.
- */
-QObject *PackageManagerGui::findChild(QObject *parent, const QString &objectName)
-{
- return parent->findChild<QObject*>(objectName);
-}
-
-/**
- Returns all descendants of \a parent that have \a objectName as name.
-
- This method is meant to be invoked from script.
- */
-QList<QObject *> PackageManagerGui::findChildren(QObject *parent, const QString &objectName)
-{
- return parent->findChildren<QObject*>(objectName);
-}
-
void PackageManagerGui::customButtonClicked(int which)
{
if (QWizard::WizardButton(which) == QWizard::CustomButton1 && d->m_showSettingsButton)
@@ -735,12 +717,29 @@ void PackageManagerGui::dependsOnLocalInstallerBinary()
}
}
+void PackageManagerGui::currentPageChanged(int newId)
+{
+ executeControlScript(newId);
+
+ PackageManagerPage *oldPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId));
+ if (oldPage) {
+ oldPage->leaving();
+ emit oldPage->left();
+ }
+
+ d->m_currentId = newId;
+
+ PackageManagerPage *newPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId));
+ if (newPage) {
+ newPage->entering();
+ emit newPage->entered();
+ }
+}
// -- PackageManagerPage
PackageManagerPage::PackageManagerPage(PackageManagerCore *core)
- : m_fresh(true)
- , m_complete(true)
+ : m_complete(true)
, m_needsSettingsButton(false)
, m_core(core)
, validatorComponent(0)
@@ -840,31 +839,6 @@ QWidget *PackageManagerPage::findWidget(const QString &objectName) const
return findChild<QWidget*> (objectName);
}
-/*!
- \internal
-
- Used to support some kind of initializePage() in the case the wizard has been set
- to QWizard::IndependentPages. If that option has been set, initializePage() would be only
- called once. So we provide entering() and leaving() based on this reimplemented function.
-*/
-void PackageManagerPage::setVisible(bool visible)
-{
- QWizardPage::setVisible(visible);
- if (m_fresh && !visible) {
- // this is only hit once when the page gets added to the wizard
- m_fresh = false;
- return;
- }
-
- if (visible) {
- entering();
- emit entered();
- } else {
- leaving();
- emit left();
- }
-}
-
int PackageManagerPage::nextId() const
{
const int next = QWizardPage::nextId(); // the page to show next
@@ -1488,12 +1462,30 @@ public:
m_treeView->setModel(m_currentModel);
m_treeView->setExpanded(m_currentModel->index(0, 0), true);
+ const bool installActionColumnVisible = false;
+ if (!installActionColumnVisible)
+ m_treeView->hideColumn(ComponentModelHelper::ActionColumn);
+
if (m_core->isInstaller()) {
m_treeView->setHeaderHidden(true);
- for (int i = 1; i < m_currentModel->columnCount(); ++i)
+ for (int i = ComponentModelHelper::InstalledVersionColumn; i < m_currentModel->columnCount(); ++i)
m_treeView->hideColumn(i);
+
+ if (installActionColumnVisible) {
+ m_treeView->header()->setStretchLastSection(false);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::NameColumn, QHeaderView::Stretch);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::ActionColumn, QHeaderView::ResizeToContents);
+ }
} else {
m_treeView->header()->setStretchLastSection(true);
+ if (installActionColumnVisible) {
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::NameColumn, QHeaderView::Interactive);
+ m_treeView->header()->setSectionResizeMode(
+ ComponentModelHelper::ActionColumn, QHeaderView::Interactive);
+ }
for (int i = 0; i < m_currentModel->columnCount(); ++i)
m_treeView->resizeColumnToContents(i);
}
@@ -1797,10 +1789,8 @@ bool TargetDirectoryPage::validatePage()
void TargetDirectoryPage::entering()
{
- if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton))) {
+ if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton)))
b->setDefault(true);
- b->setFocus();
- }
}
void TargetDirectoryPage::leaving()
@@ -2103,7 +2093,7 @@ void ReadyForInstallationPage::entering()
quint64 repositorySize = 0;
const bool createLocalRepository = packageManagerCore()->createLocalRepositoryFromBinary();
- if (createLocalRepository) {
+ if (createLocalRepository && packageManagerCore()->isInstaller()) {
repositorySize = QFile(QCoreApplication::applicationFilePath()).size();
// if we create a local repository, take that space into account as well
required += repositorySize;
@@ -2394,10 +2384,8 @@ void FinishedPage::entering()
} else {
if (packageManagerCore()->isInstaller()) {
m_commitButton = wizard()->button(QWizard::FinishButton);
- if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton)) {
+ if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton))
b->setDefault(true);
- b->setFocus();
- }
}
gui()->setOption(QWizard::NoCancelButton, true);
diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h
index f99d65593..11848b806 100644
--- a/src/libs/installer/packagemanagergui.h
+++ b/src/libs/installer/packagemanagergui.h
@@ -77,21 +77,18 @@ public:
void loadControlScript(const QString& scriptPath);
void callControlScriptMethod(const QString& methodName);
- Q_INVOKABLE QWidget *pageById(int id) const;
- Q_INVOKABLE QWidget *pageByObjectName(const QString &name) const;
+ QWidget *pageById(int id) const;
+ QWidget *pageByObjectName(const QString &name) const;
- Q_INVOKABLE QWidget* currentPageWidget() const;
- Q_INVOKABLE QWidget* pageWidgetByObjectName(const QString &name) const;
+ QWidget *currentPageWidget() const;
+ QWidget *pageWidgetByObjectName(const QString &name) const;
- Q_INVOKABLE QString defaultButtonText(int wizardButton) const;
- Q_INVOKABLE void clickButton(int wizardButton, int delayInMs = 0);
- Q_INVOKABLE bool isButtonEnabled(int wizardButton);
+ QString defaultButtonText(int wizardButton) const;
+ void clickButton(int wizardButton, int delayInMs = 0);
+ bool isButtonEnabled(int wizardButton);
- Q_INVOKABLE void showSettingsButton(bool show);
- Q_INVOKABLE void setSettingsButtonEnabled(bool enable);
-
- Q_INVOKABLE QObject *findChild(QObject *parent, const QString &objectName);
- Q_INVOKABLE QList<QObject*> findChildren(QObject *parent, const QString &objectName);
+ void showSettingsButton(bool show);
+ void setSettingsButtonEnabled(bool enable);
void updateButtonLayout();
static QWizard::WizardStyle getStyle(const QString &name);
@@ -116,7 +113,6 @@ protected Q_SLOTS:
void wizardWidgetInsertionRequested(QWidget *widget, QInstaller::PackageManagerCore::WizardPage page);
void wizardWidgetRemovalRequested(QWidget *widget);
void wizardPageVisibilityChangeRequested(bool visible, int page);
- void executeControlScript(int pageId);
void setValidatorForCustomPageRequested(QInstaller::Component *component, const QString &name,
const QString &callbackName);
@@ -126,11 +122,13 @@ private Q_SLOTS:
void onLanguageChanged();
void customButtonClicked(int which);
void dependsOnLocalInstallerBinary();
+ void currentPageChanged(int newId);
protected:
bool event(QEvent *event);
void showEvent(QShowEvent *event);
PackageManagerCore *packageManagerCore() const { return m_core; }
+ void executeControlScript(int pageId);
private:
class Private;
@@ -182,22 +180,23 @@ protected:
virtual void insertWidget(QWidget *widget, const QString &siblingName, int offset = 1);
virtual QWidget *findWidget(const QString &objectName) const;
- virtual void setVisible(bool visible); // reimp
virtual int nextId() const; // reimp
+ // Used to support some kind of initializePage() in the case the wizard has been set
+ // to QWizard::IndependentPages. If that option has been set, initializePage() would be only
+ // called once. So we provide entering() and leaving() based on currentPageChanged() signal.
virtual void entering() {} // called on entering
virtual void leaving() {} // called on leaving
- bool isConstructing() const { return m_fresh; }
-
private:
- bool m_fresh;
bool m_complete;
QString m_titleColor;
bool m_needsSettingsButton;
PackageManagerCore *m_core;
QInstaller::Component *validatorComponent;
+
+ friend class PackageManagerGui;
};
diff --git a/src/libs/installer/remoteobject.h b/src/libs/installer/remoteobject.h
index 2b6a3ab71..f47cd1367 100644
--- a/src/libs/installer/remoteobject.h
+++ b/src/libs/installer/remoteobject.h
@@ -97,7 +97,7 @@ public:
while (m_socket->bytesAvailable() < size) {
if (!m_socket->waitForReadyRead(30000)) {
throw Error(tr("Could not read all data after sending command: %1. "
- "Bytes expected: %2, Bytes received: %3. Error: %3").arg(name).arg(size)
+ "Bytes expected: %2, Bytes received: %3. Error: %4").arg(name).arg(size)
.arg(m_socket->bytesAvailable()).arg(m_socket->errorString()));
}
}
diff --git a/src/libs/installer/remoteserverconnection.cpp b/src/libs/installer/remoteserverconnection.cpp
index 0a142c4be..591ca621e 100644
--- a/src/libs/installer/remoteserverconnection.cpp
+++ b/src/libs/installer/remoteserverconnection.cpp
@@ -187,7 +187,7 @@ void RemoteServerConnection::handleQProcess(const QString &command, QDataStream
while (stream.device()->bytesAvailable() < size) {
if (!stream.device()->waitForReadyRead(30000)) {
throw Error(tr("Could not read all data after sending command: %1. "
- "Bytes expected: %2, Bytes received: %3. Error: %3").arg(command).arg(size)
+ "Bytes expected: %2, Bytes received: %3. Error: %4").arg(command).arg(size)
.arg(stream.device()->bytesAvailable()).arg(stream.device()->errorString()));
}
}
@@ -297,7 +297,7 @@ void RemoteServerConnection::handleQSettings(const QString &command, QDataStream
while (stream.device()->bytesAvailable() < size) {
if (!stream.device()->waitForReadyRead(30000)) {
throw Error(tr("Could not read all data after sending command: %1. "
- "Bytes expected: %2, Bytes received: %3. Error: %3").arg(command).arg(size)
+ "Bytes expected: %2, Bytes received: %3. Error: %4").arg(command).arg(size)
.arg(stream.device()->bytesAvailable()).arg(stream.device()->errorString()));
}
}
@@ -388,7 +388,7 @@ void RemoteServerConnection::handleQFSFileEngine(const QString &command, QDataSt
while (stream.device()->bytesAvailable() < size) {
if (!stream.device()->waitForReadyRead(30000)) {
throw Error(tr("Could not read all data after sending command: %1. "
- "Bytes expected: %2, Bytes received: %3. Error: %3").arg(command).arg(size)
+ "Bytes expected: %2, Bytes received: %3. Error: %4").arg(command).arg(size)
.arg(stream.device()->bytesAvailable()).arg(stream.device()->errorString()));
}
}
diff --git a/src/libs/installer/scriptengine.cpp b/src/libs/installer/scriptengine.cpp
index d15357e0d..fb67a1788 100644
--- a/src/libs/installer/scriptengine.cpp
+++ b/src/libs/installer/scriptengine.cpp
@@ -54,7 +54,7 @@ namespace QInstaller {
/*!
\qmltype console
\inqmlmodule scripting
- \brief The console type provides methods for logging and debugging.
+ \brief Provides methods for logging and debugging.
*/
/*!
@@ -82,22 +82,37 @@ namespace QInstaller {
/*!
\qmltype buttons
\inqmlmodule scripting
+
+ \brief Provides buttons that can be used on installer pages.
+
+ You can use a set of standard buttons and some custom buttons on the
+ installer pages. For more information about the buttons used by default on
+ each installer page, see \l {Controller Scripting}.
*/
/*!
\qmlproperty enumeration buttons::QWizard
- \list
- \li buttons.BackButton
- \li buttons.NextButton
- \li buttons.CommitButton
- \li buttons.FinishButton
- \li buttons.CancelButton
- \li buttons.HelpButton
- \li buttons.CustomButton1
- \li buttons.CustomButton2
- \li buttons.CustomButton3
- \endlist
+ Specifies the buttons on an installer page.
+
+ \value buttons.BackButton
+ The \uicontrol Back button (\uicontrol {Go Back} on OS X.)
+ \value buttons.NextButton
+ The \uicontrol Next button (\uicontrol Continue on OS X.)
+ \value buttons.CommitButton
+ The \uicontrol Commit button.
+ \value buttons.FinishButton
+ The \uicontrol Finish button (\uicontrol Done on OS X.)
+ \value buttons.CancelButton
+ The \uicontrol Cancel button.
+ \value buttons.HelpButton
+ The \uicontrol Help button.
+ \value buttons.CustomButton1
+ A custom button.
+ \value buttons.CustomButton2
+ A custom button.
+ \value buttons.CustomButton3
+ A custom button.
*/
/*!
@@ -145,7 +160,7 @@ namespace QInstaller {
\qmltype QInstaller
\inqmlmodule scripting
- \brief The QInstaller type provides access to the installer status and pages from Qt Script.
+ \brief Provides access to the installer status and pages from Qt Script.
*/
/*!
@@ -189,40 +204,139 @@ namespace QInstaller {
*/
/*!
+ \qmlsignal gui::interrupted()
+*/
+
+/*!
+ \qmlsignal gui::languageChanged()
+*/
+
+/*!
+ \qmlsignal gui::finishButtonClicked()
+*/
+
+/*!
+ \qmlsignal gui::gotRestarted()
+*/
+
+/*!
+ \qmlsignal gui::settingsButtonClicked();
+*/
+
+GuiProxy::GuiProxy(ScriptEngine *engine, QObject *parent) :
+ QObject(parent),
+ m_engine(engine),
+ m_gui(0)
+{
+}
+
+void GuiProxy::setPackageManagerGui(PackageManagerGui *gui)
+{
+ if (m_gui) {
+ disconnect(m_gui, &PackageManagerGui::interrupted, this, &GuiProxy::interrupted);
+ disconnect(m_gui, &PackageManagerGui::languageChanged, this, &GuiProxy::languageChanged);
+ disconnect(m_gui, &PackageManagerGui::finishButtonClicked, this, &GuiProxy::finishButtonClicked);
+ disconnect(m_gui, &PackageManagerGui::gotRestarted, this, &GuiProxy::gotRestarted);
+ disconnect(m_gui, &PackageManagerGui::settingsButtonClicked, this, &GuiProxy::settingsButtonClicked);
+ }
+
+ m_gui = gui;
+
+ if (m_gui) {
+ connect(m_gui, &PackageManagerGui::interrupted, this, &GuiProxy::interrupted);
+ connect(m_gui, &PackageManagerGui::languageChanged, this, &GuiProxy::languageChanged);
+ connect(m_gui, &PackageManagerGui::finishButtonClicked, this, &GuiProxy::finishButtonClicked);
+ connect(m_gui, &PackageManagerGui::gotRestarted, this, &GuiProxy::gotRestarted);
+ connect(m_gui, &PackageManagerGui::settingsButtonClicked, this, &GuiProxy::settingsButtonClicked);
+ }
+}
+
+/*!
\qmlmethod object gui::pageById(int id)
*/
+QJSValue GuiProxy::pageById(int id) const
+{
+ if (!m_gui)
+ return QJSValue();
+ return m_engine->newQObject(m_gui->pageById(id));
+}
/*!
\qmlmethod object gui::pageByObjectName(string name)
*/
+QJSValue GuiProxy::pageByObjectName(const QString &name) const
+{
+ if (!m_gui)
+ return QJSValue();
+ return m_engine->newQObject(m_gui->pageByObjectName(name));
+}
/*!
\qmlmethod object gui::currentPageWidget()
*/
+QJSValue GuiProxy::currentPageWidget() const
+{
+ if (!m_gui)
+ return QJSValue();
+ return m_engine->newQObject(m_gui->currentPageWidget());
+}
/*!
\qmlmethod object gui::pageWidgetByObjectName(string name)
*/
+QJSValue GuiProxy::pageWidgetByObjectName(const QString &name) const
+{
+ if (!m_gui)
+ return QJSValue();
+ return m_engine->newQObject(m_gui->pageWidgetByObjectName(name));
+}
/*!
\qmlmethod string gui::defaultButtonText(int wizardButton)
*/
+QString GuiProxy::defaultButtonText(int wizardButton) const
+{
+ if (!m_gui)
+ return QString();
+ return m_gui->defaultButtonText(wizardButton);
+}
/*!
\qmlmethod void gui::clickButton(int wizardButton, int delayInMs)
*/
+void GuiProxy::clickButton(int wizardButton, int delayInMs)
+{
+ if (m_gui)
+ m_gui->clickButton(wizardButton, delayInMs);
+}
/*!
\qmlmethod boolean gui::isButtonEnabled(int wizardButton)
*/
+bool GuiProxy::isButtonEnabled(int wizardButton)
+{
+ if (!m_gui)
+ return false;
+ return m_gui->isButtonEnabled(wizardButton);
+}
/*!
\qmlmethod void gui::showSettingsButton(boolean show)
*/
+void GuiProxy::showSettingsButton(bool show)
+{
+ if (m_gui)
+ m_gui->showSettingsButton(show);
+}
/*!
\qmlmethod void gui::setSettingsButtonEnabled(boolean enable)
*/
+void GuiProxy::setSettingsButtonEnabled(bool enable)
+{
+ if (m_gui)
+ m_gui->setSettingsButtonEnabled(enable);
+}
/*!
\qmlmethod object gui::findChild(object parent, string objectName)
@@ -231,6 +345,10 @@ namespace QInstaller {
\sa QObject::findChild
*/
+QJSValue GuiProxy::findChild(QObject *parent, const QString &objectName)
+{
+ return m_engine->newQObject(parent->findChild<QObject*>(objectName));
+}
/*!
\qmlmethod object[] gui::findChildren(object parent, string objectName)
@@ -239,32 +357,66 @@ namespace QInstaller {
\sa QObject::findChildren
*/
+QList<QJSValue> GuiProxy::findChildren(QObject *parent, const QString &objectName)
+{
+ QList<QJSValue> children;
+ foreach (QObject *child, parent->findChildren<QObject*>(objectName))
+ children.append(m_engine->newQObject(child));
+ return children;
+}
/*!
- \qmlsignal gui::interrupted()
+ \qmlmethod void gui::cancelButtonClicked()
*/
+void GuiProxy::cancelButtonClicked()
+{
+ if (m_gui)
+ m_gui->cancelButtonClicked();
+}
/*!
- \qmlsignal gui::languageChanged()
+ \qmlmethod void gui::reject()
*/
+void GuiProxy::reject()
+{
+ if (m_gui)
+ m_gui->reject();
+}
/*!
- \qmlsignal gui::finishButtonClicked()
+ \qmlmethod void gui::rejectWithoutPrompt()
*/
+void GuiProxy::rejectWithoutPrompt()
+{
+ if (m_gui)
+ m_gui->rejectWithoutPrompt();
+}
/*!
- \qmlsignal gui::gotRestarted()
+ \qmlmethod void gui::showFinishedPage()
*/
+void GuiProxy::showFinishedPage()
+{
+ if (m_gui)
+ m_gui->showFinishedPage();
+}
/*!
- \qmlsignal gui::settingsButtonClicked();
+ \qmlmethod void gui::setModified(boolean value)
*/
+void GuiProxy::setModified(bool value)
+{
+ if (m_gui)
+ m_gui->setModified(value);
+}
+
/*!
Constructs a script engine with \a core as parent.
*/
-ScriptEngine::ScriptEngine(PackageManagerCore *core)
- : QObject(core)
+ScriptEngine::ScriptEngine(PackageManagerCore *core) :
+ QObject(core),
+ m_guiProxy(new GuiProxy(this, this))
{
QJSValue global = m_engine.globalObject();
global.setProperty(QLatin1String("console"), m_engine.newQObject(new ConsoleProxy));
@@ -304,24 +456,45 @@ ScriptEngine::ScriptEngine(PackageManagerCore *core)
} else {
global.setProperty(QLatin1String("installer"), m_engine.newQObject(new QObject));
}
+ global.setProperty(QLatin1String("gui"), m_engine.newQObject(m_guiProxy));
global.property(QLatin1String("installer")).setProperty(QLatin1String("componentByName"),
proxy.property(QLatin1String("componentByName")));
}
+/*!
+ Creates a JavaScript object that wraps the given QObject \a object.
+
+ Signals and slots, properties and children of \a object are
+ available as properties of the created QJSValue. In addition some helper methods and properties
+ are added:
+
+ findChild(), findChildren() recursively search for child objects with the given object name.
+
+ Direct child objects are made accessible as properties under their respective object names.
+ */
QJSValue ScriptEngine::newQObject(QObject *object)
{
- QJSValue obj = m_engine.newQObject(object);
+ QJSValue jsValue = m_engine.newQObject(object);
+ QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership);
// add findChild(), findChildren() methods known from QtScript
QJSValue findChild = m_engine.evaluate(
QLatin1String("(function() { return gui.findChild(this, arguments[0]); })"));
QJSValue findChildren = m_engine.evaluate(
QLatin1String("(function() { return gui.findChildren(this, arguments[0]); })"));
- obj.setProperty(QLatin1String("findChild"), findChild);
- obj.setProperty(QLatin1String("findChildren"), findChildren);
+ jsValue.setProperty(QLatin1String("findChild"), findChild);
+ jsValue.setProperty(QLatin1String("findChildren"), findChildren);
+
+ // add all named children as properties
+ foreach (QObject *const child, object->children()) {
+ if (child->objectName().isEmpty())
+ continue;
+ jsValue.setProperty(child->objectName(), m_engine.newQObject(child));
+ newQObject(child);
+ }
- return obj;
+ return jsValue;
}
QJSValue ScriptEngine::evaluate(const QString &program, const QString &fileName, int lineNumber)
@@ -329,37 +502,24 @@ QJSValue ScriptEngine::evaluate(const QString &program, const QString &fileName,
return m_engine.evaluate(program, fileName, lineNumber);
}
-void ScriptEngine::addQObjectChildren(QObject *root)
+/*!
+ Registers QObject \a object in the engine, and makes it globally accessible under its object name.
+ */
+void ScriptEngine::addToGlobalObject(QObject *object)
{
- if ((!root) || root->objectName().isEmpty())
+ if (!object || object->objectName().isEmpty())
return;
- const QObjectList children = root->children();
- QJSValue jsParent = newQObject(root);
- QQmlEngine::setObjectOwnership(root, QQmlEngine::CppOwnership);
- m_engine.globalObject().setProperty(root->objectName(), jsParent);
-
- foreach (QObject *const child, children) {
- if (child->objectName().isEmpty())
- continue;
- QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership);
- jsParent.setProperty(child->objectName(), m_engine.newQObject(child));
- addQObjectChildren(child);
- }
+ QJSValue value = newQObject(object);
+ globalObject().setProperty(object->objectName(), value);
}
-void ScriptEngine::removeQObjectChildren(QObject *root)
+/*!
+ Removes the \a object name from the global object.
+ */
+void ScriptEngine::removeFromGlobalObject(QObject *object)
{
- if ((!root) || root->objectName().isEmpty())
- return;
-
- const QObjectList children = root->children();
- m_engine.globalObject().deleteProperty(root->objectName());
- foreach (QObject *const child, children) {
- if (child->objectName().isEmpty())
- continue;
- m_engine.globalObject().deleteProperty(child->objectName());
- }
+ globalObject().deleteProperty(object->objectName());
}
/*!
@@ -445,8 +605,7 @@ QJSValue ScriptEngine::callScriptMethod(const QJSValue &scriptContext, const QSt
void ScriptEngine::setGuiQObject(QObject *guiQObject)
{
- QQmlEngine::setObjectOwnership(guiQObject, QQmlEngine::CppOwnership);
- m_engine.globalObject().setProperty(QLatin1String("gui"), m_engine.newQObject(guiQObject));
+ m_guiProxy->setPackageManagerGui(qobject_cast<PackageManagerGui*>(guiQObject));
}
diff --git a/src/libs/installer/scriptengine.h b/src/libs/installer/scriptengine.h
index c4352d4ca..5b8a3a3ec 100644
--- a/src/libs/installer/scriptengine.h
+++ b/src/libs/installer/scriptengine.h
@@ -43,6 +43,7 @@
namespace QInstaller {
class PackageManagerCore;
+class GuiProxy;
class INSTALLER_EXPORT ScriptEngine : public QObject
{
@@ -57,8 +58,8 @@ public:
QJSValue evaluate(const QString &program, const QString &fileName = QString(),
int lineNumber = 1);
- void addQObjectChildren(QObject *root);
- void removeQObjectChildren(QObject *root);
+ void addToGlobalObject(QObject *object);
+ void removeFromGlobalObject(QObject *object);
QJSValue loadInContext(const QString &context, const QString &fileName,
const QString &scriptInjection = QString());
@@ -77,6 +78,7 @@ private:
private:
QJSEngine m_engine;
QHash<QString, QStringList> m_callstack;
+ GuiProxy *m_guiProxy;
};
}
diff --git a/src/libs/installer/scriptengine_p.h b/src/libs/installer/scriptengine_p.h
index d207130d7..696073703 100644
--- a/src/libs/installer/scriptengine_p.h
+++ b/src/libs/installer/scriptengine_p.h
@@ -37,6 +37,7 @@
#include "component.h"
#include "packagemanagercore.h"
+#include "packagemanagergui.h"
#include <QDebug>
#include <QDesktopServices>
@@ -137,6 +138,50 @@ public slots:
};
#endif
+class GuiProxy : public QObject
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(GuiProxy)
+
+public:
+ GuiProxy(ScriptEngine *engine, QObject *parent);
+ void setPackageManagerGui(PackageManagerGui *gui);
+
+ Q_INVOKABLE QJSValue pageById(int id) const;
+ Q_INVOKABLE QJSValue pageByObjectName(const QString &name) const;
+
+ Q_INVOKABLE QJSValue currentPageWidget() const;
+ Q_INVOKABLE QJSValue pageWidgetByObjectName(const QString &name) const;
+
+ Q_INVOKABLE QString defaultButtonText(int wizardButton) const;
+ Q_INVOKABLE void clickButton(int wizardButton, int delayInMs = 0);
+ Q_INVOKABLE bool isButtonEnabled(int wizardButton);
+
+ Q_INVOKABLE void showSettingsButton(bool show);
+ Q_INVOKABLE void setSettingsButtonEnabled(bool enable);
+
+ Q_INVOKABLE QJSValue findChild(QObject *parent, const QString &objectName);
+ Q_INVOKABLE QList<QJSValue> findChildren(QObject *parent, const QString &objectName);
+
+signals:
+ void interrupted();
+ void languageChanged();
+ void finishButtonClicked();
+ void gotRestarted();
+ void settingsButtonClicked();
+
+public slots:
+ void cancelButtonClicked();
+ void reject();
+ void rejectWithoutPrompt();
+ void showFinishedPage();
+ void setModified(bool value);
+
+private:
+ ScriptEngine *m_engine;
+ PackageManagerGui *m_gui;
+};
+
} // namespace QInstaller
Q_DECLARE_METATYPE(QInstaller::ConsoleProxy*)
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index a225d4262..b591eed90 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -61,6 +61,7 @@ static const QLatin1String scMaintenanceToolIniFile("MaintenanceToolIniFile");
static const QLatin1String scRemoteRepositories("RemoteRepositories");
static const QLatin1String scDependsOnLocalInstallerBinary("DependsOnLocalInstallerBinary");
static const QLatin1String scTranslations("Translations");
+static const QLatin1String scCreateLocalRepository("CreateLocalRepository");
static const QLatin1String scFtpProxy("FtpProxy");
static const QLatin1String scHttpProxy("HttpProxy");
@@ -255,7 +256,8 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
<< scAllowSpaceInPath << scAllowNonAsciiCharacters << scWizardStyle << scTitleColor
<< scWizardDefaultWidth << scWizardDefaultHeight
<< scRepositorySettingsPageVisible << scTargetConfigurationFile
- << scRemoteRepositories << scTranslations << QLatin1String(scControlScript);
+ << scRemoteRepositories << scTranslations << QLatin1String(scControlScript)
+ << scCreateLocalRepository;
Settings s;
s.d->m_data.insert(scPrefix, prefix);
@@ -314,6 +316,8 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
s.d->m_data.insert(scDependsOnLocalInstallerBinary, false);
if (!s.d->m_data.contains(scRepositorySettingsPageVisible))
s.d->m_data.insert(scRepositorySettingsPageVisible, true);
+ if (!s.d->m_data.contains(scCreateLocalRepository))
+ s.d->m_data.insert(scCreateLocalRepository, false);
return s;
}
@@ -333,7 +337,7 @@ QString Settings::applicationName() const
return d->m_data.value(scName).toString();
}
-QString Settings::applicationVersion() const
+QString Settings::version() const
{
return d->m_data.value(scVersion).toString();
}
@@ -463,6 +467,11 @@ QString Settings::configurationFileName() const
return d->m_data.value(scTargetConfigurationFile).toString();
}
+bool Settings::createLocalRepository() const
+{
+ return d->m_data.value(scCreateLocalRepository).toBool();
+}
+
bool Settings::allowSpaceInPath() const
{
return d->m_data.value(scAllowSpaceInPath, false).toBool();
diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h
index a9cf08d85..ed60219b1 100644
--- a/src/libs/installer/settings.h
+++ b/src/libs/installer/settings.h
@@ -94,7 +94,7 @@ public:
int wizardDefaultHeight() const;
QString applicationName() const;
- QString applicationVersion() const;
+ QString version() const;
QString runProgram() const;
QStringList runProgramArguments() const;
@@ -111,6 +111,8 @@ public:
QString configurationFileName() const;
+ bool createLocalRepository() const;
+
bool dependsOnLocalInstallerBinary() const;
bool hasReplacementRepos() const;
QSet<Repository> repositories() const;
diff --git a/src/libs/installer/uninstallercalculator.cpp b/src/libs/installer/uninstallercalculator.cpp
index 1b59fd42f..726ee735b 100644
--- a/src/libs/installer/uninstallercalculator.cpp
+++ b/src/libs/installer/uninstallercalculator.cpp
@@ -68,17 +68,11 @@ void UninstallerCalculator::appendComponentToUninstall(Component *component)
foreach (Component *dependee, dependees)
appendComponentToUninstall(dependee);
- component->setCheckState(Qt::Unchecked);
m_componentsToUninstall.insert(component);
}
void UninstallerCalculator::appendComponentsToUninstall(const QList<Component*> &components)
{
- if (components.isEmpty()) {
- qDebug() << "components list is empty in" << Q_FUNC_INFO;
- return;
- }
-
foreach (Component *component, components)
appendComponentToUninstall(component);
diff --git a/src/libs/installer/utils.cpp b/src/libs/installer/utils.cpp
index b8aa46324..2b1eab55c 100644
--- a/src/libs/installer/utils.cpp
+++ b/src/libs/installer/utils.cpp
@@ -390,7 +390,7 @@ QString QInstaller::windowsErrorString(int errorCode)
LocalFree((HLOCAL) string);
if (ret.isEmpty() && errorCode == ERROR_MOD_NOT_FOUND)
- ret = QCoreApplication::tr("QInstaller", "The specified module could not be found.");
+ ret = QCoreApplication::translate("QInstaller", "The specified module could not be found.");
ret.append(QLatin1String(" (0x"));
ret.append(QString::number(uint(errorCode), 16).rightJustified(8, QLatin1Char('0')));
diff --git a/src/sdk/commandlineparser.cpp b/src/sdk/commandlineparser.cpp
index 9c4200b3e..bb7ccd679 100644
--- a/src/sdk/commandlineparser.cpp
+++ b/src/sdk/commandlineparser.cpp
@@ -76,7 +76,7 @@ CommandLineParser::CommandLineParser()
m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::ShowVirtualComponents),
QLatin1String("Show virtual components in installer and package manager.")));
- m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::CreateOfflineRepository),
+ m_parser.addOption(QCommandLineOption(QLatin1String(CommandLineOptions::CreateLocalRepository),
QLatin1String("Create a local repository inside the installation directory. This option "
"has no effect on online installers.")));
diff --git a/src/sdk/constants.h b/src/sdk/constants.h
index 44fe1f598..924d4783a 100644
--- a/src/sdk/constants.h
+++ b/src/sdk/constants.h
@@ -50,7 +50,7 @@ const char Updater[] = "updater";
const char ManagePackages[] = "manage-packages";
const char NoForceInstallation[] = "no-force-installations";
const char ShowVirtualComponents[] = "show-virtual-components";
-const char CreateOfflineRepository[] = "create-offline-repository";
+const char CreateLocalRepository[] = "create-local-repository";
const char AddRepository[] = "addRepository";
const char AddTmpRepository[] = "addTempRepository";
const char SetTmpRepository[] = "setTempRepository";
diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp
index 7eb816a1a..9387b3b81 100644
--- a/src/sdk/installerbase.cpp
+++ b/src/sdk/installerbase.cpp
@@ -197,7 +197,8 @@ int InstallerBase::run()
QInstaller::PackageManagerCore::setNoForceInstallation(parser
.isSet(QLatin1String(CommandLineOptions::NoForceInstallation)));
QInstaller::PackageManagerCore::setCreateLocalRepositoryFromBinary(parser
- .isSet(QLatin1String(CommandLineOptions::CreateOfflineRepository)));
+ .isSet(QLatin1String(CommandLineOptions::CreateLocalRepository))
+ || m_core->settings().createLocalRepository());
QHash<QString, QString> params;
const QStringList positionalArguments = parser.positionalArguments();
@@ -228,7 +229,7 @@ int InstallerBase::run()
translator.reset(new QTranslator(QCoreApplication::instance()));
// install English translation as fallback so that correct license button text is used
- if (translator->load(QLatin1String("en_us"), directory))
+ if (translator->load(QLatin1String("en"), directory))
QCoreApplication::instance()->installTranslator(translator.take());
if (translations.isEmpty()) {
diff --git a/src/sdk/installerbase.qrc b/src/sdk/installerbase.qrc
index 55715a1fa..cc281e565 100644
--- a/src/sdk/installerbase.qrc
+++ b/src/sdk/installerbase.qrc
@@ -1,15 +1,15 @@
<RCC>
<qresource prefix="/">
- <file alias="translations/de_DE.qm">translations/de_de.qm</file>
- <file alias="translations/en_US.qm">translations/en_us.qm</file>
- <file alias="translations/fr_FR.qm">translations/fr_fr.qm</file>
- <file alias="translations/ja_JP.qm">translations/ja_jp.qm</file>
- <file alias="translations/ru_RU.qm">translations/ru_ru.qm</file>
+ <file>translations/de.qm</file>
+ <file>translations/en.qm</file>
+ <file>translations/fr.qm</file>
+ <file>translations/ja.qm</file>
+ <file>translations/ru.qm</file>
<file alias="translations/zh_CN.qm">translations/zh_cn.qm</file>
<file>translations/qt_fr.qm</file>
- <file>translations/qt_de.qm</file>
- <file>translations/qt_ja.qm</file>
- <file>translations/qt_ru.qm</file>
+ <file alias="translations/qt_de.qm">translations/qtbase_de.qm</file>
+ <file alias="translations/qt_ja.qm">translations/qtbase_ja.qm</file>
+ <file alias="translations/qt_ru.qm">translations/qtbase_ru.qm</file>
<file>translations/qt_zh_CN.qm</file>
</qresource>
</RCC>
diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp
index 8b7953eda..eb8c3a562 100644
--- a/src/sdk/installerbasecommons.cpp
+++ b/src/sdk/installerbasecommons.cpp
@@ -66,8 +66,9 @@ InstallerGui::InstallerGui(PackageManagerCore *core)
setPage(PackageManagerCore::InstallationFinished, new FinishedPage(core));
foreach (const int id, pageIds()) {
- packageManagerCore()->controlScriptEngine()->addQObjectChildren(page(id));
- packageManagerCore()->componentScriptEngine()->addQObjectChildren(page(id));
+ QWizardPage *wizardPage = page(id);
+ packageManagerCore()->controlScriptEngine()->addToGlobalObject(wizardPage);
+ packageManagerCore()->componentScriptEngine()->addToGlobalObject(wizardPage);
}
}
@@ -103,8 +104,9 @@ MaintenanceGui::MaintenanceGui(PackageManagerCore *core)
wizardPageVisibilityChangeRequested(false, PackageManagerCore::InstallationFinished + 1);
foreach (const int id, pageIds()) {
- packageManagerCore()->controlScriptEngine()->addQObjectChildren(page(id));
- packageManagerCore()->componentScriptEngine()->addQObjectChildren(page(id));
+ QWizardPage *wizardPage = page(id);
+ packageManagerCore()->controlScriptEngine()->addToGlobalObject(wizardPage);
+ packageManagerCore()->componentScriptEngine()->addToGlobalObject(wizardPage);
}
}
diff --git a/src/sdk/sdk.pro b/src/sdk/sdk.pro
index 1227ed1c8..bec0b259d 100644
--- a/src/sdk/sdk.pro
+++ b/src/sdk/sdk.pro
@@ -15,8 +15,8 @@ QT += network qml xml widgets
DESTDIR = $$IFW_APP_PATH
exists($$LRELEASE) {
- QT_LANGUAGES = qt_de qt_fr qt_ja qt_ru qt_zh_CN
- IB_LANGUAGES = de_de en_us fr_fr ja_jp ru_ru zh_cn
+ QT_LANGUAGES = qtbase_de qt_fr qtbase_ja qtbase_ru qt_zh_CN
+ IB_LANGUAGES = de en fr ja ru zh_cn
defineReplace(prependAll) {
for(a,$$1):result += $$2$${a}$$3
return($$result)
diff --git a/src/sdk/translations/de_de.ts b/src/sdk/translations/de.ts
index aebaf4ec4..19055cfd5 100644
--- a/src/sdk/translations/de_de.ts
+++ b/src/sdk/translations/de.ts
@@ -2,11 +2,52 @@
<!DOCTYPE TS>
<TS version="2.1" language="de_DE">
<context>
- <name>Component</name>
+ <name>AuthenticationRequiredException</name>
<message>
- <location filename="../../libs/installer/binaryformat.cpp" line="511"/>
- <source>Could not open archive %1: %2</source>
- <translation>Konnte Archiv %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="283"/>
+ <source>%1 at %2</source>
+ <translation>%1 auf %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="300"/>
+ <source>Proxy requires authentication.</source>
+ <translation>Proxy verlangt Autentifizierung.</translation>
+ </message>
+</context>
+<context>
+ <name>BinaryContent</name>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="207"/>
+ <source>Could not seek to %1 to read the operation data.</source>
+ <translation>Konnte nicht bis zur Anweisungsliste an Position %1 springen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="225"/>
+ <source>Could not seek to %1 to read the resource collection block.</source>
+ <translation>Konnte nicht bis zur Resourcensammlung an Position %1 suchen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="263"/>
+ <source>Could not open meta resource. Error: %1</source>
+ <translation>Konnte Metainformationen nicht öffnen. Fehlermeldung: %1</translation>
+ </message>
+</context>
+<context>
+ <name>BinaryLayout</name>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="121"/>
+ <source>Could not seek to %1 to read the embedded meta data count.</source>
+ <translation>Konnte nicht bis %1 suchen, um die eingebettete Metadatenanzahl zu lesen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="132"/>
+ <source>Could not seek to %1 to read the resource collection segment.</source>
+ <translation>Konnte nicht bis %1 suchen, um die Resourcensammlung zu lesen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/binarycontent.cpp" line="145"/>
+ <source>Unexpected mismatch of meta resources. Read %1, expected: %2.</source>
+ <translation>Unerwarteter Unterschied zwischen Metadaten. %1 gelesen, %2 erwartet.</translation>
</message>
</context>
<context>
@@ -38,123 +79,154 @@
</message>
</context>
<context>
- <name>IntroductionPageImpl</name>
+ <name>DirectoryGuard</name>
<message>
- <location filename="../installerbasecommons.cpp" line="78"/>
- <source>Package manager</source>
- <translation>Paketverwaltung</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="163"/>
+ <source>Path exists but is not a folder: %1</source>
+ <translation>Pfad %1 existiert, aber ist kein Ordner.</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="84"/>
- <source>Update components</source>
- <translation>Komponenten aktualisieren</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="180"/>
+ <source>Could not create folder: %1</source>
+ <translation>Konnte Ordner %1 nicht anlegen.</translation>
</message>
+</context>
+<context>
+ <name>ExtractCallbackImpl</name>
<message>
- <location filename="../installerbasecommons.cpp" line="90"/>
- <source>Remove all components</source>
- <translation>Alle Komponenten entfernen</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="815"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="884"/>
+ <source>Could not retrieve path of archive item %1</source>
+ <translation>Konnte Pfad des Archivs %1 nicht feststellen.</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="101"/>
- <source>Retrieving information from remote installation sources...</source>
- <translation>Empfange Daten vom Installationsserver...</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="844"/>
+ <source>Could not remove already existing symlink. %1</source>
+ <translation>Konnte existierende Verknüpfung (Symlink) %1 nicht entfernen.</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="145"/>
- <source>At least one valid and enabled repository required for this action to succeed.</source>
- <translation>Mindestens ein gültiges und aktiviertes Repository wird benötigt, um diese Aktion erfolgreich abzuschliessen. </translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="852"/>
+ <source>Could not open file: %1 (%2)</source>
+ <translation>Konnte Datei %1 nicht öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="171"/>
- <source>No updates available.</source>
- <translation>Keine Aktualisierungen verfügbar.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="907"/>
+ <source>Could not create symlink at &apos;%1&apos;. Another one is already existing.</source>
+ <translation>Konnte Verknüpfung (Symlink) &apos;%1&apos; nicht erstellen. Es existiert bereits eine an dieser Stelle.</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="343"/>
- <source>Quit</source>
- <translation>Beenden</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="914"/>
+ <source>Could not read symlink target from file &apos;%1&apos;.</source>
+ <translation>Konnte Ziel der Verknüpfung (Symlink) &apos;%1&apos; nicht lesen.</translation>
</message>
<message>
- <location filename="../installerbasecommons.cpp" line="190"/>
- <source> Only local package management available.</source>
- <translation>Nur lokale Paketverwaltung verfügbar.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="924"/>
+ <source>Could not create symlink at %1. %2</source>
+ <translation>Konnte keine Dateisystemverknüpfung (Symlink) %1 anlegen. Fehlermeldung: %2</translation>
+ </message>
+</context>
+<context>
+ <name>InstallerCalculator</name>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="76"/>
+ <source>Components added as automatic dependencies:</source>
+ <translation>Komponenten, die als automatische Abhängigkeiten zugefügt wurden:</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="79"/>
+ <source>Components added as dependency for &apos;%1&apos;:</source>
+ <translation>Komponenten, die als Abhängigkeiten für &apos;%1&apos; zugefügt wurden:</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="82"/>
+ <source>Components that have resolved dependencies:</source>
+ <translation>Komponenten, die aufgelöste Abhängigkeiten besitzen:</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="85"/>
+ <source>Selected components without dependencies:</source>
+ <translation>Ausgewählte Komponenten ohne Abhängigkeiten:</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="114"/>
+ <source>Recursion detected, component &apos;%1&apos; already added with reason: &apos;%2&apos;</source>
+ <translation>Rekursion entdeckt, Komponente &apos;%1&apos; wurde bereits zugefügt aufgrund von: &apos;%2&apos;</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/installercalculator.cpp" line="176"/>
+ <source>Cannot find missing dependency &apos;%1&apos; for &apos;%2&apos;.</source>
+ <translation>Konnte fehlende Abhängigkeit &apos;%1&apos; für &apos;%2&apos; nicht finden.</translation>
</message>
</context>
<context>
<name>KDJob</name>
<message>
- <location filename="../../libs/kdtools/kdjob.cpp" line="195"/>
+ <location filename="../../libs/kdtools/kdjob.cpp" line="188"/>
<source>Canceled</source>
<translation>Abgebrochen</translation>
</message>
</context>
<context>
- <name>KDSaveFile</name>
+ <name>KDLockFile</name>
<message>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="279"/>
- <source>Append mode not supported.</source>
- <translation>Anhängen nicht unterstützt.</translation>
+ <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="53"/>
+ <location filename="../../libs/kdtools/kdlockfile_win.cpp" line="55"/>
+ <source>Could not create lock file &apos;%1&apos;: %2</source>
+ <translation>Konnte keine Sperrdatei %1 anlegen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="284"/>
- <source>Read-only access not supported.</source>
- <translation>Nur-Lese-Modus nicht unterstützt.</translation>
+ <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="64"/>
+ <location filename="../../libs/kdtools/kdlockfile_win.cpp" line="63"/>
+ <source>Could not write PID to lock file &apos;%1&apos;: %2</source>
+ <translation>Konnte PID nicht in die Sperrdatei %1 schreiben. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="372"/>
- <source>Could not backup existing file %1: %2</source>
- <translation>Konnte existierende Datei %1 nicht sichern. Fehlermeldung: %2</translation>
+ <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="73"/>
+ <location filename="../../libs/kdtools/kdlockfile_win.cpp" line="70"/>
+ <source>Could not obtain the lock for file &apos;%1&apos;: %2</source>
+ <translation>Konnte Sperre für Datei &apos;%1&apos; nicht anlegen: &apos;%2&apos;</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="413"/>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="424"/>
- <location filename="../../libs/kdtools/kdsavefile.cpp" line="435"/>
- <source>TODO</source>
- <translation>!!TODO</translation>
+ <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="88"/>
+ <location filename="../../libs/kdtools/kdlockfile_win.cpp" line="85"/>
+ <source>Could not release the lock for file &apos;%1&apos;: %2</source>
+ <translation>Konnte Sperre für Datei &apos;%1&apos; nicht aufheben: &apos;%2&apos;</translation>
</message>
</context>
<context>
<name>KDUpdater::AppendFileOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="617"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="610"/>
<source>Cannot backup file %1: %2</source>
<translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Invalid arguments: %1 arguments given, 2 expected.</source>
- <translation type="obsolete">Ungültige Argumente: %1 Argumente erhalten, 2 erwartet.</translation>
- </message>
- <message>
- <source>Could not open file %1 for writing: %2</source>
- <translation type="obsolete">Konnte Datei %1 nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="629"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="622"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="630"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="623"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="656"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="649"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Konnte Datei &apos;%1&apos; nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="675"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="668"/>
<source>Cannot find backup file for %1.</source>
<translation>Konnte Sicherungsdatei für %1 nicht finden.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="681"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="674"/>
<source>Could not restore backup file for %1.</source>
<translation>Konnte Datei %1 nicht wiederherstellen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="692"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="685"/>
<source>Could not restore backup file for %1: %2</source>
<translation>Konnte Datei %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
@@ -162,37 +234,37 @@
<context>
<name>KDUpdater::CopyOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="158"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="151"/>
<source>Invalid arguments: %1 arguments given, 2 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 2 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="149"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="142"/>
<source>Could not backup file %1.</source>
<translation>Konnte Datei %1 nicht sichern.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="168"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="161"/>
<source>Could not copy a non-existent file: %1</source>
<translation>Konnte nicht existierende Datei nicht kopieren: %1</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="177"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="170"/>
<source>Could not remove destination file %1: %2</source>
<translation>Konnte Zieldatei %1 nicht entfernen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="185"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="178"/>
<source>Could not copy %1 to %2: %3</source>
<translation>Konnte Datei %1 nicht nach %2 kopieren. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="202"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="195"/>
<source>Could not delete file %1: %2</source>
<translation>Konnte Datei %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="215"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="208"/>
<source>Could not restore backup file into %1: %2</source>
<translation>Konnte Datei %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
@@ -200,66 +272,55 @@
<context>
<name>KDUpdater::DeleteOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="376"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="369"/>
<source>Cannot create backup of %1: %2</source>
<translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="385"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="378"/>
<source>Invalid arguments: %1 arguments given, 1 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 1 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="400"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="393"/>
<source>Cannot restore backup file for %1: %2</source>
<translation>Konnte Datei %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
</context>
<context>
- <name>KDUpdater::ExecuteOperation</name>
- <message>
- <source>Invalid arguments: %1 arguments given, 2 expected.</source>
- <translation type="obsolete">Ungültige Argumente: %1 Argumente erhalten, 2 erwartet.</translation>
- </message>
- <message>
- <source>Execution failed: %1</source>
- <translation type="obsolete">Ausführung fehlgeschlagen: %1</translation>
- </message>
-</context>
-<context>
<name>KDUpdater::FileDownloader</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="216"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="198"/>
<source>Download canceled.</source>
<translation>Herunterladen abgebrochen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="209"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="191"/>
<source>Cryptographic hashes do not match.</source>
<translation>Prüfsummen stimmen nicht überein.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="206"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="188"/>
<source>Download finished.</source>
<translation>Heruntergeladen abgeschlossen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="323"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="305"/>
<source>%1 of %2</source>
<translation>%1 von %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="326"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="308"/>
<source>%1 downloaded.</source>
<translation>%1 heruntergeladen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="329"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="311"/>
<source>(%1/sec)</source>
<translation>(%1/s)</translation>
</message>
<message numerus="yes">
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="340"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="322"/>
<source>%n day(s), </source>
<translation>
<numerusform>%n Tag, </numerusform>
@@ -267,7 +328,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="344"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="326"/>
<source>%n hour(s), </source>
<translation>
<numerusform>%n Stunde, </numerusform>
@@ -275,7 +336,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="348"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="330"/>
<source>%n minute(s)</source>
<translation>
<numerusform>%n Minute</numerusform>
@@ -283,7 +344,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="353"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="335"/>
<source>%n second(s)</source>
<translation>
<numerusform>%n Sekunde</numerusform>
@@ -291,64 +352,12 @@
</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="355"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="337"/>
<source> - %1%2%3%4 remaining.</source>
<translation> - %1%2%3%4 verbleibend.</translation>
</message>
<message>
- <source> of </source>
- <translation type="obsolete"> von </translation>
- </message>
- <message>
- <source> downloaded.</source>
- <translation type="obsolete"> heruntergeladen.</translation>
- </message>
- <message>
- <source>/sec</source>
- <translation type="obsolete">/s</translation>
- </message>
- <message>
- <source> day</source>
- <translation type="obsolete"> Tag</translation>
- </message>
- <message>
- <source> days</source>
- <translation type="obsolete"> Tage</translation>
- </message>
- <message>
- <source> hour</source>
- <translation type="obsolete"> Stunde</translation>
- </message>
- <message>
- <source> hours</source>
- <translation type="obsolete"> Stunden</translation>
- </message>
- <message>
- <source> minute</source>
- <translation type="obsolete"> Minute</translation>
- </message>
- <message>
- <source> minutes</source>
- <translation type="obsolete"> Minuten</translation>
- </message>
- <message>
- <source> second</source>
- <translation type="obsolete"> Sekunde</translation>
- </message>
- <message>
- <source> seconds</source>
- <translation type="obsolete"> Sekunden</translation>
- </message>
- <message>
- <source> - </source>
- <translation type="obsolete"> - </translation>
- </message>
- <message>
- <source> remaining.</source>
- <translation type="obsolete"> verbleibend.</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="357"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="339"/>
<source> - unknown time remaining.</source>
<translation> - verbleibende Zeit unbekannt.</translation>
</message>
@@ -356,55 +365,47 @@
<context>
<name>KDUpdater::HttpDownloader</name>
<message>
- <source>Cannot download %1: Writing to temporary file failed: %2</source>
- <translation type="obsolete">Konnte URL %1 nicht herunterladen. Schreiben in temporäre Datei fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Cannot download %1: Could not create temporary file: %2</source>
- <translation type="obsolete">Konnte URL %1 nicht herunterladen. Schreiben in temporäre Datei fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="892"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="870"/>
<source>Cannot download %1: Writing to file &apos;%2&apos; failed: %3</source>
<translation>Konnte %1 nicht herunterladen. Schreiben in Datei &apos;%2&apos; fehlgeschlagen. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1028"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1006"/>
<source>Cannot download %1: Could not create %2: %3</source>
<translation>Konnte %1 nicht herunterladen. Erstellen der Datei %2 fehlgeschlagen. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1047"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1025"/>
<source>%1 at %2</source>
<translation>%1 auf %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1063"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1041"/>
<source>Authentication request canceled.</source>
<translation>Authentifizierung abgebrochen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1099"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1076"/>
<source>Secure Connection Failed</source>
<translation>Sichere Verbindung fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1100"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1077"/>
<source>There was an error during connection to: %1.</source>
<translation>Beim Aufbau der Verbindung zu &apos;%1&apos; ist ein Fehler aufgetreten.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1101"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1078"/>
<source>This could be a problem with the server&apos;s configuration, or it could be someone trying to impersonate the server.</source>
<translation>Dies kann ein Fehler in der Konfiguration sein oder es versucht jemand, diesen Server vorzutäuschen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1103"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1080"/>
<source>If you have connected to this server successfully in the past or trust this server, the error may be temporary and you can try again.</source>
<translation>Wenn frühere Verbindungen zu diesem Server erfolgreich waren, kann dieser Fehler temporär sein und bei einem erneuten Versuch verschwinden.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1107"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="1084"/>
<source>Try again</source>
<translation>Erneut versuchen</translation>
</message>
@@ -412,17 +413,17 @@
<context>
<name>KDUpdater::LocalFileDownloader</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="521"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="503"/>
<source>Cannot open source file &apos;%1&apos; for reading.</source>
<translation>Konnte Ausgangsdatei &apos;%1&apos; nicht zum Lesen öffnen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="537"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="519"/>
<source>Cannot open destination file &apos;%1&apos; for writing.</source>
<translation>Konnte Zieldatei &apos;%1&apos; nicht zum Schreiben öffnen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="594"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="576"/>
<source>Writing to %1 failed: %2</source>
<translation>Konnte Datei %1 nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
</message>
@@ -430,18 +431,18 @@
<context>
<name>KDUpdater::MkdirOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="472"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="465"/>
<source>Invalid arguments: %1 arguments given, 1 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 1 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="480"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="473"/>
<source>Could not create folder %1: Unknown error.</source>
<translation>Konnte Ordner %1 nicht anlegen. Unbekannter Fehler.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="512"/>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="514"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="505"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="507"/>
<source>Cannot remove directory %1: %2</source>
<translation>Konnte Ordner %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
@@ -449,37 +450,37 @@
<context>
<name>KDUpdater::MoveOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="276"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="269"/>
<source>Could not backup file %1.</source>
<translation>Konnte Datei %1 nicht sichern.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="286"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="279"/>
<source>Invalid arguments: %1 arguments given, 2 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 2 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="297"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="290"/>
<source>Could not remove destination file %1: %2</source>
<translation>Konnte Zieldatei %1 nicht entfernen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="306"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="299"/>
<source>Could not copy %1 to %2: %3</source>
<translation>Konnte Datei %1 nicht nach %2 kopieren. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="325"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="318"/>
<source>Cannot remove file %1.</source>
<translation>Konnte Datei %1 nicht löschen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="319"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="312"/>
<source>Cannot copy %1 to %2: %3</source>
<translation>Konnte Datei %1 nicht nach %2 kopieren. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="338"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="331"/>
<source>Cannot restore backup file for %1: %2</source>
<translation>Konnte Datei %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
@@ -487,27 +488,27 @@
<context>
<name>KDUpdater::PackagesInfo</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="117"/>
+ <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="103"/>
<source>%1 contains invalid content: %2</source>
<translation>Inhalt von Datei %1 ungültig: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="281"/>
+ <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="269"/>
<source>The file %1 does not exist.</source>
<translation>Datei %1 existiert nicht.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="289"/>
+ <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="277"/>
<source>Could not open %1.</source>
<translation>Konnte Datei %1 nicht öffnen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="314"/>
+ <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="302"/>
<source>Root element %1 unexpected, should be &apos;Packages&apos;.</source>
<translation>Unerwartetes Wurzelelement %1, erwartet wird &apos;Packages&apos;.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="301"/>
+ <location filename="../../libs/kdtools/kdupdaterpackagesinfo.cpp" line="289"/>
<source>Parse error in %1 at %2, %3: %4</source>
<translation>Ungültiges XML in Datei %1, Zeile %2, Spalte %3. Fehlermeldung: %4</translation>
</message>
@@ -515,37 +516,37 @@
<context>
<name>KDUpdater::PrependFileOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="727"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="720"/>
<source>Cannot backup file %1: %2</source>
<translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="740"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="733"/>
<source>Invalid arguments: %1 arguments given, 2 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 2 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="749"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="742"/>
<source>Could not open file %1 for reading: %2</source>
<translation>Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="767"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="760"/>
<source>Could not open file %1 for writing: %2</source>
<translation>Konnte Datei %1 nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="785"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="778"/>
<source>Cannot find backup file for %1.</source>
<translation>Konnte Sicherungsdatei für %1 nicht finden.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="790"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="783"/>
<source>Cannot restore backup file for %1.</source>
<translation>Konnte Datei %1 nicht wiederherstellen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="801"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="794"/>
<source>Cannot restore backup file for %1: %2</source>
<translation>Konnte Datei %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
@@ -553,7 +554,7 @@
<context>
<name>KDUpdater::ResourceFileDownloader</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="743"/>
+ <location filename="../../libs/kdtools/kdupdaterfiledownloader.cpp" line="722"/>
<source>Could not read resource file &quot;%1&quot;. Reason:</source>
<translation>Konnte Ressourcendatei %1 nicht zum Lesen öffnen. Grund:</translation>
</message>
@@ -561,22 +562,22 @@
<context>
<name>KDUpdater::RmdirOperation</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="551"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="544"/>
<source>Invalid arguments: %1 arguments given, 1 expected.</source>
<translation>Ungültige Argumente: %1 Argumente erhalten, 1 erwartet.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="558"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="551"/>
<source>Could not remove folder %1: The folder does not exist.</source>
<translation>Konnte Ordner %1 nicht entfernen. Der Ordner existiert nicht.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="567"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="560"/>
<source>Could not remove folder %1: %2</source>
<translation>Konnte Ordner %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="581"/>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperations.cpp" line="574"/>
<source>Cannot recreate directory %1: %2</source>
<translation>Konnte Ordner %1 nicht wiederherstellen. Fehlermeldung: %2</translation>
</message>
@@ -584,82 +585,55 @@
<context>
<name>KDUpdater::Task</name>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="198"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="192"/>
<source>%1 started</source>
<translation>%1 gestartet</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="211"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="205"/>
<source>%1 cannot be stopped</source>
<translation>%1 kann nicht angehalten werden</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="229"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="223"/>
<source>Cannot stop task %1</source>
<translation>%1 kann nicht angehalten werden</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="248"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="242"/>
<source>%1 cannot be paused</source>
<translation>%1 kann nicht pausiert werden</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="266"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="260"/>
<source>Cannot pause task %1</source>
<translation>%1 kann nicht pausiert werden</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="294"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="288"/>
<source>Cannot resume task %1</source>
<translation>%1 kann nicht wiederaufgenommen werden</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdatertask.cpp" line="350"/>
+ <location filename="../../libs/kdtools/kdupdatertask.cpp" line="344"/>
<source>%1 done</source>
<translation>%1 abgeschlossen</translation>
</message>
</context>
<context>
- <name>KDUpdater::Update</name>
- <message>
- <source>Downloading update...</source>
- <translation type="obsolete">Lade Aktualisierung herunter...</translation>
- </message>
- <message>
- <source>Update downloaded</source>
- <translation type="obsolete">Aktualisierung heruntergeladen.</translation>
- </message>
-</context>
-<context>
- <name>KDUpdater::UpdateCompatOperation</name>
- <message>
- <source>Invalid arguments: %1 arguments given, 1 expected.</source>
- <translation type="obsolete">Ungültige Argumente: %1 Argumente erhalten, 1 erwartet.</translation>
- </message>
- <message>
- <source>Cannot restore previous compat-level</source>
- <translation type="obsolete">Kann ursprüngliches compat-level nicht wiederherstellen.</translation>
- </message>
-</context>
-<context>
<name>KDUpdater::UpdateFinder</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="322"/>
- <source>Could not download updates from %1 (&apos;%2&apos;)</source>
- <translation>Konnte Aktualisierungen nicht von %1 (&apos;%2&apos;) herunterladen.</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="196"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="182"/>
<source>Could not access the package information of this application.</source>
<translation>Konnte nicht auf die Paketinformationen dieser Anwendung zugreifen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="207"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="193"/>
<source>Could not access the update sources information of this application.</source>
<translation>Konnte nicht auf die Aktualisierungsinformationen dieser Anwendung zugreifen.</translation>
</message>
<message numerus="yes">
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="230"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="216"/>
<source>%n update(s) found.</source>
<translation>
<numerusform>%n Aktualisierung gefunden.</numerusform>
@@ -667,91 +641,57 @@
</translation>
</message>
<message>
- <source>%1 updates found.</source>
- <translation type="obsolete">%1 Aktualisierungen gefunden.</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="307"/>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="529"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="301"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="545"/>
<source>Downloading Updates.xml from update sources.</source>
<translation>Lade Updates.xml von der Aktualisierungsquelle herunter.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="330"/>
- <source>Updates.xml file(s) downloaded from update sources.</source>
- <translation>Datei Updates.xml von der Aktualisierungsquelle heruntergeladen.</translation>
- </message>
- <message>
- <source>Looking for compatibility update...</source>
- <translation type="obsolete">Suche nach einer Kompatibilitätsaktualisierung...</translation>
- </message>
- <message>
- <source>Found compatibility update.</source>
- <translation type="obsolete">Kompatibilitätsaktualisierung gefunden.</translation>
- </message>
- <message>
- <source>Update not found.</source>
- <translation type="obsolete">Aktualisierung nicht gefunden.</translation>
- </message>
- <message>
- <source>Compatibility update found.</source>
- <translation type="obsolete">Kompatibilitätsaktualisierung gefunden.</translation>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="309"/>
+ <source>Could not download update source %1 from (&apos;%2&apos;)</source>
+ <translation>Konnte Aktualisierungen nicht von %1 (&apos;%2&apos;) herunterladen.</translation>
</message>
<message>
- <source>No compatibility updates found.</source>
- <translation type="obsolete">Kompatibilitätsaktualisierung nicht gefunden.</translation>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="332"/>
+ <source>Updates.xml file(s) downloaded from update sources.</source>
+ <translation>Datei Updates.xml von der Aktualisierungsquelle heruntergeladen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="362"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="365"/>
<source>Computing applicable updates.</source>
<translation>Berechne anwendbare Aktualisierungen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="365"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatefinder.cpp" line="369"/>
<source>Application updates computed.</source>
<translation>Anwendbare Aktualisierungen berechnet.</translation>
</message>
</context>
<context>
- <name>KDUpdater::UpdatePackageOperation</name>
- <message>
- <source>Invalid arguments: %1 arguments given, 3 expected.</source>
- <translation type="obsolete">Ungültige Argumente: %1 Argumente erhalten, 3 erwartet.</translation>
- </message>
- <message>
- <source>Cannot update %1-%2</source>
- <translation type="obsolete">Aktualisierung von %1-%2 nicht möglich.</translation>
- </message>
- <message>
- <source>Cannot restore %1-%2</source>
- <translation type="obsolete">Wiederherstelung von %1-%2 nicht möglich.</translation>
- </message>
-</context>
-<context>
<name>KDUpdater::UpdateSourcesInfo</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="141"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="143"/>
<source>%1 contains invalid content: %2</source>
<translation>Datei %1 enthält ungültige Inhalte: %2</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="290"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="302"/>
<source>Could not read &quot;%1&quot;</source>
<translation>Konnte Datei &quot;%1&quot; nicht lesen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="301"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="313"/>
<source>XML Parse error in %1 at %2, %3: %4</source>
<translation>Ungültiges XML in Datei %1, Zeile %2, Spalte %3. Fehlermeldung: %4</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="310"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="322"/>
<source>Root element %1 unexpected, should be &quot;UpdateSources&quot;</source>
<translation>Unerwartetes Wurzelelement %1, erwartet wird &quot;UpdateSources&quot;.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="350"/>
- <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="361"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="362"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesourcesinfo.cpp" line="373"/>
<source>Could not save changes to &quot;%1&quot;: %2</source>
<translation>Konnte Änderungen nicht in Datei %1 speichern. Fehlermeldung: %2</translation>
</message>
@@ -759,237 +699,398 @@
<context>
<name>KDUpdater::UpdatesInfoData</name>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="70"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="63"/>
<source>Could not read &quot;%1&quot;</source>
<translation>Konnte Datei &quot;%1&quot; nicht lesen.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="79"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="72"/>
<source>Parse error in %1 at %2, %3: %4</source>
<translation>Ungültiges XML in Datei %1, Zeile %2, Spalte %3. Fehlermeldung: %4</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="62"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="55"/>
<source>Updates.xml contains invalid content: %1</source>
<translation>Inhalt von Updates.xml ungültig: %1</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="86"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="79"/>
<source>Root element %1 unexpected, should be &quot;Updates&quot;.</source>
<translation>Unerwartetes Wurzelelement %1, erwartet wird &quot;Updates&quot;.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="107"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="100"/>
<source>ApplicationName element is missing.</source>
<translation>Element ApplicationName fehlt.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="112"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="105"/>
<source>ApplicationVersion element is missing.</source>
<translation>Element ApplicationVersion fehlt.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="167"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="160"/>
<source>PackageUpdate element without Name</source>
<translation>Element &quot;PackageUpdate&quot; braucht ein Feld &quot;Name&quot;.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="171"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="164"/>
<source>PackageUpdate element without Version</source>
<translation>Element &quot;PackageUpdate&quot; braucht ein Feld &quot;Version&quot;.</translation>
</message>
<message>
- <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="175"/>
+ <location filename="../../libs/kdtools/kdupdaterupdatesinfo.cpp" line="168"/>
<source>PackageUpdate element without ReleaseDate</source>
<translation>Element &quot;PackageUpdate&quot; braucht ein Feld &quot;ReleaseDate&quot;.</translation>
</message>
+</context>
+<context>
+ <name>Lib7z</name>
<message>
- <source>PackageUpdate element without UpdateFile</source>
- <translation type="obsolete">Element &quot;PackageUpdate&quot; braucht ein Feld &quot;UpdateFile&quot;.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="717"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1438"/>
+ <source>Could not retrieve number of items in archive</source>
+ <translation>Konnte Anzahl Dateien im Archiv nicht feststellen.</translation>
</message>
<message>
- <source>CompatUpdate element without CompatLevel</source>
- <translation type="obsolete">Element &quot;CompatUpdate&quot; braucht ein Feld &quot;CompatLevel&quot;.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="724"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1449"/>
+ <source>Could not retrieve path of archive item %1</source>
+ <translation>Konnte Pfad des Archivs %1 nicht feststellen.</translation>
</message>
<message>
- <source>CompatUpdate element without ReleaseDate</source>
- <translation type="obsolete">Element &quot;CompatUpdate&quot; braucht ein Feld &quot;ReleaseDate&quot;.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="746"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1409"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1465"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1567"/>
+ <source>Unknown exception caught (%1)</source>
+ <translation>Unbekannte Ausnahmebedingung (%1).</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1289"/>
+ <source>internal code: %1</source>
+ <translation>Interner Fehlercode: %1</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1310"/>
+ <source>not enough memory</source>
+ <translation>nicht genug Speicher</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1316"/>
+ <source>Error: %1</source>
+ <translation>Fehler: %1</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1336"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1542"/>
+ <source>Could not load codecs</source>
+ <translation>Konnte Codecs nicht laden.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1341"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1547"/>
+ <source>Could not retrieve default format</source>
+ <translation>Konnte Standardformat nicht finden.</translation>
</message>
<message>
- <source>CompatUpdate element without UpdateFile</source>
- <translation type="obsolete">Element &quot;CompatUpdate&quot; braucht ein Feld &quot;UpdateFile&quot;.</translation>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1387"/>
+ <source>Could not create archive %1. %2</source>
+ <translation>Konnte kein Archiv %1 anlegen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1429"/>
+ <source>CArc index %1 out of bounds [0, %2]</source>
+ <translation>CArc Index %1 ausserhalb der Grenzen [0, %2].</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1443"/>
+ <source>Item index %1 out of bounds [0, %2]</source>
+ <translation>Itemindex %1 ausserhalb der Grenzen [0, %2].</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1484"/>
+ <source>Could not create output file for writing: %1</source>
+ <translation>Konnte Ausgabedatei nicht zum Schreiben öffnen. Fehlermeldung: %1</translation>
</message>
</context>
<context>
<name>Lib7z::ExtractItemJob</name>
<message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1562"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1577"/>
<source>Could not list archive: QIODevice not set or already destroyed.</source>
<translation>Kann Archiv nicht anzeigen: QIODevice ist nicht gesetzt oder bereits zerstört.</translation>
</message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1586"/>
+ <source>Error while extracting &apos;%1&apos;: %2</source>
+ <translation>Fehler beim Auspacken von &apos;%1&apos;. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1589"/>
+ <source>Unknown exception caught (%1)</source>
+ <translation>Unbekannte Ausnahmebedingung (%1).</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="1589"/>
+ <source>Failed</source>
+ <translation>Fehlgeschlagen</translation>
+ </message>
</context>
<context>
<name>Lib7z::ListArchiveJob</name>
<message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="750"/>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="756"/>
<source>Could not list archive: QIODevice already destroyed.</source>
<translation>Kann Archiv nicht anzeigen: QIODevice ist bereits zerstört.</translation>
</message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="763"/>
+ <source>Unknown exception caught (%1)</source>
+ <translation>Unbekannte Ausnahmebedingung (%1).</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="763"/>
+ <source>Failed</source>
+ <translation>Fehlgeschlagen</translation>
+ </message>
+</context>
+<context>
+ <name>OpenArchiveInfo</name>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="639"/>
+ <source>Could not load codecs</source>
+ <translation>Konnte Codecs nicht laden.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="643"/>
+ <source>Could not retrieve default format</source>
+ <translation>Konnte Standardformat nicht finden.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="648"/>
+ <source>Could not open archive</source>
+ <translation>Konnte Archiv nicht öffnen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="652"/>
+ <source>No CArc found</source>
+ <translation>Keine CArc gefunden.</translation>
+ </message>
+</context>
+<context>
+ <name>QIODeviceSequentialOutStream</name>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="386"/>
+ <source>No device set for output stream</source>
+ <translation>Kein Gerät für den Ausgabestrom gesetzt</translation>
+ </message>
</context>
<context>
<name>QInstaller</name>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="145"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="138"/>
<source>bytes</source>
<translation>Bytes</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="146"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="139"/>
<source>KiB</source>
<translation>KiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="147"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="140"/>
<source>MiB</source>
<translation>MiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="148"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="141"/>
<source>GiB</source>
<translation>GiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="149"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="142"/>
<source>TiB</source>
<translation>TiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="150"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="143"/>
<source>PiB</source>
<translation>PiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="151"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="144"/>
<source>EiB</source>
<translation>EiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="152"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="145"/>
<source>ZiB</source>
<translation>ZiB</translation>
</message>
<message>
- <location filename="../../libs/installer/fileutils.cpp" line="153"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="146"/>
<source>YiB</source>
<translation>YiB</translation>
</message>
-</context>
-<context>
- <name>QInstaller::AddQtCreatorArrayValueOperation</name>
<message>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="73"/>
- <source>exactly 4</source>
- <translation>genau 4</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="184"/>
+ <source>Could not remove file %1: %2</source>
+ <translation>Konnte Datei %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="72"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="225"/>
+ <source>Could not remove folder %1: %2</source>
+ <translation>Konnte Ordner %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="73"/>
- <source> (group, arrayname, key, value)</source>
- <translation> (Gruppe, Array, Schlüssel, Wert)</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="295"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="321"/>
+ <source>Could not create folder %1</source>
+ <translation>Konnte Ordner %1 nicht anlegen.</translation>
</message>
<message>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="80"/>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="138"/>
- <source>Needed installer object in %1 operation is empty.</source>
- <translation>Das für die Anweisung %1 benötigte Installerobjekt ist leer.</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="308"/>
+ <source>Could not copy file from %1 to %2: %3</source>
+ <translation>Konnte Datei %1 nicht nach %2 kopieren. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/installer/addqtcreatorarrayvalueoperation.cpp" line="87"/>
- <source>There is no value set for %1 on the installer object.</source>
- <translation>Es wurde kein Wert %1 auf dem Installer Objekt gesetzt.</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="337"/>
+ <source>Could not move file from %1 to %2: %3</source>
+ <translation>Konnte Datei %1 nicht nach %2 verschieben. Fehlermeldung: %3</translation>
</message>
-</context>
-<context>
- <name>QInstaller::Component</name>
<message>
- <source>Could not open the requested script file at %1: %2.</source>
- <translation type="obsolete">Konnte angeforderte Skriptdatei %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/fileutils.cpp" line="349"/>
+ <location filename="../../libs/installer/fileutils.cpp" line="358"/>
+ <source>Could not create folder %1: %2</source>
+ <translation>Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/fileutils.cpp" line="368"/>
+ <source>Could not open temporary file: %1</source>
+ <translation>Konnte temporäre Datei nicht öffnen. Fehlermeldung: %1</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/fileutils.cpp" line="387"/>
+ <source>Could not open temporary file for template %1: %2</source>
+ <translation>Konnte keine temporäre Datei für die Vorlage %1 öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Exception while loading the component script: %1</source>
- <translation type="obsolete">Ausnahme beim Laden des Komponentenskripts: %1</translation>
+ <location filename="../../libs/installer/binarycontent.cpp" line="103"/>
+ <source>No marker found, stopped after %1.</source>
+ <translation>Keine Markierung gefunden, abgebrochen nach %1.</translation>
</message>
<message>
- <source>Could not open the requested translation file at %1</source>
- <translation type="obsolete">Konnte angeforderte Übersetzungsdatei %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/fileio.cpp" line="110"/>
+ <source>Cannot open file %1 for reading: %2</source>
+ <translation>Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Could not open the requested UI file at %1: %2</source>
- <translation type="obsolete">Konnte angeforderte UI-Datei %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/fileio.cpp" line="119"/>
+ <location filename="../../libs/installer/fileio.cpp" line="128"/>
+ <source>Cannot open file %1 for writing: %2</source>
+ <translation>Konnte Datei %1 nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Could not open the requested license file at %1: %2</source>
- <translation type="obsolete">Konnte angeforderte Lizenzdatei %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/fileio.cpp" line="141"/>
+ <source>Read failed after %1 bytes: %2</source>
+ <translation>Das Lesen ist nach %1 Bytes fehlgeschlagen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="538"/>
+ <location filename="../../libs/installer/fileio.cpp" line="163"/>
+ <source>Copy failed. Error: %1</source>
+ <translation>Kopieren schlug fehl. Fehlermeldung: %1</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/fileio.cpp" line="181"/>
+ <source>Write failed after %1 bytes: %2</source>
+ <translation>Das Schreiben ist nach %1 Bytes fehlgeschlagen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="210"/>
+ <source>Could not create temporary file</source>
+ <translation>Konnte temporäre Datei nicht anlegen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="230"/>
+ <source>Could not retrieve property %1 for item %2</source>
+ <translation>Konnte Eigenschaft %1 von %2 nicht erhalten.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="259"/>
+ <source>Property %1 for item %2 not of type VT_FILETIME but %3</source>
+ <translation>Eigenschaft %1 von %2 ist nicht vom Typ VT_FILETIME, sondern vom Typ %3.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="279"/>
+ <source>Could not convert file time to local time</source>
+ <translation>Konnte die Dateizeit nicht in die lokale Zeit umwandeln.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/lib7z_facade.cpp" line="284"/>
+ <source>Could not convert local file time to system time</source>
+ <translation>Konnte die lokale Dateizeit nicht in die Systemzeit umwandeln.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="725"/>
+ <source>Corrupt installation</source>
+ <translation>Installation beschädigt</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="726"/>
+ <source>Your installation seems to be corrupted. Please consider re-installing from scratch.</source>
+ <translation>Ihre Installation scheint beschädigt zu sein. Komplette Neuinstallation empfohlen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/utils.cpp" line="393"/>
+ <source>The specified module could not be found.</source>
+ <translation>Das angegebene Modul konnte nicht gefunden werden.</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::Component</name>
+ <message>
+ <location filename="../../libs/installer/component.cpp" line="428"/>
+ <source>Components cannot have children in updater mode.</source>
+ <translation>Komponenten können im Updater Modus keine Kinder haben.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/component.cpp" line="555"/>
<source>Could not open the requested translation file &apos;%1&apos;.</source>
<translation>Konnte angeforderte Übersetzungsdatei %1 nicht öffnen.</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="562"/>
+ <location filename="../../libs/installer/component.cpp" line="574"/>
<source>Could not open the requested UI file &apos;%1&apos;. Error: %2</source>
<translation>Konnte angeforderte UI-Datei &apos;%1&apos; nicht öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="571"/>
+ <location filename="../../libs/installer/component.cpp" line="583"/>
<source>Could not load the requested UI file &apos;%1&apos;. Error: %2</source>
<translation>Konnte angeforderte UI-Datei &apos;%1&apos; nicht laden. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="573"/>
- <source>An error has occurred while reading the UI file.</source>
- <translation>Es trat ein Fehler beim Lesen der UI Datei auf.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/component.cpp" line="603"/>
+ <location filename="../../libs/installer/component.cpp" line="611"/>
<source>Could not open the requested license file &apos;%1&apos;. Error: %2</source>
<translation>Konnte angeforderte Lizenzdatei &apos;%1&apos; nicht öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="988"/>
+ <location filename="../../libs/installer/component.cpp" line="991"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="988"/>
+ <location filename="../../libs/installer/component.cpp" line="991"/>
<source>Error: Operation %1 does not exist</source>
<translation>Fehler: Anweisung %1 existiert nicht.</translation>
</message>
<message>
- <location filename="../../libs/installer/component.cpp" line="1207"/>
- <source>Cannot resolve isAutoDependOn in %1</source>
- <translation>Kann isAutoDependOn in %1 nicht auflösen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/component.cpp" line="1257"/>
+ <location filename="../../libs/installer/component.cpp" line="1237"/>
<source>Cannot resolve isDefault in %1</source>
<translation>Kann isDefault in %1 nicht auflösen.</translation>
</message>
<message>
- <source>Can&apos;t resolve isAutoDependOn in %1</source>
- <translation type="obsolete">Kann isAutoDependOn in %1 nicht auflösen.</translation>
- </message>
- <message>
- <source>Can&apos;t resolve isDefault in %1</source>
- <translation type="obsolete">Kann isDefault in %1 nicht auflösen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/component.cpp" line="1422"/>
+ <location filename="../../libs/installer/component.cpp" line="1411"/>
<source>Update Info: </source>
<translation>Aktualisierungsinformation: </translation>
</message>
@@ -997,27 +1098,27 @@
<context>
<name>QInstaller::ComponentModel</name>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2467"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2448"/>
<source>Component Name</source>
<translation>Komponentenname</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2469"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2450"/>
<source>Installed Version</source>
<translation>Installierte Version</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2471"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2452"/>
<source>New Version</source>
<translation>Neue Version</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2473"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2454"/>
<source>Release Date</source>
<translation>Veröffentlichungsdatum</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2475"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2456"/>
<source>Size</source>
<translation>Grösse</translation>
</message>
@@ -1025,76 +1126,76 @@
<context>
<name>QInstaller::ComponentSelectionPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1070"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1445"/>
<source>Alt+A</source>
<comment>select default components</comment>
<translation>Alt+A</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1072"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1447"/>
<source>Def&amp;ault</source>
<translation>St&amp;andard</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1076"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1451"/>
<source>Alt+R</source>
<comment>reset to already installed components</comment>
<translation>Alt+Z</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1078"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1453"/>
<source>&amp;Reset</source>
<translation>&amp;Zurücksetzen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1087"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1462"/>
<source>Alt+S</source>
<comment>select all components</comment>
<translation>Alt+S</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1089"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1464"/>
<source>&amp;Select All</source>
<translation>Alle au&amp;swählen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1095"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1470"/>
<source>Alt+D</source>
<comment>deselect all components</comment>
<translation>Alt+B</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1097"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1472"/>
<source>&amp;Deselect All</source>
<translation>Alle a&amp;bwählen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1153"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1528"/>
<source>This component will occupy approximately %1 on your hard disk drive.</source>
<translation>Diese Komponente wird ungefähr %1 auf Ihrer Festplatte belegen.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1221"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1597"/>
<source>Select Components</source>
<translation>Komponenten auswählen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1232"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1608"/>
<source>Please select the components you want to update.</source>
<translation>Bitte wählen Sie die Komponenten aus, die Sie aktualisieren möchten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1233"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1609"/>
<source>Please select the components you want to install.</source>
<translation>Bitte wählen Sie die Komponenten aus, die Sie installieren möchten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1234"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1610"/>
<source>Please select the components you want to uninstall.</source>
<translation>Bitte wählen Sie die Komponenten aus, die Sie entfernen möchten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1235"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1611"/>
<source>Select the components to install. Deselect installed components to uninstall them.</source>
<translation>Bitte wählen Sie die Komponenten aus, die Sie installieren möchten. Wählen Sie die Komponenten ab, die Sie entfernen möchten.</translation>
</message>
@@ -1102,32 +1203,32 @@
<context>
<name>QInstaller::ConsumeOutputOperation</name>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="71"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="64"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="72"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="65"/>
<source>at least 2</source>
<translation>mindestens 2</translation>
</message>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="80"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="73"/>
<source>Needed installer object in %1 operation is empty.</source>
<translation>Das für die Anweisung %1 benötigte Installerobjekt ist leer.</translation>
</message>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="87"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="80"/>
<source>Can not save the output of %1 to an empty installer key value.</source>
<translation>Konnte die Ausgabe von %1 nicht in einen leeren Schlüsselwert des Installers speichern.</translation>
</message>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="101"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="94"/>
<source>File &apos;%1&apos; does not exist or is not an executable binary.</source>
<translation>Datei &apos;%1&apos; existiert nicht oder ist keine ausführbare Binärdatei.</translation>
</message>
<message>
- <location filename="../../libs/installer/consumeoutputoperation.cpp" line="122"/>
+ <location filename="../../libs/installer/consumeoutputoperation.cpp" line="115"/>
<source>Running &apos;%1&apos; resulted in a crash.</source>
<translation>Ausführen von &apos;%1&apos; führte zu einem Absturz.</translation>
</message>
@@ -1135,70 +1236,98 @@
<context>
<name>QInstaller::CopyDirectoryOperation</name>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="80"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="70"/>
<source>2 or 3</source>
<translation>2 oder 3</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="79"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="69"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="80"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="70"/>
<source> (&lt;source&gt; &lt;target&gt; [forceOverwrite])</source>
<translation> (&lt;Quelle&gt; &lt;Ziel&gt; [forceOverwrite])</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="93"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="83"/>
<source>Invalid argument in %0: Third argument needs to be forceOverwrite, if specified</source>
<translation>Ungültiges Argument in %0: Drittes Argument muss forceOverwrite sein, wenn es angegeben wird</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="103"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="93"/>
<source>Invalid arguments in %0: Directories are invalid: %1 %2</source>
<translation>Ungültige Argumentein %0: Ordner %1 und %2 ungültig.</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="136"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="126"/>
<source>Could not create %0</source>
<translation>Konnte Ordner &quot;%1&quot; nicht anlegen.</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="143"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="133"/>
<source>Failed to overwrite %1</source>
<translation>Konnte Datei %1 nicht überschreiben</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="149"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="139"/>
<source>Could not copy %0 to %1, error was: %3</source>
<translation>Konnte %0 nicht nach %1 kopieren. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/installer/copydirectoryoperation.cpp" line="170"/>
+ <location filename="../../libs/installer/copydirectoryoperation.cpp" line="160"/>
<source>Could not remove %0</source>
<translation>Konnte Datei %0 nicht löschen.</translation>
</message>
</context>
<context>
+ <name>QInstaller::CopyFileTask</name>
+ <message>
+ <location filename="../../libs/installer/copyfiletask.cpp" line="63"/>
+ <source>Invalid task item count.</source>
+ <translation>Ungültige Anzahl task items.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/copyfiletask.cpp" line="72"/>
+ <source>Could not open source &apos;%1&apos; for read. Error: %2.</source>
+ <translation>Konnte Quelle &apos;%1&apos; nicht zum Lesen öffnen. Fehlermeldung: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/copyfiletask.cpp" line="88"/>
+ <source>Could not open target &apos;%1&apos; for write. Error: %2.</source>
+ <translation>Konnte Ziel &apos;%1&apos; nicht zum Schreiben öffnen. Fehlermeldung: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/copyfiletask.cpp" line="105"/>
+ <source>Writing to target &apos;%1&apos; failed. Error: %2.</source>
+ <translation>Konnte Datei &apos;%1&apos; nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
+ </message>
+</context>
+<context>
<name>QInstaller::CreateDesktopEntryOperation</name>
<message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="145"/>
+ <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="125"/>
+ <source>Could not backup file %1: %2</source>
+ <translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="133"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="146"/>
+ <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="134"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
<message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="155"/>
+ <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="144"/>
<source>Failed to overwrite %1</source>
<translation>Konnte Datei %1 nicht überschreiben.</translation>
</message>
<message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="162"/>
+ <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="150"/>
<source>Could not write Desktop Entry at %1</source>
<translation>Konnte keinen Eintrag %1 auf dem Arbeitsplatz anlegen.</translation>
</message>
@@ -1206,50 +1335,65 @@
<context>
<name>QInstaller::CreateLinkOperation</name>
<message>
- <location filename="../../libs/installer/createlinkoperation.cpp" line="68"/>
+ <location filename="../../libs/installer/createlinkoperation.cpp" line="57"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlinkoperation.cpp" line="69"/>
+ <location filename="../../libs/installer/createlinkoperation.cpp" line="58"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
+ <message>
+ <location filename="../../libs/installer/createlinkoperation.cpp" line="68"/>
+ <source>Could not create link from %1 to %2.</source>
+ <translation>Konnte keinen Link von %1 nach %2 erstellen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/createlinkoperation.cpp" line="88"/>
+ <source>Could not remove link from %1 to %2.</source>
+ <translation>Konnte Link von %1 nach %2 nicht entfernen.</translation>
+ </message>
</context>
<context>
<name>QInstaller::CreateLocalRepositoryOperation</name>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="94"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="91"/>
<source>Could not set file permissions %1!</source>
<translation>Konnte Dateirechte auf Datei %1 nicht setzen!</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="131"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="112"/>
+ <source>Could not remove file %1: %2</source>
+ <translation>Konnte Datei %1 nicht löschen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="130"/>
<source>Could not move file %1 to %2. Error: %3</source>
<translation>Konnte Datei %1 nicht nach %2 verschieben. Fehlermeldung: %3</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="160"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="159"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="161"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="160"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="173"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="172"/>
<source>Installer needs to be an offline version: %1.</source>
<translation>Installer muss eine offline Version sein: %1.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="216"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="215"/>
<source>Could not open file: %1</source>
<translation>Konnte Datei %1 nicht öffnen.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="222"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="221"/>
<source>Could not read: %1. Error: %2</source>
<translation>Konnte Datei %1 nicht lesen. Fehlermeldung: %2</translation>
</message>
@@ -1259,28 +1403,28 @@
<translation>Konnte Datei %1 nicht öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="309"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="269"/>
<source>Could not create target dir: %1.</source>
<translation>Konnte Zielordner %1. nicht anlegen.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="338"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="322"/>
<source>Unknown exception caught: %1.</source>
<translation>Unbekannte Ausnahmebedingung: %1</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="354"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="338"/>
<source>Removing file: %0</source>
<translation>Entferne Datei %0</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="357"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="341"/>
<source>Could not remove %0.</source>
<translation>Konnte Datei %0. nicht löschen.</translation>
</message>
<message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="376"/>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="380"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="360"/>
+ <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="364"/>
<source>Cannot remove directory %1: %2</source>
<translation>Konnte Ordner %1 nicht löschen. Fehlermeldung: %2</translation>
</message>
@@ -1288,32 +1432,33 @@
<context>
<name>QInstaller::CreateShortcutOperation</name>
<message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="197"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="190"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="198"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="191"/>
<source>2 or 3</source>
<translation>2 oder 3</translation>
</message>
<message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="199"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="192"/>
<source> (optional: &apos;workingDirectory=...&apos;, &apos;iconPath=...&apos;, &apos;iconId=...&apos;)</source>
<translation> (optional: &apos;workingDirectory=...&apos;, &apos;iconPath=...&apos;, &apos;iconId=...&apos;)</translation>
</message>
<message>
- <source> (optional: &apos;workingDirectory=...&apos;)</source>
- <translation type="obsolete"> (optional: &apos;workingDirectory=...&apos;)</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="215"/>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="219"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="208"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="212"/>
<source>Could not create folder %1: %2.</source>
<translation>Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="237"/>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="222"/>
+ <source>Failed to overwrite %1: %2</source>
+ <translation>Konnte Datei %1 nicht überschreiben. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/createshortcutoperation.cpp" line="230"/>
<source>Could not create link %1: %2</source>
<translation>Konnte Verweis %1 nicht anlegen. Fehlermeldung: %2</translation>
</message>
@@ -1321,101 +1466,148 @@
<context>
<name>QInstaller::DownloadArchivesJob</name>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="117"/>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="164"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="110"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="156"/>
<source>Canceled</source>
<translation>Abgebrochen</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="153"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="146"/>
<source>Downloading hash signature failed.</source>
<translation>Herunterladen der Prüfsumme fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="227"/>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="266"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="219"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="254"/>
<source>Download Error</source>
<translation>Fehler beim Herunterladen</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="227"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="219"/>
<source>Hash verification while downloading failed. This is a temporary error, please retry.</source>
<translation>Prüfsumme ungültig beim Herunterladen. Dies ist ein kurzzeitiger Fehler, bitte erneut versuchen.</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="232"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="224"/>
<source>Could not verify Hash</source>
<translation>Prüfsumme konnte nicht geprüft werden.</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="266"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="254"/>
<source>Could not download archive: %1 : %2</source>
<translation>Konnte Archiv %1 nicht herunterladen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="278"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="266"/>
<source>Could not fetch archives: %1
Error while loading %2</source>
<translation>Konnte Archiv nicht laden. Fehler: %1
Fehler beim Laden von %2</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="317"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="305"/>
<source>Downloading archive &apos;%1&apos; for component: %2</source>
<translation>Archiv &apos;%1&apos; für Komponente %2 wird heruntergeladen.</translation>
</message>
<message>
- <source>Downloading archive hash for component: %1</source>
- <translation type="vanished">Prüfsumme für Komponente %1 wird heruntergeladen.</translation>
- </message>
- <message>
- <source>Downloading archive for component: %1</source>
- <translation type="vanished">Archiv für Komponente %1 wird heruntergeladen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="320"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="308"/>
<source>Scheme not supported: %1 (%2)</source>
<translation>Schema &quot;%1&quot; nicht unterstützt in &quot;%2&quot;.</translation>
</message>
<message>
- <location filename="../../libs/installer/downloadarchivesjob.cpp" line="323"/>
+ <location filename="../../libs/installer/downloadarchivesjob.cpp" line="311"/>
<source>Could not find component for: %1.</source>
<translation>Konnte keine Komponente für Datei %1 finden.</translation>
</message>
</context>
<context>
+ <name>QInstaller::Downloader</name>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="126"/>
+ <source>Target &apos;%1&apos; not open for write. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error.</extracomment>
+ <translation>Ziel &apos;%1&apos; nicht zum Schreiben geöffnet. Fehlermeldung: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="145"/>
+ <source>Writing to target &apos;%1&apos; failed. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error.</extracomment>
+ <translation>Schreiben in Datei &apos;%1&apos; fehlgeschlagen. Fehlermeldung: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="194"/>
+ <source>Redirect loop detected &apos;%1&apos;.</source>
+ <translation>Schleife in Umleitung erkannt &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="211"/>
+ <source>Checksum mismatch detected &apos;%1&apos;.</source>
+ <translation>Checksumme stimmt nicht überein &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="245"/>
+ <source>Network error while downloading &apos;%1&apos;: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>Netzwerkfehler beim Herunterladen von &apos;%1&apos;: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="250"/>
+ <source>Unknown network error while downloading: %1.</source>
+ <extracomment>%1 is a sentence describing the error</extracomment>
+ <translation>Unbekannter Netzwerkfehler beim Herunterladen: &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="315"/>
+ <source>Pause and resume not supported by network transfers.</source>
+ <translation>Pause und Fortsetzen werden bei Netzwerkübertragungen nicht unterstützt.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="325"/>
+ <source>Invalid source &apos;%1&apos;. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>Ungültige Quelle &apos;%1&apos;. Fehler: %2.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="342"/>
+ <source>Target file &apos;%1&apos; already exists but is not a file.</source>
+ <translation>Zieldatei &apos;%1&apos; existiert bereits aber ist keine Datei.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/downloadfiletask.cpp" line="350"/>
+ <source>Could not open target &apos;%1&apos; for write. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>Konnte Ziel &apos;%1&apos; nicht zum Schreiben öffnen. Fehler: %2.</translation>
+ </message>
+</context>
+<context>
<name>QInstaller::ElevatedExecuteOperation</name>
<message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="92"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="85"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="93"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="86"/>
<source>at least 1</source>
<translation>mindestens 1</translation>
</message>
<message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="155"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="148"/>
<source>Execution failed: Could not start detached: &quot;%1&quot;</source>
<translation>Ausführung fehlgeschlagen: Konnte %1 nicht detached starten.</translation>
</message>
<message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="207"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="200"/>
<source>Execution failed: Could not start: &quot;%1&quot;(%2)</source>
<translation>Ausführung fehlgeschlagen: Konnte &apos;%1&apos; nicht starten. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Execution failed: Could not start: &quot;%1&quot;</source>
- <translation type="obsolete">Ausführung fehlgeschlagen: Konnte %1 nicht starten.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="223"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="216"/>
<source>Execution failed(Crash): &quot;%1&quot;</source>
<translation>Ausführung fehlgeschlagen (Absturz): &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="230"/>
+ <location filename="../../libs/installer/elevatedexecuteoperation.cpp" line="223"/>
<source>Execution failed(Unexpected exit code: %1): &quot;%2&quot;</source>
<translation>Ausführung fehlgeschlagen (Unerwarteter Fehlercode %1): &quot;%2&quot;</translation>
</message>
@@ -1423,29 +1615,25 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::EnvironmentVariableOperation</name>
<message>
- <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="138"/>
+ <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="127"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="139"/>
+ <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="128"/>
<source>2 to 4</source>
<translation>2 bis 4</translation>
</message>
- <message>
- <source>2 or 3</source>
- <translation type="obsolete">2 oder 3</translation>
- </message>
</context>
<context>
<name>QInstaller::ExtractArchiveOperation</name>
<message>
- <location filename="../../libs/installer/extractarchiveoperation.cpp" line="67"/>
+ <location filename="../../libs/installer/extractarchiveoperation.cpp" line="60"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/extractarchiveoperation.cpp" line="68"/>
+ <location filename="../../libs/installer/extractarchiveoperation.cpp" line="61"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
@@ -1453,25 +1641,17 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::ExtractArchiveOperation::Runnable</name>
<message>
- <location filename="../../libs/installer/extractarchiveoperation_p.h" line="193"/>
+ <location filename="../../libs/installer/extractarchiveoperation_p.h" line="186"/>
<source>Could not open %1 for reading: %2.</source>
<translation>Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/extractarchiveoperation_p.h" line="201"/>
+ <location filename="../../libs/installer/extractarchiveoperation_p.h" line="194"/>
<source>Error while extracting &apos;%1&apos;: %2</source>
<translation>Fehler beim Auspacken von &apos;%1&apos;. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Error while extracting %1: %2. (Maybe the target dir(%3) is blocked by another process.)</source>
- <translation type="obsolete">Fehler beim Auspacken von %1. Fehlermeldung: %2 (Eventuell ist das Zielverzeichnis &quot;%3&quot; durch einen anderen Prozess blockiert.)</translation>
- </message>
- <message>
- <source>Error while extracting %1: %2.</source>
- <translation type="obsolete">Fehler beim Auspacken von %1. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/extractarchiveoperation_p.h" line="203"/>
+ <location filename="../../libs/installer/extractarchiveoperation_p.h" line="196"/>
<source>Unknown exception caught while extracting %1.</source>
<translation>Beim Auspacken von %1 trat eine unbekannte Ausnahmebedingung auf.</translation>
</message>
@@ -1479,83 +1659,82 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::FakeStopProcessForUpdateOperation</name>
<message>
- <source>These processes should be stopped to continue:
-
-%1</source>
- <translation type="obsolete">Diese Prozesse sollten beendet werden, um fortsetzen zu können:
-
-%1</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::FileTaskObserver</name>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="78"/>
- <source> of </source>
- <translation> von </translation>
- </message>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="81"/>
- <source> received.</source>
- <translation> empfangen.</translation>
+ <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="61"/>
+ <source>Number of arguments does not match: one is required</source>
+ <translation>Unpassende Anzahl Argumente: Genau eins wird verlangt</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="84"/>
- <source>/sec</source>
- <translation>/s</translation>
+ <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="68"/>
+ <source>Could not get package manager core.</source>
+ <translation>Konnte PackageManagerCore nicht erhalten.</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="96"/>
- <source> day</source>
- <translation> Tag</translation>
+ <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="83"/>
+ <source>This process should be stopped before continuing: %1</source>
+ <translation>Dieser Prozess sollte beendet werden, um fortsetzen zu können: %1</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="96"/>
- <source> days</source>
- <translation> Tage</translation>
+ <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="87"/>
+ <source>These processes should be stopped before continuing: %1</source>
+ <translation>Diese Prozesse sollten beendet werden, um fortsetzen zu können: %1</translation>
</message>
+</context>
+<context>
+ <name>QInstaller::FileTaskObserver</name>
<message>
- <location filename="../../libs/installer/observer.cpp" line="100"/>
- <source> hour</source>
- <translation> Stunde</translation>
+ <location filename="../../libs/installer/observer.cpp" line="71"/>
+ <source>%1 of %2</source>
+ <translation>%1 von %2</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="100"/>
- <source> hours</source>
- <translation> Stunden</translation>
+ <location filename="../../libs/installer/observer.cpp" line="74"/>
+ <source>%1 received.</source>
+ <translation>%1 empfangen.</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="104"/>
- <source> minute</source>
- <translation> Minute</translation>
+ <location filename="../../libs/installer/observer.cpp" line="79"/>
+ <source>(%1/sec)</source>
+ <translation>(%1/s)</translation>
</message>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="104"/>
- <source> minutes</source>
- <translation> Minuten</translation>
+ <message numerus="yes">
+ <location filename="../../libs/installer/observer.cpp" line="90"/>
+ <source>%n day(s), </source>
+ <translation>
+ <numerusform>%n Tag, </numerusform>
+ <numerusform>%n Tage, </numerusform>
+ </translation>
</message>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="109"/>
- <source> second</source>
- <translation> Sekunde</translation>
+ <message numerus="yes">
+ <location filename="../../libs/installer/observer.cpp" line="94"/>
+ <source>%n hour(s), </source>
+ <translation>
+ <numerusform>%n Stunde, </numerusform>
+ <numerusform>%n Stunden, </numerusform>
+ </translation>
</message>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="109"/>
- <source> seconds</source>
- <translation> Sekunden</translation>
+ <message numerus="yes">
+ <location filename="../../libs/installer/observer.cpp" line="98"/>
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n Minute</numerusform>
+ <numerusform>%n Minuten</numerusform>
+ </translation>
</message>
- <message>
- <location filename="../../libs/installer/observer.cpp" line="111"/>
- <source> - </source>
- <translation> - </translation>
+ <message numerus="yes">
+ <location filename="../../libs/installer/observer.cpp" line="103"/>
+ <source>%n second(s)</source>
+ <translation>
+ <numerusform>%n Sekunde</numerusform>
+ <numerusform>%n Sekunden</numerusform>
+ </translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="111"/>
- <source> remaining.</source>
- <translation> verbleibend.</translation>
+ <location filename="../../libs/installer/observer.cpp" line="105"/>
+ <source> - %1%2%3%4 remaining.</source>
+ <translation> - %1%2%3%4 verbleibend.</translation>
</message>
<message>
- <location filename="../../libs/installer/observer.cpp" line="113"/>
+ <location filename="../../libs/installer/observer.cpp" line="107"/>
<source> - unknown time remaining.</source>
<translation> - verbleibende Zeit unbekannt.</translation>
</message>
@@ -1563,226 +1742,201 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::FinishedPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1880"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2344"/>
<source>Completing the %1 Wizard</source>
<translation>Beende den %1 Assistenten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1887"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2351"/>
<source>Click Done to exit the %1 Wizard.</source>
<translation>Klicken Sie &quot;Abschließen&quot;, um den %1 Assistenten zu beenden.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1889"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2353"/>
<source>Click Finish to exit the %1 Wizard.</source>
<translation>Klicken Sie &quot;Abschließen&quot;, um den %1 Assistenten zu beenden.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1927"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2392"/>
<source>Restart</source>
<translation>Neu starten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1954"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2424"/>
<source>Run %1 now.</source>
<translation>Starte jetzt %1.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1959"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2429"/>
<source>The %1 Wizard failed.</source>
<translation>Der %1 Assistent ist fehlgeschlagen.</translation>
</message>
</context>
<context>
- <name>QInstaller::GetRepositoryMetaInfoJob</name>
- <message>
- <source>Empty repository URL.</source>
- <translation type="vanished">Leere Quelladresse.</translation>
- </message>
- <message>
- <source>Retrieving component meta information...</source>
- <translation type="vanished">Empfange Komponentenmetainformationen...</translation>
- </message>
- <message>
- <source>Invalid repository URL: %1</source>
- <translation type="vanished">Ungültige Quelladresse: %1</translation>
- </message>
- <message>
- <source>URL scheme not supported: %1 (%2)</source>
- <translation type="vanished">Adressschema &quot;%1&quot; nicht unterstützt in Adresse &quot;%2&quot;.</translation>
- </message>
- <message>
- <source>Could not move Updates.xml to target location. Error: %1</source>
- <translation type="vanished">Konnte Updates.xml nicht an die Zieladresse verschieben. Fehlermeldung: %1</translation>
- </message>
+ <name>QInstaller::GlobalSettingsOperation</name>
<message>
- <source>Could not open Updates.xml for reading. Error: %1</source>
- <translation type="vanished">Konnte Updates.xml nicht zum Lesen öffnen. Fehlermeldung: %1</translation>
+ <location filename="../../libs/installer/globalsettingsoperation.cpp" line="58"/>
+ <source>Settings are not writable</source>
+ <translation>Einstellungen konnten nicht geschrieben werden.</translation>
</message>
<message>
- <source>Could not fetch a valid version of Updates.xml from repository: %1. Error: %2</source>
- <translation type="vanished">Konnte keine gültige Version der Updates.xml aus der Quelle %1 herunterladen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/globalsettingsoperation.cpp" line="68"/>
+ <source>Failed to write settings</source>
+ <translation>Einstellungen konnten nicht geschrieben werden.</translation>
</message>
<message>
- <source>Download Error</source>
- <translation type="vanished">Fehler beim Herunterladen</translation>
+ <location filename="../../libs/installer/globalsettingsoperation.cpp" line="110"/>
+ <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
+ <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <source>Parsing component meta information...</source>
- <translation type="vanished">Einlesen der Metainformationen...</translation>
+ <location filename="../../libs/installer/globalsettingsoperation.cpp" line="111"/>
+ <source>3, 4 or 5</source>
+ <translation>3, 4 oder 5</translation>
</message>
+</context>
+<context>
+ <name>QInstaller::InstallIconsOperation</name>
<message>
- <source>Repository updates received.</source>
- <translation type="vanished">Quellenaktualisierung erhalten.</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="115"/>
+ <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
+ <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <source>Finished updating component meta information.</source>
- <translation type="vanished">Das Aktualisieren der Komponentenmetainformationen ist beendet.</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="116"/>
+ <source>1 or 2</source>
+ <translation>1 oder 2</translation>
</message>
<message>
- <source>Could not fetch Updates.xml from repository: %1. Error: %2</source>
- <translation type="vanished">Konnte keine Updates.xml aus der Quelle %1 herunterladen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="116"/>
+ <source> (Sourcepath, [Vendorprefix])</source>
+ <translation> (Quellpfad, [Vendorprefix])</translation>
</message>
<message>
- <source>Could not open meta info archive: %1. Error: %2</source>
- <translation type="vanished">Konnte Archiv mit Metainformationen %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="125"/>
+ <source>Invalid Argument: source folder must not be empty.</source>
+ <translation>Ungültiges Argument: Quellordner darf nicht leer sein.</translation>
</message>
<message>
- <source>Could not download meta information for component: %1. Error: %2</source>
- <translation type="vanished">Konnte Metainformationen der Komponente %1 nicht herunterladen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="174"/>
+ <source>Could not backup file %1: %2</source>
+ <translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Retrieving component information from remote repository...</source>
- <translation type="vanished">Empfange Komponenten Informationen aus der Quelle...</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="187"/>
+ <source>Failed to overwrite %1: %2</source>
+ <translation>Konnte Datei %1 nicht überschreiben. Fehlermeldung: %2</translation>
</message>
<message>
- <source>Bad hash.</source>
- <translation type="vanished">Ungültige Prüfsumme.</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="198"/>
+ <source>Failed to copy file %1: %2</source>
+ <translation>Konnte Datei nicht nach %1 kopieren. Fehlermeldung: %2</translation>
</message>
<message>
- <source>The hash of one component does not match the expected one.</source>
- <translation type="vanished">Die Prüfsumme einer Komponente entsprach nicht der erwateten.</translation>
+ <location filename="../../libs/installer/installiconsoperation.cpp" line="208"/>
+ <source>Could not create folder at %1: %2</source>
+ <translation>Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
</message>
</context>
<context>
- <name>QInstaller::GetRepositoryMetaInfoJob::ZipRunnable</name>
- <message>
- <source>Error while extracting %1. Error: %2</source>
- <translation type="obsolete">Fehler beim Auspacken von %1. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Error while extracting &apos;%1&apos;: %2</source>
- <translation type="vanished">Fehler beim Auspacken von &apos;%1&apos;. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Unknown exception caught while extracting %1.</source>
- <translation type="vanished">Beim Auspacken von %1 trat eine unbekannte Ausnahmebedingung auf.</translation>
- </message>
+ <name>QInstaller::IntroductionPage</name>
<message>
- <source>Could not open %1 for reading. Error: %2</source>
- <translation type="vanished">Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="908"/>
+ <source>Setup - %1</source>
+ <translation>Einrichten - %1</translation>
</message>
-</context>
-<context>
- <name>QInstaller::GlobalSettingsOperation</name>
<message>
- <location filename="../../libs/installer/globalsettingsoperation.cpp" line="65"/>
- <source>Settings are not writable</source>
- <translation>Einstellungen konnten nicht geschrieben werden.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="916"/>
+ <source>Welcome to the %1 Setup Wizard.</source>
+ <translation>Willkommen zum %1 Einrichtungsassistenten.</translation>
</message>
<message>
- <location filename="../../libs/installer/globalsettingsoperation.cpp" line="75"/>
- <source>Failed to write settings</source>
- <translation>Einstellungen konnten nicht geschrieben werden.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="921"/>
+ <source>Add or remove components</source>
+ <translation>Komponenten hinzufügen oder entfernen</translation>
</message>
<message>
- <location filename="../../libs/installer/globalsettingsoperation.cpp" line="117"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="927"/>
+ <source>Update components</source>
+ <translation>Komponenten aktualisieren</translation>
</message>
<message>
- <location filename="../../libs/installer/globalsettingsoperation.cpp" line="118"/>
- <source>3 or 4</source>
- <translation>3 oder 4</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="933"/>
+ <source>Remove all components</source>
+ <translation>Alle Komponenten entfernen</translation>
</message>
-</context>
-<context>
- <name>QInstaller::InstallIconsOperation</name>
<message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="137"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="945"/>
+ <source>Retrieving information from remote installation sources...</source>
+ <translation>Empfange Daten vom Installationsserver...</translation>
</message>
<message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="138"/>
- <source>1 or 2</source>
- <translation>1 oder 2</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="997"/>
+ <source>At least one valid and enabled repository required for this action to succeed.</source>
+ <translation>Mindestens ein gültiges und aktiviertes Repository wird benötigt, um diese Aktion erfolgreich abzuschliessen.</translation>
</message>
<message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="138"/>
- <source> (Sourcepath, [Vendorprefix])</source>
- <translation> (Quellpfad, [Vendorprefix])</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1032"/>
+ <source>No updates available.</source>
+ <translation>Keine Aktualisierungen verfügbar.</translation>
</message>
-</context>
-<context>
- <name>QInstaller::IntroductionPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="831"/>
- <source>Setup - %1</source>
- <translation>Einrichten - %1</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1051"/>
+ <source> Only local package management available.</source>
+ <translation> Nur lokale Paketverwaltung verfügbar.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="836"/>
- <source>Welcome to the %1 Setup Wizard.</source>
- <translation>Willkommen zum %1 Einrichtungsassistenten.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1202"/>
+ <source>Quit</source>
+ <translation>Beenden</translation>
</message>
</context>
<context>
<name>QInstaller::LicenseAgreementPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="894"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1269"/>
<source>License Agreement</source>
<translation>Lizenzabkommen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="918"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1293"/>
<source>Alt+A</source>
<comment>agree license</comment>
<translatorcomment>Lizenz akzeptieren</translatorcomment>
<translation>Alt+A</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1003"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1378"/>
<source>Please read the following license agreement. You must accept the terms contained in this agreement before continuing with the installation.</source>
<translation>Bitte lesen Sie das folgende Lizenzabkommen. Sie müssen die Bedingungen in diesem Abkommen akzeptieren, um die Installation fortsetzen zu können.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1005"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1380"/>
<source>I accept the license.</source>
<translation>Ich akzeptiere die Lizenzvereinbarung.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1006"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1381"/>
<source>I do not accept the license.</source>
<translation>Ich akzeptiere die Lizenzvereinbarung nicht.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1008"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1383"/>
<source>Please read the following license agreements. You must accept the terms contained in these agreements before continuing with the installation.</source>
<translation>Bitte lesen Sie die folgenden Lizenzabkommen. Sie müssen die Bedingungen in diesen Abkommen akzeptieren, um die Installation fortsetzen zu können.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1011"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1386"/>
<source>I do not accept the licenses.</source>
<translation>Ich akzeptiere die Lizenzvereinbarungen nicht.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1010"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1385"/>
<source>I accept the licenses.</source>
<translation>Ich akzeptiere die Lizenzvereinbarungen.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="931"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1306"/>
<source>Alt+D</source>
<comment>do not agree license</comment>
<translatorcomment>Der Lizenz nicht zustimmen</translatorcomment>
@@ -1792,22 +1946,22 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::LicenseOperation</name>
<message>
- <location filename="../../libs/installer/licenseoperation.cpp" line="67"/>
+ <location filename="../../libs/installer/licenseoperation.cpp" line="60"/>
<source>No license files found to copy.</source>
<translation>Keine Lizenzdateien zum Kopieren gefunden.</translation>
</message>
<message>
- <location filename="../../libs/installer/licenseoperation.cpp" line="74"/>
+ <location filename="../../libs/installer/licenseoperation.cpp" line="67"/>
<source>Needed installer object in %1 operation is empty.</source>
<translation>Das für die Anweisung %1 benötigte Installerobjekt ist leer.</translation>
</message>
<message>
- <location filename="../../libs/installer/licenseoperation.cpp" line="89"/>
+ <location filename="../../libs/installer/licenseoperation.cpp" line="82"/>
<source>Can not write license file: %1.</source>
<translation>Konnte Lizenzdatei %1 nicht schreiben.</translation>
</message>
<message>
- <location filename="../../libs/installer/licenseoperation.cpp" line="106"/>
+ <location filename="../../libs/installer/licenseoperation.cpp" line="99"/>
<source>No license files found to delete.</source>
<translation>Keine Lizenzdateien zum Löschen gefunden.</translation>
</message>
@@ -1815,111 +1969,91 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::LineReplaceOperation</name>
<message>
- <location filename="../../libs/installer/linereplaceoperation.cpp" line="69"/>
+ <location filename="../../libs/installer/linereplaceoperation.cpp" line="62"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/linereplaceoperation.cpp" line="70"/>
+ <location filename="../../libs/installer/linereplaceoperation.cpp" line="63"/>
<source>exactly 3</source>
<translation>genau 3</translation>
</message>
-</context>
-<context>
- <name>QInstaller::MacReplaceInstallNamesOperation</name>
<message>
- <location filename="../../libs/installer/macreplaceinstallnamesoperation.cpp" line="73"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/macreplaceinstallnamesoperation.cpp" line="74"/>
- <source>at least 3</source>
- <translation>mindestens 3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/macreplaceinstallnamesoperation.cpp" line="83"/>
- <source>One of the given arguments is empty. Argument1=%1; Argument2=%2, Argument3=%3</source>
- <translation>Eines der Argumente ist leer. Argument1=%1, Argument2=%2, Argument3=%3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/macreplaceinstallnamesoperation.cpp" line="151"/>
- <source>Cannot run otool. Is Xcode installed?</source>
- <translation>Konnte otool nicht aufrufen. Ist Xcode installiert?</translation>
- </message>
- <message>
- <source>Cannot invoke otool. Is Xcode installed?</source>
- <translation type="vanished">Konnte otool nicht aufrufen. Ist Xcode installiert?</translation>
- </message>
- <message>
- <location filename="../../libs/installer/macreplaceinstallnamesoperation.cpp" line="233"/>
- <source>Cannot start process %0.</source>
- <translation>Konnte Prozess %0 nicht starten.</translation>
- </message>
- <message>
- <source>Can&apos;t invoke otool. Is Xcode installed?</source>
- <translation type="obsolete">Konnte otool nicht aufrufen. Ist Xcode installiert?</translation>
+ <location filename="../../libs/installer/linereplaceoperation.cpp" line="73"/>
+ <source>Failed to open &apos;%1&apos; for reading.</source>
+ <translation>Konnte Datei &apos;%1&apos; nicht zum Lesen öffnen.</translation>
</message>
<message>
- <source>Can&apos;t start process %0.</source>
- <translation type="obsolete">Konnte Prozess %0 nicht starten.</translation>
+ <location filename="../../libs/installer/linereplaceoperation.cpp" line="90"/>
+ <source>Failed to open &apos;%1&apos; for writing.</source>
+ <translation>Konnte Datei &apos;%1&apos; nicht zum Schreiben öffnen.</translation>
</message>
</context>
<context>
<name>QInstaller::MetadataJob</name>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="79"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="75"/>
<source>Missing package manager core engine.</source>
<translation>Fehlende Paketmanager Kernkomponente.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="83"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="79"/>
<source>Preparing meta information download...</source>
<translation>Bereite Herunterladen der Metainformationen vor...</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="113"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="112"/>
<source>Meta data download canceled.</source>
<translation>Herunterladen der Metainformationen abgebrochen.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="130"/>
- <location filename="../../libs/installer/metadatajob.cpp" line="210"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="137"/>
+ <source>Missing proxy credentials.</source>
+ <translation>Fehlende Proxy Zugangsdaten.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/metadatajob.cpp" line="168"/>
+ <source>Authentication failed.</source>
+ <translation>Authentifizierung fehlgeschlagen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/metadatajob.cpp" line="179"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="261"/>
<source>Unknown exception during download.</source>
<translation>Beim Herunterladen trat eine unbekannte Ausnahmebedingung auf.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="141"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="190"/>
<source>Retrieving meta information from remote repository...</source>
<translation>Empfange Metainformationen vom Installationsserver...</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="146"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="195"/>
<source>Failure to fetch repositories.</source>
<translation>Herunterladen von Paketquellen fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="163"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="212"/>
<source>Unknown exception during extracting.</source>
<translation>Beim Auspacken trat eine unbekannte Ausnahmebedingung auf.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob.cpp" line="188"/>
+ <location filename="../../libs/installer/metadatajob.cpp" line="239"/>
<source>Extracting meta information...</source>
<translation>Packe Metainformationen aus...</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob_p.h" line="99"/>
+ <location filename="../../libs/installer/metadatajob_p.h" line="85"/>
<source>Error while extracting &apos;%1&apos;: %2</source>
<translation>Fehler beim Auspacken von &apos;%1&apos;. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob_p.h" line="102"/>
+ <location filename="../../libs/installer/metadatajob_p.h" line="88"/>
<source>Unknown exception caught while extracting %1.</source>
<translation>Beim Auspacken von %1 trat eine unbekannte Ausnahmebedingung auf.</translation>
</message>
<message>
- <location filename="../../libs/installer/metadatajob_p.h" line="106"/>
+ <location filename="../../libs/installer/metadatajob_p.h" line="92"/>
<source>Could not open %1 for reading. Error: %2</source>
<translation>Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
</message>
@@ -1927,79 +2061,84 @@ Fehler beim Laden von %2</translation>
<context>
<name>QInstaller::PackageManagerCore</name>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="433"/>
- <source>Error writing Uninstaller</source>
- <translation>Fehler beim Schreiben des Deinstallers</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="601"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="533"/>
<source>
Downloading packages...</source>
<translation>
Lade Pakete herunter...</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="624"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="556"/>
<source>Installation canceled by user</source>
<translation>Installation durch den Nutzer abgebrochen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="626"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="558"/>
<source>All downloads finished.</source>
<translation>Alle Herunterladeprozesse abgeschlossen.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2406"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2387"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="648"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="580"/>
<source>Cancelling the Installer</source>
<translation>Breche den Installationsvorgang ab</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="704"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="365"/>
+ <source>Error writing Maintenance Tool</source>
+ <translation>Fehler beim Schreiben des Verwaltungswerkzeugs</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="642"/>
<source>Authentication Error</source>
<translation>Autentifizierungsfehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="704"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="642"/>
<source>Some components could not be removed completely because admin rights could not be acquired: %1.</source>
<translation>Einige Komponenten konnten nicht vollständig entfernt werden, weil die nötigen Systemverwalterrechte nicht erlangt werden konnten. Fehlermeldung: %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="709"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="647"/>
<source>Unknown error.</source>
<translation>Unbekannter Fehler.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="709"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="647"/>
<source>Some components could not be removed completely because an unknown error happened.</source>
<translation>Einige Komponenten konnten nicht vollständig entfernt werden, weil ein unbekannter Fehler auftrat.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="837"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="812"/>
<source>Application not running in Package Manager mode!</source>
<translation>Die Anwendung ist nicht im Paketverwaltermodus!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="844"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="819"/>
<source>No installed packages found.</source>
<translation>Keine installierten Pakete gefunden.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="921"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="896"/>
<source>Application running in Uninstaller mode!</source>
<translation>Die Anwendung befindet sich im Deinstallierermodus!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="972"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="947"/>
<source>There is an important update available, please run the updater first.</source>
<translation>Es gibt eine wichtige Aktualisierung, bitte zuerst den Updater starten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="2437"/>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="1409"/>
+ <source>Error while elevating access rights.</source>
+ <translation>Fehler beim Erlangen von Administratorrechten.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore.cpp" line="2418"/>
<source>invalid</source>
<translation>ungültig</translation>
</message>
@@ -2007,56 +2146,36 @@ Lade Pakete herunter...</translation>
<context>
<name>QInstaller::PackageManagerCorePrivate</name>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="397"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1582"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1608"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1781"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1858"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="402"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1524"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1550"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1723"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1792"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="539"/>
- <source>Component(s) added as automatic dependencies</source>
- <translation>Komponenten, die als automatische Abhängigkeiten zugefügt wurden</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="581"/>
- <source>Added as dependency for %1.</source>
- <translation>Als Abhängigkeit für %1 zugefügt.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="590"/>
- <source>Component(s) that have resolved Dependencies</source>
- <translation>Komponenten, die aufgelöste Abhängigkeiten besitzen</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="599"/>
- <source>Selected Component(s) without Dependencies</source>
- <translation>Ausgewählte Komponenten ohne Abhängigkeiten</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="838"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="749"/>
<source>Access error</source>
<translation>Zugriffsfehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="839"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="750"/>
<source>Format error</source>
<translation>Formatfehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="840"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="751"/>
<source>Could not write installer configuration to %1: %2</source>
<translation>Konnte Einstellungen des Installers nicht nach %1 schreiben. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="959"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="867"/>
<source>Stop Processes</source>
<translation>Prozesse anhalten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="959"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="867"/>
<source>These processes should be stopped to continue:
%1</source>
@@ -2065,278 +2184,262 @@ Lade Pakete herunter...</translation>
%1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="967"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1886"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2063"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="875"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1823"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2001"/>
<source>Installation canceled by user</source>
<translation>Installation durch den Nutzer abgebrochen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1067"/>
- <source>Writing uninstaller.</source>
- <translation>Schreibe Deinstallierer.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1080"/>
- <source>Uninstaller is not a bundle</source>
- <translation>Deinstallierer ist kein Bundle</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1096"/>
- <source>Could not write uninstaller data to %1: %2</source>
- <translation>Konnte Deinstaller-Daten nicht nach %1 schreiben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1110"/>
- <source>Could not write uninstaller to %1: %2</source>
- <translation>Konnte Deinstaller nicht nach %1 schreiben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1343"/>
- <source>Found a binary data file, but we are the installer and we should read the binary resource from our very own binary!</source>
- <translation>Binäre Quelldatei gefunden, aber als Installer sollten wir die binären Quellen aus unserer eigenen Binärdatei lesen!</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1390"/>
- <source>Could not write uninstaller binary data to %1: %2</source>
- <translation>Konnte Binäre Datei des Deinstallers nicht nach %1 schreiben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1438"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1379"/>
<source>ProductName should be set</source>
<translation>ProductName muss gesetzt sein</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1462"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1403"/>
<source>Variable &apos;TargetDir&apos; not set.</source>
<translation>TargetDir muss gesetzt sein.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1500"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1744"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1441"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1686"/>
<source>Preparing the installation...</source>
<translation>Bereite Installation vor...</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1509"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1451"/>
<source>It is not possible to install from network location</source>
<translation>Es ist nicht möglich, von einem Netzwerkort aus zu installieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1551"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1553"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1493"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1495"/>
<source>Creating local repository</source>
<translation>Erstelle lokale Quelle</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1588"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1761"/>
- <source>Creating Uninstaller</source>
- <translation>Erstelle Deinstallierer</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1598"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1540"/>
<source>
Installation finished!</source>
<translation>
Installation abgeschlossen!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1614"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1556"/>
<source>
Installation aborted!</source>
<translation>
Installation abgebrochen!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1648"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1590"/>
<source>It is not possible to run that operation from a network location</source>
<translation>Es ist nicht möglich, diese Oparation von einem Netzwerkort aus zu starten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1750"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1692"/>
<source>Removing deselected components...</source>
<translation>Entferne abgewählte Komponenten...</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1771"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1713"/>
<source>
Update finished!</source>
<translation>
Aktualisierung beendet!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1787"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1729"/>
<source>
Update aborted!</source>
<translation>
Aktualisierung abgebrochen!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1850"/>
- <source>
-Uninstallation completed successfully!</source>
- <translation>
-Deinstallation erfolgreich abgeschlossen!</translation>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="389"/>
+ <source>Unresolved dependencies</source>
+ <translation>Nicht aufgelöste Abhängigkeiten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1861"/>
- <source>
-Uninstallation aborted!</source>
- <translation>
-Deinstallation abgebrochen!</translation>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="975"/>
+ <source>Writing maintenance tool.</source>
+ <translation>Schreiben des Verwaltungswerkzeugs.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1880"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="981"/>
+ <source>Failed to seek in file %1: %2</source>
+ <translation>Suchen in Datei %1 fehlgeschlagen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="988"/>
+ <source>Maintenance tool is not a bundle</source>
+ <translation>Verwaltungswerkzeug ist kein Bundle</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1002"/>
+ <source>Could not write maintenance tool data to %1: %2</source>
+ <translation>Konnte Daten des Verwaltungswerkzeugs nicht nach %1 schreiben. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1021"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1322"/>
+ <source>Could not remove data file &apos;%1&apos;: %2</source>
+ <translation>Konnte Datei %1 nicht löschen. Fehlermeldung: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1027"/>
+ <source>Could not write maintenance tool to %1: %2</source>
+ <translation>Konnte Verwaltungswerkzeug nicht nach %1 schreiben: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1327"/>
+ <source>Could not write maintenance tool binary data to %1: %2</source>
+ <translation>Konnte Binäre Datei des Verwaltungswerkzeugs nicht nach %1 schreiben: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1530"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1703"/>
+ <source>Creating Maintenance Tool</source>
+ <translation>Erstelle Verwaltungswerkzeug</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1801"/>
+ <source>Uninstallation completed successfully.</source>
+ <translation>Deinstallation erfolgreich abgeschlossen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1801"/>
+ <source>Uninstallation aborted.</source>
+ <translation>Deinstallation abgebrochen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1817"/>
<source>
Installing component %1</source>
<translation>
Installiere Komponente %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1909"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2081"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1846"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2019"/>
<source>Installer Error</source>
<translation>Installationsfehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1910"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1847"/>
<source>Error during installation process (%1):
%2</source>
<translation>Fehler beim Installieren von Komponente %1:
%2</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1975"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1912"/>
<source>Cannot prepare uninstall</source>
<translation>Kann Deinstallation nicht vorbereiten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2006"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1943"/>
<source>Cannot start uninstall</source>
<translation>Kann Deinstallation nicht starten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2082"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2020"/>
<source>Error during uninstallation process:
%1</source>
<translation>Fehler bei der Deinstallation:
%1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2110"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2048"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2128"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2066"/>
<source>Could not retrieve remote tree: %1.</source>
<translation>Kann entfernten Baum nicht empfangen: %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2157"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2095"/>
<source>Failure to read packages from: %1.</source>
<translation>Fehler beim Lesen der Pakete von %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2182"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2120"/>
<source>Could not retrieve meta information: %1</source>
<translation>Konnte die Metainformationen nicht empfangen: %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2239"/>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2250"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2177"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2188"/>
<source>Could not add temporary update source information.</source>
<translation>Konnte Informationen zu temporären Aktualisierungsquellen nicht hinzufügen.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2264"/>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2203"/>
<source>Could not find any update source information.</source>
<translation>Konnte keine Informationen zu Aktualisierungsquellen finden.</translation>
</message>
+ <message>
+ <location filename="../../libs/installer/packagemanagercore_p.cpp" line="2273"/>
+ <source>Dependency cycle between components detected: &apos;%1&apos; and &apos;%2&apos;.</source>
+ <translation>Zyklische Abhängigkeit zwischen Komponenten entdeckt: &apos;%1&apos; und &apos;%2&apos;.</translation>
+ </message>
</context>
<context>
<name>QInstaller::PackageManagerGui</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="226"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="254"/>
<source>%1 Setup</source>
<translation>%1 Einrichtung</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="228"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="256"/>
<source>Maintain %1</source>
<translation>%1 verwalten</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="551"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="599"/>
<source>Do you want to cancel the installation process?</source>
<translation>Möchten Sie den Installationsprozess abbrechen?</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="553"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="601"/>
<source>Do you want to cancel the uninstallation process?</source>
<translation>Möchten Sie den Deinstallationsprozess abbrechen?</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="555"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="603"/>
<source>Do you want to quit the installer application?</source>
<translation>Möchten Sie die Installationsanwendung beenden?</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="557"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="605"/>
<source>Do you want to quit the uninstaller application?</source>
<translation>Möchten Sie die Deinstallationsanwendung beenden?</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="559"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="607"/>
<source>Do you want to quit the maintenance application?</source>
<translation>Möchten Sie die Wartungsanwendung beenden?</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="564"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="612"/>
<source>Question</source>
<translation>Frage</translation>
</message>
<message>
- <source>Do you want to abort the %1 process?</source>
- <translation type="vanished">Möchten Sie den %1 Vorgang abbrechen?</translation>
- </message>
- <message>
- <source>uninstallation</source>
- <translation type="vanished">Deinstallation</translation>
- </message>
- <message>
- <source>installation</source>
- <translation type="vanished">Installation</translation>
- </message>
- <message>
- <source>installer</source>
- <translation type="vanished">Installer</translation>
- </message>
- <message>
- <source>uninstaller</source>
- <translation type="vanished">Deinstaller</translation>
- </message>
- <message>
- <source>maintenance</source>
- <translation type="vanished">Wartung</translation>
- </message>
- <message>
- <source>Do you want to quit the %1 application?</source>
- <translation type="vanished">Möchten Sie die %1 Anwendung beenden?</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="606"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="654"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="663"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="731"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="664"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="732"/>
<source>It is not possible to install from network location.
Please copy the installer to a local drive</source>
<translation>Es ist nicht möglich, von einem Netzwerkort aus zu installieren.
@@ -2346,14 +2449,14 @@ Bitte kopieren Sie den Installer auf ein lokales Laufwerk</translation>
<context>
<name>QInstaller::PerformInstallationForm</name>
<message>
- <location filename="../../libs/installer/performinstallationform.cpp" line="95"/>
- <location filename="../../libs/installer/performinstallationform.cpp" line="151"/>
- <location filename="../../libs/installer/performinstallationform.cpp" line="168"/>
+ <location filename="../../libs/installer/performinstallationform.cpp" line="97"/>
+ <location filename="../../libs/installer/performinstallationform.cpp" line="158"/>
+ <location filename="../../libs/installer/performinstallationform.cpp" line="171"/>
<source>&amp;Show Details</source>
<translation>&amp;Zeige Details</translation>
</message>
<message>
- <location filename="../../libs/installer/performinstallationform.cpp" line="151"/>
+ <location filename="../../libs/installer/performinstallationform.cpp" line="158"/>
<source>&amp;Hide Details</source>
<translation>&amp;Verstecke Details</translation>
</message>
@@ -2361,326 +2464,244 @@ Bitte kopieren Sie den Installer auf ein lokales Laufwerk</translation>
<context>
<name>QInstaller::PerformInstallationPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1802"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2263"/>
<source>U&amp;ninstall</source>
<translation>&amp;Deinstallieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1803"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2264"/>
<source>Uninstalling %1</source>
<translation>Deinstalliere %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1807"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2268"/>
<source>&amp;Update</source>
<translation>&amp;Aktualisieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1808"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2269"/>
<source>Updating components of %1</source>
<translation>Aktualisiere Komponenten des %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1812"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2273"/>
<source>&amp;Install</source>
<translation>&amp;Installieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1813"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2274"/>
<source>Installing %1</source>
<translation>Installiere %1</translation>
</message>
</context>
<context>
- <name>QInstaller::QtPatchOperation</name>
- <message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="175"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 3</source>
- <translation type="obsolete">genau 3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="176"/>
- <source>3 or 4</source>
- <translation>3 oder 4</translation>
- </message>
- <message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="188"/>
- <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
- <translation>Das für die Anweisung &apos;%1&apos; benötigte Installerobjekt ist leer.</translation>
- </message>
+ <name>QInstaller::ProxyCredentialsDialog</name>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="203"/>
- <source>First argument should be &apos;linux&apos;, &apos;mac&apos; or &apos;windows&apos;. No other type is supported at this time.</source>
- <translation>Das erste Argument muss entweder &apos;linux&apos;, &apos;mac&apos; oder &apos;windows&apos; lauten. Keine anderen Typen werden zur Zeit unterstützt.</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
</message>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="210"/>
- <source>Could not find the needed QmakeOutputInstallerKey(%1) value on the installer object. The ConsumeOutput operation on the valid qmake needs to be called first.</source>
- <translation>Konnte den benötigten Wert für den QmakeOutputInstallerKey &apos;%1&apos; nicht finden. Die ConsumeOutput Oparation muss zuerst auf dem gültigen qmake augeführt werden.</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="20"/>
+ <source>The proxy %1 requires a username and password.</source>
+ <translation>Der Proxy %1 benötigt einen Nutzernamen und Passwort.</translation>
</message>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="229"/>
- <source>QMake from the current Qt version
-(%1)is not existing. Please file a bugreport with this dialog at https://bugreports.qt-project.org.</source>
- <translation>Das QMake der aktuell verwendeten Qt Version
-(%1) kann nicht gefunden werden. Bitte erstellen Sie einen Bugreport unter https://bugreports.qt-project.org.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="237"/>
- <source>The output of
-%1 -query
-is not parseable. Please file a bugreport with this dialog https://bugreports.qt-project.org.
-output: &quot;%2&quot;</source>
- <translation>Die Ausgabe von
-%1 -query
-ist ungültig. Bitte erstellen Sie einen Bugreport unter https://bugreports.qt-project.org.
-Ausgabe: &quot;%2&quot;</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="29"/>
+ <source>Username:</source>
+ <translation>Nutzername:</translation>
</message>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="251"/>
- <source>Qt patch error: new Qt dir(%1)
-needs to be less than 255 characters.</source>
- <translation>Qt patch Fehler: neuer Qt Ordnername (%1)
-darf nicht mehr als 255 Zeichen lang sein.</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="36"/>
+ <source>Username</source>
+ <translation>Nutzername</translation>
</message>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="366"/>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="421"/>
- <source>Qt patch error: Can not open %1.(%2)</source>
- <translation>Qt patch Fehler: Kann %1 nicht öffnen. Fehlermeldung: %2</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="43"/>
+ <source>Password:</source>
+ <translation>Passwort:</translation>
</message>
<message>
- <location filename="../../libs/installer/qtpatchoperation.cpp" line="490"/>
- <source>The installer was not able to get the unpatched path from
-%1.(maybe it is broken or removed)
-It tried to patch the Qt binaries, but all other files in Qt are unpatched.
-This could result in a broken Qt version.
-Sometimes it helps to restart the installer with a switched off antivirus software.</source>
- <translation>Der Installer konnte den ursprünglichen Pfad aus %1
-nicht lesen (möglicherweise ist es beschädigt oder entfernt).
-Er hat versucht, die Qt Binärdateien trotzdem zu patchen, aber alle anderen
-Dateien im Qt sind ungepatcht. Das kann zu einer beschädigten Qt Version führen.
-Eventuell hilft es, einen laufenden Virenscanner auszuschalten und den Installer erneut zu starten.</translation>
+ <location filename="../../libs/installer/proxycredentialsdialog.ui" line="53"/>
+ <source>Password</source>
+ <translation>Passwort</translation>
</message>
</context>
<context>
<name>QInstaller::ReadyForInstallationPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1538"/>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1732"/>
- <source>&amp;Show Details</source>
- <translation>&amp;Zeige Details</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1571"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2038"/>
<source>U&amp;ninstall</source>
<translation>&amp;Deinstallieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1572"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2039"/>
<source>Ready to Uninstall</source>
<translation>Bereit zum Deinstallieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1573"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2040"/>
<source>Setup is now ready to begin removing %1 from your computer.&lt;br&gt;&lt;font color=&quot;red&quot;&gt;The program directory %2 will be deleted completely&lt;/font&gt;, including all content in that directory!</source>
<translation>Das Einrichtungsprogramm ist jetzt bereit, %1 von Ihrem Computer zu entfernen. &lt;br&gt;&lt;font color=&quot;red&quot;&gt;Das Programmverzeichnis %2 wird vollständig gelöscht&lt;/font&gt;, inklusive allen Inhalten in diesem Ordner!</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1582"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2049"/>
<source>U&amp;pdate</source>
<translation>&amp;Aktualisieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1583"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2050"/>
<source>Ready to Update Packages</source>
<translation>Bereit zum Aktualisieren der Pakete</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1584"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2051"/>
<source>Setup is now ready to begin updating your installation.</source>
<translation>Das Einrichtungsprogramm ist jetzt bereit, Ihre Installation zu aktualisieren.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1587"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2054"/>
<source>&amp;Install</source>
<translation>&amp;Installieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1588"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2055"/>
<source>Ready to Install</source>
<translation>Bereit zum Installieren</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1589"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2056"/>
<source>Setup is now ready to begin installing %1 on your computer.</source>
<translation>Das Einrichtungsprogramm ist jetzt bereit, %1 auf Ihrem Computer einzurichten.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1647"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2117"/>
<source>Not enough disk space to store temporary files and the installation! Available space: %1, at least required %2.</source>
<translation>Nicht genügend Plattenplatz für temporäre Dateien und die Installation! Verfügbarer Platz: %1, mindestens benötigt: %2.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1655"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2126"/>
<source>Not enough disk space to store all selected components! Available space: %1, at least required: %2.</source>
<translation>Nicht genügend Plattenplatz für alle ausgewählten Komponenten! Verfügbarer Platz: %1, mindestens benötigt: %2.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1662"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2134"/>
<source>Not enough disk space to store temporary files! Available space: %1, at least required: %2.</source>
<translation>Nicht genügend Plattenplatz für temporäre Dateien! Verfügbarer Platz: %1, mindestens benötigt: %2.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1670"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2143"/>
<source>The volume you selected for installation seems to have sufficient space for installation, but there will be less than 1% of the volume&apos;s space available afterwards. %1</source>
<translation>Die für die Installation ausgewählte Partition scheint genügend Platz zu bieten, aber es werden anschließend weniger als 1% der Partitionsgröße verfügbar sein. %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1675"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2148"/>
<source>The volume you selected for installation seems to have sufficient space for installation, but there will be less than 100 MB available afterwards. %1</source>
<translation>Die für die Installation ausgewählte Partition scheint genügend Platz zu bieten, aber es werden anschließend weniger als 100 MiB verfügbar sein. %1</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1689"/>
- <source>Can not resolve all dependencies!</source>
- <translation>Konnte nicht alle Abhängigkeiten auflösen!</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1707"/>
- <source>Components about to be removed.</source>
- <translation>Komponenten, die entfernt werden.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1732"/>
- <source>&amp;Hide Details</source>
- <translation>&amp;Verstecke Details</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::RegisterDefaultDebuggerOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, 2 expected.</source>
- <translation type="obsolete">Ungültige Argumentein %0: %1 Argumente erhalten, 2 erwartet.</translation>
- </message>
- <message>
- <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
- <translation type="obsolete">Das für die Anweisung &quot;%1&quot; benötigte Installerobjekt ist leer.</translation>
- </message>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 2</source>
- <translation type="obsolete">genau 2</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2154"/>
+ <source>Installation will use %1 of disk space.</source>
+ <translation>Installation wird %1 Plattenplatz verwenden.</translation>
</message>
<message>
- <source>There is no value set for %1 on the installer object.</source>
- <translation type="obsolete">Es wurde kein Wert %1 auf dem Installer Objekt gesetzt.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2164"/>
+ <source>Cannot resolve all dependencies.</source>
+ <translation>Konnte nicht alle Abhängigkeiten auflösen.</translation>
</message>
<message>
- <source>Can&apos;t read from tool chains xml file(%1) correctly.</source>
- <translation type="obsolete">Kann nicht aus der Toolchains XML Datei (%1) lesen.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2180"/>
+ <source>Components about to be removed.</source>
+ <translation>Komponenten, die entfernt werden.</translation>
</message>
</context>
<context>
<name>QInstaller::RegisterFileTypeOperation</name>
<message>
- <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="106"/>
+ <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="99"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="107"/>
+ <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="100"/>
<source>2 to 5</source>
<translation>2 bis 5</translation>
</message>
<message>
- <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="171"/>
+ <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="152"/>
+ <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="215"/>
+ <source>Registering file types is only supported on Windows.</source>
+ <translation>Dateitypenregistrierung wird nur unter Windows unterstützt.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="164"/>
<source>Register File Type: Invalid arguments</source>
<translation>Register File Type: Ungültige Argumente</translation>
</message>
</context>
<context>
- <name>QInstaller::RegisterQtInCreatorQNXOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>at least 5</source>
- <translation type="obsolete">mindestens 5</translation>
- </message>
- <message>
- <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
- <translation type="obsolete">Das für die Anweisung &quot;%1&quot; benötigte Installerobjekt ist leer.</translation>
- </message>
+ <name>QInstaller::RemoteObject</name>
<message>
- <source>There is no value set for %1 on the installer object.</source>
- <translation type="obsolete">Es wurde kein Wert %1 auf dem Installer Objekt gesetzt.</translation>
- </message>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, minimum 4 expected.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, mindestens 4 erwartet.</translation>
+ <location filename="../../libs/installer/remoteobject.h" line="99"/>
+ <source>Could not read all data after sending command: %1. Bytes expected: %2, Bytes received: %3. Error: %4</source>
+ <translation>Konnte nicht alle Daten nach dem Senden des Kommandos &apos;%1&apos; lesen. Bytes erwartet: %2, Bytes erhalten: %3. Fehler: %4</translation>
</message>
</context>
<context>
- <name>QInstaller::RegisterToolChainOperation</name>
- <message>
- <source>at least 4</source>
- <translation type="obsolete">mindestens 4</translation>
- </message>
- <message>
- <source>Needed installer object in &apos;%1&apos; operation is empty.</source>
- <translation type="obsolete">Das für die Anweisung &apos;%1&apos; benötigte Installerobjekt ist leer.</translation>
- </message>
- <message>
- <source>There is no value set for &apos;%1&apos; on the installer object.</source>
- <translation type="obsolete">Es wurde kein Wert &apos;%1&apos; auf dem Installer Objekt gesetzt.</translation>
- </message>
+ <name>QInstaller::RemoteServerConnection</name>
<message>
- <source>Invalid arguments in %0: %1 arguments given, minimum 4 expected.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, mindestens 4 erwartet.</translation>
+ <location filename="../../libs/installer/remoteserverconnection.cpp" line="189"/>
+ <location filename="../../libs/installer/remoteserverconnection.cpp" line="299"/>
+ <location filename="../../libs/installer/remoteserverconnection.cpp" line="390"/>
+ <source>Could not read all data after sending command: %1. Bytes expected: %2, Bytes received: %3. Error: %4</source>
+ <translation>Konnte nicht alle Daten nach dem Senden des Kommandos &apos;%1&apos; lesen. Bytes erwartet: %2, Bytes erhalten: %3. Fehler: %4</translation>
</message>
+</context>
+<context>
+ <name>QInstaller::ReplaceOperation</name>
<message>
- <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
- <translation type="obsolete">Das für die Anweisung &quot;%1&quot; benötigte Installerobjekt ist leer.</translation>
+ <location filename="../../libs/installer/replaceoperation.cpp" line="62"/>
+ <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
+ <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <source>Can&apos;t read from tool chains xml file(%1) correctly.</source>
- <translation type="obsolete">Kann nicht aus der Toolchains XML Datei (%1) lesen.</translation>
+ <location filename="../../libs/installer/replaceoperation.cpp" line="63"/>
+ <source>exactly 3</source>
+ <translation>genau 3</translation>
</message>
<message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/replaceoperation.cpp" line="73"/>
+ <source>Failed to open %1 for reading</source>
+ <translation>Konnte Datei %1 nicht zum Lesen öffnen</translation>
</message>
<message>
- <source>Some arguments are not right in %1 operation.</source>
- <translation type="obsolete">Einige Argumente sind in der %1 Anweisung nicht erlaubt.</translation>
+ <location filename="../../libs/installer/replaceoperation.cpp" line="83"/>
+ <source>Failed to open %1 for writing</source>
+ <translation>Konnte Datei %1 nicht zum Schreiben öffnen</translation>
</message>
</context>
<context>
- <name>QInstaller::ReplaceOperation</name>
+ <name>QInstaller::Resource</name>
<message>
- <location filename="../../libs/installer/replaceoperation.cpp" line="69"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/binaryformat.cpp" line="173"/>
+ <source>Could not open Resource &apos;%1&apos; read-only.</source>
+ <translation>Konnte Ressourcendatei &apos;%1&apos; nicht zum Nur-Lesen öffnen.</translation>
</message>
<message>
- <location filename="../../libs/installer/replaceoperation.cpp" line="70"/>
- <source>exactly 3</source>
- <translation>genau 3</translation>
+ <location filename="../../libs/installer/binaryformat.cpp" line="242"/>
+ <source>Read failed after %1 bytes: %2</source>
+ <translation>Das Lesen ist nach %1 Bytes fehlgeschlagen: %2</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/binaryformat.cpp" line="247"/>
+ <source>Write failed after %1 bytes: %2</source>
+ <translation>Das Schreiben ist nach %1 Bytes fehlgeschlagen: %2</translation>
</message>
</context>
<context>
<name>QInstaller::RestartPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="2013"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="2483"/>
<source>Completing the %1 Setup Wizard</source>
<translation>Vervollständige den %1 Assistenten</translation>
</message>
@@ -2688,189 +2709,71 @@ Eventuell hilft es, einen laufenden Virenscanner auszuschalten und den Installer
<context>
<name>QInstaller::ScriptEngine</name>
<message>
- <location filename="../../libs/installer/scriptengine.cpp" line="247"/>
+ <location filename="../../libs/installer/scriptengine.cpp" line="378"/>
<source>Could not open the requested script file at %1: %2.</source>
<translation>Konnte angeforderte Skriptdatei &apos;%1&apos; nicht öffnen. Fehlermeldung: %2</translation>
</message>
<message>
- <location filename="../../libs/installer/scriptengine.cpp" line="264"/>
- <source>Exception while loading the component script: &apos;%1&apos;</source>
- <translation>Ausnahme beim Laden des Komponentenskripts: &apos;%1&apos;</translation>
- </message>
- <message>
- <location filename="../../libs/installer/scriptengine.cpp" line="268"/>
- <source>Could not load the component script inside a script context: &apos;%1&apos;</source>
- <translation>Konnte das Komponentenskript &apos;%1&apos; nicht in einem Skriptkontext laden</translation>
- </message>
- <message>
- <location filename="../../libs/installer/scriptengine.cpp" line="278"/>
- <source>Fatal error while evaluating a script.</source>
- <translation>Schwerwiegender Fehler beim Auswerten eines Skripts.</translation>
+ <location filename="../../libs/installer/scriptengine.cpp" line="396"/>
+ <source>Exception while loading the component script &apos;%1&apos;. (%2)</source>
+ <translation>Ausnahme beim Laden des Komponentenskripts &apos;%1&apos;. (%2)</translation>
</message>
</context>
<context>
<name>QInstaller::SelfRestartOperation</name>
<message>
- <location filename="../../libs/installer/selfrestartoperation.cpp" line="64"/>
+ <location filename="../../libs/installer/selfrestartoperation.cpp" line="57"/>
<source>Installer object needed in &apos;%1&apos; operation is empty.</source>
<translation>Das für die Anweisung &apos;%1&apos; benötigte Installerobjekt ist leer.</translation>
</message>
<message>
- <location filename="../../libs/installer/selfrestartoperation.cpp" line="70"/>
+ <location filename="../../libs/installer/selfrestartoperation.cpp" line="63"/>
<source>Self Restart: Only valid within updater or packagemanager mode.</source>
<translation>Self Restart: Nur im updater oder packagemanager Modus erlaubt.</translation>
</message>
<message>
- <location filename="../../libs/installer/selfrestartoperation.cpp" line="76"/>
+ <location filename="../../libs/installer/selfrestartoperation.cpp" line="69"/>
<source>Self Restart: Invalid arguments</source>
<translation>Self Restart: Ungültige Argumente</translation>
</message>
</context>
<context>
- <name>QInstaller::SetDemosPathOnQtOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 2</source>
- <translation type="obsolete">genau 2</translation>
- </message>
- <message>
- <source>The output of
-&apos;%1 -query&apos;
-is not parseable. Please file a bugreport with this dialog at https://bugreports.qt-project.org.
-output: %2</source>
- <translation type="obsolete">Die Ausgabe von
-&apos;%1 -query&apos;
-ist ungültig. Bitte erstellen Sie einen Bugreport unter https://bugreports.qt-project.org.
-Ausgabe: %2</translation>
- </message>
- <message>
- <source>Qt patch error: new Qt demo path &apos;%1&apos;
-needs to be less than 255 characters.</source>
- <translation type="obsolete">Qt patch Fehler: neuer Qt Ordnername &apos;%1&apos;
-darf nicht mehr als 255 Zeichen lang sein.</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::SetExamplesPathOnQtOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 2</source>
- <translation type="obsolete">genau 2</translation>
- </message>
- <message>
- <source>The output of
-&apos;%1 -query&apos;
-is not parseable. Please file a bugreport with this dialog at https://bugreports.qt-project.org.
-output: %2</source>
- <translation type="obsolete">Die Ausgabe von
-&apos;%1 -query&apos;
-ist ungültig. Bitte erstellen Sie einen Bugreport unter https://bugreports.qt-project.org.
-Ausgabe: %2</translation>
- </message>
- <message>
- <source>Qt patch error: new Qt example path &apos;%1&apos;
-needs to be less than 255 characters.</source>
- <translation type="obsolete">Qt patch Fehler: Neuer Qt Beispielpfad &apos;%1&apos;
-darf nicht mehr als 255 Zeichen lang sein.</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::SetImportsPathOnQtCoreOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 2</source>
- <translation type="obsolete">genau 2</translation>
- </message>
- <message>
- <source>Qt patch error: new Qt imports path &apos;%1&apos;
-needs to be less than 255 characters.</source>
- <translation type="obsolete">Qt patch Fehler: Neuer Qt Importpfad &apos;%1&apos;
-darf nicht mehr als 255 Zeichen lang sein.</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::SetPathOnQtCoreOperation</name>
+ <name>QInstaller::ServerAuthenticationDialog</name>
<message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 3</source>
- <translation type="obsolete">genau 3</translation>
- </message>
- <message>
- <source>The second type/value needs to be one of: %1</source>
- <translation type="obsolete">Der zweite Typ muss einen der folgenden Werte haben: %1</translation>
- </message>
-</context>
-<context>
- <name>QInstaller::SetPluginPathOnQtCoreOperation</name>
- <message>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation type="obsolete">Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
- </message>
- <message>
- <source>exactly 2</source>
- <translation type="obsolete">genau 2</translation>
- </message>
- <message>
- <source>Qt patch error: new Qt plugin path &apos;%1&apos;
-needs to be less than 255 characters.</source>
- <translation type="obsolete">Qt patch Fehler: Neuer Qt Pluginpfad &apos;%1&apos;
-darf nicht mehr als 255 Zeichen lang sein.</translation>
+ <location filename="../../libs/installer/serverauthenticationdialog.ui" line="14"/>
+ <source>Server Requires Authentication</source>
+ <translation>Server verlangt Authentifizierung</translation>
</message>
-</context>
-<context>
- <name>QInstaller::SetQtCreatorValueOperation</name>
<message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="72"/>
- <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
- <translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
+ <location filename="../../libs/installer/serverauthenticationdialog.ui" line="20"/>
+ <source>You need to supply a username and password to access this site.</source>
+ <translation>Nutzername und Passwort für den Zugriff benötigt.</translation>
</message>
<message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="73"/>
- <source>exactly 4</source>
- <translation>genau 4</translation>
- </message>
- <message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="73"/>
- <source> (rootInstallPath, group, key, value)</source>
- <translation> (rootInstallPfad, Gruppe, Schlüssel, Wert)</translation>
- </message>
- <message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="80"/>
- <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
- <translation>Das für die Anweisung &quot;%1&quot; benötigte Installerobjekt ist leer.</translation>
+ <location filename="../../libs/installer/serverauthenticationdialog.ui" line="30"/>
+ <source>Username:</source>
+ <translation>Nutzername:</translation>
</message>
<message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="97"/>
- <source>There is no value set for &apos;%1&apos; on the installer object.</source>
- <translation>Es wurde kein Wert &apos;%1&apos; auf dem Installer Objekt gesetzt.</translation>
+ <location filename="../../libs/installer/serverauthenticationdialog.ui" line="40"/>
+ <source>Password:</source>
+ <translation>Passwort:</translation>
</message>
<message>
- <location filename="../../libs/installer/setqtcreatorvalueoperation.cpp" line="134"/>
- <source>Needed installer object in &apos;%1&apos; operation is empty.</source>
- <translation>Das für die Anweisung &apos;%1&apos; benötigte Installerobjekt ist leer.</translation>
+ <location filename="../../libs/installer/serverauthenticationdialog.ui" line="77"/>
+ <source>%1 at %2</source>
+ <translation>%1 auf %2</translation>
</message>
</context>
<context>
<name>QInstaller::SettingsOperation</name>
<message>
- <location filename="../../libs/installer/settingsoperation.cpp" line="79"/>
+ <location filename="../../libs/installer/settingsoperation.cpp" line="72"/>
<source>Missing argument(s) &apos;%1&apos; calling &apos;%2&apos; with arguments &apos;%3&apos;.</source>
<translation>Fehlende Argumente &apos;%1&apos; beim Aufruf von &apos;%2&apos; mit den Argumenten &apos;%3&apos;.</translation>
</message>
<message>
- <location filename="../../libs/installer/settingsoperation.cpp" line="89"/>
+ <location filename="../../libs/installer/settingsoperation.cpp" line="82"/>
<source>Current method argument calling &apos;%1&apos; with arguments &apos;%2&apos; is not supported. Please use set, remove, add_array_value or remove_array_value.</source>
<translation>Aufruf von &apos;%1&apos; mit den Argumenten &apos;%2&apos; nicht unterstützt. Bitte &apos;set&apos;, &apos;remove&apos;, &apos;add_array_value&apos; oder &apos;remove_array_value&apos; verwenden.</translation>
</message>
@@ -2878,33 +2781,33 @@ darf nicht mehr als 255 Zeichen lang sein.</translation>
<context>
<name>QInstaller::SimpleMoveFileOperation</name>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="62"/>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="55"/>
<source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
<translation>Ungültige Argumente in %0: %1 Argumente erhalten, %2 erwartet%3.</translation>
</message>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="63"/>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="56"/>
<source>exactly 2</source>
<translation>genau 2</translation>
</message>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="72"/>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="65"/>
<source>None of the arguments can be empty: source &apos;%1&apos;, target &apos;%2&apos;.</source>
<translation>Keines der Argumente darf leer sein: Quelle &apos;%1&apos;, Ziel &apos;%2&apos;.</translation>
</message>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="83"/>
- <source>Can not move source &apos;%1&apos; to target &apos;%2&apos;, because target exists and is not removable.</source>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="76"/>
+ <source>Cannot move source &apos;%1&apos; to target &apos;%2&apos;, because target exists and is not removable.</source>
<translation>Konnte Quelle &apos;%1&apos; nicht nach Ziel &apos;%2&apos; verschieben, weil das Ziel bereits existiert und nicht entfernt werden kann.</translation>
</message>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="92"/>
- <source>Can not move source &apos;%1&apos; to target &apos;%2&apos;: %3</source>
- <translation>Konnte Datei &apos;%1&apos; nicht nach &apos;%2&apos; verschieben. Fehlermeldung: %3</translation>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="85"/>
+ <source>Cannot move source &apos;%1&apos; to target &apos;%2&apos;: %3</source>
+ <translation>Konnte Datei &apos;%1&apos; nicht nach &apos;%2&apos; verschieben: %3</translation>
</message>
<message>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="97"/>
- <location filename="../../libs/installer/simplemovefileoperation.cpp" line="107"/>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="90"/>
+ <location filename="../../libs/installer/simplemovefileoperation.cpp" line="100"/>
<source>Move &apos;%1&apos; to &apos;%2&apos;.</source>
<translation>Verschiebe &apos;%1&apos; nach &apos;%2&apos;.</translation>
</message>
@@ -2912,12 +2815,12 @@ darf nicht mehr als 255 Zeichen lang sein.</translation>
<context>
<name>QInstaller::StartMenuDirectoryPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1434"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1937"/>
<source>Start Menu shortcuts</source>
<translation>Verknüpfungen im Startmenü</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1435"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1938"/>
<source>Select the Start Menu in which you would like to create the program&apos;s shortcuts. You can also enter a name to create a new folder.</source>
<translation>Wählen Sie den Ordner im Startmenü, in dem die Verknüpfungen zur Anwendung erstellt werden sollen. Sie können einen Namen angeben, um einen neuen Ordner anzulegen.</translation>
</message>
@@ -2925,59 +2828,105 @@ darf nicht mehr als 255 Zeichen lang sein.</translation>
<context>
<name>QInstaller::TargetDirectoryPage</name>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1313"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1689"/>
<source>Installation Folder</source>
<translation>Installationsverzeichnis</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1320"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1696"/>
<source>Please specify the folder where %1 will be installed.</source>
<translation>Bitte geben Sie den Ordner an, in dem %1 installiert werden soll.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1333"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1709"/>
<source>Alt+R</source>
<comment>browse file system to choose a file</comment>
<translatorcomment>Dateisystem durchsuchen, um eine Datei auszuwählen</translatorcomment>
<translation>Alt+D</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1334"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1710"/>
<source>B&amp;rowse...</source>
<translation>&amp;Durchsuchen...</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1370"/>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1384"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1783"/>
+ <source>The folder you selected already exists and contains an installation. Choose a different target for installation.</source>
+ <translation>Der ausgewählte Ordner existiert bereits und enthält eine Installation. Bitte ein anderes Zielverzeichnis auswählen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1788"/>
+ <source>You have selected an existing, non-empty folder for installation.
+Note that it will be completely wiped on uninstallation of this application.
+It is not advisable to install into this folder as installation might fail.
+Do you want to continue?</source>
+ <translation>Sie haben einen existierenden, nicht leeren Ordner für die Installation ausgewählt.
+Dieser wird bei der Deinstallation dieser Anwendung komplett gelöscht werden.
+Es wird nicht empfohlen, in diesen Ordner zu installieren.
+Möchten Sie trotzdem fortsetzen?</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1792"/>
+ <source>You have selected an existing file or symlink, please choose a different target for installation.</source>
+ <translation>Existierende Datei oder Symlink ausgewählt, bitte ein anderes Installationsziel auswählen.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1829"/>
+ <source>The installation path cannot be empty, please specify a valid folder.</source>
+ <translation>Der Installationspfad darf nicht leer sein. Bitte einen gültigen Ordner angeben.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1833"/>
+ <source>The installation path cannot be relative, please specify an absolute path.</source>
+ <translation>Der Installationspfad darf nicht relativ sein. Bitte einen absoluten Pfad angeben.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1839"/>
+ <source>The path or installation directory contains non ASCII characters. This is currently not supported! Please choose a different path or installation directory.</source>
+ <translation>Der Pfad zum Installationsverzeichnis enthält Zeichen ausserhalb des ASCII Zeichensatzes. Dies ist zur Zeit nicht unterstützt. Bitte wählen Sie einen anderen Pfad für das Installationsverzeichnis.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1856"/>
+ <source>The path you have entered is too long, please make sure to specify a valid path.</source>
+ <translation>Der von ihnen eingegebene Pfad ist zu lang, bitte geben sie einen gültigen Pfad ein.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1871"/>
+ <source>The path you have entered is not valid, please make sure to specify a valid target.</source>
+ <translation>Der eingegebene Pfad ist ungültig, bitte ein gültiges Ziel angeben.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1885"/>
+ <source>The path you have entered is not valid, please make sure to specify a valid drive.</source>
+ <translation>Der von ihnen eingegebene Pfad ist ungültig, bitte geben sie ein gültiges Laufwerk an.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1370"/>
- <source>The install directory cannot be empty, please specify a valid folder.</source>
- <translation>Der Name des Installationsverzeichnisses darf nicht leer sein, bitte einen gültigen Ordner angeben.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1892"/>
+ <source>The installation path must not end with &apos;.&apos;, please specify a valid folder.</source>
+ <translation>Der Installationspfad darf nicht auf &apos;.&apos; enden, bitte einen gültigen Ordner angeben.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1384"/>
- <source>As the install directory is completely deleted on uninstall, installing in %1 is forbidden.</source>
- <translation>Da das Installationsverzeichnis bei der Deinstallation komplett gelöscht wird, ist eine Installation nach %1 nicht zulässig.</translation>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1907"/>
+ <source>The installation path must not contain &apos;%1&apos;, please specify a valid folder.</source>
+ <translation>Der Installationspfad darf nicht %1 enthalten, bitte einen gültigen Ordner angeben.</translation>
+ </message>
+ <message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1925"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
</message>
<message>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1848"/>
<source>As the install directory is completely deleted, installing in %1 is forbidden.</source>
- <translation type="obsolete">Da das Installationsverzeichnis komplett gelöscht wird, ist eine Installation nach %1 nicht zulässig.</translation>
+ <translation>Da das Installationsverzeichnis komplett gelöscht wird, ist eine Installation nach %1 nicht zulässig.</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1395"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1918"/>
<source>Warning</source>
<translation>Warnung</translation>
</message>
<message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1395"/>
- <source>You have selected an existing, non-empty folder for installation. Note that it will be completely wiped on uninstallation of this application. It is not advisable to install into this folder as installation might fail. Do you want to continue?</source>
- <translation>Sie haben einen existierenden, nicht leeren Ordner für die Installation ausgewählt. Dieser wird bei der Deinstallation dieser Anwendung komplett gelöscht werden. Es wird nicht empfohlen, in diesen Ordner zu installieren. Möchten Sie trotzdem fortsetzen?</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagergui.cpp" line="1420"/>
+ <location filename="../../libs/installer/packagemanagergui.cpp" line="1814"/>
<source>Select Installation Folder</source>
<translation>Installationsverzeichnis auswählen.</translation>
</message>
@@ -2985,601 +2934,89 @@ darf nicht mehr als 255 Zeichen lang sein.</translation>
<context>
<name>QInstaller::TestRepository</name>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="86"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="79"/>
<source>Empty repository URL.</source>
<translation>Leere Quelladresse.</translation>
</message>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="92"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="85"/>
<source>URL scheme not supported: %1 (%2).</source>
<translation>Adressschema &apos;%1&apos; nicht unterstützt in Adresse &apos;%2&apos;.</translation>
</message>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="119"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="112"/>
<source>Got a timeout while testing: &apos;%1&apos;</source>
<translation>Erhielt Timeout beim Testen von: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="139"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="132"/>
<source>Could not parse Updates.xml! Error: %1.</source>
<translation>Ungültiges Format der Updates.xml. Fehlermeldung: %1.</translation>
</message>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="144"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="137"/>
<source>Updates.xml could not be opened for reading!</source>
<translation>Konnte Updates.xml nicht zum Lesen öffnen.</translation>
</message>
<message>
- <location filename="../../libs/installer/testrepository.cpp" line="147"/>
+ <location filename="../../libs/installer/testrepository.cpp" line="140"/>
<source>Updates.xml could not be found on server!</source>
<translation>Updates.xml konnte auf dem Server nicht gefunden werden.</translation>
</message>
</context>
<context>
- <name>QInstallerCreator::Archive</name>
- <message>
- <source>Could not create %1: %2</source>
- <translation type="vanished">Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="345"/>
- <source>Could not open archive file %1 for reading.</source>
- <translation>Konnte Archivdatei %1 nicht zum Lesen öffnen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="364"/>
- <source>Could not create archive from %1: Not a file.</source>
- <translation>Kann kein Archib aus %1 erstellen: Es ist keine Datei.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="388"/>
- <source>Error while packing directory at %1</source>
- <translation>Fehler beim Einpacken des Ordners %1.</translation>
- </message>
-</context>
-<context>
<name>QObject</name>
<message>
- <source>Searched whole file, no marker found</source>
- <translation type="obsolete">Gesamte Datei durchsucht, kein Zauberkeks gefunden.</translation>
- </message>
- <message>
- <source>Could not seek to %1 in file %2: %3</source>
- <translation type="obsolete">Konnte nicht bis zur Position %1 in Datei %2 suchen. Fehlermeldung: %3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="244"/>
- <source>No marker found, stopped after %1.</source>
- <translation>Kein Zauberkeks gefunden, abgebrochen nach %1.</translation>
- </message>
- <message>
- <source>No marker found, unknown exception caught.</source>
- <translation type="obsolete">Keinen Zauberkeks gefunden, unbekannte Ausnahmebedingung.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="412"/>
- <source>Cannot create zipped file for path %1: %2</source>
- <translation>Konnte keine gepackte Datei aus Pfad %1 erstellen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="673"/>
- <source>Could not seek to in-binary resource. (offset: %1, length: %2)</source>
- <translation>Konnte nicht bis zur in der Binärdatei enthaltene Ressource suchen. (Offset: %1, Länge: %2)</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="679"/>
- <source>Could not register in-binary resource.</source>
- <translation>Konnte in der Binärdatei enthaltene Ressource nicht registrieren.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="859"/>
- <location filename="../../libs/installer/binaryformat.cpp" line="1048"/>
- <source>Could not open binary %1: %2</source>
- <translation>Konnte Binärdatei %1 nicht öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="904"/>
- <source>Could not seek to binary layout section.</source>
- <translation>Konnte nicht bis zum Abschnitt mit dem Layout der Binärdatei suchen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="929"/>
- <source>Could not seek to metadata index.</source>
- <translation>Konnte nicht bis zum Index der Metadaten suchen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="950"/>
- <source>Could not seek to operation list.</source>
- <translation>Konnte nicht bis zur Anweisungsliste suchen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="965"/>
- <source>Could not seek to component index information.</source>
- <translation>Konnte nicht bis zur Komponentenindexinformation suchen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/binaryformat.cpp" line="969"/>
- <source>Could not seek to component index.</source>
- <translation>Konnte nicht bis zum Komponentenindex suchen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="188"/>
- <source>Cannot open file %1 for reading: %2</source>
- <translation>Konnte Datei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="195"/>
- <location filename="../../libs/installer/fileutils.cpp" line="202"/>
- <source>Cannot open file %1 for writing: %2</source>
- <translation>Konnte Datei %1 nicht zum Schreiben öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="211"/>
- <source>Write failed after %1 bytes: %2</source>
- <translation>Das Schreiben ist nach %1 Bytes fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="232"/>
- <source>Read failed after %1 bytes: %2</source>
- <translation>Das Lesen ist nach %1 Bytes fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createlocalrepositoryoperation.cpp" line="115"/>
- <location filename="../../libs/installer/fileutils.cpp" line="261"/>
- <source>Could not remove file %1: %2</source>
- <translation>Konnte Datei %1 nicht löschen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="302"/>
- <source>Could not remove folder %1: %2</source>
- <translation>Konnte Ordner %1 nicht löschen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="376"/>
- <location filename="../../libs/installer/fileutils.cpp" line="400"/>
- <source>Could not create folder %1</source>
- <translation>Konnte Ordner %1 nicht anlegen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="388"/>
- <source>Could not copy file from %1 to %2: %3</source>
- <translation>Konnte Datei %1 nicht nach %2 kopieren. Fehlermeldung: %3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="415"/>
- <source>Could not move file from %1 to %2: %3</source>
- <translation>Konnte Datei %1 nicht nach %2 verschieben. Fehlermeldung: %3</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="426"/>
- <location filename="../../libs/installer/fileutils.cpp" line="433"/>
- <source>Could not create folder %1: %2</source>
- <translation>Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="441"/>
- <source>Could not open temporary file: %1</source>
- <translation>Konnte temporäre Datei nicht öffnen. Fehlermeldung: %1</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="458"/>
- <source>Could not open temporary file for template %1: %2</source>
- <translation>Konnte keine temporäre Datei für die Vorlage %1 öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="511"/>
- <source>Could not create temporary directory at %1: %2</source>
- <translation>Konnte kein temporäres Verzeichnis %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fileutils.cpp" line="514"/>
- <source>Could not create temporary directory at %1: unknown error</source>
- <translation>Konnte temporäres Verzeichnis %1 nicht anlegen: Unbekannter Fehler</translation>
- </message>
- <message>
- <source>Could not create temporary directory %1: %2</source>
- <translation type="obsolete">Konnte kein temporäres Verzeichnis %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Could not create temporary folder for template %1: %2</source>
- <translation type="obsolete">Konnte keine temporäre Datei für die Vorlage %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="66"/>
- <source>Could not create lock file %1: %2</source>
- <translation>Konnte keine Sperrdatei %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="76"/>
- <source>Could not write PID to lock file %1: %2</source>
- <translation>Konnte PID nicht in die Sperrdatei %1 schreiben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="84"/>
- <source>Could not lock lock file %1: %2</source>
- <translation>Konnte keinen Exklusivzugriff auf Sperrdatei %1 erhalten. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/kdtools/kdlockfile_unix.cpp" line="96"/>
- <source>Could not unlock lock file %1: %2</source>
- <translation>Konnte Exklusivzugriff auf Sperrdatei %1 nicht abgeben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="171"/>
- <source>Path exists but is not a folder: %1</source>
- <translation>Pfad %1 exisitiert, aber ist kein Ordner.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="187"/>
- <source>Could not create folder: %1</source>
- <translation>Konnte Ordner %1 nicht anlegen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="216"/>
- <source>Could not create temporary file</source>
- <translation>Konnte temporäre Datei nicht anlegen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="234"/>
- <source>Could not retrieve property %1 for item %2</source>
- <translation>Konnte Eigenschaft %1 von %2 nicht erhalten.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="262"/>
- <source>Property %1 for item %2 not of type VT_FILETIME but %3</source>
- <translation>Eigenschaft %1 von %2 ist nicht vom Typ VT_FILETIME, sondern vom Typ %3.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="281"/>
- <source>Could not convert file time to local time</source>
- <translation>Konnte die Dateizeit nicht in die lokale Zeit umwandeln.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="285"/>
- <source>Could not convert local file time to system time</source>
- <translation>Konnte die lokale Dateizeit nicht in die Systemzeit umwandeln.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="386"/>
- <source>No device set for output stream</source>
- <translation>Kein Gerät für den Ausgabestrom gesetzt</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="638"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1329"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1528"/>
- <source>Could not load codecs</source>
- <translation>Konnte Codecs nicht laden.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="641"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1334"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1533"/>
- <source>Could not retrieve default format</source>
- <translation>Konnte Standardformat nicht finden.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="645"/>
- <source>Could not open archive</source>
- <translation>Konnte Archiv nicht öffnen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="647"/>
- <source>No CArc found</source>
- <translation>Keine CArc gefunden.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="712"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1428"/>
- <source>Could not retrieve number of items in archive</source>
- <translation>Konnte Anzahl Dateien im Archiv nicht feststellen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="718"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="809"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="876"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1437"/>
- <source>Could not retrieve path of archive item %1</source>
- <translation>Konnte Pfad des Archivs %1 nicht feststellen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="740"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="757"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1399"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1452"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1552"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1575"/>
- <source>Unknown exception caught (%1)</source>
- <translation>Unbekannte Ausnahmebedingung (%1).</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="757"/>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1575"/>
- <source>Failed</source>
- <translation>Fehlgeschlagen</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="837"/>
- <source>Could not remove already existing symlink. %1</source>
- <translation>Konnte existierende Verknüpfung (Softlink) %1 nicht entfernen</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="845"/>
- <source>Could not open file: %1 (%2)</source>
- <translation>Konnte Datei %1 nicht öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="899"/>
- <source>Could not create symlink at &apos;%1&apos;. Another one is already existing.</source>
- <translation>Konnte Verknüpfung (Softlink) &apos;%1&apos; nicht erstellen. Es existiert bereits eine an dieser Stelle.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="905"/>
- <source>Could not read symlink target from file &apos;%1&apos;.</source>
- <translation>Konnte Ziel der Verknüpfung (Softlink) &apos;%1&apos; nicht lesen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="915"/>
- <source>Could not create symlink at %1. %2</source>
- <translation>Konnte keine Dateisystemverknüpfung (Softlink) %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1282"/>
- <source>internal code: %1</source>
- <translation>Interner Fehlercode: %1</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1303"/>
- <source>not enough memory</source>
- <translation>Nicht genug Speicher</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1309"/>
- <source>Error: %1</source>
- <translation>Fehler: %1</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1378"/>
- <source>Could not create archive %1. %2</source>
- <translation>Konnte kein Archiv %1 anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1571"/>
- <source>Error while extracting &apos;%1&apos;: %2</source>
- <translation>Fehler beim Auspacken von &apos;%1&apos;. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Could not create file system link at %1</source>
- <translation type="obsolete">Konnte keine Dateisystemverknüpfung (Hardlink) %1 anlegen.</translation>
- </message>
- <message>
- <source>Could not create softlink at %1</source>
- <translation type="obsolete">Konnte keine Dateisystemverknüpfung (Softlink) %1 anlegen.</translation>
- </message>
- <message>
- <source>Could not create archive %1</source>
- <translation type="obsolete">Konnte kein Archiv %1 anlegen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1419"/>
- <source>CArc index %1 out of bounds [0, %2]</source>
- <translation>CArc Index %1 ausserhalb der Grenzen [0, %2].</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1431"/>
- <source>Item index %1 out of bounds [0, %2]</source>
- <translation>Itemindex %1 ausserhalb der Grenzen [0, %2].</translation>
- </message>
- <message>
- <source>Extracting %1 failed.</source>
- <translation type="obsolete">Entpacken von %1 fehlgeschlagen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/lib7z_facade.cpp" line="1471"/>
- <source>Could not create output file for writing: %1</source>
- <translation>Konnte Ausgabedatei nicht zum Schreiben öffnen. Fehlermeldung: %1</translation>
- </message>
- <message>
- <source>Extraction failed.</source>
- <translation type="obsolete">Entpacken fehlgeschlagen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/adminauthorization_x11.cpp" line="90"/>
- <location filename="../../libs/installer/adminauthorization_x11.cpp" line="95"/>
+ <location filename="../../libs/installer/adminauthorization_x11.cpp" line="71"/>
+ <location filename="../../libs/installer/adminauthorization_x11.cpp" line="76"/>
<source>Authorization required</source>
<translation>Autorisierung benötigt.</translation>
</message>
<message>
- <location filename="../../libs/installer/adminauthorization_x11.cpp" line="91"/>
- <location filename="../../libs/installer/adminauthorization_x11.cpp" line="96"/>
+ <location filename="../../libs/installer/adminauthorization_x11.cpp" line="72"/>
+ <location filename="../../libs/installer/adminauthorization_x11.cpp" line="77"/>
<source>Enter your password to authorize for sudo:</source>
<translation>Geben Sie Ihr Passwort ein, um sich für sudo zu authentifizieren:</translation>
</message>
<message>
- <location filename="../../libs/installer/adminauthorization_x11.cpp" line="111"/>
+ <location filename="../../libs/installer/adminauthorization_x11.cpp" line="88"/>
<source>Error acquiring admin rights</source>
<translation>Fehler beim Erlangen von Administratorrechten.</translation>
</message>
+</context>
+<context>
+ <name>RemoteClient</name>
<message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="137"/>
- <source>Could not backup file %1</source>
- <translation>Konnte Datei %1 nicht sichern.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="187"/>
- <source>Could not delete file %1</source>
- <translation>Konnte Datei %1 nicht löschen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createdesktopentryoperation.cpp" line="198"/>
- <source>Could not restore backup file into %1</source>
- <translation>Konnte Datei %1 nicht wiederherstellen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createshortcutoperation.cpp" line="229"/>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="209"/>
- <source>Failed to overwrite %1: %2</source>
- <translation>Konnte Datei %1 nicht überschreiben. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="94"/>
- <source>Registry path %1 is not writable</source>
- <translation>Registrierungspfad %1 ist nicht beschreibbar.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="106"/>
- <source>Could not write to registry path %1</source>
- <translation>Registrierungspfad %1 ist nicht beschreibbar.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="147"/>
- <source>Invalid Argument: source folder must not be empty.</source>
- <translation>Ungültiges Argument: Quellordner darf nicht leer sein.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="196"/>
- <source>Could not backup file %1: %2</source>
- <translation>Konnte Datei %1 nicht sichern. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="220"/>
- <source>Failed to copy file %1: %2</source>
- <translation>Konnte Datei nicht nach %1 kopieren. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/installiconsoperation.cpp" line="230"/>
- <source>Could not create folder at %1: %2</source>
- <translation>Konnte Ordner %1 nicht anlegen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/replaceoperation.cpp" line="80"/>
- <source>Failed to open %1 for reading</source>
- <translation>Konnte Datei nicht zum Lesen öffnen. Fehlermeldung: %1</translation>
- </message>
- <message>
- <location filename="../../libs/installer/replaceoperation.cpp" line="90"/>
- <source>Failed to open %1 for writing</source>
- <translation>Konnte Datei %1 nicht zum Schreiben öffnen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/scriptengine.cpp" line="89"/>
- <source>Invalid arguments: %1 arguments given, %2 to %3 expected.</source>
- <translation>Ungültige Argumente: %1 Argumente erhalten, %2 bis %3 erwartet.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/scriptengine.cpp" line="93"/>
- <source>Invalid arguments: %1 arguments given, %2 expected.</source>
- <translation>Ungültige Argumente: %1 Argumente erhalten, %2 erwartet.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore.cpp" line="1453"/>
- <source>Error while elevating access rights.</source>
- <translation>Fehler beim Erlangen von Administratorrechten.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/packagemanagercore_p.cpp" line="1073"/>
- <source>Failed to seek in file %1: %2</source>
- <translation>Suchen in Datei %1 fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Could not open the requested script file at %1: %2</source>
- <translation type="obsolete">Konnte angeforderte Skriptdatei %1 nicht öffnen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <source>Exception while loading the control script %1</source>
- <translation type="obsolete">Ausnahme beim Laden des Kontrollskripts: %1</translation>
- </message>
- <message>
- <location filename="../installerbase_p.cpp" line="310"/>
- <source>Failed to seek in file %1. Reason: %2.</source>
- <translation>Suchen in Datei %1 fehlgeschlagen. Fehlermeldung: %2</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createlinkoperation.cpp" line="79"/>
- <source>Could not create link from %1 to %2.</source>
- <translation>Konnte keinen Link von %1 nach %2 erstellen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/createlinkoperation.cpp" line="99"/>
- <source>Could not remove link from %1 to %2.</source>
- <translation>Konnte Link von %1 nach %2 nicht entfernen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fsengineclient.cpp" line="800"/>
- <source>Authorization Error</source>
- <translation>Autorisierungsfehler</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fsengineclient.cpp" line="800"/>
+ <location filename="../../libs/installer/remoteclient_p.h" line="145"/>
<source>Could not get authorization.</source>
<translation>Konnte Autorisierung nicht erhalten.</translation>
</message>
<message>
- <location filename="../../libs/installer/fsengineclient.cpp" line="801"/>
+ <location filename="../../libs/installer/remoteclient_p.h" line="146"/>
<source>Could not get authorization that is needed for continuing the installation.
-Either abort the installation or use the fallback solution by running
+ Either abort the installation or use the fallback solution by running
+
%1
-as root and then clicking ok.</source>
+
+as root and then clicking OK.</source>
<translation>Konnte die Autorisierung, die zum Fortsetzen der Installation nötig ist, nicht erhalten.
Brechen sie entweder die Installation ab, oder verwenden sie die Fallback Lösung, indem sie
%1
als root aufrufen und dann &quot;Ok&quot; auswählen. </translation>
</message>
+</context>
+<context>
+ <name>ResourceCollectionManager</name>
<message>
- <source>Couldn&apos;t get authorization.</source>
- <translation type="obsolete">Konnte Autorisierung nicht erhalten.</translation>
- </message>
- <message>
- <source>Couldn&apos;t get authorization that is needed for continuing the installation.
-Either abort the installation or use the fallback solution by running
-%1
-as root and then clicking ok.</source>
- <translation type="obsolete">Konnte die Autorisierung, die zum Fortsetzen der Installation nötig ist, nicht erhalten.
-Brechen sie entweder die Installation ab, oder verwenden sie die Fallback Lösung, indem sie
-%1
-als root aufrufen und dann &quot;Ok&quot; auswählen. </translation>
- </message>
- <message>
- <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="159"/>
- <location filename="../../libs/installer/registerfiletypeoperation.cpp" line="222"/>
- <source>Registering file types is only supported on Windows.</source>
- <translation>Dateitypenregistrierung wird nur unter Windows unterstützt.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/linereplaceoperation.cpp" line="80"/>
- <source>Failed to open &apos;%1&apos; for reading.</source>
- <translation>Konnte Datei &apos;%1&apos; nicht zum Lesen öffnen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/linereplaceoperation.cpp" line="97"/>
- <source>Failed to open &apos;%1&apos; for writing.</source>
- <translation>Konnte Datei &apos;%1&apos; nicht zum Schreiben öffnen.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="68"/>
- <source>Number of arguments does not match: one is required</source>
- <translation>Unpassende Anzahl Argumente: Genau eins wird verlangt</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="75"/>
- <source>Could not get package manager core.</source>
- <translation>Konnte PackageManagerCore nicht erhalten.</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="90"/>
- <source>This process should be stopped before continuing: %1</source>
- <translation>Dieser Prozess sollten beendet werden, um fortsetzen zu können: %1</translation>
- </message>
- <message>
- <location filename="../../libs/installer/fakestopprocessforupdateoperation.cpp" line="94"/>
- <source>These processes should be stopped before continuing: %1</source>
- <translation>Diese Prozesse sollten beendet werden, um fortsetzen zu können: %1</translation>
+ <location filename="../../libs/installer/binaryformat.cpp" line="401"/>
+ <source>Could not open resource %1: %2</source>
+ <translation>Konnte Ressource %1 nicht öffnen: %2</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
- <location filename="../../libs/installer/settings.cpp" line="216"/>
+ <location filename="../../libs/installer/settings.cpp" line="239"/>
<source>Could not open settings file %1 for reading: %2</source>
<translation>Konnte Einstellungsdatei %1 nicht zum Lesen öffnen. Fehlermeldung: %2</translation>
</message>
@@ -3612,255 +3049,144 @@ als root aufrufen und dann &quot;Ok&quot; auswählen. </translation>
<translation>Manuelle Konfiguration des Proxy</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="79"/>
+ <location filename="../settingsdialog.ui" line="66"/>
<source>HTTP proxy:</source>
<translation>HTTP Proxy:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="96"/>
- <location filename="../settingsdialog.ui" line="222"/>
+ <location filename="../settingsdialog.ui" line="83"/>
+ <location filename="../settingsdialog.ui" line="138"/>
<source>Port:</source>
<translation>Port:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="118"/>
- <source>HTTP proxy requires authentication</source>
- <translation>HTTP Proxy verlangt Autentifizierung</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="143"/>
- <location filename="../settingsdialog.ui" line="269"/>
- <source>Username:</source>
- <translation>Nutzername:</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="160"/>
- <location filename="../settingsdialog.ui" line="286"/>
- <source>Password:</source>
- <translation>Passwort:</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="205"/>
+ <location filename="../settingsdialog.ui" line="121"/>
<source>FTP proxy:</source>
<translation>FTP Proxy:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="244"/>
- <source>FTP proxy requires authentication</source>
- <translation>FTP Proxy verlangt Autentifizierung</translation>
- </message>
- <message>
- <location filename="../settingsdialog.ui" line="325"/>
+ <location filename="../settingsdialog.ui" line="190"/>
<source>Repositories</source>
<translation>Quellen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="331"/>
+ <location filename="../settingsdialog.ui" line="196"/>
<source>Add Username and Password for authentication if needed.</source>
<translation>Nutzername und Passwort für die Autentifizierung hinzufügen, falls benötigt.</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="347"/>
+ <location filename="../settingsdialog.ui" line="212"/>
<source>Use temporary repositories only</source>
<translation>Verwende ausschließlich temporäre Quellen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="356"/>
+ <location filename="../settingsdialog.ui" line="221"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="363"/>
+ <location filename="../settingsdialog.ui" line="228"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="370"/>
+ <location filename="../settingsdialog.ui" line="235"/>
<source>Test</source>
<translation>Testen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="390"/>
- <location filename="../settingsdialog.cpp" line="370"/>
+ <location filename="../settingsdialog.ui" line="255"/>
+ <location filename="../settingsdialog.cpp" line="357"/>
<source>Show Passwords</source>
<translation>Zeige Passwörter</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="141"/>
+ <location filename="../settingsdialog.cpp" line="134"/>
<source>Check this to use repository during fetch.</source>
<translation>Auswählen, um die Quelle zu verwenden.</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="143"/>
+ <location filename="../settingsdialog.cpp" line="136"/>
<source>Add the username to authenticate on the server.</source>
<translation>Nutzernamen eintragen, um sich gegenüber der Quelle zu authentifizieren.</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="145"/>
+ <location filename="../settingsdialog.cpp" line="138"/>
<source>Add the password to authenticate on the server.</source>
<translation>Passwort eintragen, um sich gegenüber der Quelle zu authentifizieren.</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="147"/>
+ <location filename="../settingsdialog.cpp" line="140"/>
<source>The servers URL that contains a valid repository.</source>
<translation>Adresse angeben, die auf eine gültige Quelle zeigt.</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="351"/>
+ <location filename="../settingsdialog.cpp" line="338"/>
<source>There was an error testing this repository.</source>
<translation>Beim testen des Repositories ist ein Fehler aufgetreten.</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="352"/>
+ <location filename="../settingsdialog.cpp" line="339"/>
<source>Do you want to disable the tested repository?</source>
<translation>Soll das getestete Repository ausgeschaltet werden?</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="370"/>
+ <location filename="../settingsdialog.cpp" line="357"/>
<source>Hide Passwords</source>
<translation>Verstecke Passwörter</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="415"/>
+ <location filename="../settingsdialog.cpp" line="402"/>
<source>Use</source>
<translation>Nutze</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="415"/>
+ <location filename="../settingsdialog.cpp" line="402"/>
<source>Username</source>
<translation>Nutzername</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="415"/>
+ <location filename="../settingsdialog.cpp" line="402"/>
<source>Password</source>
<translation>Passwort</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="416"/>
+ <location filename="../settingsdialog.cpp" line="403"/>
<source>Repository</source>
<translation>Quelle</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="417"/>
+ <location filename="../settingsdialog.cpp" line="404"/>
<source>Default repositories</source>
<translation>Standardquellen</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="418"/>
+ <location filename="../settingsdialog.cpp" line="405"/>
<source>Temporary repositories</source>
<translation>Temporäre Quellen</translation>
</message>
<message>
- <location filename="../settingsdialog.cpp" line="419"/>
+ <location filename="../settingsdialog.cpp" line="406"/>
<source>User defined repositories</source>
<translation>Benutzerdefinierte Quellen</translation>
</message>
</context>
<context>
- <name>TargetDirectoryPageImpl</name>
- <message>
- <location filename="../installerbasecommons.cpp" line="393"/>
- <source>The installation path cannot be empty, please specify a valid folder.</source>
- <translation>Der Installationspfad darf nicht leer sein. Bitte einen gültigen Ordner angeben.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="398"/>
- <source>The installation path cannot be relative, please specify an absolute path.</source>
- <translation>Der Installationspfad darf nicht relativ sein. Bitte einen absoluten Pfad angeben.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="406"/>
- <location filename="../installerbasecommons.cpp" line="411"/>
- <source>As the install directory is completely deleted, installing in %1 is forbidden.</source>
- <translation>Da das Installationsverzeichnis komplett gelöscht wird, ist eine Installation nach %1 nicht zulässig.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="467"/>
- <source>Warning</source>
- <translation>Warnung</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="474"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="447"/>
- <source>The path or installation directory contains non ASCII characters. This is currently not supported! Please choose a different path or installation directory.</source>
- <translation>Der Pfad zum Installationsverzeichnis enthält Zeichen ausserhalb des ASCII Zeichensatzes. Dies ist zur Zeit nicht unterstützt. Bitte wählen Sie einen anderen Pfad für das Installationsverzeichnis.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="419"/>
- <source>The path you have entered is too long, please make sure to specify a valid path.</source>
- <translation>Der von ihnen eingegebene Pfad ist zu lang, bitte geben sie einen gültigen Pfad ein.</translation>
- </message>
+ <name>UpdateOperation</name>
<message>
- <location filename="../installerbasecommons.cpp" line="425"/>
- <source>The path you have entered is not valid, please make sure to specify a valid drive.</source>
- <translation>Der von ihnen eingegebene Pfad ist ungültig, bitte geben sie ein gültiges Laufwerk an.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="439"/>
- <source>The installation path must not contain %1, please specify a valid folder.</source>
- <translation>Der Installationspfad darf nicht %1 enthalten, bitte einen gültigen Ordner angeben.</translation>
- </message>
- <message>
- <source>As the install directory is completely deleted installing in %1 is forbidden.</source>
- <translation type="vanished">Da das Installationsverzeichnis komplett gelöscht wird, ist eine Installation nach %1 nicht zulässig.</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="505"/>
- <source>The folder you selected already exists and contains an installation. Choose a different target for installation.</source>
- <translation>Der ausgewählte Ordner existiert bereits und enthält eine Installation. Bitte ein anderes Zielverzeichnis auswählen.</translation>
- </message>
- <message>
- <source>The folder you selected exists already and contains an installation.
-Do you want to overwrite it?</source>
- <translation type="obsolete">Der ausgewählte Ordner existiert bereits und enthält eine Installation.
-Möchten Sie diese überschreiben?</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="510"/>
- <source>You have selected an existing, non-empty folder for installation.
-Note that it will be completely wiped on uninstallation of this application.
-It is not advisable to install into this folder as installation might fail.
-Do you want to continue?</source>
- <translation>Sie haben einen existierenden, nicht leeren Ordner für die Installation ausgewählt.
-Dieser wird bei der Deinstallation dieser Anwendung komplett gelöscht werden.
-Es wird nicht empfohlen, in diesen Ordner zu installieren.
-Möchten Sie trotzdem fortsetzen?</translation>
- </message>
- <message>
- <location filename="../installerbasecommons.cpp" line="514"/>
- <source>You have selected an existing file or symlink, please choose a different target for installation.</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>TestRepository</name>
- <message>
- <source>Empty repository URL.</source>
- <translation type="obsolete">Leere Quelladresse.</translation>
- </message>
- <message>
- <source>URL scheme not supported: %1 (%2).</source>
- <translation type="obsolete">Adressschema &quot;%1&quot; nicht unterstützt in Adresse &quot;%2&quot;.</translation>
- </message>
- <message>
- <source>Got a timeout while testing: &apos;%1&apos;</source>
- <translation type="obsolete">Erhielt Timeout beim Testen von: &apos;%1&apos;</translation>
- </message>
- <message>
- <source>Could not parse Updates.xml! Error: %1.</source>
- <translation type="obsolete">Ungültiges Format der Updates.xml. Fehlermeldung: %1</translation>
+ <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="83"/>
+ <source>Registry path %1 is not writable</source>
+ <translation>Registrierungspfad %1 ist nicht beschreibbar</translation>
</message>
<message>
- <source>Updates.xml could not be opened for reading!</source>
- <translation type="obsolete">Konnte Updates.xml nicht zum Lesen öffnen.</translation>
+ <location filename="../../libs/installer/environmentvariablesoperation.cpp" line="95"/>
+ <source>Could not write to registry path %1</source>
+ <translation>Konnte nicht in Registrierungspfad %1 schreiben</translation>
</message>
<message>
- <source>Updates.xml could not be found on server!</source>
- <translation type="obsolete">Updates.xml konnte auf dem Server nicht gefunden werden.</translation>
+ <location filename="../../libs/kdtools/kdupdaterupdateoperation.cpp" line="294"/>
+ <source>Renaming %1 into %2 failed with %3.</source>
+ <translation>Umbenennung von %1 nach %2 schlug mit Meldung %3 fehl.</translation>
</message>
</context>
</TS>
diff --git a/src/sdk/translations/en_us.ts b/src/sdk/translations/en.ts
index a5d636a2c..a5d636a2c 100644
--- a/src/sdk/translations/en_us.ts
+++ b/src/sdk/translations/en.ts
diff --git a/src/sdk/translations/fr_fr.ts b/src/sdk/translations/fr.ts
index ba99993af..ba99993af 100644
--- a/src/sdk/translations/fr_fr.ts
+++ b/src/sdk/translations/fr.ts
diff --git a/src/sdk/translations/ja_jp.ts b/src/sdk/translations/ja.ts
index 0222d7c14..1b89e069c 100644
--- a/src/sdk/translations/ja_jp.ts
+++ b/src/sdk/translations/ja.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="ja_JP">
+<TS version="2.1" language="ja_JP">
<context>
<name>Component</name>
<message>
@@ -440,6 +440,10 @@
<numerusform>%n個ã®æ›´æ–°ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</numerusform>
</translation>
</message>
+ <message>
+ <source>Could not download update source %1 from (&apos;%2&apos;)</source>
+ <translation>(&apos;%2&apos;) ã‹ã‚‰æ›´æ–°å…ƒ %1 をダウンロードã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
</context>
<context>
<name>KDUpdater::UpdateSourcesInfo</name>
@@ -509,6 +513,18 @@
<source>Could not list archive: QIODevice not set or already destroyed.</source>
<translation>アーカイブã‹ã‚‰ãƒªã‚¹ãƒˆã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: QIODevice ãŒè¨­å®šã•ã‚Œã¦ã„ãªã„ã‹ã€æ—¢ã«ç ´æ£„ã•ã‚Œã¦ã„ã¾ã™ã€‚</translation>
</message>
+ <message>
+ <source>Error while extracting &apos;%1&apos;: %2</source>
+ <translation>&apos;%1&apos; ã®å±•é–‹ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Unknown exception caught (%1)</source>
+ <translation>未知ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—㟠(%1)</translation>
+ </message>
+ <message>
+ <source>Failed</source>
+ <translation>失敗</translation>
+ </message>
</context>
<context>
<name>Lib7z::ListArchiveJob</name>
@@ -516,6 +532,14 @@
<source>Could not list archive: QIODevice already destroyed.</source>
<translation>アーカイブã‹ã‚‰ãƒªã‚¹ãƒˆã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: QIODevice ãŒæ—¢ã«ç ´æ£„ã•ã‚Œã¦ã„ã¾ã™ã€‚</translation>
</message>
+ <message>
+ <source>Unknown exception caught (%1)</source>
+ <translation>未知ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—㟠(%1)</translation>
+ </message>
+ <message>
+ <source>Failed</source>
+ <translation>失敗</translation>
+ </message>
</context>
<context>
<name>QInstaller</name>
@@ -555,6 +579,94 @@
<source>YiB</source>
<translation>YB</translation>
</message>
+ <message>
+ <source>No marker found, stopped after %1.</source>
+ <translation>マーカーãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸãŸã‚ã€%1 ã§åœæ­¢ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Cannot open file %1 for reading: %2</source>
+ <translation>読ã¿è¾¼ã¿ç”¨ã«ãƒ•ã‚¡ã‚¤ãƒ« %1 ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Cannot open file %1 for writing: %2</source>
+ <translation>書ãè¾¼ã¿ç”¨ã«ãƒ•ã‚¡ã‚¤ãƒ« %1 ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Read failed after %1 bytes: %2</source>
+ <translation>%1 ãƒã‚¤ãƒˆã®èª­ã¿è¾¼ã¿å¾Œã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Copy failed. Error: %1</source>
+ <translation>コピーã«å¤±æ•—ã—ã¾ã—ãŸã€‚エラー: %1</translation>
+ </message>
+ <message>
+ <source>Write failed after %1 bytes: %2</source>
+ <translation>%1 ãƒã‚¤ãƒˆã®æ›¸ãè¾¼ã¿å¾Œã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not remove file %1: %2</source>
+ <translation>ファイル %1 を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not remove folder %1: %2</source>
+ <translation>フォルダ %1 を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not create folder %1</source>
+ <translation>フォルダ %1 を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not copy file from %1 to %2: %3</source>
+ <translation>ファイル %1 ã‚’ %2 ã«ã‚³ãƒ”ーã§ãã¾ã›ã‚“ã§ã—ãŸ: %3</translation>
+ </message>
+ <message>
+ <source>Could not move file from %1 to %2: %3</source>
+ <translation>ファイル %1 ã‚’ %2 ã¸ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %3</translation>
+ </message>
+ <message>
+ <source>Could not create folder %1: %2</source>
+ <translation>フォルダ %1 を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not open temporary file: %1</source>
+ <translation>一時ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ: %1</translation>
+ </message>
+ <message>
+ <source>Could not open temporary file for template %1: %2</source>
+ <translation>テンプレート %1 用ã®ä¸€æ™‚ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not create temporary file</source>
+ <translation>一時ファイルを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not retrieve property %1 for item %2</source>
+ <translation>アイテム %2 ã‹ã‚‰ãƒ—ロパティ %1 ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Property %1 for item %2 not of type VT_FILETIME but %3</source>
+ <translation>アイテム %2 ã®ãƒ—ロパティ %1 ã®åž‹ãŒ VT_FILETIME ã§ã¯ãªã %3 ã«ãªã£ã¦ã„ã¾ã™</translation>
+ </message>
+ <message>
+ <source>Could not convert file time to local time</source>
+ <translation>ファイルã®æ™‚刻をローカルタイムã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not convert local file time to system time</source>
+ <translation>ローカルファイルã®æ™‚刻をシステムã®æ™‚刻ã¸å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Corrupt installation</source>
+ <translation>ç ´æã—ãŸã‚¢ãƒ—リケーション環境</translation>
+ </message>
+ <message>
+ <source>Your installation seems to be corrupted. Please consider re-installing from scratch.</source>
+ <translation>ã‚ãªãŸã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚¢ãƒ—リケーション環境ã¯ç ´æã—ã¦ã„るよã†ã§ã™ã€‚å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’検討ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The specified module could not be found.</source>
+ <translation>指定ã•ã‚ŒãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::AddQtCreatorArrayValueOperation</name>
@@ -621,6 +733,10 @@
<source>Cannot resolve isDefault in %1</source>
<translation>%1 ã® isDefault を解決ã§ãã¾ã›ã‚“</translation>
</message>
+ <message>
+ <source>Components cannot have children in updater mode.</source>
+ <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆã¯ã‚¢ãƒƒãƒ—デートモードã§å­è¦ç´ ã‚’æŒã¦ã¾ã›ã‚“。</translation>
+ </message>
</context>
<context>
<name>QInstaller::ComponentModel</name>
@@ -763,7 +879,7 @@
</message>
<message>
<source>Failed to overwrite %1</source>
- <translation>%1 ã«ä¸Šæ›¸ãã§ãã¾ã›ã‚“</translation>
+ <translation>%1 を上書ãã§ãã¾ã›ã‚“</translation>
</message>
<message>
<source>Could not copy %0 to %1, error was: %3</source>
@@ -792,6 +908,10 @@
<source>Could not write Desktop Entry at %1</source>
<translation>%1 ã¸ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—エントリーを書ã込むã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
+ <message>
+ <source>Could not backup file %1: %2</source>
+ <translation>ファイル %1 ã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
</context>
<context>
<name>QInstaller::CreateLinkOperation</name>
@@ -803,6 +923,14 @@
<source>exactly 2</source>
<translation>2個</translation>
</message>
+ <message>
+ <source>Could not create link from %1 to %2.</source>
+ <translation>%1 ã‹ã‚‰ %2 ã¸ã®ãƒªãƒ³ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not remove link from %1 to %2.</source>
+ <translation>%1 ã‹ã‚‰ %2 ã¸ã®ãƒªãƒ³ã‚¯ã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::CreateLocalRepositoryOperation</name>
@@ -858,6 +986,10 @@
<source>Cannot remove directory %1: %2</source>
<translation>ディレクトリ %1 を削除ã§ãã¾ã›ã‚“: %2</translation>
</message>
+ <message>
+ <source>Could not remove file %1: %2</source>
+ <translation>ファイル %1 を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
</context>
<context>
<name>QInstaller::CreateShortcutOperation</name>
@@ -881,6 +1013,10 @@
<source>Could not create link %1: %2</source>
<translation>リンク %1 を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
</message>
+ <message>
+ <source>Failed to overwrite %1: %2</source>
+ <translation>%1 ã«ä¸Šæ›¸ãã§ãã¾ã›ã‚“: %2</translation>
+ </message>
</context>
<context>
<name>QInstaller::DownloadArchivesJob</name>
@@ -930,6 +1066,10 @@ Error while loading %2</source>
<source>Could not find component for: %1.</source>
<translation>コンãƒãƒ¼ãƒãƒ³ãƒˆ %1 を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
+ <message>
+ <source>Downloading archive &apos;%1&apos; for component: %2</source>
+ <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ– &apos;%1&apos; ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­: %2</translation>
+ </message>
</context>
<context>
<name>QInstaller::ElevatedExecuteOperation</name>
@@ -1126,6 +1266,10 @@ Error while loading %2</source>
<source>3 or 4</source>
<translation>3ã‚ã‚‹ã„ã¯4個</translation>
</message>
+ <message>
+ <source>3, 4 or 5</source>
+ <translation>3ã€4ã‚ã‚‹ã„ã¯5個</translation>
+ </message>
</context>
<context>
<name>QInstaller::InstallIconsOperation</name>
@@ -1141,6 +1285,26 @@ Error while loading %2</source>
<source> (Sourcepath, [Vendorprefix])</source>
<translation> (ソースパス, [ベンダープレフィックス])</translation>
</message>
+ <message>
+ <source>Invalid Argument: source folder must not be empty.</source>
+ <translation>無効ãªå¼•æ•°: 空ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’ソースã«æŒ‡å®šã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Could not backup file %1: %2</source>
+ <translation>ファイル %1 ã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Failed to overwrite %1: %2</source>
+ <translation>%1 ã«ä¸Šæ›¸ãã§ãã¾ã›ã‚“: %2</translation>
+ </message>
+ <message>
+ <source>Failed to copy file %1: %2</source>
+ <translation>ファイル %1 ã¸ã®ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not create folder at %1: %2</source>
+ <translation>%1 ã«ãƒ•ã‚©ãƒ«ãƒ€ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
</context>
<context>
<name>QInstaller::IntroductionPage</name>
@@ -1152,6 +1316,38 @@ Error while loading %2</source>
<source>Welcome to the %1 Setup Wizard.</source>
<translation>%1 ã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ウィザードã¸ã‚ˆã†ã“ã。</translation>
</message>
+ <message>
+ <source>Add or remove components</source>
+ <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆã®è¿½åŠ ã¾ãŸã¯å‰Šé™¤</translation>
+ </message>
+ <message>
+ <source>Update components</source>
+ <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆã®æ›´æ–°</translation>
+ </message>
+ <message>
+ <source>Remove all components</source>
+ <translation>ã™ã¹ã¦ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®å‰Šé™¤</translation>
+ </message>
+ <message>
+ <source>Retrieving information from remote installation sources...</source>
+ <translation>リモートã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å…ƒã‹ã‚‰æƒ…報をå–å¾—ã—ã¦ã„ã¾ã™...</translation>
+ </message>
+ <message>
+ <source>At least one valid and enabled repository required for this action to succeed.</source>
+ <translation>ã“ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã®å®Ÿè¡Œã«ã¯ã²ã¨ã¤ä»¥ä¸Šã®æœ‰åŠ¹ãªãƒªãƒã‚¸ãƒˆãƒªãŒå¿…è¦ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>No updates available.</source>
+ <translation>æ–°ã—ã„æ›´æ–°ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source> Only local package management available.</source>
+ <translation> ローカルã®ãƒ‘ッケージ管ç†ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Quit</source>
+ <translation>終了</translation>
+ </message>
</context>
<context>
<name>QInstaller::LicenseAgreementPage</name>
@@ -1223,6 +1419,14 @@ Error while loading %2</source>
<source>exactly 3</source>
<translation>3個</translation>
</message>
+ <message>
+ <source>Failed to open &apos;%1&apos; for reading.</source>
+ <translation>読ã¿è¾¼ã¿ç”¨ã« &apos;%1&apos; ã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Failed to open &apos;%1&apos; for writing.</source>
+ <translation>書ãè¾¼ã¿ç”¨ã« &apos;%1&apos; ã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::MacReplaceInstallNamesOperation</name>
@@ -1311,6 +1515,14 @@ Downloading packages...</source>
<source>There is an important update available, please run the updater first.</source>
<translation>é‡è¦ãªæ›´æ–°ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚å…ˆã«ã‚¢ãƒƒãƒ—データを実行ã—ã¦ãã ã•ã„。</translation>
</message>
+ <message>
+ <source>Error writing Maintenance Tool</source>
+ <translation>メンテナンスツール書ãè¾¼ã¿ä¸­ã®ã‚¨ãƒ©ãƒ¼</translation>
+ </message>
+ <message>
+ <source>Error while elevating access rights.</source>
+ <translation>アクセス権é™ã®æ˜‡æ ¼ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::PackageManagerCorePrivate</name>
@@ -1506,6 +1718,54 @@ Installing component %1</source>
<source>Could not find any update source information.</source>
<translation>更新元情報ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
+ <message>
+ <source>Unresolved dependencies</source>
+ <translation>未解決ã®ä¾å­˜é–¢ä¿‚</translation>
+ </message>
+ <message>
+ <source>Writing maintenance tool.</source>
+ <translation>メンテナンスツールã®æ›¸ãè¾¼ã¿ä¸­ã€‚</translation>
+ </message>
+ <message>
+ <source>Failed to seek in file %1: %2</source>
+ <translation>ファイル %1 ã§ã®ã‚·ãƒ¼ã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Maintenance tool is not a bundle</source>
+ <translation>メンテナンスツールã¯ãƒãƒ³ãƒ‰ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Could not write maintenance tool data to %1: %2</source>
+ <translation>メンテナンスツールã®ãƒ‡ãƒ¼ã‚¿ã‚’ %1 ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not remove data file &apos;%1&apos;: %2</source>
+ <translation>データファイル &apos;%1&apos; を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not write maintenance tool to %1: %2</source>
+ <translation>メンテナンスツールを %1 ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not write maintenance tool binary data to %1: %2</source>
+ <translation>メンテナンスツールã®ãƒã‚¤ãƒŠãƒªãƒ‡ãƒ¼ã‚¿ã‚’ %1 ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Creating Maintenance Tool</source>
+ <translation>メンテナンスツールを作æˆã—ã¦ã„ã¾ã™</translation>
+ </message>
+ <message>
+ <source>Uninstallation completed successfully.</source>
+ <translation>アンインストールã«æˆåŠŸã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Uninstallation aborted.</source>
+ <translation>アンインストールãŒä¸­æ–­ã•ã‚Œã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Dependency cycle between components detected: &apos;%1&apos; and &apos;%2&apos;.</source>
+ <translation>検出ã•ã‚ŒãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ: &apos;%1&apos; 㨠&apos;%2&apos; ã®é–“ã«ä¾å­˜é–¢ä¿‚ã®å¾ªç’°ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::PackageManagerGui</name>
@@ -1563,6 +1823,26 @@ Please copy the installer to a local drive</source>
<translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã‹ã‚‰ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒã§ãã¾ã›ã‚“。
インストーラをローカルドライブã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„</translation>
</message>
+ <message>
+ <source>Do you want to cancel the installation process?</source>
+ <translation>インストールプロセスをキャンセルã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you want to cancel the uninstallation process?</source>
+ <translation>アンインストールプロセスをキャンセルã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you want to quit the installer application?</source>
+ <translation>インストーラを終了ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you want to quit the uninstaller application?</source>
+ <translation>アンインストーラを終了ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
+ <message>
+ <source>Do you want to quit the maintenance application?</source>
+ <translation>メンテナンスツールを終了ã—ã¾ã™ã‹ï¼Ÿ</translation>
+ </message>
</context>
<context>
<name>QInstaller::PerformInstallationForm</name>
@@ -1726,7 +2006,7 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
</message>
<message>
<source>Can not resolve all dependencies!</source>
- <translation>ã™ã¹ã¦ã®ä¾å­˜é–¢ä¿‚を解決ã§ãã¾ã›ã‚“!</translation>
+ <translation>ã™ã¹ã¦ã®ä¾å­˜é–¢ä¿‚を解決ã§ãã¾ã›ã‚“ï¼</translation>
</message>
<message>
<source>Components about to be removed.</source>
@@ -1736,6 +2016,14 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>&amp;Hide Details</source>
<translation>詳細を隠ã™(&amp;H)</translation>
</message>
+ <message>
+ <source>Installation will use %1 of disk space.</source>
+ <translation>%1 ã®ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã‚’使用ã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Cannot resolve all dependencies.</source>
+ <translation>ã™ã¹ã¦ã®ä¾å­˜é–¢ä¿‚を解決ã§ãã¾ã›ã‚“。</translation>
+ </message>
</context>
<context>
<name>QInstaller::RegisterFileTypeOperation</name>
@@ -1751,6 +2039,10 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>Register File Type: Invalid arguments</source>
<translation>ファイル形å¼ã®ç™»éŒ²: 無効ãªå¼•æ•°</translation>
</message>
+ <message>
+ <source>Registering file types is only supported on Windows.</source>
+ <translation>ファイル形å¼ã®ç™»éŒ²ã¯ Windows ã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚</translation>
+ </message>
</context>
<context>
<name>QInstaller::ReplaceOperation</name>
@@ -1762,6 +2054,14 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>exactly 3</source>
<translation>3個</translation>
</message>
+ <message>
+ <source>Failed to open %1 for reading</source>
+ <translation>読ã¿è¾¼ã¿ç”¨ã« %1 ã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Failed to open %1 for writing</source>
+ <translation>書ãè¾¼ã¿ç”¨ã« %1 ã‚’é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸ</translation>
+ </message>
</context>
<context>
<name>QInstaller::RestartPage</name>
@@ -1788,6 +2088,10 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>Fatal error while evaluating a script.</source>
<translation>スクリプトã®è©•ä¾¡ä¸­ã«è‡´å‘½çš„ãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
</message>
+ <message>
+ <source>Exception while loading the component script &apos;%1&apos;. (%2)</source>
+ <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆã‚¹ã‚¯ãƒªãƒ—ト &apos;%1&apos; ã®ãƒ­ãƒ¼ãƒ‰ä¸­ã«ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(%2)</translation>
+ </message>
</context>
<context>
<name>QInstaller::SelfRestartOperation</name>
@@ -1868,6 +2172,14 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>Move &apos;%1&apos; to &apos;%2&apos;.</source>
<translation>&apos;%1&apos; ã‚’ &apos;%2&apos; ã¸ç§»å‹•ã€‚</translation>
</message>
+ <message>
+ <source>Cannot move source &apos;%1&apos; to target &apos;%2&apos;, because target exists and is not removable.</source>
+ <translation>ソース &apos;%1&apos; をターゲット &apos;%2&apos; ã«ç§»å‹•ã§ãã¾ã›ã‚“。ターゲットãŒå­˜åœ¨ã—ã¦ãŠã‚Šã€ã‹ã¤å‰Šé™¤ã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Cannot move source &apos;%1&apos; to target &apos;%2&apos;: %3</source>
+ <translation>ソース &apos;%1&apos; をターゲット &apos;%2&apos; ã«ç§»å‹•ã§ãã¾ã›ã‚“: %3</translation>
+ </message>
</context>
<context>
<name>QInstaller::StartMenuDirectoryPage</name>
@@ -1923,6 +2235,60 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
<source>Select Installation Folder</source>
<translation>インストール先フォルダã®é¸æŠž</translation>
</message>
+ <message>
+ <source>The folder you selected already exists and contains an installation. Choose a different target for installation.</source>
+ <translation>é¸æŠžã•ã‚ŒãŸãƒ•ã‚©ãƒ«ãƒ€ã¯æ—¢ã«å­˜åœ¨ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã™ã€‚ä»–ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å…ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>You have selected an existing, non-empty folder for installation.
+Note that it will be completely wiped on uninstallation of this application.
+It is not advisable to install into this folder as installation might fail.
+Do you want to continue?</source>
+ <translation>既存ã®ç©ºã§ã¯ãªã„フォルダをインストール先ã«é¸æŠžã—ã¾ã—ãŸã€‚
+ã“ã®ã‚¢ãƒ—リケーションをアンインストールã™ã‚‹æ™‚ã«ã¯ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã™ã¹ã¦ãŒæ¶ˆåŽ»ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。
+ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯å¤±æ•—ã™ã‚‹å¯èƒ½æ€§ã‚‚ã‚り推奨ã•ã‚Œã¾ã›ã‚“。
+インストールを継続ã—ã¾ã™ã‹?</translation>
+ </message>
+ <message>
+ <source>You have selected an existing file or symlink, please choose a different target for installation.</source>
+ <translation>既存ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚ã‚‹ã„ã¯ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’é¸æŠžã—ã¾ã—ãŸã€‚ä»–ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å…ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The installation path cannot be empty, please specify a valid folder.</source>
+ <translation>インストール先ã®ãƒ‘スã¯çœç•¥ã§ãã¾ã›ã‚“。有効ãªãƒ•ã‚©ãƒ«ãƒ€ã‚’指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The installation path cannot be relative, please specify an absolute path.</source>
+ <translation>インストール先ã®ãƒ‘スã«ç›¸å¯¾ãƒ‘スã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。絶対パスã§æŒ‡å®šã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The path or installation directory contains non ASCII characters. This is currently not supported! Please choose a different path or installation directory.</source>
+ <translation>インストール先ã®ãƒ‘スã«éžASCII文字ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ãã®ã‚ˆã†ãªãƒ‘スã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。別ã®ãƒ‘スをé¸æŠžã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>As the install directory is completely deleted, installing in %1 is forbidden.</source>
+ <translation>インストールã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚¢ãƒ³ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ™‚ã«å®Œå…¨ã«å‰Šé™¤ã•ã‚Œã‚‹ãŸã‚ã€%1 ã¸ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ç¦æ­¢ã•ã‚Œã¦ã„ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>The path you have entered is too long, please make sure to specify a valid path.</source>
+ <translation>入力ã—ãŸãƒ‘スãŒé•·ã™ãŽã¾ã™ã€‚有効ãªãƒ‘スを指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The path you have entered is not valid, please make sure to specify a valid target.</source>
+ <translation>入力ã—ãŸãƒ‘スã¯ç„¡åŠ¹ã§ã™ã€‚有効ãªã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The path you have entered is not valid, please make sure to specify a valid drive.</source>
+ <translation>入力ã—ãŸãƒ‘スã¯ç„¡åŠ¹ã§ã™ã€‚有効ãªãƒ‰ãƒ©ã‚¤ãƒ–を指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The installation path must not end with &apos;.&apos;, please specify a valid folder.</source>
+ <translation>インストール先ã®ãƒ‘スã®æœ€å¾Œã« &apos;.&apos; ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。有効ãªãƒ•ã‚©ãƒ«ãƒ€ã‚’指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The installation path must not contain &apos;%1&apos;, please specify a valid folder.</source>
+ <translation>インストール先ã®ãƒ‘ス㫠%1 ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。有効ãªãƒ•ã‚©ãƒ«ãƒ€ã‚’指定ã—ã¦ãã ã•ã„。</translation>
+ </message>
</context>
<context>
<name>QInstaller::TestRepository</name>
@@ -2226,7 +2592,7 @@ Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã
</message>
<message>
<source>Could not write to registry path %1</source>
- <translation>レジストリパス %1 ã¸æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ</translation>
+ <translation>レジストリã®ãƒ‘ス %1 ã¸æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
<source>Invalid Argument: source folder must not be empty.</source>
@@ -2569,4 +2935,575 @@ Do you want to continue?</source>
<translation>既存ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚ã‚‹ã„ã¯ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’é¸æŠžã—ã¾ã—ãŸã€‚ä»–ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å…ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。</translation>
</message>
</context>
+<context>
+ <name>QInstaller::ProxyCredentialsDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>ダイアログ</translation>
+ </message>
+ <message>
+ <source>The proxy %1 requires a username and password.</source>
+ <translation>プロキシ %1 ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘スワードãŒå¿…è¦ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ユーザå:</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ユーザå</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>パスワード:</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>パスワード</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::ServerAuthenticationDialog</name>
+ <message>
+ <source>Server Requires Authentication</source>
+ <translation>サーãƒãƒ¼ã«ã¯èªè¨¼ãŒå¿…è¦ã§ã™</translation>
+ </message>
+ <message>
+ <source>You need to supply a username and password to access this site.</source>
+ <translation>ã“ã®ã‚µã‚¤ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードãŒå¿…è¦ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ユーザå:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>パスワード:</translation>
+ </message>
+ <message>
+ <source>%1 at %2</source>
+ <translation>%2 ã® %1</translation>
+ </message>
+</context>
+<context>
+ <name>BinaryLayout</name>
+ <message>
+ <source>Could not seek to %1 to read the embedded meta data count.</source>
+ <translation>埋ã‚è¾¼ã¾ã‚ŒãŸãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿æ•°ã‚’読ã¿è¾¼ã‚€ãŸã‚ã« %1 ã«ã‚·ãƒ¼ã‚¯å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not seek to %1 to read the resource collection segment.</source>
+ <translation>リソースコレクションセグメントを読ã¿è¾¼ã‚€ãŸã‚ã« %1 ã«ã‚·ãƒ¼ã‚¯å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Unexpected mismatch of meta resources. Read %1, expected: %2.</source>
+ <translation>メタリソースã®äºˆæœŸã—ãªã„ä¸ä¸€è‡´ã€‚å–得値 %1ã€æƒ³å®šå€¤: %2。</translation>
+ </message>
+</context>
+<context>
+ <name>BinaryContent</name>
+ <message>
+ <source>Could not seek to %1 to read the operation data.</source>
+ <translation>æ“作データを読ã¿è¾¼ã‚€ãŸã‚ã« %1 ã«ã‚·ãƒ¼ã‚¯å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not seek to %1 to read the resource collection block.</source>
+ <translation>リソースコレクションブロックを読ã¿è¾¼ã‚€ãŸã‚ã« %1 ã«ã‚·ãƒ¼ã‚¯å‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not open meta resource. Error: %1</source>
+ <translation>メタリソースを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %1</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::Resource</name>
+ <message>
+ <source>Could not open Resource &apos;%1&apos; read-only.</source>
+ <translation>読ã¿è¾¼ã¿å°‚用ã§ãƒªã‚½ãƒ¼ã‚¹ %1 ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Read failed after %1 bytes: %2</source>
+ <translation>%1 ãƒã‚¤ãƒˆã®èª­ã¿è¾¼ã¿å¾Œã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Write failed after %1 bytes: %2</source>
+ <translation>%1 ãƒã‚¤ãƒˆã®æ›¸ãè¾¼ã¿å¾Œã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+</context>
+<context>
+ <name>ResourceCollectionManager</name>
+ <message>
+ <source>Could not open resource %1: %2</source>
+ <translation>リソース %1 ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::CopyFileTask</name>
+ <message>
+ <source>Invalid task item count.</source>
+ <translation>タスクアイテム数ãŒç„¡åŠ¹ã§ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Could not open source &apos;%1&apos; for read. Error: %2.</source>
+ <translation>読ã¿è¾¼ã¿ç”¨ã«ã‚½ãƒ¼ã‚¹ &apos;%1&apos; ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %2。</translation>
+ </message>
+ <message>
+ <source>Could not open target &apos;%1&apos; for write. Error: %2.</source>
+ <translation>書ãè¾¼ã¿ç”¨ã«å¯¾è±¡ &apos;%1&apos; ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %2</translation>
+ </message>
+ <message>
+ <source>Writing to target &apos;%1&apos; failed. Error: %2.</source>
+ <translation>対象 &apos;%1&apos; ã¸ã®æ›¸ãè¾¼ã¿ä¸­ã«å¤±æ•—ã—ã¾ã—ãŸã€‚エラー: %2</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::Downloader</name>
+ <message>
+ <source>Target &apos;%1&apos; not open for write. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error.</extracomment>
+ <translation>書ãè¾¼ã¿ã®ãŸã‚ã«å¯¾è±¡ &apos;%1&apos; ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %2 。</translation>
+ </message>
+ <message>
+ <source>Writing to target &apos;%1&apos; failed. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error.</extracomment>
+ <translation>対象 &apos;%1&apos; ã¸ã®æ›¸ãè¾¼ã¿ä¸­ã«å¤±æ•—ã—ã¾ã—ãŸã€‚エラー: %2。</translation>
+ </message>
+ <message>
+ <source>Redirect loop detected &apos;%1&apos;.</source>
+ <translation>&apos;%1&apos; ã§ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ«ãƒ¼ãƒ—を検出ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Checksum mismatch detected &apos;%1&apos;.</source>
+ <translation>&apos;%1&apos; ã§ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®ä¸ä¸€è‡´ã‚’検出ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Network error while downloading &apos;%1&apos;: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>&apos;%1&apos; をダウンロード中ã«é€šä¿¡ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2 。</translation>
+ </message>
+ <message>
+ <source>Unknown network error while downloading: %1.</source>
+ <extracomment>%1 is a sentence describing the error</extracomment>
+ <translation>ダウンロード中ã«ä¸æ˜Žãªé€šä¿¡ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %1。</translation>
+ </message>
+ <message>
+ <source>Pause and resume not supported by network transfers.</source>
+ <translation>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é€šä¿¡ã®ä¸€æ™‚åœæ­¢ã¨å†é–‹ã¯ç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Invalid source &apos;%1&apos;. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>無効ãªã‚½ãƒ¼ã‚¹ &apos;%1&apos;。エラー: %2。</translation>
+ </message>
+ <message>
+ <source>Target file &apos;%1&apos; already exists but is not a file.</source>
+ <translation>対象ファイル &apos;%1&apos; ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ãŒã€ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Could not open target &apos;%1&apos; for write. Error: %2.</source>
+ <extracomment>%2 is a sentence describing the error</extracomment>
+ <translation>対象 &apos;%1&apos; ã¯æ›¸ãè¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %2。</translation>
+ </message>
+</context>
+<context>
+ <name>AuthenticationRequiredException</name>
+ <message>
+ <source>%1 at %2</source>
+ <translation>%2 ã® %1</translation>
+ </message>
+ <message>
+ <source>Proxy requires authentication.</source>
+ <translation>プロキシã¯èªè¨¼ãŒå¿…è¦ã§ã™ã€‚</translation>
+ </message>
+</context>
+<context>
+ <name>UpdateOperation</name>
+ <message>
+ <source>Registry path %1 is not writable</source>
+ <translation>レジストリã®ãƒ‘ス %1 ã«æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“</translation>
+ </message>
+ <message>
+ <source>Could not write to registry path %1</source>
+ <translation>レジストリã®ãƒ‘ス %1 ã¸æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Renaming %1 into %2 failed with %3.</source>
+ <translation>%1 ã‹ã‚‰ %2 ã¸ã®åå‰ã®å¤‰æ›´ãŒ %3 ã§å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::FakeStopProcessForUpdateOperation</name>
+ <message>
+ <source>Number of arguments does not match: one is required</source>
+ <translation>引数ã®æ•°ãŒä¸€è‡´ã—ã¾ã›ã‚“: 一ã¤ã®ã¿æŒ‡å®šã—ã¦ãã ã•ã„</translation>
+ </message>
+ <message>
+ <source>Could not get package manager core.</source>
+ <translation>パッケージマãƒãƒ¼ã‚¸ãƒ£ã®ã‚³ã‚¢ã‚’å–å¾—ã§ãã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>This process should be stopped before continuing: %1</source>
+ <translation>続行ã™ã‚‹ã«ã¯ã“ã®ãƒ—ロセスを終了ã—ã¦ãã ã•ã„: %1</translation>
+ </message>
+ <message>
+ <source>These processes should be stopped before continuing: %1</source>
+ <translation>続行ã™ã‚‹ã«ã¯ã“れらã®ãƒ—ロセスを終了ã—ã¦ãã ã•ã„: %1</translation>
+ </message>
+</context>
+<context>
+ <name>InstallerCalculator</name>
+ <message>
+ <source>Components added as automatic dependencies:</source>
+ <translation>自動的ãªä¾å­˜é–¢ä¿‚ã®è§£æ±ºã«ã‚ˆã‚Šè¿½åŠ ã•ã‚ŒãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ:</translation>
+ </message>
+ <message>
+ <source>Components added as dependency for &apos;%1&apos;:</source>
+ <translation>&apos;%1&apos; ãŒä¾å­˜ã—ã¦ã„ã‚‹ãŸã‚ã«è¿½åŠ ã•ã‚ŒãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ:</translation>
+ </message>
+ <message>
+ <source>Components that have resolved dependencies:</source>
+ <translation>ä¾å­˜é–¢ä¿‚を解決ã—ãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ:</translation>
+ </message>
+ <message>
+ <source>Selected components without dependencies:</source>
+ <translation>é¸æŠžã•ã‚ŒãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¯ä¾å­˜é–¢ä¿‚ãŒã‚ã‚Šã¾ã›ã‚“:</translation>
+ </message>
+ <message>
+ <source>Recursion detected, component &apos;%1&apos; already added with reason: &apos;%2&apos;</source>
+ <translation>å†å¸°ã‚’検出ã—ã¾ã—ãŸã€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ &apos;%1&apos; ã¯ã€&apos;%2&apos; ã®ç†ç”±ã«ã‚ˆã£ã¦æ—¢ã«è¿½åŠ ã•ã‚Œã¦ã„ã¾ã™</translation>
+ </message>
+ <message>
+ <source>Cannot find missing dependency &apos;%1&apos; for &apos;%2&apos;.</source>
+ <translation>&apos;%2&apos; ã®ãŸã‚ã«ä¸è¶³ã—ã¦ã„ã‚‹ä¾å­˜é–¢ä¿‚ &apos;%1&apos; を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。</translation>
+ </message>
+</context>
+<context>
+ <name>DirectoryGuard</name>
+ <message>
+ <source>Path exists but is not a folder: %1</source>
+ <translation>パスãŒå­˜åœ¨ã—ã¦ã„ã¾ã™ãŒã€ãƒ•ã‚©ãƒ«ãƒ€ã§ã¯ã‚ã‚Šã¾ã›ã‚“: %1</translation>
+ </message>
+ <message>
+ <source>Could not create folder: %1</source>
+ <translation>フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %1</translation>
+ </message>
+</context>
+<context>
+ <name>QIODeviceSequentialOutStream</name>
+ <message>
+ <source>No device set for output stream</source>
+ <translation>ストリームを出力ã™ã‚‹ãƒ‡ãƒã‚¤ã‚¹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
+ </message>
+</context>
+<context>
+ <name>OpenArchiveInfo</name>
+ <message>
+ <source>Could not load codecs</source>
+ <translation>コーデックをロードã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not retrieve default format</source>
+ <translation>デフォルトフォーマットをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not open archive</source>
+ <translation>アーカイブを開ã‘ã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>No CArc found</source>
+ <translation>CArc ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“</translation>
+ </message>
+</context>
+<context>
+ <name>Lib7z</name>
+ <message>
+ <source>Could not retrieve number of items in archive</source>
+ <translation>アーカイブ内ã®ã‚¢ã‚¤ãƒ†ãƒ æ•°ãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not retrieve path of archive item %1</source>
+ <translation>アーカイブアイテム %1 ã®ãƒ‘スãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Unknown exception caught (%1)</source>
+ <translation>未知ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—㟠(%1)</translation>
+ </message>
+ <message>
+ <source>internal code: %1</source>
+ <translation>内部コード: %1</translation>
+ </message>
+ <message>
+ <source>not enough memory</source>
+ <translation>メモリãŒä¸è¶³ã—ã¦ã„ã¾ã™</translation>
+ </message>
+ <message>
+ <source>Error: %1</source>
+ <translation>エラー: %1</translation>
+ </message>
+ <message>
+ <source>Could not load codecs</source>
+ <translation>コーデックをロードã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not retrieve default format</source>
+ <translation>デフォルトフォーマットをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not create archive %1. %2</source>
+ <translation>アーカイブ %1 ãŒä½œæˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>CArc index %1 out of bounds [0, %2]</source>
+ <translation>CArc ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ %1 ãŒç¯„囲外ã§ã™ [0, %2]</translation>
+ </message>
+ <message>
+ <source>Item index %1 out of bounds [0, %2]</source>
+ <translation>アイテムã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ %1 ãŒç¯„囲外ã§ã™ [0, %2]</translation>
+ </message>
+ <message>
+ <source>Could not create output file for writing: %1</source>
+ <translation>書ãè¾¼ã¿ç”¨ã«å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %1</translation>
+ </message>
+</context>
+<context>
+ <name>ExtractCallbackImpl</name>
+ <message>
+ <source>Could not retrieve path of archive item %1</source>
+ <translation>アーカイブアイテム %1 ã®ãƒ‘スãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <source>Could not remove already existing symlink. %1</source>
+ <translation>ã™ã§ã«å­˜åœ¨ã™ã‚‹ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã¯å‰Šé™¤ã§ãã¾ã›ã‚“: %1</translation>
+ </message>
+ <message>
+ <source>Could not open file: %1 (%2)</source>
+ <translation>ファイルãŒé–‹ã‘ã¾ã›ã‚“: %1 (%2)</translation>
+ </message>
+ <message>
+ <source>Could not create symlink at &apos;%1&apos;. Another one is already existing.</source>
+ <translation>&apos;%1&apos; ã«ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä»–ã®ãƒªãƒ³ã‚¯ãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Could not read symlink target from file &apos;%1&apos;.</source>
+ <translation>シンボリックリンクã®å‚照先ã®ãƒ•ã‚¡ã‚¤ãƒ« &apos;%1&apos; を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not create symlink at %1. %2</source>
+ <translation>%1 ã«ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ %2</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::MetadataJob</name>
+ <message>
+ <source>Missing package manager core engine.</source>
+ <translation>パッケージマãƒãƒ¼ã‚¸ãƒ£ã®ã‚³ã‚¢ã‚¨ãƒ³ã‚¸ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Preparing meta information download...</source>
+ <translation>メタ情報ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®æº–å‚™...</translation>
+ </message>
+ <message>
+ <source>Meta data download canceled.</source>
+ <translation>メタデータã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’キャンセルã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Missing proxy credentials.</source>
+ <translation>プロキシã®èªè¨¼æƒ…å ±ãŒã‚ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Authentication failed.</source>
+ <translation>èªè¨¼å¤±æ•—。</translation>
+ </message>
+ <message>
+ <source>Unknown exception during download.</source>
+ <translation>ダウンロード中ã«æœªçŸ¥ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Retrieving meta information from remote repository...</source>
+ <translation>リモートリãƒã‚¸ãƒˆãƒªã‹ã‚‰ãƒ¡ã‚¿æƒ…報をå–得中...</translation>
+ </message>
+ <message>
+ <source>Failure to fetch repositories.</source>
+ <translation>リãƒã‚¸ãƒˆãƒªã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Unknown exception during extracting.</source>
+ <translation>展開中ã«æœªçŸ¥ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Extracting meta information...</source>
+ <translation>メタ情報を展開中...</translation>
+ </message>
+ <message>
+ <source>Error while extracting &apos;%1&apos;: %2</source>
+ <translation>&apos;%1&apos; ã®å±•é–‹ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Unknown exception caught while extracting %1.</source>
+ <translation>%1 ã®å±•é–‹ä¸­ã«æœªçŸ¥ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not open %1 for reading. Error: %2</source>
+ <translation>読ã¿è¾¼ã¿ç”¨ã« %1 ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚エラー: %2</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::FileTaskObserver</name>
+ <message>
+ <source>%1 of %2</source>
+ <translation>%1 / %2</translation>
+ </message>
+ <message>
+ <source>%1 received.</source>
+ <translation>%1 å—信済ã¿</translation>
+ </message>
+ <message>
+ <source>(%1/sec)</source>
+ <translation>(%1/秒)</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n day(s), </source>
+ <translation>
+ <numerusform>%n æ—¥, </numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source>%n hour(s), </source>
+ <translation>
+ <numerusform>%n 時間, </numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source>%n minute(s)</source>
+ <translation>
+ <numerusform>%n 分</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source>%n second(s)</source>
+ <translation>
+ <numerusform>%n 秒</numerusform>
+ </translation>
+ </message>
+ <message>
+ <source> - %1%2%3%4 remaining.</source>
+ <translation>- 残り時間 %1%2%3%4。</translation>
+ </message>
+ <message>
+ <source> - unknown time remaining.</source>
+ <translation> - 残り時間: ä¸æ˜Žã€‚</translation>
+ </message>
+</context>
+<context>
+ <name>QtPatchOperation</name>
+ <message>
+ <source>Invalid arguments in %0: %1 arguments given, %2 expected%3.</source>
+ <translation>%0 ã«ç„¡åŠ¹ãªå¼•æ•°: %1個ã®å¼•æ•°ãŒæ¸¡ã•ã‚Œã¾ã—ãŸãŒã€å¿…è¦ãªã®ã¯%2ã§ã™%3。</translation>
+ </message>
+ <message>
+ <source>3 or 4</source>
+ <translation>3ã‚ã‚‹ã„ã¯4個</translation>
+ </message>
+ <message>
+ <source>Needed installer object in &quot;%1&quot; operation is empty.</source>
+ <translation>&quot;%1&quot; ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ä½œæˆã«å¿…è¦ãªæ“作ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>First argument should be &apos;linux&apos;, &apos;mac&apos; or &apos;windows&apos;. No other type is supported at this time.</source>
+ <translation>最åˆã®å¼•æ•°ã¯ &apos;linux&apos;, &apos;mac&apos;, &apos;windows&apos; ã®ã„ãšã‚Œã‹ã‚’指定ã—ã¦ãã ã•ã„。ãれ以外ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。</translation>
+ </message>
+ <message>
+ <source>Could not find the needed QmakeOutputInstallerKey(%1) value on the installer object. The ConsumeOutput operation on the valid qmake needs to be called first.</source>
+ <translation>インストーラã«å¿…è¦ãª QmakeOutputInstallerKey(%1) ã®å€¤ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚é©åˆ‡ãª qmake 㧠ConsumeOutput æ“作を最åˆã«å®Ÿè¡Œã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>QMake from the current Qt version
+(%1)is not existing. Please file a bugreport with this dialog at https://bugreports.qt-project.org.</source>
+ <translation>ç¾åœ¨ã® Qt ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³(%1)ã® QMake ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‹ã‚‰ https://bugreports.qt-project.org ã¸ãƒã‚°å ±å‘Šã‚’ã—ã¦ãã ã•ã„。</translation>
+ </message>
+ <message>
+ <source>The output of
+%1 -query
+is not parseable. Please file a bugreport with this dialog https://bugreports.qt-project.org.
+output: &quot;%2&quot;</source>
+ <translation>以下ã®å‡ºåŠ›ãŒãƒ‘ースã§ãã¾ã›ã‚“。
+%1 -query
+ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‹ã‚‰ https://bugreports.qt-project.org ã¸ãƒã‚°å ±å‘Šã‚’ã—ã¦ãã ã•ã„。
+出力: &quot;%2&quot;</translation>
+ </message>
+ <message>
+ <source>Qt patch error: new Qt dir(%1)
+needs to be less than 255 characters.</source>
+ <translation>Qt パッãƒã‚¨ãƒ©ãƒ¼: æ–°ã—ã„ Qt ã®ãƒ‘ス(%1)
+ã¯255文字以下ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <source>Qt patch error: Can not open %1.(%2)</source>
+ <translation>Qt パッãƒã‚¨ãƒ©ãƒ¼: %1 ã‚’é–‹ã‘ã¾ã›ã‚“。(%2)</translation>
+ </message>
+ <message>
+ <source>The installer was not able to get the unpatched path from
+%1.(maybe it is broken or removed)
+It tried to patch the Qt binaries, but all other files in Qt are unpatched.
+This could result in a broken Qt version.
+Sometimes it helps to restart the installer with a switched off antivirus software.</source>
+ <translation>インストーラã¯ãƒ‘ッãƒæœªé©ç”¨æ™‚ã®ãƒ‘スを %1 ã‹ã‚‰å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
+(ãŠãらãファイルãŒå£Šã‚Œã¦ã„ã‚‹ã‹å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™)
+Qt ã®ãƒã‚¤ãƒŠãƒªã«ãƒ‘ッãƒã‚’é©ç”¨ã—よã†ã¨ã—ã¾ã—ãŸãŒã€Qt ã®ä»–ã®ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦ãƒ‘ッãƒã¯é©ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。
+ã“ã®ãŸã‚ã€ã“ã® Qt ã¯æ­£å¸¸ãªçŠ¶æ…‹ã«ç„¡ã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+アンãƒã‚¦ã‚£ãƒ«ã‚¹ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’オフã«ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ã‚’å†èµ·å‹•ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦æ”¹å–„ã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。</translation>
+ </message>
+</context>
+<context>
+ <name>RemoteClient</name>
+ <message>
+ <source>Could not get authorization.</source>
+ <translation>èªè¨¼ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>Could not get authorization that is needed for continuing the installation.
+ Either abort the installation or use the fallback solution by running
+
+%1
+
+as root and then clicking OK.</source>
+ <translation>インストールã®ç¶™ç¶šã«å¿…è¦ãªèªè¨¼ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
+インストールを「中止ã€ã™ã‚‹ã‹ã€åˆ¥ã®æ‰‹æ®µã¨ã—㦠root ã§
+%1
+を実行ã—ãŸå¾Œã«ã€ŒOKã€ã‚’クリックã—ã¦ãã ã•ã„。</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::RemoteObject</name>
+ <message>
+ <source>Could not read all data after sending command: %1. Bytes expected: %2, Bytes received: %3. Error: %3</source>
+ <translation>コマンドをé€ä¿¡ã—ãŸå¾Œã€ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %1。想定ãƒã‚¤ãƒˆæ•°: %2 ã€å—ä¿¡ãƒã‚¤ãƒˆæ•°: %3。エラー: %3</translation>
+ </message>
+</context>
+<context>
+ <name>QInstaller::RemoteServerConnection</name>
+ <message>
+ <source>Could not read all data after sending command: %1. Bytes expected: %2, Bytes received: %3. Error: %3</source>
+ <translation>コマンドをé€ä¿¡ã—ãŸå¾Œã€ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %1。想定ãƒã‚¤ãƒˆæ•°: %2 ã€å—ä¿¡ãƒã‚¤ãƒˆæ•°: %3。エラー: %3</translation>
+ </message>
+</context>
+<context>
+ <name>KDLockFile</name>
+ <message>
+ <source>Could not create lock file &apos;%1&apos;: %2</source>
+ <translation>ロックファイル &apos;%1&apos; を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not write PID to lock file &apos;%1&apos;: %2</source>
+ <translation>ロックファイル &apos;%1&apos; ã« PID を書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not obtain the lock for file &apos;%1&apos;: %2</source>
+ <translation>ファイル &apos;%1&apos; をロックã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+ <message>
+ <source>Could not release the lock for file &apos;%1&apos;: %2</source>
+ <translation>ファイル &apos;%1&apos; ã®ãƒ­ãƒƒã‚¯ã‚’解除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
+ </message>
+</context>
</TS>
diff --git a/src/sdk/translations/ru_ru.ts b/src/sdk/translations/ru.ts
index 9673906c6..9673906c6 100644
--- a/src/sdk/translations/ru_ru.ts
+++ b/src/sdk/translations/ru.ts
diff --git a/src/sdk/translations/sv_se.ts b/src/sdk/translations/sv.ts
index c6557cdab..c6557cdab 100644
--- a/src/sdk/translations/sv_se.ts
+++ b/src/sdk/translations/sv.ts
diff --git a/tests/auto/installer/scriptengine/data/dynamicpage.qs b/tests/auto/installer/scriptengine/data/dynamicpage.qs
index 4ac1990c1..576d5816e 100644
--- a/tests/auto/installer/scriptengine/data/dynamicpage.qs
+++ b/tests/auto/installer/scriptengine/data/dynamicpage.qs
@@ -32,8 +32,18 @@
**
**************************************************************************/
+function assert(condition)
+{
+ if (!condition)
+ throw new Error("Assertion failed!");
+}
+
function Controller()
{
+ var widget = gui.pageWidgetByObjectName("DynamicWidget");
+ assert(typeof widget === 'object');
+ var button = widget.Button;
+ assert(typeof button === 'object');
}
Controller.prototype.ReadAndSetValues = function()
diff --git a/tests/auto/installer/scriptengine/data/form.ui b/tests/auto/installer/scriptengine/data/form.ui
new file mode 100644
index 000000000..4814f708f
--- /dev/null
+++ b/tests/auto/installer/scriptengine/data/form.ui
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>form</class>
+ <widget class="QWidget" name="form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <widget class="QCheckBox" name="checkBox">
+ <property name="geometry">
+ <rect>
+ <x>90</x>
+ <y>90</y>
+ <width>78</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>CheckBox</string>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/installer/scriptengine/data/userinterface.qs b/tests/auto/installer/scriptengine/data/userinterface.qs
new file mode 100644
index 000000000..8aed71630
--- /dev/null
+++ b/tests/auto/installer/scriptengine/data/userinterface.qs
@@ -0,0 +1,5 @@
+function Component()
+{
+ // check that the .ui file has been properly loaded
+ console.log("checked: " + component.userInterface("form").checkBox.checked);
+}
diff --git a/tests/auto/installer/scriptengine/scriptengine.qrc b/tests/auto/installer/scriptengine/scriptengine.qrc
index caffe3627..06829326e 100644
--- a/tests/auto/installer/scriptengine/scriptengine.qrc
+++ b/tests/auto/installer/scriptengine/scriptengine.qrc
@@ -5,5 +5,7 @@
<file>data/component2.qs</file>
<file>data/broken_connect.qs</file>
<file>data/dynamicpage.qs</file>
+ <file>data/form.ui</file>
+ <file>data/userinterface.qs</file>
</qresource>
</RCC>
diff --git a/tests/auto/installer/scriptengine/tst_scriptengine.cpp b/tests/auto/installer/scriptengine/tst_scriptengine.cpp
index 91013d028..12915e30a 100644
--- a/tests/auto/installer/scriptengine/tst_scriptengine.cpp
+++ b/tests/auto/installer/scriptengine/tst_scriptengine.cpp
@@ -58,8 +58,8 @@ public:
setPage(PackageManagerCore::InstallationFinished, new FinishedPage(core));
foreach (const int id, pageIds()) {
- packageManagerCore()->controlScriptEngine()->addQObjectChildren(page(id));
- packageManagerCore()->componentScriptEngine()->addQObjectChildren(page(id));
+ packageManagerCore()->controlScriptEngine()->addToGlobalObject(page(id));
+ packageManagerCore()->componentScriptEngine()->addToGlobalObject(page(id));
}
}
@@ -83,6 +83,8 @@ public:
void init() {
m_widget = new QWidget;
m_widget->setObjectName("Widget");
+ QWidget *button = new QWidget(m_widget);
+ button->setObjectName("Button");
packageManagerCore()->wizardPageInsertionRequested(m_widget,
PackageManagerCore::Introduction);
@@ -303,6 +305,17 @@ private slots:
}
}
+ void loadComponentUserInterfaces()
+ {
+ try {
+ setExpectedScriptOutput("\"checked: false\"");
+ m_component->loadUserInterfaces(QDir(":///data"), QStringList() << QLatin1String("form.ui"));
+ m_component->loadComponentScript(":///data/userinterface.qs");
+ } catch (const Error &error) {
+ QFAIL(qPrintable(error.message()));
+ }
+ }
+
void loadSimpleAutoRunScript()
{
try {
diff --git a/tests/auto/installer/settings/data/full_config.xml b/tests/auto/installer/settings/data/full_config.xml
index e2cae369e..5479fa353 100644
--- a/tests/auto/installer/settings/data/full_config.xml
+++ b/tests/auto/installer/settings/data/full_config.xml
@@ -38,6 +38,7 @@ File should contain all elements we allow in a config.xml
<AllowSpaceInPath>true</AllowSpaceInPath>
<AllowNonAsciiCharacters>true</AllowNonAsciiCharacters>
<RepositorySettingsPageVisible>false</RepositorySettingsPageVisible>
+ <CreateLocalRepository>false</CreateLocalRepository>
<TargetConfigurationFile>components.xml</TargetConfigurationFile>
<RemoteRepositories>
diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp
index 626acfab1..018650b1c 100644
--- a/tests/auto/installer/settings/tst_settings.cpp
+++ b/tests/auto/installer/settings/tst_settings.cpp
@@ -31,7 +31,7 @@ void tst_Settings::loadTutorialConfig()
// specified values
QCOMPARE(settings.applicationName(), QLatin1String("Your application"));
- QCOMPARE(settings.applicationVersion(), QLatin1String("1.2.3"));
+ QCOMPARE(settings.version(), QLatin1String("1.2.3"));
QCOMPARE(settings.title(), QLatin1String("Your application Installer"));
QCOMPARE(settings.publisher(), QLatin1String("Your vendor"));
QCOMPARE(settings.startMenuDir(), QLatin1String("Super App"));
@@ -72,6 +72,7 @@ void tst_Settings::loadTutorialConfig()
QCOMPARE(settings.repositorySettingsPageVisible(), true);
QCOMPARE(settings.allowSpaceInPath(), false);
QCOMPARE(settings.allowNonAsciiCharacters(), false);
+ QCOMPARE(settings.createLocalRepository(), false);
QCOMPARE(settings.hasReplacementRepos(), false);
QCOMPARE(settings.repositories(), QSet<Repository>());
diff --git a/tools/binarycreator/binarycreator.cpp b/tools/binarycreator/binarycreator.cpp
index ea11a3405..749edbbef 100644
--- a/tools/binarycreator/binarycreator.cpp
+++ b/tools/binarycreator/binarycreator.cpp
@@ -713,7 +713,7 @@ int main(int argc, char **argv)
// 3; copy the meta data of the available packages, generate Updates.xml
QInstallerTools::copyMetaData(tmpMetaDir, tmpRepoDir, packages, settings
- .applicationName(), settings.applicationVersion());
+ .applicationName(), settings.version());
// 4; copy the configuration file and and icons etc.
copyConfigData(configFile, tmpMetaDir + QLatin1String("/installer-config"));
diff --git a/tools/binarycreator/binarycreator.pro b/tools/binarycreator/binarycreator.pro
index de3a2e42f..248c2439b 100644
--- a/tools/binarycreator/binarycreator.pro
+++ b/tools/binarycreator/binarycreator.pro
@@ -5,7 +5,6 @@ INCLUDEPATH += . .. rcc ../common
include(../../installerfw.pri)
QT -= gui
-QTPLUGIN += qico
QT += qml xml
!minQtVersion(5,4,0): QTPLUGIN += qtaccessiblewidgets