Index: mptrack/UpdateCheck.cpp =================================================================== --- mptrack/UpdateCheck.cpp (revision 19257) +++ mptrack/UpdateCheck.cpp (working copy) @@ -742,9 +742,18 @@ } -void CUpdateCheck::CleanOldUpdates(const CUpdateCheck::Settings & /* settings */ , const CUpdateCheck::Context & /* context */ ) +mpt::PathString CUpdateCheck::GetUpdateTempDirectory(bool portable) { - mpt::PathString dirTemp = mpt::common_directories::get_temp_directory(); + if(portable) + { + return theApp.GetInstallPath().WithTrailingSlash() + P_("Temp") + mpt::PathString::FromNative(mpt::RawPathString(1, mpt::PathString::GetDefaultPathSeparator())); + } + return mpt::common_directories::get_temp_directory(); +} + + +void CUpdateCheck::CleanOldUpdates(mpt::PathString dirTemp) +{ if(dirTemp.empty()) { return; @@ -763,6 +772,16 @@ } +void CUpdateCheck::CleanOldUpdates(const CUpdateCheck::Settings & /* settings */ , const CUpdateCheck::Context & /* context */ ) +{ + if(theApp.IsPortableMode()) + { + CleanOldUpdates(GetUpdateTempDirectory(true)); + } + CleanOldUpdates(GetUpdateTempDirectory(false)); +} + + void CUpdateCheck::SendStatistics(HTTP::InternetSession &internet, const CUpdateCheck::Settings &settings, const std::string &statistics) { if(settings.sendStatistics) @@ -1118,12 +1137,13 @@ } UpdateProgress(_T("Preparing download..."), 6.0); - mpt::PathString dirTemp = mpt::common_directories::get_temp_directory(); + mpt::PathString dirTemp = CUpdateCheck::GetUpdateTempDirectory(theApp.IsPortableMode()); + ::CreateDirectory(mpt::support_long_path(dirTemp.AsNative()).c_str(), NULL); mpt::PathString dirTempOpenMPT = dirTemp + P_("OpenMPT") + mpt::PathString::FromNative(mpt::RawPathString(1, mpt::PathString::GetDefaultPathSeparator())); + ::CreateDirectory(mpt::support_long_path(dirTempOpenMPT.AsNative()).c_str(), NULL); dirTempOpenMPTUpdates = dirTempOpenMPT + P_("Updates") + mpt::PathString::FromNative(mpt::RawPathString(1, mpt::PathString::GetDefaultPathSeparator())); + ::CreateDirectory(mpt::support_long_path(dirTempOpenMPTUpdates.AsNative()).c_str(), NULL); updateFilename = dirTempOpenMPTUpdates + mpt::PathString::FromUnicode(downloadinfo.filename); - ::CreateDirectory(mpt::support_long_path(dirTempOpenMPT.AsNative()).c_str(), NULL); - ::CreateDirectory(mpt::support_long_path(dirTempOpenMPTUpdates.AsNative()).c_str(), NULL); { Index: mptrack/UpdateCheck.h =================================================================== --- mptrack/UpdateCheck.h (revision 19257) +++ mptrack/UpdateCheck.h (working copy) @@ -130,6 +130,8 @@ // v3 static std::string GetStatisticsDataV3(const Settings &settings); // UTF8 + static mpt::PathString GetUpdateTempDirectory(bool portable); + protected: static void StartUpdateCheckAsync(bool autoUpdate); @@ -146,6 +148,8 @@ static UpdateCheckResult SearchUpdate(const CUpdateCheck::Context &context, const CUpdateCheck::Settings &settings, const std::string &statistics); // may throw + static void CleanOldUpdates(mpt::PathString dirTemp); + static void CleanOldUpdates(const CUpdateCheck::Settings &settings, const CUpdateCheck::Context &context); static void SendStatistics(HTTP::InternetSession &internet, const CUpdateCheck::Settings &settings, const std::string &statistics); // may throw