public void UpdateAppCache() { Dictionary <string, UwpFunc.AppInfo> AppInfos = new Dictionary <string, UwpFunc.AppInfo>(); IEnumerable <Windows.ApplicationModel.Package> packages = (IEnumerable <Windows.ApplicationModel.Package>)packageManager.FindPackages(); foreach (var package in packages) { string appSID = AppPackageToSid(package.Id.FamilyName).ToLower(); UwpFunc.AppInfo info = GetInfo(package, appSID); if (info != null) { if (!AppInfos.ContainsKey(appSID)) { AppInfos.Add(appSID, info); } /* * UwpFunc.AppInfo old_info; * if (AppInfos.TryGetValue(appSID, out old_info)) * AppLog.Debug("Warning an app with the SID: {0} is already listed", appSID); */ } } AppInfosBySidLock.EnterWriteLock(); AppInfosBySid = AppInfos; AppInfosBySidLock.ExitWriteLock(); FullListFetched = true; }
public UwpFunc.AppInfo GetAppInfoByID(string appPackageID) { UwpFunc.AppInfo info = null; IEnumerable <Windows.ApplicationModel.Package> packages; try { packages = packageManager.FindPackages(appPackageID); } catch { return(null); } foreach (var package in packages) { info = GetInfo(package); if (info != null) { break; } } return(info); }
public UwpFunc.AppInfo GetAppInfoBySid(string sid) { UwpFunc.AppInfo info = null; AppInfosBySidLock.EnterReadLock(); AppInfosBySid.TryGetValue(sid, out info); AppInfosBySidLock.ExitReadLock(); if (info != null) { return(info); } string appPackageID = SidToAppPackage(sid); if (appPackageID == null || appPackageID.Length == 0) { return(null); } IEnumerable <Windows.ApplicationModel.Package> packages; try { packages = packageManager.FindPackages(appPackageID); } catch { return(null); } foreach (var package in packages) { info = GetInfo(package, sid); if (info != null) { AppInfosBySidLock.EnterWriteLock(); if (!AppInfosBySid.ContainsKey(sid)) { AppInfosBySid.Add(sid, info); } AppInfosBySidLock.ExitWriteLock(); break; } } return(info); }