protected override async Task<bool> CheckAndUpdateIfNeededInner() {
if (InstalledVersion == null) return false;
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 = FilesStorage.Instance.GetFilename("Locales", manifest.Id + ".pak");
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;
}
}