/// <summary> /// Cria uma instância de setup a partir de um executável ou pasta /// </summary> /// <param name="executableFile"></param> /// <param name="setupData"></param> /// <param name="message"></param> /// <param name="files"></param> /// <returns></returns> public static bool Create(string executableFile, out SetupData setupData, out string message, string[] files = null) { if (files == null) { files = DefaultExtensions; } setupData = null; if (Directory.Exists(executableFile)) { var exes = Directory.GetFiles(executableFile, "*.exe"); switch (exes.Length) { case 0: message = "Não foram encontrados executáveis em " + executableFile; return(false); case 1: executableFile = exes[0]; break; default: bool found = false; foreach (var f in exes) { if (Path.GetFileNameWithoutExtension(f).Equals(Path.GetFileName(executableFile), StringComparison.InvariantCultureIgnoreCase)) { executableFile = f; found = true; break; } } if (found) { break; } message = "Foram encontrados mais de um executável em " + executableFile; return(false); } } if (!File.Exists(executableFile)) { message = "Executável inexistente em " + executableFile; return(false); } string path = Path.GetDirectoryName(executableFile); setupData = new SetupData { Executable = new SetupFile(executableFile), SetupFile = Path.Combine(Path.GetDirectoryName(executableFile), DefaultFileName) }; foreach (var f in files) { var f0 = Directory.GetFiles(path, f, SearchOption.AllDirectories); foreach (var f1 in f0) { if (!f1.Equals(executableFile, StringComparison.InvariantCultureIgnoreCase)) { setupData.Files.Add(new SetupFile(f1, path)); } } } message = "OK"; return(true); }