Index: /trunk/src/VBox/Main/ApplianceImplImport.cpp
===================================================================
--- /trunk/src/VBox/Main/ApplianceImplImport.cpp	(revision 32964)
+++ /trunk/src/VBox/Main/ApplianceImplImport.cpp	(revision 32965)
@@ -1030,15 +1030,7 @@
     {
         mode = ImportFileNoManifest;
-        Utf8Str strMfFile = manifestFileName(locInfo.strPath);
-        if (!locInfo.strPath.endsWith(".ova", Utf8Str::CaseInsensitive))
-        {
-            if (RTPathExists(strMfFile.c_str()))
-                mode = ImportFileWithManifest;
-        }
-        else
-        {
-            if (RTTarFileExists(locInfo.strPath.c_str(), RTPathFilename(strMfFile.c_str())) == VINF_SUCCESS)
-                mode = ImportFileWithManifest;
-        }
+        Utf8Str strMfFile = queryManifestFileName(locInfo.strPath);
+        if (!strMfFile.isEmpty())
+            mode = ImportFileWithManifest;
     }
     else
@@ -1061,4 +1053,21 @@
 
     return rc;
+}
+
+Utf8Str Appliance::queryManifestFileName(const Utf8Str& aPath) const
+{
+    Utf8Str strMfFile = manifestFileName(aPath);
+    if (!aPath.endsWith(".ova", Utf8Str::CaseInsensitive))
+    {
+        if (RTPathExists(strMfFile.c_str()))
+            return strMfFile;
+
+    }
+    else
+    {
+        if (RTTarFileExists(aPath.c_str(), RTPathFilename(strMfFile.c_str())) == VINF_SUCCESS)
+            return strMfFile;
+    }
+    return Utf8Str();
 }
 
@@ -1079,5 +1088,5 @@
     HRESULT rc = S_OK;
 
-    Utf8Str strManifestFile = manifestFileName(locInfo.strPath);
+    Utf8Str strManifestFile = queryManifestFileName(locInfo.strPath);
     if (!strManifestFile.isEmpty())
     {
@@ -1392,7 +1401,6 @@
         /* Add the manifest file to the list of files to extract, but only if
            one is in the archive. */
-        Utf8Str strManifestFile = manifestFileName(strTmpOvf);
-        vrc = RTTarFileExists(pTask->locInfo.strPath.c_str(), RTPathFilename(strManifestFile.c_str()));
-        if (RT_SUCCESS(vrc))
+        Utf8Str strManifestFile = queryManifestFileName(strTmpOvf);
+        if (!strManifestFile.isEmpty())
             filesList.push_back(pair<Utf8Str, ULONG>(strManifestFile.c_str(), 1));
 
@@ -2466,5 +2474,5 @@
         Utf8StrFmt strTmpOvf("%s/%s", pszTmpDir, RTPathFilename(tmpPath.c_str()));
         /* Now check if there is an manifest file. This is optional. */
-        Utf8Str strManifestFile = manifestFileName(strTmpOvf);
+        Utf8Str strManifestFile = queryManifestFileName(strTmpOvf);
         char *pszFilename = RTPathFilename(strManifestFile.c_str());
         if (!pTask->pProgress.isNull())
Index: /trunk/src/VBox/Main/include/ApplianceImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/ApplianceImpl.h	(revision 32964)
+++ /trunk/src/VBox/Main/include/ApplianceImpl.h	(revision 32965)
@@ -133,4 +133,5 @@
     void parseBucket(Utf8Str &aPath, Utf8Str &aBucket);
     Utf8Str manifestFileName(const Utf8Str& aPath) const;
+    Utf8Str queryManifestFileName(const Utf8Str& aPath) const;
 
     HRESULT readImpl(const LocationInfo &aLocInfo, ComObjPtr<Progress> &aProgress);
