AcManager.Tools.Miscellaneous.AppUpdater.LoadAndPrepare C# (CSharp) Метод

LoadAndPrepare() приватный Метод

private LoadAndPrepare ( ) : Task
Результат Task
        private async Task<bool> LoadAndPrepare() {
#if !FORCE_UPDATE || !DEBUG
            if (!MainExecutingFile.IsPacked) {
                NonfatalError.Notify(ToolsStrings.AppUpdater_CannotUpdateApp, ToolsStrings.AppUpdater_UnpackedVersionMessage);
                LatestError = ToolsStrings.AppUpdater_UnpackedVersionMessage;
                return false;
            }
#endif

            if (_isPreparing) return false;
            _isPreparing = true;
            UpdateIsReady = null;

            try {
                var data = await CmApiProvider.GetDataAsync($"app/get/{Branch}");
                if (data == null) throw new InformativeException(ToolsStrings.AppUpdater_CannotLoad, ToolsStrings.Common_MakeSureInternetWorks);

                string preparedVersion = null;
                await Task.Run(() => {
                    if (File.Exists(UpdateLocation)) {
                        File.Delete(UpdateLocation);
                    }

                    using (var stream = new MemoryStream(data, false))
                    using (var archive = new ZipArchive(stream)) {
                        preparedVersion = VersionFromData(archive.GetEntry(@"Manifest.json").Open().ReadAsStringAndDispose());

                        archive.GetEntry(@"Content Manager.exe").ExtractToFile(UpdateLocation);
                        Logging.Write($"New version {preparedVersion} was extracted to “{UpdateLocation}”");
                    }
                });

                UpdateIsReady = preparedVersion;
                return true;
            } catch (UnauthorizedAccessException) {
                NonfatalError.Notify(ToolsStrings.AppUpdater_AccessIsDenied,
                        ToolsStrings.AppUpdater_AccessIsDenied_Commentary);
                LatestError = ToolsStrings.AppUpdater_AccessIsDenied_Short;
            } catch (Exception e) {
                NonfatalError.Notify(ToolsStrings.AppUpdater_CannotLoad,
                        ToolsStrings.AppUpdater_CannotLoad_Commentary, e);
                LatestError = ToolsStrings.AppUpdater_CannotLoadShort;
            } finally {
                _isPreparing = false;
            }

            return false;
        }