private async Task<bool> LoadAndInstall() {
if (_isInstalling) return false;
_isInstalling = true;
try {
var data = await CmApiProvider.GetDataAsync("data/latest");
if (data == null) throw new InformativeException(ToolsStrings.AppUpdater_CannotLoad, ToolsStrings.Common_MakeSureInternetWorks);
string installedVersion = null;
await Task.Run(() => {
var location = FilesStorage.Instance.Combine(FilesStorage.DataDirName);
Directory.Delete(location, true);
using (var stream = new MemoryStream(data, false))
using (var archive = new ZipArchive(stream)) {
installedVersion = VersionFromData(archive.GetEntry(@"Manifest.json").Open().ReadAsStringAndDispose());
archive.ExtractToDirectory(location);
}
});
InstalledVersion = installedVersion;
Logging.Write("Data loaded: " + InstalledVersion);
return true;
} catch (Exception e) {
NonfatalError.Notify(ToolsStrings.ContentSyncronizer_CannotLoadContent, ToolsStrings.ContentSyncronizer_CannotLoadContent_Commentary, e);
} finally {
_isInstalling = false;
}
return false;
}