diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/updater.cpp | 31 | ||||
| -rw-r--r-- | src/updater.h | 1 |
2 files changed, 19 insertions, 13 deletions
| diff --git a/src/updater.cpp b/src/updater.cpp index 67d5f31..2d87124 100644 --- a/src/updater.cpp +++ b/src/updater.cpp | |||
| @@ -172,26 +172,33 @@ void Updater::InstallUpdate(std::string url, std::string checksum, | |||
| 172 | return; | 172 | return; |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | package_path_.clear(); | 175 | bool download_issue = false; |
| 176 | package_path_.resize(L_tmpnam + 1); | ||
| 177 | tmpnam_s(package_path_.data(), L_tmpnam); | ||
| 178 | 176 | ||
| 179 | { | 177 | wxFileName package_path; |
| 180 | wxFileOutputStream writeOut(package_path_); | 178 | package_path.AssignTempFileName(""); |
| 179 | |||
| 180 | if (!package_path.IsOk()) { | ||
| 181 | download_issue = true; | ||
| 182 | } else { | ||
| 183 | wxFileOutputStream writeOut(package_path.GetPath()); | ||
| 181 | wxString fileData = packageRequest.GetResponse().AsString(); | 184 | wxString fileData = packageRequest.GetResponse().AsString(); |
| 182 | writeOut.WriteAll(fileData.c_str(), fileData.length()); | 185 | writeOut.WriteAll(fileData.c_str(), fileData.length()); |
| 183 | 186 | ||
| 184 | std::string downloadedChecksum = CalculateStringSha256(fileData); | 187 | std::string downloadedChecksum = CalculateStringSha256(fileData); |
| 185 | if (downloadedChecksum != checksum) { | 188 | if (downloadedChecksum != checksum) { |
| 186 | if (wxMessageBox("There was an issue downloading the update. Would you " | 189 | download_issue = true; |
| 187 | "like to manually download it instead?", | ||
| 188 | "Error", wxYES_NO | wxICON_ERROR) == wxID_YES) { | ||
| 189 | wxLaunchDefaultBrowser(kChangelogUrl); | ||
| 190 | } | ||
| 191 | return; | ||
| 192 | } | 190 | } |
| 193 | } | 191 | } |
| 194 | 192 | ||
| 193 | if (download_issue) { | ||
| 194 | if (wxMessageBox("There was an issue downloading the update. Would you " | ||
| 195 | "like to manually download it instead?", | ||
| 196 | "Error", wxYES_NO | wxICON_ERROR) == wxID_YES) { | ||
| 197 | wxLaunchDefaultBrowser(kChangelogUrl); | ||
| 198 | } | ||
| 199 | return; | ||
| 200 | } | ||
| 201 | |||
| 195 | std::filesystem::path newArea = GetExecutableDirectory(); | 202 | std::filesystem::path newArea = GetExecutableDirectory(); |
| 196 | std::filesystem::path oldArea = newArea / "old"; | 203 | std::filesystem::path oldArea = newArea / "old"; |
| 197 | std::set<std::filesystem::path> folders; | 204 | std::set<std::filesystem::path> folders; |
| @@ -241,7 +248,7 @@ void Updater::InstallUpdate(std::string url, std::string checksum, | |||
| 241 | } | 248 | } |
| 242 | } | 249 | } |
| 243 | 250 | ||
| 244 | wxFileInputStream fileInputStream(package_path_); | 251 | wxFileInputStream fileInputStream(package_path.GetPath()); |
| 245 | wxZipInputStream zipStream(fileInputStream); | 252 | wxZipInputStream zipStream(fileInputStream); |
| 246 | std::unique_ptr<wxZipEntry> zipEntry; | 253 | std::unique_ptr<wxZipEntry> zipEntry; |
| 247 | while ((zipEntry = std::unique_ptr<wxZipEntry>(zipStream.GetNextEntry())) != | 254 | while ((zipEntry = std::unique_ptr<wxZipEntry>(zipStream.GetNextEntry())) != |
| diff --git a/src/updater.h b/src/updater.h index 2d2f746..c604a49 100644 --- a/src/updater.h +++ b/src/updater.h | |||
| @@ -41,7 +41,6 @@ class Updater : public wxEvtHandler { | |||
| 41 | 41 | ||
| 42 | wxFrame* parent_; | 42 | wxFrame* parent_; |
| 43 | UpdateState update_state_ = UpdateState::GetVersionInvisible; | 43 | UpdateState update_state_ = UpdateState::GetVersionInvisible; |
| 44 | std::string package_path_; | ||
| 45 | }; | 44 | }; |
| 46 | 45 | ||
| 47 | #endif /* end of include guard: UPDATER_H_809E7381 */ | 46 | #endif /* end of include guard: UPDATER_H_809E7381 */ |
