Example #1
0
        public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment)
        {
            if (string.IsNullOrEmpty(Message))
                throw new CommandException("Undefined error message.");

            throw new CommandException(Message);
        }
Example #2
0
 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);
 }
Example #3
0
        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));
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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);
        }
Example #9
0
 public abstract void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment);
Example #10
0
 public override void Execute(DirectoryInfo targetDirectory, PortableEnvironment portableEnvironment)
 {
     MessageBox.Show(Message);
 }
Example #11
0
 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.");
 }