public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { if (string.IsNullOrEmpty(Message)) throw new CommandException("Undefined error message."); throw new CommandException(Message); }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { // Decompress the file. SevenZipBase.SetLibraryPath(SevenZipLibPath); using (var extractor = new SevenZipExtractor(Path.Combine(targetDirectory.FullName, FileName))) extractor.ExtractArchive(targetDirectory.FullName); }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { var psi = new ProcessStartInfo(FileName, Arguments) { WorkingDirectory = targetDirectory.FullName, }; using (Process process = Process.Start(psi)) { process.WaitForExit(); if (FailOnError && process.ExitCode != 0) throw new CommandException(string.Format("External program {0} returned exit code {1}", FileName, process.ExitCode)); } }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { using (var webClient = new WebClient()) { _outputFilePath = Path.Combine(targetDirectory.FullName, DestinationFileName); try { webClient.DownloadFile(Url, _outputFilePath); } catch (WebException e) { throw new CommandException("Failed to download " + Url + Environment.NewLine + e.Message, e); } Func<Stream, bool> hashValid = GetHashValidatorFor(Hash); using (var stream = new FileStream(_outputFilePath, FileMode.Open)) if (!hashValid(stream)) throw new CommandException("The downloaded file hash doesn't match the expected hash. Please check your firewall and anti-virus rules and try again later."); } }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { var file = new FileInfo(Path.Combine(targetDirectory.FullName, FileName)); var toDirectory = new DirectoryInfo(Path.Combine(targetDirectory.FullName, ToDirectory)); if (!file.Exists) throw new FileNotFoundException("Couldn't file the file to extract.", FileName); var psi = new ProcessStartInfo(UniExtractExe.FullName, string.Format("\"{0}\" \"{1}\"", file.FullName, toDirectory.FullName)) { WorkingDirectory = targetDirectory.FullName, }; using (Process process = Process.Start(psi)) { process.WaitForExit(); if (process.ExitCode != 0) throw new CommandException(string.Format("7-Zip returned exit code {1}", process.ExitCode)); } }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { var fromDirectory = new DirectoryInfo(Path.Combine(targetDirectory.FullName, FromDirectory)); var toDirectory = new DirectoryInfo(Path.Combine(targetDirectory.FullName, ToDirectory)); if (fromDirectory == toDirectory) return; // Create the target directory. toDirectory.Create(); var possiblyEmptyDirectories = new HashSet<DirectoryInfo>(); var regex = new Regex(WildcardToRegex(IncludeFiles)); foreach (FileInfo file in fromDirectory.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativePath = file.FullName.Substring(fromDirectory.FullName.Length + 1); if (regex.IsMatch(relativePath)) { var destFile = new FileInfo(Path.Combine(toDirectory.FullName, relativePath)); if (destFile.Directory != null) destFile.Directory.Create(); file.MoveTo(destFile.FullName); DirectoryInfo directoryInfo = file.Directory; if (directoryInfo != null) possiblyEmptyDirectories.Add(directoryInfo); } } // Recursively delete emptied directories below the target directory. foreach (DirectoryInfo directoryInfo in possiblyEmptyDirectories) { DeleteIfEmpty(targetDirectory, directoryInfo); } }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { var possiblyEmptyDirectories = new HashSet<DirectoryInfo>(); var regex = new Regex(WildcardToRegex(IncludeFiles)); foreach (FileInfo file in targetDirectory.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativeFile = file.FullName.Substring(targetDirectory.FullName.Length + 1); if (regex.IsMatch(relativeFile)) { file.Delete(); DirectoryInfo directoryInfo = file.Directory; if (directoryInfo != null) possiblyEmptyDirectories.Add(directoryInfo); } } // Recursively delete emptied directories below the target directory. foreach (DirectoryInfo directoryInfo in possiblyEmptyDirectories) { DeleteIfEmpty(targetDirectory, directoryInfo); } }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { var shortcut = new Shortcut { FileName = Path.Combine(portableEnvironment.Shortcuts.StartMenuTargetDirectory, FileName), Target = Path.Combine(targetDirectory.FullName, Target), Arguments = Arguments, WorkingDirectory = string.IsNullOrWhiteSpace(WorkingDirectory) ? null : Path.Combine(targetDirectory.FullName, WorkingDirectory), IconPath = string.IsNullOrWhiteSpace(IconPath) ? null : Path.Combine(targetDirectory.FullName, IconPath), DisplayMode = DisplayMode, Description = Description, }; // Create the link file. portableEnvironment.Shortcuts.Add(shortcut); }
public abstract void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment);
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { MessageBox.Show(Message); }
public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment) { if (MessageBox.Show(Text, "EULA", MessageBoxButton.OKCancel) != MessageBoxResult.OK) throw new CommandException("EULA has been refused, installation is being aborted."); }