private async Task<AppData> LoadModernAndLegacyAppData(Windows.ApplicationModel.Package item, StorageFolder saveLogoLocation) { AppData data = new AppData(); try { data.FamilyName = item.Id.FamilyName; if (familyNameAppData.ContainsKey(data.FamilyName)) { familyNameAppData[data.FamilyName].PackageId = item.Id.FullName; //Refresh package id. data.PackageId = ""; return data; } IReadOnlyList<Windows.ApplicationModel.Core.AppListEntry> x = await item.GetAppListEntriesAsync(); if ((x == null) || (x.Count == 0)) return null; data.DisplayName = (x.First().DisplayInfo.DisplayName); data.PackageId = item.Id.FullName; data.PackageRootFolder = item.InstalledLocation.Path; data.IsLegacyApp = data.PackageRootFolder[data.PackageRootFolder.Length - 1] == '}'; data.PackageDataFolder = await GetDataFolder(data); if ((await saveLogoLocation.TryGetItemAsync(data.FamilyName + ".png")) == null) { WriteableBitmap bmp = null; try { var stream = await x.First().DisplayInfo.GetLogo(new Size(50, 50)).OpenReadAsync(); BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream); bmp = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bmp.SetSource(stream); await bmp.SaveAsync(saveLogoLocation, data.FamilyName + ".png"); } catch { } } data.LogoPath = System.IO.Path.Combine(saveLogoLocation.Path, data.FamilyName + ".png"); try { if (data.IsLegacyApp) data.Publisher = await TryGetPublisherName_Legacy(item); else data.Publisher = await TryGetPublisherName_Modern(item); } catch { } return data; } catch { } return null; }
private async Task <AppData> LoadModernAndLegacyAppData(Windows.ApplicationModel.Package item, StorageFolder saveLogoLocation) { AppData data = new AppData(); try { data.FamilyName = item.Id.FamilyName; if (familyNameAppData.ContainsKey(data.FamilyName)) { familyNameAppData[data.FamilyName].PackageId = item.Id.FullName; //Refresh package id. data.PackageId = ""; return(data); } // // Сводка: // Перечисляет упакованные приложения на устройстве. Возвращаются только упакованные // приложения, зарегистрированные для текущего пользователя. // // Возврат: // Список упакованных приложений вместе с их отображаемым именем, описанием и логотипом. IReadOnlyList <Windows.ApplicationModel.Core.AppListEntry> x = await item.GetAppListEntriesAsync(); if ((x == null) || (x.Count == 0)) { return(null); } data.DisplayName = (x.First().DisplayInfo.DisplayName); data.PackageId = item.Id.FullName; data.PackageRootFolder = item.InstalledLocation.Path; data.IsLegacyApp = data.PackageRootFolder[data.PackageRootFolder.Length - 1] == '}'; data.PackageDataFolder = await GetDataFolder(data); if ((await saveLogoLocation.TryGetItemAsync(data.FamilyName + ".png")) == null) { WriteableBitmap bmp = null; try { var stream = await x.First().DisplayInfo.GetLogo(new Size(50, 50)).OpenReadAsync(); BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream); bmp = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight); bmp.SetSource(stream); //await bmp.SaveAsync(saveLogoLocation, data.FamilyName + ".png"); } catch { } } data.LogoPath = System.IO.Path.Combine(saveLogoLocation.Path, data.FamilyName + ".png"); try { if (data.IsLegacyApp) { data.Publisher = await TryGetPublisherName_Legacy(item); } else { data.Publisher = await TryGetPublisherName_Modern(item); } } catch { } return(data); } catch { } return(null); }