Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }