From 2c8dddb5a346ee34a9134534763e9c6a276305cf Mon Sep 17 00:00:00 2001 From: kh1 Date: Thu, 1 Dec 2011 13:18:08 +0100 Subject: Fix QTIFW-52. Do not set the application name and version during init, as this would set the packages info to modified. Thus if the packages info goes out of scope would trigger an components xml write. We now set the name and version when we start installing, or if is empty. Change-Id: I8503bab55f7d614bc859f3a3773eb4a0f7816d48 Reviewed-by: Tim Jenssen --- .../libinstaller/packagemanagercore_p.cpp | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'installerbuilder') diff --git a/installerbuilder/libinstaller/packagemanagercore_p.cpp b/installerbuilder/libinstaller/packagemanagercore_p.cpp index d3a632d62..184a9d26a 100644 --- a/installerbuilder/libinstaller/packagemanagercore_p.cpp +++ b/installerbuilder/libinstaller/packagemanagercore_p.cpp @@ -585,10 +585,12 @@ void PackageManagerCorePrivate::initialize() connect(this, SIGNAL(uninstallationStarted()), ProgressCoordinator::instance(), SLOT(reset())); m_updaterApplication.updateSourcesInfo()->setFileName(QString()); - m_updaterApplication.packagesInfo()->setFileName(componentsXmlPath()); - - m_updaterApplication.packagesInfo()->setApplicationName(m_settings.applicationName()); - m_updaterApplication.packagesInfo()->setApplicationVersion(m_settings.applicationVersion()); + KDUpdater::PackagesInfo &packagesInfo = *m_updaterApplication.packagesInfo(); + packagesInfo.setFileName(componentsXmlPath()); + if (packagesInfo.applicationName().isEmpty()) + packagesInfo.setApplicationName(m_settings.applicationName()); + if (packagesInfo.applicationVersion().isEmpty()) + packagesInfo.setApplicationVersion(m_settings.applicationVersion()); if (isInstaller()) { m_updaterApplication.addUpdateSource(m_settings.applicationName(), m_settings.applicationName(), @@ -1401,9 +1403,14 @@ void PackageManagerCorePrivate::runInstaller() componentsInstallPartProgressSize = double(1); // Force an update on the components xml as the install dir might have changed. - m_updaterApplication.packagesInfo()->setFileName(componentsXmlPath()); + KDUpdater::PackagesInfo &info = *m_updaterApplication.packagesInfo(); + info.setFileName(componentsXmlPath()); // Clear the packages as we might install into an already existing installation folder. - m_updaterApplication.packagesInfo()->clearPackageInfoList(); + info.clearPackageInfoList(); + // also update the applicatin name and version, might be set from a script as well + info.setApplicationName(m_core->value(QLatin1String("ProductName"), m_settings.applicationName())); + info.setApplicationVersion(m_core->value(QLatin1String("ProductVersion"), + m_settings.applicationVersion())); callBeginInstallation(componentsToInstall); stopProcessesForUpdates(componentsToInstall); @@ -1988,12 +1995,14 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages() { LocalPackagesHash installedPackages; - KDUpdater::PackagesInfo &packagesInfo = *m_updaterApplication.packagesInfo(); if (!isInstaller()) { + KDUpdater::PackagesInfo &packagesInfo = *m_updaterApplication.packagesInfo(); if (!packagesInfo.isValid()) { packagesInfo.setFileName(componentsXmlPath()); - packagesInfo.setApplicationName(m_settings.applicationName()); - packagesInfo.setApplicationVersion(m_settings.applicationVersion()); + if (packagesInfo.applicationName().isEmpty()) + packagesInfo.setApplicationName(m_settings.applicationName()); + if (packagesInfo.applicationVersion().isEmpty()) + packagesInfo.setApplicationVersion(m_settings.applicationVersion()); } if (packagesInfo.error() != KDUpdater::PackagesInfo::NoError) -- cgit v1.2.3