Revision: 201015 RCL_3 PDK_3.0.i
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 16:46:15 +0300
branchRCL_3
changeset 28 98a43fae6e2b
parent 23 09e5ea190d07
child 34 741e5bba2bd1
Revision: 201015 Kit: 201017
iaupdate/IAD/engine/bwins/iaupdateengineu.def
iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp
iaupdate/IAD/engine/controller/src/iaupdateutils.cpp
iaupdate/IAD/engine/eabi/iaupdateengineu.def
iaupdate/IAD/engine/inc/iaupdateutils.h
iaupdate/IAD/firmwareupdate/inc/iaupdatefwfotamodel.h
iaupdate/IAD/firmwareupdate/src/iaupdatefwfotamodel.cpp
iaupdate/IAD/firmwareupdate/src/iaupdatefwupdatehandler.cpp
--- a/iaupdate/IAD/engine/bwins/iaupdateengineu.def	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/engine/bwins/iaupdateengineu.def	Tue Apr 27 16:46:15 2010 +0300
@@ -1,91 +1,90 @@
 EXPORTS
-	??0CIAUpdateXmlParser@@IAE@PAVCIAUpdateXmlSubParser@@@Z @ 1 NONAME ; CIAUpdateXmlParser::CIAUpdateXmlParser(class CIAUpdateXmlSubParser *)
-	??0CIAUpdateXmlSubParser@@IAE@XZ @ 2 NONAME ; CIAUpdateXmlSubParser::CIAUpdateXmlSubParser(void)
-	??1CIAUpdateControllerFile@@UAE@XZ @ 3 NONAME ; CIAUpdateControllerFile::~CIAUpdateControllerFile(void)
-	??1CIAUpdatePendingNodesFile@@UAE@XZ @ 4 NONAME ; CIAUpdatePendingNodesFile::~CIAUpdatePendingNodesFile(void)
-	??1CIAUpdateRestartInfo@@UAE@XZ @ 5 NONAME ; CIAUpdateRestartInfo::~CIAUpdateRestartInfo(void)
-	??1CIAUpdateXmlParser@@UAE@XZ @ 6 NONAME ; CIAUpdateXmlParser::~CIAUpdateXmlParser(void)
-	??1CIAUpdateXmlSubParser@@UAE@XZ @ 7 NONAME ; CIAUpdateXmlSubParser::~CIAUpdateXmlSubParser(void)
-	?AcceptData@CIAUpdateXmlSubParser@@IBEHXZ @ 8 NONAME ; int CIAUpdateXmlSubParser::AcceptData(void) const
-	?AppPackageUidL@IAUpdateUtils@@YA?AVTUid@@ABV2@@Z @ 9 NONAME ; class TUid IAUpdateUtils::AppPackageUidL(class TUid const &)
-	?AppPackageUidL@IAUpdateUtils@@YA?AVTUid@@ABV2@AAVTIAUpdateVersion@@@Z @ 10 NONAME ; class TUid IAUpdateUtils::AppPackageUidL(class TUid const &, class TIAUpdateVersion &)
-	?ConstructL@CIAUpdateXmlParser@@MAEXXZ @ 11 NONAME ; void CIAUpdateXmlParser::ConstructL(void)
-	?ConstructL@CIAUpdateXmlSubParser@@MAEXABVTDesC8@@@Z @ 12 NONAME ; void CIAUpdateXmlSubParser::ConstructL(class TDesC8 const &)
-	?CreateControllerL@IAUpdateFactory@@YAPAVMIAUpdateController@@ABVTUid@@AAVMIAUpdateControllerObserver@@@Z @ 13 NONAME ; class MIAUpdateController * IAUpdateFactory::CreateControllerL(class TUid const &, class MIAUpdateControllerObserver &)
-	?CurrentSubParser@CIAUpdateXmlSubParser@@IBEPAV1@XZ @ 14 NONAME ; class CIAUpdateXmlSubParser * CIAUpdateXmlSubParser::CurrentSubParser(void) const
-	?DeleteFiles@CIAUpdateRestartInfo@@QAEXXZ @ 15 NONAME ; void CIAUpdateRestartInfo::DeleteFiles(void)
-	?DesHexToIntL@IAUpdateUtils@@YAHABVTDesC16@@@Z @ 16 NONAME ; int IAUpdateUtils::DesHexToIntL(class TDesC16 const &)
-	?DesToVersionL@IAUpdateUtils@@YAXABVTDesC16@@AAC1AAF@Z @ 17 NONAME ; void IAUpdateUtils::DesToVersionL(class TDesC16 const &, signed char &, signed char &, short &)
-	?ElementTagInfoEquals@CIAUpdateXmlSubParser@@IBEHABVRTagInfo@Xml@@@Z @ 18 NONAME ; int CIAUpdateXmlSubParser::ElementTagInfoEquals(class Xml::RTagInfo const &) const
-	?FilePath@CIAUpdatePendingNodesFile@@QBEABVTDesC16@@XZ @ 19 NONAME ; class TDesC16 const & CIAUpdatePendingNodesFile::FilePath(void) const
-	?GetExtendedInterface@CIAUpdateXmlSubParser@@UAEPAXJ@Z @ 20 NONAME ; void * CIAUpdateXmlSubParser::GetExtendedInterface(long)
-	?Index@CIAUpdatePendingNodesFile@@QBEHXZ @ 21 NONAME ; int CIAUpdatePendingNodesFile::Index(void) const
-	?IsAppInstalledL@IAUpdateUtils@@YAHABVTUid@@@Z @ 22 NONAME ; int IAUpdateUtils::IsAppInstalledL(class TUid const &)
-	?IsAppInstalledL@IAUpdateUtils@@YAHABVTUid@@AAVTIAUpdateVersion@@@Z @ 23 NONAME ; int IAUpdateUtils::IsAppInstalledL(class TUid const &, class TIAUpdateVersion &)
-	?IsElementEnded@CIAUpdateXmlSubParser@@IBEHXZ @ 24 NONAME ; int CIAUpdateXmlSubParser::IsElementEnded(void) const
-	?IsElementStarted@CIAUpdateXmlSubParser@@IBEHXZ @ 25 NONAME ; int CIAUpdateXmlSubParser::IsElementStarted(void) const
-	?IsInstalledL@IAUpdateUtils@@YAHABVTUid@@ABVTDesC16@@@Z @ 26 NONAME ; int IAUpdateUtils::IsInstalledL(class TUid const &, class TDesC16 const &)
-	?Language@CIAUpdateControllerFile@@QBE?AW4TLanguage@@XZ @ 27 NONAME ; enum TLanguage CIAUpdateControllerFile::Language(void) const
-	?LocalName@CIAUpdateXmlSubParser@@IBEABVTDesC8@@XZ @ 28 NONAME ; class TDesC8 const & CIAUpdateXmlSubParser::LocalName(void) const
-	?NewL@CIAUpdateControllerFile@@SAPAV1@ABVTDesC16@@@Z @ 29 NONAME ; class CIAUpdateControllerFile * CIAUpdateControllerFile::NewL(class TDesC16 const &)
-	?NewL@CIAUpdateNetworkRegistration@@SAPAV1@AAVMIAUpdateNetworkRegistrationObserver@@@Z @ 30 NONAME ; class CIAUpdateNetworkRegistration * CIAUpdateNetworkRegistration::NewL(class MIAUpdateNetworkRegistrationObserver &)
-	?NewL@CIAUpdatePendingNodesFile@@SAPAV1@XZ @ 31 NONAME ; class CIAUpdatePendingNodesFile * CIAUpdatePendingNodesFile::NewL(void)
-	?NewL@CIAUpdateRestartInfo@@SAPAV1@XZ @ 32 NONAME ; class CIAUpdateRestartInfo * CIAUpdateRestartInfo::NewL(void)
-	?NewL@CIAUpdateXmlParser@@SAPAV1@PAVCIAUpdateXmlSubParser@@@Z @ 33 NONAME ; class CIAUpdateXmlParser * CIAUpdateXmlParser::NewL(class CIAUpdateXmlSubParser *)
-	?NewLC@CIAUpdateControllerFile@@SAPAV1@ABVTDesC16@@@Z @ 34 NONAME ; class CIAUpdateControllerFile * CIAUpdateControllerFile::NewLC(class TDesC16 const &)
-	?NewLC@CIAUpdatePendingNodesFile@@SAPAV1@XZ @ 35 NONAME ; class CIAUpdatePendingNodesFile * CIAUpdatePendingNodesFile::NewLC(void)
-	?NewLC@CIAUpdateRestartInfo@@SAPAV1@XZ @ 36 NONAME ; class CIAUpdateRestartInfo * CIAUpdateRestartInfo::NewLC(void)
-	?NewLC@CIAUpdateXmlParser@@SAPAV1@PAVCIAUpdateXmlSubParser@@@Z @ 37 NONAME ; class CIAUpdateXmlParser * CIAUpdateXmlParser::NewLC(class CIAUpdateXmlSubParser *)
-	?OnContentL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@H@Z @ 38 NONAME ; void CIAUpdateXmlSubParser::OnContentL(class TDesC8 const &, int)
-	?OnEndDocumentL@CIAUpdateXmlSubParser@@UAEXH@Z @ 39 NONAME ; void CIAUpdateXmlSubParser::OnEndDocumentL(int)
-	?OnEndElementL@CIAUpdateXmlSubParser@@UAEXABVRTagInfo@Xml@@H@Z @ 40 NONAME ; void CIAUpdateXmlSubParser::OnEndElementL(class Xml::RTagInfo const &, int)
-	?OnEndPrefixMappingL@CIAUpdateXmlSubParser@@UAEXABVRString@@H@Z @ 41 NONAME ; void CIAUpdateXmlSubParser::OnEndPrefixMappingL(class RString const &, int)
-	?OnError@CIAUpdateXmlSubParser@@UAEXH@Z @ 42 NONAME ; void CIAUpdateXmlSubParser::OnError(int)
-	?OnIgnorableWhiteSpaceL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@H@Z @ 43 NONAME ; void CIAUpdateXmlSubParser::OnIgnorableWhiteSpaceL(class TDesC8 const &, int)
-	?OnProcessingInstructionL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@0H@Z @ 44 NONAME ; void CIAUpdateXmlSubParser::OnProcessingInstructionL(class TDesC8 const &, class TDesC8 const &, int)
-	?OnSkippedEntityL@CIAUpdateXmlSubParser@@UAEXABVRString@@H@Z @ 45 NONAME ; void CIAUpdateXmlSubParser::OnSkippedEntityL(class RString const &, int)
-	?OnStartDocumentL@CIAUpdateXmlSubParser@@UAEXABVRDocumentParameters@Xml@@H@Z @ 46 NONAME ; void CIAUpdateXmlSubParser::OnStartDocumentL(class Xml::RDocumentParameters const &, int)
-	?OnStartElementL@CIAUpdateXmlSubParser@@UAEXABVRTagInfo@Xml@@ABV?$RArray@VRAttribute@Xml@@@@H@Z @ 47 NONAME ; void CIAUpdateXmlSubParser::OnStartElementL(class Xml::RTagInfo const &, class RArray<class Xml::RAttribute> const &, int)
-	?OnStartPrefixMappingL@CIAUpdateXmlSubParser@@UAEXABVRString@@0H@Z @ 48 NONAME ; void CIAUpdateXmlSubParser::OnStartPrefixMappingL(class RString const &, class RString const &, int)
-	?ParseFileL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 49 NONAME ; void CIAUpdateXmlParser::ParseFileL(class TDesC16 const &)
-	?ParseL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 50 NONAME ; void CIAUpdateXmlParser::ParseL(class TDesC16 const &)
-	?ParseL@CIAUpdateXmlParser@@QAEXABVTDesC8@@@Z @ 51 NONAME ; void CIAUpdateXmlParser::ParseL(class TDesC8 const &)
-	?ParsePrivateFileL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 52 NONAME ; void CIAUpdateXmlParser::ParsePrivateFileL(class TDesC16 const &)
-	?PendingNodes@CIAUpdatePendingNodesFile@@QAEAAV?$RPointerArray@VCIAUpdaterIdentifier@@@@XZ @ 53 NONAME ; class RPointerArray<class CIAUpdaterIdentifier> & CIAUpdatePendingNodesFile::PendingNodes(void)
-	?PendingNodesFile@CIAUpdateRestartInfo@@QAEAAVCIAUpdatePendingNodesFile@@XZ @ 54 NONAME ; class CIAUpdatePendingNodesFile & CIAUpdateRestartInfo::PendingNodesFile(void)
-	?ReadControllerDataL@CIAUpdateControllerFile@@QAEHXZ @ 55 NONAME ; int CIAUpdateControllerFile::ReadControllerDataL(void)
-	?ReadDataL@CIAUpdatePendingNodesFile@@QAEHXZ @ 56 NONAME ; int CIAUpdatePendingNodesFile::ReadDataL(void)
-	?RefreshTime@CIAUpdateControllerFile@@QBEABVTTime@@XZ @ 57 NONAME ; class TTime const & CIAUpdateControllerFile::RefreshTime(void) const
-	?RemoveFile@CIAUpdatePendingNodesFile@@QAEHXZ @ 58 NONAME ; int CIAUpdatePendingNodesFile::RemoveFile(void)
-	?Reset@CIAUpdatePendingNodesFile@@QAEXXZ @ 59 NONAME ; void CIAUpdatePendingNodesFile::Reset(void)
-	?ResultsFile@CIAUpdateRestartInfo@@QAEAAVCIAUpdaterResultsFile@@XZ @ 60 NONAME ; class CIAUpdaterResultsFile & CIAUpdateRestartInfo::ResultsFile(void)
-	?SetCurrentData@CIAUpdateControllerFile@@QAEXXZ @ 61 NONAME ; void CIAUpdateControllerFile::SetCurrentData(void)
-	?SetCurrentLanguage@CIAUpdateControllerFile@@QAEXXZ @ 62 NONAME ; void CIAUpdateControllerFile::SetCurrentLanguage(void)
-	?SetCurrentRefreshTime@CIAUpdateControllerFile@@QAEXXZ @ 63 NONAME ; void CIAUpdateControllerFile::SetCurrentRefreshTime(void)
-	?SetFilePathL@CIAUpdatePendingNodesFile@@QAEXABVTDesC16@@@Z @ 64 NONAME ; void CIAUpdatePendingNodesFile::SetFilePathL(class TDesC16 const &)
-	?SetIndex@CIAUpdatePendingNodesFile@@QAEXH@Z @ 65 NONAME ; void CIAUpdatePendingNodesFile::SetIndex(int)
-	?SetLanguage@CIAUpdateControllerFile@@QAEXW4TLanguage@@@Z @ 66 NONAME ; void CIAUpdateControllerFile::SetLanguage(enum TLanguage)
-	?SetRefreshTime@CIAUpdateControllerFile@@QAEXABVTTime@@@Z @ 67 NONAME ; void CIAUpdateControllerFile::SetRefreshTime(class TTime const &)
-	?SetRefreshTime@CIAUpdateControllerFile@@QAEX_J@Z @ 68 NONAME ; void CIAUpdateControllerFile::SetRefreshTime(long long)
-	?SilentInstallOptionsL@IAUpdateUtils@@YA?AVTInstallOptions@SwiUI@@ABVTUid@@H@Z @ 69 NONAME ; class SwiUI::TInstallOptions IAUpdateUtils::SilentInstallOptionsL(class TUid const &, int)
-	?SpaceAvailableInInternalDrivesL@IAUpdateUtils@@YAHAAV?$RPointerArray@VMIAUpdateNode@@@@@Z @ 70 NONAME ; int IAUpdateUtils::SpaceAvailableInInternalDrivesL(class RPointerArray<class MIAUpdateNode> &)
-	?StartMonitoringL@CIAUpdateNetworkRegistration@@QAEXXZ @ 71 NONAME ; void CIAUpdateNetworkRegistration::StartMonitoringL(void)
-	?SubParser@CIAUpdateXmlParser@@IAEAAVCIAUpdateXmlSubParser@@XZ @ 72 NONAME ; class CIAUpdateXmlSubParser & CIAUpdateXmlParser::SubParser(void)
-	?SubParsers@CIAUpdateXmlSubParser@@IAEAAV?$RPointerArray@VCIAUpdateXmlSubParser@@@@XZ @ 73 NONAME ; class RPointerArray<class CIAUpdateXmlSubParser> & CIAUpdateXmlSubParser::SubParsers(void)
-	?UnknownElementCounter@CIAUpdateXmlSubParser@@IBEHXZ @ 74 NONAME ; int CIAUpdateXmlSubParser::UnknownElementCounter(void) const
-	?WriteControllerDataL@CIAUpdateControllerFile@@QAEXXZ @ 75 NONAME ; void CIAUpdateControllerFile::WriteControllerDataL(void)
-	?WriteDataL@CIAUpdatePendingNodesFile@@QAEXXZ @ 76 NONAME ; void CIAUpdatePendingNodesFile::WriteDataL(void)
-	??0TIAUpdateVersion@@QAE@ABVTVersion@@@Z @ 77 NONAME ; TIAUpdateVersion::TIAUpdateVersion(class TVersion const &)
-	??0TIAUpdateVersion@@QAE@XZ @ 78 NONAME ; TIAUpdateVersion::TIAUpdateVersion(void)
-	??4TIAUpdateVersion@@QAEABV0@ABVTVersion@@@Z @ 79 NONAME ; class TIAUpdateVersion const & TIAUpdateVersion::operator=(class TVersion const &)
-	??8TIAUpdateVersion@@QBEHABV0@@Z @ 80 NONAME ; int TIAUpdateVersion::operator==(class TIAUpdateVersion const &) const
-	??9TIAUpdateVersion@@QBEHABV0@@Z @ 81 NONAME ; int TIAUpdateVersion::operator!=(class TIAUpdateVersion const &) const
-	??MTIAUpdateVersion@@QBEHABV0@@Z @ 82 NONAME ; int TIAUpdateVersion::operator<(class TIAUpdateVersion const &) const
-	??NTIAUpdateVersion@@QBEHABV0@@Z @ 83 NONAME ; int TIAUpdateVersion::operator<=(class TIAUpdateVersion const &) const
-	??OTIAUpdateVersion@@QBEHABV0@@Z @ 84 NONAME ; int TIAUpdateVersion::operator>(class TIAUpdateVersion const &) const
-	??PTIAUpdateVersion@@QBEHABV0@@Z @ 85 NONAME ; int TIAUpdateVersion::operator>=(class TIAUpdateVersion const &) const
-	?InternalizeL@TIAUpdateVersion@@QAEXABVTDesC16@@@Z @ 86 NONAME ; void TIAUpdateVersion::InternalizeL(class TDesC16 const &)
-	?SetToFloor@TIAUpdateVersion@@QAEXXZ @ 87 NONAME ; void TIAUpdateVersion::SetToFloor(void)
-	?SetToRoof@TIAUpdateVersion@@QAEXXZ @ 88 NONAME ; void TIAUpdateVersion::SetToRoof(void)
-	?IsWidgetInstalledL@IAUpdateUtils@@YAHABVTDesC16@@AAVTIAUpdateVersion@@@Z @ 89 NONAME ; int IAUpdateUtils::IsWidgetInstalledL(class TDesC16 const &, class TIAUpdateVersion &)
+	?SetFilePathL@CIAUpdatePendingNodesFile@@QAEXABVTDesC16@@@Z @ 1 NONAME ; void CIAUpdatePendingNodesFile::SetFilePathL(class TDesC16 const &)
+	?OnProcessingInstructionL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@0H@Z @ 2 NONAME ; void CIAUpdateXmlSubParser::OnProcessingInstructionL(class TDesC8 const &, class TDesC8 const &, int)
+	?SetCurrentData@CIAUpdateControllerFile@@QAEXXZ @ 3 NONAME ; void CIAUpdateControllerFile::SetCurrentData(void)
+	?ElementTagInfoEquals@CIAUpdateXmlSubParser@@IBEHABVRTagInfo@Xml@@@Z @ 4 NONAME ; int CIAUpdateXmlSubParser::ElementTagInfoEquals(class Xml::RTagInfo const &) const
+	??PTIAUpdateVersion@@QBEHABV0@@Z @ 5 NONAME ; int TIAUpdateVersion::operator>=(class TIAUpdateVersion const &) const
+	??OTIAUpdateVersion@@QBEHABV0@@Z @ 6 NONAME ; int TIAUpdateVersion::operator>(class TIAUpdateVersion const &) const
+	?NewL@CIAUpdateXmlParser@@SAPAV1@PAVCIAUpdateXmlSubParser@@@Z @ 7 NONAME ; class CIAUpdateXmlParser * CIAUpdateXmlParser::NewL(class CIAUpdateXmlSubParser *)
+	??NTIAUpdateVersion@@QBEHABV0@@Z @ 8 NONAME ; int TIAUpdateVersion::operator<=(class TIAUpdateVersion const &) const
+	?IsElementEnded@CIAUpdateXmlSubParser@@IBEHXZ @ 9 NONAME ; int CIAUpdateXmlSubParser::IsElementEnded(void) const
+	??MTIAUpdateVersion@@QBEHABV0@@Z @ 10 NONAME ; int TIAUpdateVersion::operator<(class TIAUpdateVersion const &) const
+	?ParseFileL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 11 NONAME ; void CIAUpdateXmlParser::ParseFileL(class TDesC16 const &)
+	?ParsePrivateFileL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 12 NONAME ; void CIAUpdateXmlParser::ParsePrivateFileL(class TDesC16 const &)
+	?OnEndPrefixMappingL@CIAUpdateXmlSubParser@@UAEXABVRString@@H@Z @ 13 NONAME ; void CIAUpdateXmlSubParser::OnEndPrefixMappingL(class RString const &, int)
+	?SubParsers@CIAUpdateXmlSubParser@@IAEAAV?$RPointerArray@VCIAUpdateXmlSubParser@@@@XZ @ 14 NONAME ; class RPointerArray<class CIAUpdateXmlSubParser> & CIAUpdateXmlSubParser::SubParsers(void)
+	?OnSkippedEntityL@CIAUpdateXmlSubParser@@UAEXABVRString@@H@Z @ 15 NONAME ; void CIAUpdateXmlSubParser::OnSkippedEntityL(class RString const &, int)
+	?FilePath@CIAUpdatePendingNodesFile@@QBEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & CIAUpdatePendingNodesFile::FilePath(void) const
+	?SetCurrentLanguage@CIAUpdateControllerFile@@QAEXXZ @ 17 NONAME ; void CIAUpdateControllerFile::SetCurrentLanguage(void)
+	??1CIAUpdatePendingNodesFile@@UAE@XZ @ 18 NONAME ; CIAUpdatePendingNodesFile::~CIAUpdatePendingNodesFile(void)
+	?ConstructL@CIAUpdateXmlParser@@MAEXXZ @ 19 NONAME ; void CIAUpdateXmlParser::ConstructL(void)
+	??1CIAUpdateXmlSubParser@@UAE@XZ @ 20 NONAME ; CIAUpdateXmlSubParser::~CIAUpdateXmlSubParser(void)
+	??4TIAUpdateVersion@@QAEABV0@ABVTVersion@@@Z @ 21 NONAME ; class TIAUpdateVersion const & TIAUpdateVersion::operator=(class TVersion const &)
+	?WriteControllerDataL@CIAUpdateControllerFile@@QAEXXZ @ 22 NONAME ; void CIAUpdateControllerFile::WriteControllerDataL(void)
+	?SetToRoof@TIAUpdateVersion@@QAEXXZ @ 23 NONAME ; void TIAUpdateVersion::SetToRoof(void)
+	?OnStartElementL@CIAUpdateXmlSubParser@@UAEXABVRTagInfo@Xml@@ABV?$RArray@VRAttribute@Xml@@@@H@Z @ 24 NONAME ; void CIAUpdateXmlSubParser::OnStartElementL(class Xml::RTagInfo const &, class RArray<class Xml::RAttribute> const &, int)
+	??0TIAUpdateVersion@@QAE@XZ @ 25 NONAME ; TIAUpdateVersion::TIAUpdateVersion(void)
+	?GetExtendedInterface@CIAUpdateXmlSubParser@@UAEPAXJ@Z @ 26 NONAME ; void * CIAUpdateXmlSubParser::GetExtendedInterface(long)
+	?OnError@CIAUpdateXmlSubParser@@UAEXH@Z @ 27 NONAME ; void CIAUpdateXmlSubParser::OnError(int)
+	?SetCurrentRefreshTime@CIAUpdateControllerFile@@QAEXXZ @ 28 NONAME ; void CIAUpdateControllerFile::SetCurrentRefreshTime(void)
+	?RemoveFile@CIAUpdatePendingNodesFile@@QAEHXZ @ 29 NONAME ; int CIAUpdatePendingNodesFile::RemoveFile(void)
+	?ParseL@CIAUpdateXmlParser@@QAEXABVTDesC16@@@Z @ 30 NONAME ; void CIAUpdateXmlParser::ParseL(class TDesC16 const &)
+	?CreateControllerL@IAUpdateFactory@@YAPAVMIAUpdateController@@ABVTUid@@AAVMIAUpdateControllerObserver@@@Z @ 31 NONAME ; class MIAUpdateController * IAUpdateFactory::CreateControllerL(class TUid const &, class MIAUpdateControllerObserver &)
+	?OnStartPrefixMappingL@CIAUpdateXmlSubParser@@UAEXABVRString@@0H@Z @ 32 NONAME ; void CIAUpdateXmlSubParser::OnStartPrefixMappingL(class RString const &, class RString const &, int)
+	?NewLC@CIAUpdateXmlParser@@SAPAV1@PAVCIAUpdateXmlSubParser@@@Z @ 33 NONAME ; class CIAUpdateXmlParser * CIAUpdateXmlParser::NewLC(class CIAUpdateXmlSubParser *)
+	?OnStartDocumentL@CIAUpdateXmlSubParser@@UAEXABVRDocumentParameters@Xml@@H@Z @ 34 NONAME ; void CIAUpdateXmlSubParser::OnStartDocumentL(class Xml::RDocumentParameters const &, int)
+	?SetToFloor@TIAUpdateVersion@@QAEXXZ @ 35 NONAME ; void TIAUpdateVersion::SetToFloor(void)
+	?AcceptData@CIAUpdateXmlSubParser@@IBEHXZ @ 36 NONAME ; int CIAUpdateXmlSubParser::AcceptData(void) const
+	?OnIgnorableWhiteSpaceL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@H@Z @ 37 NONAME ; void CIAUpdateXmlSubParser::OnIgnorableWhiteSpaceL(class TDesC8 const &, int)
+	??9TIAUpdateVersion@@QBEHABV0@@Z @ 38 NONAME ; int TIAUpdateVersion::operator!=(class TIAUpdateVersion const &) const
+	??8TIAUpdateVersion@@QBEHABV0@@Z @ 39 NONAME ; int TIAUpdateVersion::operator==(class TIAUpdateVersion const &) const
+	?NewL@CIAUpdateControllerFile@@SAPAV1@ABVTDesC16@@@Z @ 40 NONAME ; class CIAUpdateControllerFile * CIAUpdateControllerFile::NewL(class TDesC16 const &)
+	?IsInstalledL@IAUpdateUtils@@YAHABVTUid@@ABVTDesC16@@@Z @ 41 NONAME ; int IAUpdateUtils::IsInstalledL(class TUid const &, class TDesC16 const &)
+	?AppPackageUidL@IAUpdateUtils@@YA?AVTUid@@ABV2@AAVTIAUpdateVersion@@@Z @ 42 NONAME ; class TUid IAUpdateUtils::AppPackageUidL(class TUid const &, class TIAUpdateVersion &)
+	?WriteDataL@CIAUpdatePendingNodesFile@@QAEXXZ @ 43 NONAME ; void CIAUpdatePendingNodesFile::WriteDataL(void)
+	?ConstructL@CIAUpdateXmlSubParser@@MAEXABVTDesC8@@@Z @ 44 NONAME ; void CIAUpdateXmlSubParser::ConstructL(class TDesC8 const &)
+	?DeleteFiles@CIAUpdateRestartInfo@@QAEXXZ @ 45 NONAME ; void CIAUpdateRestartInfo::DeleteFiles(void)
+	?SpaceAvailableInInternalDrivesL@IAUpdateUtils@@YAHAAV?$RPointerArray@VMIAUpdateNode@@@@@Z @ 46 NONAME ; int IAUpdateUtils::SpaceAvailableInInternalDrivesL(class RPointerArray<class MIAUpdateNode> &)
+	?IsAppInstalledL@IAUpdateUtils@@YAHABVTUid@@@Z @ 47 NONAME ; int IAUpdateUtils::IsAppInstalledL(class TUid const &)
+	?ReadControllerDataL@CIAUpdateControllerFile@@QAEHXZ @ 48 NONAME ; int CIAUpdateControllerFile::ReadControllerDataL(void)
+	??0TIAUpdateVersion@@QAE@ABVTVersion@@@Z @ 49 NONAME ; TIAUpdateVersion::TIAUpdateVersion(class TVersion const &)
+	?OnEndElementL@CIAUpdateXmlSubParser@@UAEXABVRTagInfo@Xml@@H@Z @ 50 NONAME ; void CIAUpdateXmlSubParser::OnEndElementL(class Xml::RTagInfo const &, int)
+	?AppPackageUidL@IAUpdateUtils@@YA?AVTUid@@ABV2@@Z @ 51 NONAME ; class TUid IAUpdateUtils::AppPackageUidL(class TUid const &)
+	?StartMonitoringL@CIAUpdateNetworkRegistration@@QAEXXZ @ 52 NONAME ; void CIAUpdateNetworkRegistration::StartMonitoringL(void)
+	?UnknownElementCounter@CIAUpdateXmlSubParser@@IBEHXZ @ 53 NONAME ; int CIAUpdateXmlSubParser::UnknownElementCounter(void) const
+	?SetLanguage@CIAUpdateControllerFile@@QAEXW4TLanguage@@@Z @ 54 NONAME ; void CIAUpdateControllerFile::SetLanguage(enum TLanguage)
+	?DesHexToIntL@IAUpdateUtils@@YAHABVTDesC16@@@Z @ 55 NONAME ; int IAUpdateUtils::DesHexToIntL(class TDesC16 const &)
+	??1CIAUpdateXmlParser@@UAE@XZ @ 56 NONAME ; CIAUpdateXmlParser::~CIAUpdateXmlParser(void)
+	?SetRefreshTime@CIAUpdateControllerFile@@QAEX_J@Z @ 57 NONAME ; void CIAUpdateControllerFile::SetRefreshTime(long long)
+	??0CIAUpdateXmlSubParser@@IAE@XZ @ 58 NONAME ; CIAUpdateXmlSubParser::CIAUpdateXmlSubParser(void)
+	?ReadDataL@CIAUpdatePendingNodesFile@@QAEHXZ @ 59 NONAME ; int CIAUpdatePendingNodesFile::ReadDataL(void)
+	?NewLC@CIAUpdateRestartInfo@@SAPAV1@XZ @ 60 NONAME ; class CIAUpdateRestartInfo * CIAUpdateRestartInfo::NewLC(void)
+	??1CIAUpdateRestartInfo@@UAE@XZ @ 61 NONAME ; CIAUpdateRestartInfo::~CIAUpdateRestartInfo(void)
+	?NewLC@CIAUpdateControllerFile@@SAPAV1@ABVTDesC16@@@Z @ 62 NONAME ; class CIAUpdateControllerFile * CIAUpdateControllerFile::NewLC(class TDesC16 const &)
+	?InternalizeL@TIAUpdateVersion@@QAEXABVTDesC16@@@Z @ 63 NONAME ; void TIAUpdateVersion::InternalizeL(class TDesC16 const &)
+	?SetRefreshTime@CIAUpdateControllerFile@@QAEXABVTTime@@@Z @ 64 NONAME ; void CIAUpdateControllerFile::SetRefreshTime(class TTime const &)
+	?RefreshTime@CIAUpdateControllerFile@@QBEABVTTime@@XZ @ 65 NONAME ; class TTime const & CIAUpdateControllerFile::RefreshTime(void) const
+	?Language@CIAUpdateControllerFile@@QBE?AW4TLanguage@@XZ @ 66 NONAME ; enum TLanguage CIAUpdateControllerFile::Language(void) const
+	?NewLC@CIAUpdatePendingNodesFile@@SAPAV1@XZ @ 67 NONAME ; class CIAUpdatePendingNodesFile * CIAUpdatePendingNodesFile::NewLC(void)
+	?Index@CIAUpdatePendingNodesFile@@QBEHXZ @ 68 NONAME ; int CIAUpdatePendingNodesFile::Index(void) const
+	?IsWidgetInstalledL@IAUpdateUtils@@YAHABVTDesC16@@AAVTIAUpdateVersion@@@Z @ 69 NONAME ; int IAUpdateUtils::IsWidgetInstalledL(class TDesC16 const &, class TIAUpdateVersion &)
+	?PendingNodesFile@CIAUpdateRestartInfo@@QAEAAVCIAUpdatePendingNodesFile@@XZ @ 70 NONAME ; class CIAUpdatePendingNodesFile & CIAUpdateRestartInfo::PendingNodesFile(void)
+	?CurrentSubParser@CIAUpdateXmlSubParser@@IBEPAV1@XZ @ 71 NONAME ; class CIAUpdateXmlSubParser * CIAUpdateXmlSubParser::CurrentSubParser(void) const
+	?SetIndex@CIAUpdatePendingNodesFile@@QAEXH@Z @ 72 NONAME ; void CIAUpdatePendingNodesFile::SetIndex(int)
+	?PendingNodes@CIAUpdatePendingNodesFile@@QAEAAV?$RPointerArray@VCIAUpdaterIdentifier@@@@XZ @ 73 NONAME ; class RPointerArray<class CIAUpdaterIdentifier> & CIAUpdatePendingNodesFile::PendingNodes(void)
+	?SubParser@CIAUpdateXmlParser@@IAEAAVCIAUpdateXmlSubParser@@XZ @ 74 NONAME ; class CIAUpdateXmlSubParser & CIAUpdateXmlParser::SubParser(void)
+	?IsElementStarted@CIAUpdateXmlSubParser@@IBEHXZ @ 75 NONAME ; int CIAUpdateXmlSubParser::IsElementStarted(void) const
+	?IsAppInstalledL@IAUpdateUtils@@YAHABVTUid@@AAVTIAUpdateVersion@@@Z @ 76 NONAME ; int IAUpdateUtils::IsAppInstalledL(class TUid const &, class TIAUpdateVersion &)
+	?LocalName@CIAUpdateXmlSubParser@@IBEABVTDesC8@@XZ @ 77 NONAME ; class TDesC8 const & CIAUpdateXmlSubParser::LocalName(void) const
+	?DesToVersionL@IAUpdateUtils@@YAXABVTDesC16@@AAC1AAF@Z @ 78 NONAME ; void IAUpdateUtils::DesToVersionL(class TDesC16 const &, signed char &, signed char &, short &)
+	?OnContentL@CIAUpdateXmlSubParser@@UAEXABVTDesC8@@H@Z @ 79 NONAME ; void CIAUpdateXmlSubParser::OnContentL(class TDesC8 const &, int)
+	?ParseL@CIAUpdateXmlParser@@QAEXABVTDesC8@@@Z @ 80 NONAME ; void CIAUpdateXmlParser::ParseL(class TDesC8 const &)
+	?Reset@CIAUpdatePendingNodesFile@@QAEXXZ @ 81 NONAME ; void CIAUpdatePendingNodesFile::Reset(void)
+	??1CIAUpdateControllerFile@@UAE@XZ @ 82 NONAME ; CIAUpdateControllerFile::~CIAUpdateControllerFile(void)
+	?NewL@CIAUpdateRestartInfo@@SAPAV1@XZ @ 83 NONAME ; class CIAUpdateRestartInfo * CIAUpdateRestartInfo::NewL(void)
+	?OnEndDocumentL@CIAUpdateXmlSubParser@@UAEXH@Z @ 84 NONAME ; void CIAUpdateXmlSubParser::OnEndDocumentL(int)
+	?ResultsFile@CIAUpdateRestartInfo@@QAEAAVCIAUpdaterResultsFile@@XZ @ 85 NONAME ; class CIAUpdaterResultsFile & CIAUpdateRestartInfo::ResultsFile(void)
+	??0CIAUpdateXmlParser@@IAE@PAVCIAUpdateXmlSubParser@@@Z @ 86 NONAME ; CIAUpdateXmlParser::CIAUpdateXmlParser(class CIAUpdateXmlSubParser *)
+	?NewL@CIAUpdateNetworkRegistration@@SAPAV1@AAVMIAUpdateNetworkRegistrationObserver@@@Z @ 87 NONAME ; class CIAUpdateNetworkRegistration * CIAUpdateNetworkRegistration::NewL(class MIAUpdateNetworkRegistrationObserver &)
+	?NewL@CIAUpdatePendingNodesFile@@SAPAV1@XZ @ 88 NONAME ; class CIAUpdatePendingNodesFile * CIAUpdatePendingNodesFile::NewL(void)
 
--- a/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp	Tue Apr 27 16:46:15 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -206,8 +206,8 @@
         // Install interface was available.
         // So, start installing with silent install operation.
         SwiUI::TInstallOptions options(
-            IAUpdateUtils::SilentInstallOptionsL( 
-                Node().Uid(), Node().OwnContentSizeL() ) );
+            IAUpdateUtils::SilentInstallOptionsL( Node() ) );
+        
         operation = install->SilentInstallL( *this, options );
 
         if( !operation )
--- a/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Tue Apr 27 16:46:15 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,7 +22,9 @@
 #include "iaupdateversion.h"
 #include "iaupdatenode.h"
 #include "iaupdatebasenode.h"
+#include "iaupdatebasenodeimpl.h"
 #include "iaupdatefwversionfilehandler.h"
+#include "iaupdateprotocolconsts.h"
 #include "iaupdatedebug.h"
 
 #include <swi/sisregistrysession.h>
@@ -40,10 +42,11 @@
 #include <widgetregistryclient.h>
 
 //Constants
-const TInt KSpaceMarginal( 100 * 1024 );
-const TInt KSizeMultiplier( 1 );
 const TText KVersionSeparator( '.' );
 
+_LIT( KExe, ".exe" );
+_LIT( KDll, ".dll" );
+
 
 // -----------------------------------------------------------------------------
 // IAUpdateUtils::DesHexToIntL
@@ -355,28 +358,29 @@
     RFs fs;
     User::LeaveIfError( fs.Connect() );
     CleanupClosePushL( fs );  
+    
+    for ( i = 0; i < aNodes.Count(); ++i )
+        {
+        MIAUpdateNode* node( aNodes[ i ] );
+        MIAUpdateBaseNode& baseNode( node->Base() );
+        if ( baseNode.ContentSizeL() > sizeOfBiggest )
+            {
+            sizeOfBiggest = baseNode.ContentSizeL();
+            }
+        }
+    
     TInt64 freeOnC = FreeDiskSpace( fs, EDriveC );
     TInt64 freeOnE = FreeDiskSpace( fs, EDriveE );
-
-    if ( freeOnC >= freeOnE )
-        {
-        for ( i = 0; i < aNodes.Count(); ++i )
-            {
-            MIAUpdateNode* node( aNodes[ i ] );
-            MIAUpdateBaseNode& baseNode( node->Base() );
-            if ( baseNode.ContentSizeL() > sizeOfBiggest )
-                {
-                sizeOfBiggest = baseNode.ContentSizeL();
-                }
-            }
-        }
-  
 	TDriveUnit driveUnit( EDriveC );
+	if ( freeOnE > freeOnC )
+	    {
+	    driveUnit = EDriveE;
+	    }
 	if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeOfBiggest, driveUnit ) ) 
 	    { // no space even for package caching
 		enoughSpaceFound = EFalse;
 	    }
-	else
+/*	else
 	    {
         TInt sizeNeededInDrive = sizeOfBiggest + KSpaceMarginal; //size of the biggest package is included in C drive
         for ( i = 0; i < aNodes.Count() && enoughSpaceFound; ++i )
@@ -384,7 +388,7 @@
             TDriveUnit installedDrive;
             MIAUpdateNode* node( aNodes[ i ] );
             MIAUpdateBaseNode& baseNode( node->Base() );
-            if ( !IAUpdateUtils::InstalledDriveL( baseNode.Uid(), installedDrive ) )
+            if ( !IAUpdateUtils::InstalledDriveL( fs, baseNode.Uid(), installedDrive ) )
                 { //let's assume that already installed package does not need extra space
         	    sizeNeededInDrive += ( baseNode.ContentSizeL() * KSizeMultiplier );       
                 if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeNeededInDrive, driveUnit ) )
@@ -416,7 +420,7 @@
                     }
         	    }
             }
-        }
+        }*/
     CleanupStack::PopAndDestroy( &fs );
     return enoughSpaceFound;
     }
@@ -463,9 +467,10 @@
 // 
 // ---------------------------------------------------------------------------
 //
-EXPORT_C SwiUI::TInstallOptions IAUpdateUtils::SilentInstallOptionsL( 
-    const TUid& aUid, TInt aSize )
+SwiUI::TInstallOptions IAUpdateUtils::SilentInstallOptionsL(
+    const CIAUpdateBaseNode& aNode )
     {
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::SilentInstallOptionsL() begin");
     SwiUI::TInstallOptions options;
 
     // Upgrades are allowed        
@@ -500,8 +505,20 @@
     options.iDownload = SwiUI::EPolicyAllowed;
     
     // Where to save.
-    TDriveUnit driveUnit = IAUpdateUtils::DriveToInstallL( aUid, aSize );
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::SilentInstallOptionsL() before DriveToInstallL");
+    TDriveUnit driveUnit;
+    if ( aNode.Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+        {
+        driveUnit = IAUpdateUtils::DriveToInstallWidgetL( aNode.Identifier() );
+        }
+    else
+        {
+        driveUnit = IAUpdateUtils::DriveToInstallL( aNode.Uid(), aNode.OwnContentSizeL() );
+        }
+     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::SilentInstallOptionsL() after DriveToInstallL");
+    
     TDriveName driveName = driveUnit.Name();
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::SilentInstallOptionsL() driveName: %S", &driveName );
     options.iDrive = driveName[0];
     
     // Choose the phone language.
@@ -512,7 +529,7 @@
     
     // Does not affect SISX. This is for Java.
     options.iUpgradeData = SwiUI::EPolicyAllowed;
-
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::SilentInstallOptionsL() end");
     return options;
     }
 
@@ -522,9 +539,10 @@
 // 
 // -----------------------------------------------------------------------------
 // 
-TBool IAUpdateUtils::InstalledDriveL( 
-    const TUid& aUid, TDriveUnit& aLocationDrive )
+TBool IAUpdateUtils::InstalledDriveL(
+    RFs& aFs, const TUid& aUid, TDriveUnit& aLocationDrive )
     {
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveL() begin");
     TBool installed = EFalse;
 	Swi::RSisRegistrySession registrySession;
 	User::LeaveIfError( registrySession.Connect() );
@@ -541,23 +559,75 @@
         if ( ( !entry.IsInRomL() ) && ( entry.IsPresentL() ) )
             { //only interested in a drive available for installation just now
             installed = ETrue;
-    	    TUint drivesMask = entry.InstalledDrivesL();
+            }
+        
+        if ( !entry.IsInRomL() )
+            {
+            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveL() entry not in ROM"); 
+     	    TUint drivesMask = entry.InstalledDrivesL();
             if( drivesMask )
                 {
+                IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveL() drivesMask exists"); 
                 // Select the highest drive as location drive. That's the case when 
                 // all installation is not in same drive
+                TInt driveCount = 0;
                 TInt drive = EDriveA;
                 while( drivesMask >>= 1 )
                     {
+                    driveCount++; 
                     drive++;
                     }
-                aLocationDrive = drive;
+                IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveL() driveCount: %d", driveCount );
+                if ( driveCount > 1 )
+                    {
+                    // installation is in multiple drives
+                    // the drive where are binaries (EXEs and DLLs) is chosen
+                    RArray<TInt> drivesWithBinaries; 
+                    CleanupClosePushL( drivesWithBinaries );
+                    DrivesWithBinariesL( entry, drivesWithBinaries ); 
+                    if ( drivesWithBinaries.Count() == 0 )
+                        {
+                        //let's assume the highest drive 
+                        aLocationDrive = drive;
+                        }
+                    else if ( drivesWithBinaries.Count() == 1 )
+                        {
+                        // there are binaries only in one drive, this one is chosen
+                        aLocationDrive = drivesWithBinaries[0];
+                        }
+                    else
+                        {
+                        // there are binaries in multiple drives, C drive is chosen
+                        aLocationDrive = EDriveC;
+                        }
+                    CleanupStack::PopAndDestroy( &drivesWithBinaries );
+                    }
+                else
+                    {
+                    aLocationDrive = drive;
+                    }
                 }
             else
                 {
                 // No installed files, select C: as location drive
                 aLocationDrive = EDriveC;
                 }
+            IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveL() location drive: %d", aLocationDrive.operator int() );
+            // if the drive chosen is physically removable and it's not available, then install to C drive
+            TUint driveStatus = 0;
+            User::LeaveIfError( DriveInfo::GetDriveStatus( aFs, aLocationDrive, driveStatus ) );
+            if  ( driveStatus & DriveInfo::EDriveRemovable )
+                {
+                IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveL() removable"); 
+                }
+            if  ( driveStatus & DriveInfo::EDrivePresent )
+                {
+                IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveL() present"); 
+                }
+            if ( ( driveStatus & DriveInfo::EDriveRemovable ) && ( !(driveStatus & DriveInfo::EDrivePresent) ) )
+                {
+                aLocationDrive = EDriveC;
+                }
             }
         CleanupStack::PopAndDestroy( &entry );
         }
@@ -567,9 +637,46 @@
         }
     
     CleanupStack::PopAndDestroy( &registrySession ); 
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveL() installed: %d", installed );
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveL() target drive: %d", aLocationDrive.operator int() );
 	return installed;
     }
 
+// -----------------------------------------------------------------------------
+// IAUpdateUtils::InstalledDriveWidgetL
+// 
+// -----------------------------------------------------------------------------
+// 
+void IAUpdateUtils::InstalledDriveWidgetL( RFs& aFs, 
+                                           RWidgetRegistryClientSession& aWidgetRegistry, 
+                                           const TUid& aUid, 
+                                           TDriveUnit& aLocationDrive )
+    {
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() begin");
+    TFileName widgetPath;
+    aWidgetRegistry.GetWidgetPath( aUid, widgetPath );
+    aLocationDrive = widgetPath.Mid( 0, 2 );
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Drive in registry: %S", &aLocationDrive.Name() );
+    if ( aLocationDrive == EDriveZ )
+        {
+        // if the installation is in ROM, then install to C drive
+        aLocationDrive = EDriveC;
+        IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Exists in ROM, install to C:");
+        }
+    else
+        {
+        TUint driveStatus = 0;
+        User::LeaveIfError( DriveInfo::GetDriveStatus( aFs, aLocationDrive, driveStatus ) );
+        // if the installation drive physically removable and it's not available, then install to C drive
+        if ( ( driveStatus & DriveInfo::EDriveRemovable ) && ( !(driveStatus & DriveInfo::EDrivePresent) ) )
+            {
+            aLocationDrive = EDriveC;
+            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Physically removable drive not present, install to C:");
+            }
+        }
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() begin");
+    }
+
 
 // -----------------------------------------------------------------------------
 // IAUpdateUtils::NextInternalDriveL
@@ -615,9 +722,9 @@
 // 
 // -----------------------------------------------------------------------------
 //   
-TDriveUnit IAUpdateUtils::DriveToInstallL( const TUid& /*aUid*/, TInt /*aSize*/ )
+TDriveUnit IAUpdateUtils::DriveToInstallL( const TUid& aUid, TInt /*aSize*/ )
     {
-    
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallL() begin");
 	/*TDriveUnit preferredDriveUnit;
 	TDriveUnit targetDriveUnit( EDriveC );
 	//preferred drive is same as a drive of previous installation
@@ -635,12 +742,65 @@
 			targetDriveUnit = preferredDriveUnit;
 		    }
 	    }*/
-	    
-	// installation drive is alvays "C"
+	
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );  
     TDriveUnit targetDriveUnit( EDriveC );
+    InstalledDriveL( fs, aUid, targetDriveUnit );
+    CleanupStack::PopAndDestroy( &fs );
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallL() end");
     return targetDriveUnit;
     }
 
+// -----------------------------------------------------------------------------
+// IAUpdateUtils::DriveToInstallWidgetL
+// 
+// -----------------------------------------------------------------------------
+//   
+TDriveUnit IAUpdateUtils::DriveToInstallWidgetL( const TDesC& aIdentifier )
+    {
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() begin");
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() identifier: %S", &aIdentifier );
+    TDriveUnit targetDriveUnit( EDriveC );
+    RWidgetRegistryClientSession widgetRegistry;
+
+    User::LeaveIfError( widgetRegistry.Connect() );
+        
+    CleanupClosePushL( widgetRegistry );
+        
+    RPointerArray<CWidgetInfo> widgetInfoArr;
+    CleanupResetAndDestroyPushL( widgetInfoArr );
+    TInt err = widgetRegistry.InstalledWidgetsL(widgetInfoArr); 
+    
+    TBool foundInRegistry( EFalse );
+    for( TInt i( widgetInfoArr.Count() - 1 ); !foundInRegistry && i >= 0; --i ) 
+        {
+        CWidgetInfo* widgetInfo( widgetInfoArr[i] );  
+            
+        CWidgetPropertyValue* BundleId = widgetRegistry.GetWidgetPropertyValueL(widgetInfo->iUid, EBundleIdentifier );
+        CleanupStack::PushL( BundleId );
+            
+        if( aIdentifier.Compare( *(BundleId->iValue.s) )== 0 )
+            {
+            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() Found in registry");
+            foundInRegistry = ETrue;
+            RFs fs;
+            User::LeaveIfError( fs.Connect() );
+            CleanupClosePushL( fs );
+            InstalledDriveWidgetL( fs, widgetRegistry, widgetInfo->iUid, targetDriveUnit );
+            CleanupStack::PopAndDestroy( &fs );
+            }
+        CleanupStack::PopAndDestroy( BundleId );
+        }
+        
+    CleanupStack::PopAndDestroy( &widgetInfoArr );
+    CleanupStack::PopAndDestroy( &widgetRegistry);
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() end");
+    return targetDriveUnit;
+    }
+
+
 
 // -----------------------------------------------------------------------------
 // IAUpdateUtils::BiggestInternalDriveL
@@ -826,6 +986,50 @@
     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::FreeDiskSpace() end");
     return freeSpace;
     }  
-    
 
-
+// ---------------------------------------------------------------------------
+// IAUpdateUtils::DrivesWithBinariesL
+// ---------------------------------------------------------------------------
+//
+void IAUpdateUtils::DrivesWithBinariesL( Swi::RSisRegistryEntry& aEntry, RArray<TInt>& aDrives )
+    {
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() begin");
+    RPointerArray<HBufC> files; 
+    aEntry.FilesL( files );
+    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() file count: %d", files.Count() );
+    for( TInt i = 0; i < files.Count(); i++)
+        {
+        TFileName fullName = *files[i]; 
+        IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() fullname: %S", &fullName);
+        TParse parse;
+        parse.Set( fullName, NULL, NULL);    
+        IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() extension: %S", &parse.Ext());
+        if ( parse.Ext().CompareF( KExe() ) == 0  || parse.Ext().CompareF( KDll() ) == 0 )
+            {
+            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() EXE or DLL found");
+            TDriveUnit driveUnit( parse.Drive() );
+            TInt driveInt = driveUnit;
+            IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() driveInt: %d", driveInt );
+            TBool driveExistInList = EFalse;
+            for( TInt j = 0; !driveExistInList && j < aDrives.Count(); j++)
+                {
+                if ( driveInt == aDrives[j])
+                    {
+                    driveExistInList = ETrue;
+                    }
+                }
+            if ( !driveExistInList )
+                {
+                TInt ret = aDrives.Append(driveInt);
+                if ( ret != KErrNone )
+                    {
+                    files.ResetAndDestroy(); 
+                    User::Leave( ret );
+                    }
+                IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() drive added to list: %d", driveInt );
+                }
+            }
+        }
+    files.ResetAndDestroy(); 
+    IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DrivesWithBinariesL() end");
+    }
--- a/iaupdate/IAD/engine/eabi/iaupdateengineu.def	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/engine/eabi/iaupdateengineu.def	Tue Apr 27 16:46:15 2010 +0300
@@ -6,7 +6,7 @@
 	_ZN13IAUpdateUtils14AppPackageUidLERK4TUidR16TIAUpdateVersion @ 5 NONAME
 	_ZN13IAUpdateUtils15IsAppInstalledLERK4TUid @ 6 NONAME
 	_ZN13IAUpdateUtils15IsAppInstalledLERK4TUidR16TIAUpdateVersion @ 7 NONAME
-	_ZN13IAUpdateUtils21SilentInstallOptionsLERK4TUidi @ 8 NONAME
+	_ZN13IAUpdateUtils18IsWidgetInstalledLERK7TDesC16R16TIAUpdateVersion @ 8 NONAME
 	_ZN13IAUpdateUtils31SpaceAvailableInInternalDrivesLER13RPointerArrayI13MIAUpdateNodeE @ 9 NONAME
 	_ZN15IAUpdateFactory17CreateControllerLERK4TUidR27MIAUpdateControllerObserver @ 10 NONAME
 	_ZN16TIAUpdateVersion10SetToFloorEv @ 11 NONAME
@@ -101,121 +101,120 @@
 	_ZNK23CIAUpdateControllerFile8LanguageEv @ 100 NONAME
 	_ZNK25CIAUpdatePendingNodesFile5IndexEv @ 101 NONAME
 	_ZNK25CIAUpdatePendingNodesFile8FilePathEv @ 102 NONAME
-	_ZTI13CIAUpdateNode @ 103 NONAME ; #<TI>#
-	_ZTI14CIAUpdateTimer @ 104 NONAME ; #<TI>#
-	_ZTI15CIAUpdateFwNode @ 105 NONAME ; #<TI>#
-	_ZTI15CIAUpdateLoader @ 106 NONAME ; #<TI>#
-	_ZTI16CIAUpdateHistory @ 107 NONAME ; #<TI>#
-	_ZTI17CIAUpdateBaseNode @ 108 NONAME ; #<TI>#
-	_ZTI18CIAUpdateXmlParser @ 109 NONAME ; #<TI>#
-	_ZTI19CIAUpdateController @ 110 NONAME ; #<TI>#
-	_ZTI19CIAUpdateRendezvous @ 111 NONAME ; #<TI>#
-	_ZTI20CIAUpdateHistoryItem @ 112 NONAME ; #<TI>#
-	_ZTI20CIAUpdateNodeDetails @ 113 NONAME ; #<TI>#
-	_ZTI20CIAUpdateRestartInfo @ 114 NONAME ; #<TI>#
-	_ZTI20CIAUpdateSpecialNode @ 115 NONAME ; #<TI>#
-	_ZTI21CIAUpdateCacheCleaner @ 116 NONAME ; #<TI>#
-	_ZTI21CIAUpdateXmlSubParser @ 117 NONAME ; #<TI>#
-	_ZTI22CIAUpdateNodeContainer @ 118 NONAME ; #<TI>#
-	_ZTI23CIAUpdateControllerFile @ 119 NONAME ; #<TI>#
-	_ZTI23CIAUpdateNodeDependency @ 120 NONAME ; #<TI>#
-	_ZTI24CIAUpdateEngineXmlParser @ 121 NONAME ; #<TI>#
-	_ZTI24CIAUpdateSelfUpdaterCtrl @ 122 NONAME ; #<TI>#
-	_ZTI24CIAUpdateServicePackNode @ 123 NONAME ; #<TI>#
-	_ZTI25CIAUpdateContentOperation @ 124 NONAME ; #<TI>#
-	_ZTI25CIAUpdateEngineConfigData @ 125 NONAME ; #<TI>#
-	_ZTI25CIAUpdateInstallOperation @ 126 NONAME ; #<TI>#
-	_ZTI25CIAUpdateNodeUidXmlParser @ 127 NONAME ; #<TI>#
-	_ZTI25CIAUpdatePendingNodesFile @ 128 NONAME ; #<TI>#
-	_ZTI26CIAUpdateDownloadOperation @ 129 NONAME ; #<TI>#
-	_ZTI26CIAUpdateInterDepXmlParser @ 130 NONAME ; #<TI>#
-	_ZTI26CIAUpdatePurchaseOperation @ 131 NONAME ; #<TI>#
-	_ZTI27CIAUpdateEngineXmlSubParser @ 132 NONAME ; #<TI>#
-	_ZTI27CIAUpdatePlatformDependency @ 133 NONAME ; #<TI>#
-	_ZTI28CIAUpdateDependencyXmlParser @ 134 NONAME ; #<TI>#
-	_ZTI28CIAUpdateFwPurchaseOperation @ 135 NONAME ; #<TI>#
-	_ZTI28CIAUpdateNetworkRegistration @ 136 NONAME ; #<TI>#
-	_ZTI29CIAUpdateNodeVersionXmlParser @ 137 NONAME ; #<TI>#
-	_ZTI30CIAUpdateNodeEmbeddedXmlParser @ 138 NONAME ; #<TI>#
-	_ZTI30CIAUpdateVersionBuildXmlParser @ 139 NONAME ; #<TI>#
-	_ZTI30CIAUpdateVersionMajorXmlParser @ 140 NONAME ; #<TI>#
-	_ZTI30CIAUpdateVersionMinorXmlParser @ 141 NONAME ; #<TI>#
-	_ZTI31CIAUpdateDependencyXmlSubParser @ 142 NONAME ; #<TI>#
-	_ZTI31CIAUpdateNormalContentOperation @ 143 NONAME ; #<TI>#
-	_ZTI31CIAUpdateSelfUpdaterInitializer @ 144 NONAME ; #<TI>#
-	_ZTI32CIAUpdateContentOperationManager @ 145 NONAME ; #<TI>#
-	_ZTI32CIAUpdateNodeDependencyXmlParser @ 146 NONAME ; #<TI>#
-	_ZTI32CIAUpdateSelfUpdateInitOperation @ 147 NONAME ; #<TI>#
-	_ZTI33CIAUpdateNodeVersionRoofXmlParser @ 148 NONAME ; #<TI>#
-	_ZTI33CIAUpdatePlatformVersionXmlParser @ 149 NONAME ; #<TI>#
-	_ZTI34CIAUpdateNodeVersionFloorXmlParser @ 150 NONAME ; #<TI>#
-	_ZTI36CIAUpdatePlatformDependencyXmlParser @ 151 NONAME ; #<TI>#
-	_ZTI37CIAUpdatePlatformDescriptionXmlParser @ 152 NONAME ; #<TI>#
-	_ZTI37CIAUpdatePlatformVersionRoofXmlParser @ 153 NONAME ; #<TI>#
-	_ZTI38CIAUpdatePlatformVersionFloorXmlParser @ 154 NONAME ; #<TI>#
-	_ZTV13CIAUpdateNode @ 155 NONAME ; #<VT>#
-	_ZTV14CIAUpdateTimer @ 156 NONAME ; #<VT>#
-	_ZTV15CIAUpdateFwNode @ 157 NONAME ; #<VT>#
-	_ZTV15CIAUpdateLoader @ 158 NONAME ; #<VT>#
-	_ZTV16CIAUpdateHistory @ 159 NONAME ; #<VT>#
-	_ZTV17CIAUpdateBaseNode @ 160 NONAME ; #<VT>#
-	_ZTV18CIAUpdateXmlParser @ 161 NONAME ; #<VT>#
-	_ZTV19CIAUpdateController @ 162 NONAME ; #<VT>#
-	_ZTV19CIAUpdateRendezvous @ 163 NONAME ; #<VT>#
-	_ZTV20CIAUpdateHistoryItem @ 164 NONAME ; #<VT>#
-	_ZTV20CIAUpdateNodeDetails @ 165 NONAME ; #<VT>#
-	_ZTV20CIAUpdateRestartInfo @ 166 NONAME ; #<VT>#
-	_ZTV20CIAUpdateSpecialNode @ 167 NONAME ; #<VT>#
-	_ZTV21CIAUpdateCacheCleaner @ 168 NONAME ; #<VT>#
-	_ZTV21CIAUpdateXmlSubParser @ 169 NONAME ; #<VT>#
-	_ZTV22CIAUpdateNodeContainer @ 170 NONAME ; #<VT>#
-	_ZTV23CIAUpdateControllerFile @ 171 NONAME ; #<VT>#
-	_ZTV23CIAUpdateNodeDependency @ 172 NONAME ; #<VT>#
-	_ZTV24CIAUpdateEngineXmlParser @ 173 NONAME ; #<VT>#
-	_ZTV24CIAUpdateSelfUpdaterCtrl @ 174 NONAME ; #<VT>#
-	_ZTV24CIAUpdateServicePackNode @ 175 NONAME ; #<VT>#
-	_ZTV25CIAUpdateContentOperation @ 176 NONAME ; #<VT>#
-	_ZTV25CIAUpdateEngineConfigData @ 177 NONAME ; #<VT>#
-	_ZTV25CIAUpdateInstallOperation @ 178 NONAME ; #<VT>#
-	_ZTV25CIAUpdateNodeUidXmlParser @ 179 NONAME ; #<VT>#
-	_ZTV25CIAUpdatePendingNodesFile @ 180 NONAME ; #<VT>#
-	_ZTV26CIAUpdateDownloadOperation @ 181 NONAME ; #<VT>#
-	_ZTV26CIAUpdateInterDepXmlParser @ 182 NONAME ; #<VT>#
-	_ZTV26CIAUpdatePurchaseOperation @ 183 NONAME ; #<VT>#
-	_ZTV27CIAUpdateEngineXmlSubParser @ 184 NONAME ; #<VT>#
-	_ZTV27CIAUpdatePlatformDependency @ 185 NONAME ; #<VT>#
-	_ZTV28CIAUpdateDependencyXmlParser @ 186 NONAME ; #<VT>#
-	_ZTV28CIAUpdateFwPurchaseOperation @ 187 NONAME ; #<VT>#
-	_ZTV28CIAUpdateNetworkRegistration @ 188 NONAME ; #<VT>#
-	_ZTV29CIAUpdateNodeVersionXmlParser @ 189 NONAME ; #<VT>#
-	_ZTV30CIAUpdateNodeEmbeddedXmlParser @ 190 NONAME ; #<VT>#
-	_ZTV30CIAUpdateVersionBuildXmlParser @ 191 NONAME ; #<VT>#
-	_ZTV30CIAUpdateVersionMajorXmlParser @ 192 NONAME ; #<VT>#
-	_ZTV30CIAUpdateVersionMinorXmlParser @ 193 NONAME ; #<VT>#
-	_ZTV31CIAUpdateDependencyXmlSubParser @ 194 NONAME ; #<VT>#
-	_ZTV31CIAUpdateNormalContentOperation @ 195 NONAME ; #<VT>#
-	_ZTV31CIAUpdateSelfUpdaterInitializer @ 196 NONAME ; #<VT>#
-	_ZTV32CIAUpdateContentOperationManager @ 197 NONAME ; #<VT>#
-	_ZTV32CIAUpdateNodeDependencyXmlParser @ 198 NONAME ; #<VT>#
-	_ZTV32CIAUpdateSelfUpdateInitOperation @ 199 NONAME ; #<VT>#
-	_ZTV33CIAUpdateNodeVersionRoofXmlParser @ 200 NONAME ; #<VT>#
-	_ZTV33CIAUpdatePlatformVersionXmlParser @ 201 NONAME ; #<VT>#
-	_ZTV34CIAUpdateNodeVersionFloorXmlParser @ 202 NONAME ; #<VT>#
-	_ZTV36CIAUpdatePlatformDependencyXmlParser @ 203 NONAME ; #<VT>#
-	_ZTV37CIAUpdatePlatformDescriptionXmlParser @ 204 NONAME ; #<VT>#
-	_ZTV37CIAUpdatePlatformVersionRoofXmlParser @ 205 NONAME ; #<VT>#
-	_ZTV38CIAUpdatePlatformVersionFloorXmlParser @ 206 NONAME ; #<VT>#
-	_ZThn4_N21CIAUpdateXmlSubParser10OnContentLERK6TDesC8i @ 207 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser13OnEndElementLERKN3Xml8RTagInfoEi @ 208 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser14OnEndDocumentLEi @ 209 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser15OnStartElementLERKN3Xml8RTagInfoERK6RArrayINS0_10RAttributeEEi @ 210 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser16OnSkippedEntityLERK7RStringi @ 211 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser16OnStartDocumentLERKN3Xml19RDocumentParametersEi @ 212 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser19OnEndPrefixMappingLERK7RStringi @ 213 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser20GetExtendedInterfaceEl @ 214 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser21OnStartPrefixMappingLERK7RStringS2_i @ 215 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser22OnIgnorableWhiteSpaceLERK6TDesC8i @ 216 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser24OnProcessingInstructionLERK6TDesC8S2_i @ 217 NONAME ; #<thunk>#
-	_ZThn4_N21CIAUpdateXmlSubParser7OnErrorEi @ 218 NONAME ; #<thunk>#
-	_ZN13IAUpdateUtils18IsWidgetInstalledLERK7TDesC16R16TIAUpdateVersion @ 219 NONAME
+	_ZTI13CIAUpdateNode @ 103 NONAME
+	_ZTI14CIAUpdateTimer @ 104 NONAME
+	_ZTI15CIAUpdateFwNode @ 105 NONAME
+	_ZTI15CIAUpdateLoader @ 106 NONAME
+	_ZTI16CIAUpdateHistory @ 107 NONAME
+	_ZTI17CIAUpdateBaseNode @ 108 NONAME
+	_ZTI18CIAUpdateXmlParser @ 109 NONAME
+	_ZTI19CIAUpdateController @ 110 NONAME
+	_ZTI19CIAUpdateRendezvous @ 111 NONAME
+	_ZTI20CIAUpdateHistoryItem @ 112 NONAME
+	_ZTI20CIAUpdateNodeDetails @ 113 NONAME
+	_ZTI20CIAUpdateRestartInfo @ 114 NONAME
+	_ZTI20CIAUpdateSpecialNode @ 115 NONAME
+	_ZTI21CIAUpdateCacheCleaner @ 116 NONAME
+	_ZTI21CIAUpdateXmlSubParser @ 117 NONAME
+	_ZTI22CIAUpdateNodeContainer @ 118 NONAME
+	_ZTI23CIAUpdateControllerFile @ 119 NONAME
+	_ZTI23CIAUpdateNodeDependency @ 120 NONAME
+	_ZTI24CIAUpdateEngineXmlParser @ 121 NONAME
+	_ZTI24CIAUpdateSelfUpdaterCtrl @ 122 NONAME
+	_ZTI24CIAUpdateServicePackNode @ 123 NONAME
+	_ZTI25CIAUpdateContentOperation @ 124 NONAME
+	_ZTI25CIAUpdateEngineConfigData @ 125 NONAME
+	_ZTI25CIAUpdateInstallOperation @ 126 NONAME
+	_ZTI25CIAUpdateNodeUidXmlParser @ 127 NONAME
+	_ZTI25CIAUpdatePendingNodesFile @ 128 NONAME
+	_ZTI26CIAUpdateDownloadOperation @ 129 NONAME
+	_ZTI26CIAUpdateInterDepXmlParser @ 130 NONAME
+	_ZTI26CIAUpdatePurchaseOperation @ 131 NONAME
+	_ZTI27CIAUpdateEngineXmlSubParser @ 132 NONAME
+	_ZTI27CIAUpdatePlatformDependency @ 133 NONAME
+	_ZTI28CIAUpdateDependencyXmlParser @ 134 NONAME
+	_ZTI28CIAUpdateFwPurchaseOperation @ 135 NONAME
+	_ZTI28CIAUpdateNetworkRegistration @ 136 NONAME
+	_ZTI29CIAUpdateNodeVersionXmlParser @ 137 NONAME
+	_ZTI30CIAUpdateNodeEmbeddedXmlParser @ 138 NONAME
+	_ZTI30CIAUpdateVersionBuildXmlParser @ 139 NONAME
+	_ZTI30CIAUpdateVersionMajorXmlParser @ 140 NONAME
+	_ZTI30CIAUpdateVersionMinorXmlParser @ 141 NONAME
+	_ZTI31CIAUpdateDependencyXmlSubParser @ 142 NONAME
+	_ZTI31CIAUpdateNormalContentOperation @ 143 NONAME
+	_ZTI31CIAUpdateSelfUpdaterInitializer @ 144 NONAME
+	_ZTI32CIAUpdateContentOperationManager @ 145 NONAME
+	_ZTI32CIAUpdateNodeDependencyXmlParser @ 146 NONAME
+	_ZTI32CIAUpdateSelfUpdateInitOperation @ 147 NONAME
+	_ZTI33CIAUpdateNodeVersionRoofXmlParser @ 148 NONAME
+	_ZTI33CIAUpdatePlatformVersionXmlParser @ 149 NONAME
+	_ZTI34CIAUpdateNodeVersionFloorXmlParser @ 150 NONAME
+	_ZTI36CIAUpdatePlatformDependencyXmlParser @ 151 NONAME
+	_ZTI37CIAUpdatePlatformDescriptionXmlParser @ 152 NONAME
+	_ZTI37CIAUpdatePlatformVersionRoofXmlParser @ 153 NONAME
+	_ZTI38CIAUpdatePlatformVersionFloorXmlParser @ 154 NONAME
+	_ZTV13CIAUpdateNode @ 155 NONAME
+	_ZTV14CIAUpdateTimer @ 156 NONAME
+	_ZTV15CIAUpdateFwNode @ 157 NONAME
+	_ZTV15CIAUpdateLoader @ 158 NONAME
+	_ZTV16CIAUpdateHistory @ 159 NONAME
+	_ZTV17CIAUpdateBaseNode @ 160 NONAME
+	_ZTV18CIAUpdateXmlParser @ 161 NONAME
+	_ZTV19CIAUpdateController @ 162 NONAME
+	_ZTV19CIAUpdateRendezvous @ 163 NONAME
+	_ZTV20CIAUpdateHistoryItem @ 164 NONAME
+	_ZTV20CIAUpdateNodeDetails @ 165 NONAME
+	_ZTV20CIAUpdateRestartInfo @ 166 NONAME
+	_ZTV20CIAUpdateSpecialNode @ 167 NONAME
+	_ZTV21CIAUpdateCacheCleaner @ 168 NONAME
+	_ZTV21CIAUpdateXmlSubParser @ 169 NONAME
+	_ZTV22CIAUpdateNodeContainer @ 170 NONAME
+	_ZTV23CIAUpdateControllerFile @ 171 NONAME
+	_ZTV23CIAUpdateNodeDependency @ 172 NONAME
+	_ZTV24CIAUpdateEngineXmlParser @ 173 NONAME
+	_ZTV24CIAUpdateSelfUpdaterCtrl @ 174 NONAME
+	_ZTV24CIAUpdateServicePackNode @ 175 NONAME
+	_ZTV25CIAUpdateContentOperation @ 176 NONAME
+	_ZTV25CIAUpdateEngineConfigData @ 177 NONAME
+	_ZTV25CIAUpdateInstallOperation @ 178 NONAME
+	_ZTV25CIAUpdateNodeUidXmlParser @ 179 NONAME
+	_ZTV25CIAUpdatePendingNodesFile @ 180 NONAME
+	_ZTV26CIAUpdateDownloadOperation @ 181 NONAME
+	_ZTV26CIAUpdateInterDepXmlParser @ 182 NONAME
+	_ZTV26CIAUpdatePurchaseOperation @ 183 NONAME
+	_ZTV27CIAUpdateEngineXmlSubParser @ 184 NONAME
+	_ZTV27CIAUpdatePlatformDependency @ 185 NONAME
+	_ZTV28CIAUpdateDependencyXmlParser @ 186 NONAME
+	_ZTV28CIAUpdateFwPurchaseOperation @ 187 NONAME
+	_ZTV28CIAUpdateNetworkRegistration @ 188 NONAME
+	_ZTV29CIAUpdateNodeVersionXmlParser @ 189 NONAME
+	_ZTV30CIAUpdateNodeEmbeddedXmlParser @ 190 NONAME
+	_ZTV30CIAUpdateVersionBuildXmlParser @ 191 NONAME
+	_ZTV30CIAUpdateVersionMajorXmlParser @ 192 NONAME
+	_ZTV30CIAUpdateVersionMinorXmlParser @ 193 NONAME
+	_ZTV31CIAUpdateDependencyXmlSubParser @ 194 NONAME
+	_ZTV31CIAUpdateNormalContentOperation @ 195 NONAME
+	_ZTV31CIAUpdateSelfUpdaterInitializer @ 196 NONAME
+	_ZTV32CIAUpdateContentOperationManager @ 197 NONAME
+	_ZTV32CIAUpdateNodeDependencyXmlParser @ 198 NONAME
+	_ZTV32CIAUpdateSelfUpdateInitOperation @ 199 NONAME
+	_ZTV33CIAUpdateNodeVersionRoofXmlParser @ 200 NONAME
+	_ZTV33CIAUpdatePlatformVersionXmlParser @ 201 NONAME
+	_ZTV34CIAUpdateNodeVersionFloorXmlParser @ 202 NONAME
+	_ZTV36CIAUpdatePlatformDependencyXmlParser @ 203 NONAME
+	_ZTV37CIAUpdatePlatformDescriptionXmlParser @ 204 NONAME
+	_ZTV37CIAUpdatePlatformVersionRoofXmlParser @ 205 NONAME
+	_ZTV38CIAUpdatePlatformVersionFloorXmlParser @ 206 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser10OnContentLERK6TDesC8i @ 207 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser13OnEndElementLERKN3Xml8RTagInfoEi @ 208 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser14OnEndDocumentLEi @ 209 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser15OnStartElementLERKN3Xml8RTagInfoERK6RArrayINS0_10RAttributeEEi @ 210 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser16OnSkippedEntityLERK7RStringi @ 211 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser16OnStartDocumentLERKN3Xml19RDocumentParametersEi @ 212 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser19OnEndPrefixMappingLERK7RStringi @ 213 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser20GetExtendedInterfaceEl @ 214 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser21OnStartPrefixMappingLERK7RStringS2_i @ 215 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser22OnIgnorableWhiteSpaceLERK6TDesC8i @ 216 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser24OnProcessingInstructionLERK6TDesC8S2_i @ 217 NONAME
+	_ZThn4_N21CIAUpdateXmlSubParser7OnErrorEi @ 218 NONAME
 
--- a/iaupdate/IAD/engine/inc/iaupdateutils.h	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/engine/inc/iaupdateutils.h	Tue Apr 27 16:46:15 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -25,9 +25,12 @@
 
 // For silent installation
 #include <SWInstDefs.h>
+#include <swi/sisregistryentry.h>
 
 class TIAUpdateVersion;
 class MIAUpdateNode;
+class CIAUpdateBaseNode;
+class RWidgetRegistryClientSession;
 
 namespace IAUpdateUtils
 {
@@ -120,11 +123,10 @@
  * Creates options for silent install.
  * Uses DriveToInstallL to etermine target drive to install.
  * 
- * @param aUid PUID of the application
- * @param aSize Estimated size of installation
+ * @param aNode
  */
-IMPORT_C SwiUI::TInstallOptions SilentInstallOptionsL( const TUid& aUid,
-                                                       TInt aSize );
+SwiUI::TInstallOptions SilentInstallOptionsL( const CIAUpdateBaseNode& aNode );
+                                                     
 
 
 
@@ -134,7 +136,12 @@
  * @param aLocationDrive Drive where a package is currently installed
  * @return ETrue if a package previously installed to an available drive
  **/
-TBool InstalledDriveL( const TUid& aUid, TDriveUnit& aLocationDrive );
+TBool InstalledDriveL( RFs& aFs, const TUid& aUid, TDriveUnit& aLocationDrive );
+
+void InstalledDriveWidgetL( RFs& aFs, 
+                            RWidgetRegistryClientSession& aWidgetRegistry, 
+                            const TUid& aUid, 
+                            TDriveUnit& aLocationDrive );
 
 TBool NextInternalDriveL( RFs& aFs, 
                           TDriveUnit aCurrentDrive, 
@@ -149,6 +156,8 @@
  **/
 TDriveUnit DriveToInstallL( const TUid& aUid, TInt aSize );
 
+TDriveUnit DriveToInstallWidgetL( const TDesC& aIdentifier );
+
 TDriveUnit BiggestInternalDriveL();
 
 TBool InternalDriveWithSpaceL( TInt aSize, 
@@ -161,6 +170,8 @@
 
 TInt64 FreeDiskSpace( RFs& aFs, TInt aDriveNumber );
 
+void DrivesWithBinariesL( Swi::RSisRegistryEntry& aEntry, RArray<TInt>& aDrives );
+
 }
 
 
--- a/iaupdate/IAD/firmwareupdate/inc/iaupdatefwfotamodel.h	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/firmwareupdate/inc/iaupdatefwfotamodel.h	Tue Apr 27 16:46:15 2010 +0300
@@ -181,6 +181,12 @@
           * @return ETrue if DM support is available
           */
          TBool IsDMSupportAvailableL();
+         
+         /**
+         * Tries to resume suspended firmware update package download.
+         * @return Error code.
+         */
+         TInt TryResumeFwUpdDownload();
 
         
     public: // Functions from base classes
--- a/iaupdate/IAD/firmwareupdate/src/iaupdatefwfotamodel.cpp	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/firmwareupdate/src/iaupdatefwfotamodel.cpp	Tue Apr 27 16:46:15 2010 +0300
@@ -402,11 +402,23 @@
 // Fetches the state of last or current Fota operation
 // -----------------------------------------------------------------------------
 //
- RFotaEngineSession::TState CIAUpdateFWFotaModel::GetCurrentFwUpdState()
-	{
+RFotaEngineSession::TState CIAUpdateFWFotaModel::GetCurrentFwUpdState()
+	  {
     FLOG( "[IAUPDATEFW] CIAUpdateFWFotaModel::GetCurrentFwUpdState()" );	
-	const TInt x = -1;
-	return iFotaEngine.GetState(x);
-	}
+	  // Workaround because fotaserver has closed all sessions if DM UI was closed.
+	  // So, we cannot rely on existing session but a new one needs to be opened.
+	  iFotaEngine.Close();
+	  iFotaEngine.OpenL();
+	  const TInt x = -1;
+	  return iFotaEngine.GetState(x);
+	  }
+
 
+TInt CIAUpdateFWFotaModel::TryResumeFwUpdDownload()
+    {	
+    FLOG( "[IAUPDATEFW] CIAUpdateFWFotaModel::TryResumeFwUpdDownload()" );	    
+    TInt retval = iFotaEngine.TryResumeDownload();
+    return retval;
+    }
+	
 //  End of File  
--- a/iaupdate/IAD/firmwareupdate/src/iaupdatefwupdatehandler.cpp	Wed Apr 14 16:05:45 2010 +0300
+++ b/iaupdate/IAD/firmwareupdate/src/iaupdatefwupdatehandler.cpp	Tue Apr 27 16:46:15 2010 +0300
@@ -174,6 +174,13 @@
                 //still allow user to continue
                 if ( ( fotamodelstate != RFotaEngineSession::EDownloadComplete ) && ( fotamodelstate != RFotaEngineSession::EStartingUpdate ) )
                     {
+		                //if download is suspended, try to resume it.
+		                if ( fotamodelstate == RFotaEngineSession::EDownloadProgressingWithResume)
+		                    {
+		                    TInt result = iFotaModel->TryResumeFwUpdDownload();
+						            FLOG_NUM( "[IAUPDATEFW] TryResumeFwUpdDownload result  = %d", result );   
+		                    }
+                    //anyway, DM is in use
                     isDmActive = ETrue;
                     }
                 }