Esempio n. 1
0
        public static async void UpdateAssets()
        {
            try
            {
                var package = await AssetUpdatesApi.GetLatestAssetPackage();

                if (package == null)
                {
                    logger.Info("No new asset package available.");
                    return;
                }

                var destinationFolder = await GetAssetUpdateFolder(package.AssetPackageInfo.version.ToString());

                using (var stream = await package.File.OpenStreamForReadAsync())
                {
                    var archive = new ZipArchive(stream);
                    await Task.Run(() => archive.ExtractToDirectory(destinationFolder.Path, overwriteFiles: true));
                }

                LocalConfiguration.LatestAppVersionOnAssetUpdate = PackageHelper.GetAppVersion();
                LocalConfiguration.LatestAssetUpdateVersion      = package.AssetPackageInfo.version;
                logger.Info($"Asset update version {package.AssetPackageInfo.version} downloaded and extracted.");

                // The zip file is no longer needed.
                await package.File.DeleteAsync();

                // Reload assetFolders on next asset load request.
                assetFolders = null;
            }
            catch (Exception ex)
            {
                logger.Warn("UpdateAssets failed: " + ex.ToString());
            }
        }
Esempio n. 2
0
        private static async Task LoadAssetFolders()
        {
            try
            {
                await loadAssetFoldersSemaphore.WaitAsync();

                if (assetFolders != null)
                {
                    return;
                }

                var parentFolder = await GetAssetUpdateParentFolder();

                var folders = await parentFolder.GetFoldersAsync();

                if (LocalConfiguration.LatestAppVersionOnAssetUpdate < PackageHelper.GetAppVersion())
                {
                    logger.Info($"LatestAppVersionOnAssetUpdate is {LocalConfiguration.LatestAppVersionOnAssetUpdate}, but current app version is {PackageHelper.GetAppVersion()}. Will delete all old asset updates.");

                    foreach (var folder in folders)
                    {
                        await folder.DeleteAsync(StorageDeleteOption.PermanentDelete);
                    }

                    LocalConfiguration.LatestAssetUpdateVersion = 0;
                    assetFolders = new List <StorageFolder>();
                }
                else
                {
                    assetFolders = folders.OrderByDescending(x =>
                    {
                        if (int.TryParse(x.DisplayName, out int result))
                        {
                            return(result);
                        }

                        return(0);
                    }).ToList();
                }

                var defaultFolder = await Windows.Application­Model.Package.Current.InstalledLocation.GetFolderAsync("InjectedAssets");

                assetFolders.Add(defaultFolder);

                logger.Info("Asset folders:\n" + string.Join('\n', assetFolders.Select(x => x.Path)));
                logger.Info("LatestAssetUpdateVersion: " + LocalConfiguration.LatestAssetUpdateVersion);
            }
            finally
            {
                loadAssetFoldersSemaphore.Release();
            }
        }