Index: /trunk/src/VBox/Main/include/ApplianceImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/ApplianceImpl.h	(revision 50443)
+++ /trunk/src/VBox/Main/include/ApplianceImpl.h	(revision 50444)
@@ -257,4 +257,5 @@
 
     uint32_t ulSizeMB;                      ///< hard disk images only: a copy of ovf::DiskImage::ulSuggestedSizeMB
+    bool skipIt;                            ///< used during export to skip some parts if it's needed
 };
 
Index: /trunk/src/VBox/Main/src-server/ApplianceImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/ApplianceImpl.cpp	(revision 50443)
+++ /trunk/src/VBox/Main/src-server/ApplianceImpl.cpp	(revision 50444)
@@ -1484,4 +1484,6 @@
     vsde.ulSizeMB = ulSizeMB;
 
+    vsde.skipIt = false;
+
     m->maDescriptions.push_back(vsde);
 }
Index: /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp	(revision 50443)
+++ /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp	(revision 50444)
@@ -611,5 +611,11 @@
         {
             ComObjPtr<VirtualSystemDescription> vsdescThis = (*it);
-            vsdescThis->i_removeByType(VirtualSystemDescriptionType_CDROM);
+            std::list<VirtualSystemDescriptionEntry*> skipped = vsdescThis->i_findByType(VirtualSystemDescriptionType_CDROM);
+            std::list<VirtualSystemDescriptionEntry*>:: iterator pItSkipped = skipped.begin();
+            while (pItSkipped != skipped.end())
+            {
+                (*pItSkipped)->skipIt = true;
+                ++pItSkipped;
+            }
         }
     }
@@ -888,5 +894,6 @@
 
         //skip empty Medium. There are no information to add into section <References> or <DiskSection>
-        if (strSrcFilePath.isEmpty())
+        if (strSrcFilePath.isEmpty() ||
+            pDiskEntry->skipIt == true)
             continue;
 
@@ -1518,5 +1525,6 @@
 
                         //skip empty Medium. There are no information to add into section <References> or <DiskSection>
-                        if (desc.strVBoxCurrent.isNotEmpty())
+                        if (desc.strVBoxCurrent.isNotEmpty() &&
+                            desc.skipIt == false)
                         {
                             // the following references the "<Disks>" XML block
@@ -2078,5 +2086,6 @@
 
             //skip empty Medium. In common, It's may be empty CD/DVD
-            if (strSrcFilePath.isEmpty())
+            if (strSrcFilePath.isEmpty() ||
+                pDiskEntry->skipIt == true)
                 continue;
 
