/// <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); } }