Example #1
0
        internal static void InstallFilesRoutine(UpdateWindow ui, Dictionary <string, object> args)
        {
            ui.CurrentProgress       = ui.MaxProgress;
            ui.OveralCurrentProgress = ui.OveralMaxProgress;
            ui.Status  = MultiLanguage.Text.UpdateStatusInstallingFiles;
            ui.Details = MultiLanguage.Text.UpdateDetailsInstallingFiles;

            foreach (
                var file in
                Directory.GetFiles(Settings.Instance.Directories.SystemDirectory, "*.dll",
                                   SearchOption.AllDirectories)
                .Where(
                    file =>
                    !Md5Hash.Compare(Md5Hash.ComputeFromFile(file),
                                     Md5Hash.ComputeFromFile(
                                         Path.Combine(Settings.Instance.Directories.LibrariesDirectory,
                                                      Path.GetFileName(file))))))
            {
                try
                {
                    FileHelper.CopyFile(file, Settings.Instance.Directories.LibrariesDirectory);
                }
                catch (Exception)
                {
                    MessageBox.Show(
                        string.Format(MultiLanguage.Text.ErrorUpdateFailedToCopyFile, Path.GetFileName(file)),
                        MultiLanguage.Text.UpdateStatusInstallingFiles, MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }

            foreach (var file in Directory.GetFiles(Environment.CurrentDirectory, "*.old", SearchOption.AllDirectories))
            {
                try
                {
                    File.Delete(file);
                }
                catch (Exception)
                {
                    // ignored
                }
            }

            if (args.ContainsKey("restartRequired") && (bool)args["restartRequired"])
            {
                EnvironmentHelper.Restart(true);
            }

            PathRandomizer.Randomize();
        }