示例#1
0
        /// <summary>
        /// Считывает информацию о файле и его сертификате
        /// </summary>
        /// <param name="fPath">Путь до файла</param>
        /// <returns>Структура информации о пакете</returns>
        public PackageInfo ReadFile(string fPath)
        {
            Environment.Log(string.Format("Читаем файл \"{0}\"...", fPath));
            if (!File.Exists(fPath))
            {
                Environment.Log("Файл не существует");
                return(null);
            }

            //Ищем пакет в коллекции
            PackageInfo pInfoStored = _Packages.FirstOrDefault(p => p.Path == fPath);

            if (pInfoStored == null)
            {
                PackageInfo pInfo = new PackageInfo();
                pInfo.Path = fPath;
                pInfo.Name = Path.GetFileName(fPath);
                pInfo.Cert = CertReader.ReadZip(fPath);
                pInfo.Icon = IconHelper.GetApkIcon(fPath);

                if (pInfo.Icon == null)
                {
                    if (Path.GetExtension(fPath) == ".apk")
                    {
                        pInfo.Icon = ApkIcon;
                        pInfo.Type = PackageInfo.FileType.APK;
                    }
                    else if (Path.GetExtension(fPath) == ".jar")
                    {
                        pInfo.Icon = JarIcon;
                        pInfo.Type = PackageInfo.FileType.JAR;
                    }
                }

                if (Dispatcher != null && !Dispatcher.CheckAccess())
                {
                    Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new PackageInfoDelegate((_pInfo) =>
                    {
                        if (_pInfo.Type == PackageInfo.FileType.APK)
                        {
                            _ApkPackages.Add(_pInfo);
                        }
                        else if (_pInfo.Type == PackageInfo.FileType.JAR)
                        {
                            _JarPackages.Add(_pInfo);
                        }
                        _Packages.Add(_pInfo);
                        OnPackagesChanged();
                    }), pInfo);
                }
                else
                {
                    if (pInfo.Type == PackageInfo.FileType.APK)
                    {
                        _ApkPackages.Add(pInfo);
                    }
                    else if (pInfo.Type == PackageInfo.FileType.JAR)
                    {
                        _JarPackages.Add(pInfo);
                    }
                    _Packages.Add(pInfo);
                    OnPackagesChanged();
                }

                return(pInfo);
            }
            else
            {
                return(pInfoStored);
            }
        }