private void ProcessFiles(ICollection <string> files) { if (files == null || files.Count < 1) { return; } var folders = new List <string>(); foreach (var file in files) { var fname = file; if (string.IsNullOrEmpty(fname)) { continue; } RewindDropLoop: if (Directory.Exists(fname)) { folders.Add(fname); continue; } if (!File.Exists(fname)) { try { fname = ProcessTools.SeparateArgsFromCommand(file).FileName; if (Directory.Exists(fname)) { folders.Add(fname); continue; } } catch (Exception ex) { Console.WriteLine(ex); } } if (fname.TrimEnd().EndsWith(".lnk", StringComparison.OrdinalIgnoreCase)) { try { var result = WindowsTools.ResolveShortcut(fname); if (result != null) { fname = result; goto RewindDropLoop; } } catch (Exception ex) { PremadeDialogs.GenericError(ex); } } else { try { var dirName = Path.GetDirectoryName(fname); folders.Add(dirName); } catch (Exception ex) { PremadeDialogs.GenericError(ex); } } } var distinctFolders = folders.Where(x => x != null) .Select(x => x.Normalize().ToLowerInvariant().Trim().Trim('\'', '"').Trim()) .Distinct(); var folderInfos = distinctFolders.Select(x => { try { return(new DirectoryInfo(x)); } catch (Exception ex) { Console.WriteLine(ex); return(null); } }).Where(x => x != null); var results = folderInfos.Where(x => !UninstallToolsGlobalConfig.IsSystemDirectory(x)).ToList(); DirectoriesSelected?.Invoke(this, new DirectoriesSelectedEventArgs(results)); }
protected virtual void OnDirectoriesSelected(DirectoriesSelectedEventArgs e) { DialogResult = DialogResult.OK; Close(); DirectoriesSelected?.Invoke(this, e); }