Index: /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 39663)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp	(revision 39664)
@@ -1,7 +1,5 @@
 /* $Id$ */
 /** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIUpdateManager class implementation
+ * VBox Qt GUI - UIUpdateManager class implementation.
  */
 
@@ -272,12 +270,19 @@
         /* Get VirtualBox version: */
         QString strVBoxVersion(vboxGlobal().vboxVersionStringNormalized());
+        QByteArray abVBoxVersion = strVBoxVersion.toUtf8();
         VBoxVersion vboxVersion(strVBoxVersion);
+
         /* Get extension pack version: */
-        QString strExtPackVersion(extPack.GetVersion().remove(VBOX_BUILD_PUBLISHER));
-        QStringList strExtPackVersionParts = strExtPackVersion.split(QRegExp("[-_]"), QString::SkipEmptyParts);
-        VBoxVersion extPackVersion(strExtPackVersionParts[0]);
-        /* Check if extension pack version less than required: */
-        if ((vboxVersion.z() % 2 != 0) /* Skip unstable VBox version */ ||
-            !(extPackVersion < vboxVersion) /* Ext Pack version more or equal to VBox version */)
+        QString strExtPackVersion(extPack.GetVersion());
+        QByteArray abExtPackVersion = strExtPackVersion.toUtf8();
+
+        /* Skip the check in unstable VBox version and if the extension pack
+           is equal to or newer than VBox.
+
+           Note! Use RTStrVersionCompare for the comparison here as it takes
+                 the beta/alpha/preview/whatever tags into consideration when
+                 comparing versions. */
+        if (   vboxVersion.z() % 2 != 0
+            || RTStrVersionCompare(abExtPackVersion.constData(), abVBoxVersion.constData()) >= 0)
         {
             emit sigStepComplete();
@@ -285,5 +290,6 @@
         }
 
-        if (strExtPackVersion.contains("ENTERPRISE"))
+        QString strExtPackEdition(extPack.GetEdition());
+        if (strExtPackEdition.contains("ENTERPRISE"))
         {
             /* Inform the user that he should update the extension pack: */
@@ -293,12 +299,10 @@
             return;
         }
-        else
-        {
-            /* Ask the user about extension pack downloading: */
-            if (!msgCenter().proposeDownloadExtensionPack(UI_ExtPackName, strExtPackVersion))
-            {
-                emit sigStepComplete();
-                return;
-            }
+
+        /* Ask the user about extension pack downloading: */
+        if (!msgCenter().proposeDownloadExtensionPack(UI_ExtPackName, strExtPackVersion))
+        {
+            emit sigStepComplete();
+            return;
         }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp	(revision 39663)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp	(revision 39664)
@@ -1,11 +1,9 @@
 /* $Id$ */
 /** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIGlobalSettingsExtension class implementation
+ * VBox Qt GUI - UIGlobalSettingsExtension class implementation.
  */
 
 /*
- * Copyright (C) 2010 Oracle Corporation
+ * Copyright (C) 2010-2011 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -140,10 +138,5 @@
     QString strPackName = extPackFile.GetName();
     QString strPackDescription = extPackFile.GetDescription();
-    QString strVersion(extPackFile.GetVersion().section(QRegExp("[-_]"), 0, 0));
-    QString strAppend;
-    /* workaround for http://qt.gitorious.org/qt/qt/commit/7fc63dd0ff368a637dcd17e692b9d6b26278b538 */
-    if (extPackFile.GetVersion().contains(QRegExp("[-_]")))
-        strAppend = extPackFile.GetVersion().section(QRegExp("[-_]"), 1, -1, QString::SectionIncludeLeadingSep);
-    QString strPackVersion = QString("%1r%2%3").arg(strVersion).arg(extPackFile.GetRevision()).arg(strAppend);
+    QString strPackVersion = QString("%1r%2%3").arg(extPackFile.GetVersion()).arg(extPackFile.GetRevision()).arg(extPackFile.GetEdition());
 
     /*
@@ -156,10 +149,5 @@
     if (fReplaceIt)
     {
-        QString strVersionCur(extPackCur.GetVersion().section(QRegExp("[-_]"), 0, 0));
-        QString strAppendCur;
-        /* workaround for http://qt.gitorious.org/qt/qt/commit/7fc63dd0ff368a637dcd17e692b9d6b26278b538 */
-        if (extPackCur.GetVersion().contains(QRegExp("[-_]")))
-            strAppendCur = extPackCur.GetVersion().section(QRegExp("[-_]"), 1, -1, QString::SectionIncludeLeadingSep);
-        QString strPackVersionCur = QString("%1r%2%3").arg(strVersionCur).arg(extPackCur.GetRevision()).arg(strAppendCur);
+        QString strPackVersionCur = QString("%1r%2%3").arg(extPackCur.GetVersion()).arg(extPackCur.GetRevision()).arg(extPackCur.GetEdition());
         if (!msgCenter().confirmReplacePackage(strPackName, strPackVersion, strPackVersionCur, strPackDescription, pParent))
             return;
