Exemplo n.º 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;
    }
Exemplo n.º 2
0
 public UwpFunc.AppInfo GetAppPkgBySid(string SID)
 {
     UwpFunc.AppInfo AppContainer = null;
     if (AppPackages.Count == 0 || (!AppPackages.TryGetValue(SID, out AppContainer) && (DateTime.Now - LastAppReload).TotalMilliseconds > 250))
     {
         AppPackages = App.client.GetAllAppPkgs(true);
         AppPackages.TryGetValue(SID, out AppContainer);
     }
     return(AppContainer);
 }
Exemplo n.º 3
0
        public UwpFunc.AppInfo GetAppPkgBySid(string SID)
        {
            if (UwpFunc.IsWindows7OrLower || SID == null)
            {
                return(null);
            }

            UwpFunc.AppInfo AppContainer = null;
            if (AppPackages.Count == 0 || (!AppPackages.TryGetValue(SID, out AppContainer) && (DateTime.Now - LastAppReload).TotalMilliseconds > 250))
            {
                LoadAppPkgs();
                AppPackages.TryGetValue(SID, out AppContainer);
            }
            return(AppContainer);
        }
Exemplo n.º 4
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);
    }
Exemplo n.º 5
0
        public bool LoadAppPkgs(bool bWithPackageDetails = false)
        {
            AppPackages.Clear();
            LastAppReload = DateTime.Now;

            if (UwpFunc.IsWindows7OrLower)
            {
                return(false);
            }

            var watch = System.Diagnostics.Stopwatch.StartNew();

            var AppContainers = GetAppContainers();

            foreach (var AppContainer in AppContainers)
            {
                string SID = AppContainer.appContainerSid.ToString();
                if (AppPackages.ContainsKey(SID))
                {
                    continue;
                }

                UwpFunc.AppInfo AppInfo = new UwpFunc.AppInfo();
                AppInfo.ID   = AppContainer.appContainerName;
                AppInfo.SID  = SID;
                AppInfo.Name = AppContainer.displayName;

                if (bWithPackageDetails)
                {
                    var AppInfo2 = App.engine?.PkgMgr?.GetAppInfoByID(AppInfo.ID);
                    AppInfo.Logo = AppInfo2?.Logo;
                }

                AppPackages.Add(SID, AppInfo);
            }

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            AppLog.Debug("LoadAppPkgs took: " + elapsedMs + "ms");

            return(true);
        }
Exemplo n.º 6
0
 protected byte[] PutAppInfo(UwpFunc.AppInfo info)
 {
     return(PutXmlObj(info));
 }