protected override async Task <bool> CheckAndUpdateIfNeededInner() { if (InstalledVersion == null) { return(false); } var installedVersion = File.Exists(GetPackageFilename(SettingsHolder.Locale.LocaleName)) ? InstalledVersion : @"0"; var data = await CmApiProvider.GetDataAsync($"locales/update/{SettingsHolder.Locale.LocaleName}/{installedVersion}"); if (data == null) { LatestError = ToolsStrings.BaseUpdater_CannotDownloadInformation; Logging.Warning("Cannot get locales/update"); return(false); } if (data.Length == 0) { return(false); } try { LocalePackageManifest manifest; using (var memory = new MemoryStream(data)) using (var updateZip = new ZipArchive(memory)) { manifest = LocalePackageManifest.FromArchive(updateZip); if (manifest == null) { throw new Exception("Manifest is missing"); } } var package = GetPackageFilename(manifest.Id); await FileUtils.WriteAllBytesAsync(package, data); Logging.Write("Locale updated"); InstalledVersion = manifest.Version; return(true); } catch (Exception e) { Logging.Warning("Cannot update locale: " + e); return(false); } }