Changeset 2055


Ignore:
Timestamp:
Nov 1, 2010, 5:59:55 PM (11 years ago)
Author:
sauer
Message:

Some changes to CrypUpdater:

  • Changed MainWindow appearance
  • Users will now have the opportunity to kill the CT2 process if it fails to shut down (timeout) before update
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypUpdater/App.xaml.cs

    r2032 r2055  
    4646                p = Process.GetProcessById(CryptoolProcessID);
    4747
    48                 if (p.WaitForExit(1000 * 20))
     48                if (p.WaitForExit(1000 * 30))
    4949                {
    5050                    UnpackZip(ZipFilePath, CryptoolFolderPath);
     
    5252                else
    5353                {
    54                     m.restartFailed = true;
    55                     m.textBlock1.Text = "Timeout: CT2 failed to shut down, click OK to close.";
    56                     m.button1.IsEnabled = true;
     54                    MessageBoxButton b = MessageBoxButton.OKCancel;
     55                    string caption = "Timeout error";
     56                    MessageBoxResult result;
     57                    result = MessageBox.Show("CrypTool 2.0 failed to shut down. Kill the process to proceed?", caption, b);
     58                    if (result == MessageBoxResult.OK)
     59                    {
     60                        try
     61                        {
     62                            p.Kill();
     63                            p.WaitForExit();
     64                            UnpackZip(ZipFilePath, CryptoolFolderPath);
     65                        }
     66                        catch (Exception)
     67                        {
     68                            UnpackZip(ZipFilePath, CryptoolFolderPath);
     69                        }
     70                    }
     71                    else
     72                    {
     73                        MessageBox.Show("Update failed. Cryptool 2.0 will be restarted.");
     74                        RestartCryptool();
     75                    }
     76                   
     77
    5778                }
    5879
     
    6283                if (CryptoolExePath != null)
    6384                {
    64                     m.textBlock1.Text = "Wrong parameters, click OK to restart CT2!";               
     85                    MessageBox.Show("Update failed. Cryptool 2.0 will be restarted.", "Error");
     86                    RestartCryptool();
    6587                }
    6688                else
    6789                {
    68                     m.restartFailed = true;
    69                     m.textBlock1.Text = "Wrong parameters, click OK to close.";
     90                    UpdateFailure();
    7091                }
    71                
    72                 m.button1.IsEnabled = true;
    7392            }
    7493            catch (FormatException) // no id was parsable
    7594            {
    76                 m.restartFailed = true;
    77                 m.textBlock1.Text = "Wrong parameters, click OK to close.";
    78                 m.button1.IsEnabled = true;
     95                UpdateFailure();
    7996            }
    8097            catch (ArgumentException) // the invoking process has already exited (no such process with this id exists)
     
    83100            }
    84101
     102        }
     103
     104        private static void UpdateFailure()
     105        {
     106            MessageBox.Show("Update failed, wrong parameters!", "Error");
     107            Application.Current.Shutdown();
     108        }
     109
     110        private static void RestartCryptool()
     111        {
     112            try
     113            {
     114                System.Diagnostics.Process.Start(CryptoolExePath);
     115                Application.Current.Shutdown();
     116            }
     117            catch (Exception)
     118            {
     119                MessageBoxButton bu = MessageBoxButton.OK;
     120                string caption2 = "Error";
     121                MessageBoxResult res = MessageBox.Show("CrypTool 2.0 could not be restarted! Try again later.", caption2, bu);
     122                if (res == MessageBoxResult.OK)
     123                {
     124                    Application.Current.Shutdown();
     125                }
     126            }
    85127        }
    86128
     
    97139                    int progress = 0;
    98140
    99                     m.textBlock1.Text = "Processing update...";
    100 
    101141                    foreach (ZipEntry e in zip)
    102142                    {
     
    107147                    }
    108148
    109                     m.textBlock1.Text = "Update successful, click OK to restart CT2!";
    110                     m.button1.IsEnabled = true;
     149                    RestartCryptool();
    111150
    112151                }
     
    114153            catch (Exception)
    115154            {
    116                 m.textBlock1.Text = "Update failed: File path not accessible, click OK to restart CT2!";
    117                 m.button1.IsEnabled = true;
     155                MessageBox.Show("Update failed. Cryptool 2.0 will be restarted.", "Error");
     156                RestartCryptool();
    118157            }
    119158
     
    128167        }
    129168
    130 
    131169    }
    132170}
  • trunk/CrypUpdater/MainWindow.xaml

    r2032 r2055  
    22        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    33        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4         Title="CrypUpdater" xmlns:my="clr-namespace:System;assembly=mscorlib" ResizeMode="NoResize" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="169" d:DesignWidth="425" SizeToContent="WidthAndHeight">
     4        Title="CrypUpdater" xmlns:my="clr-namespace:System;assembly=mscorlib" ResizeMode="NoResize" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="114" d:DesignWidth="425" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" DataContext="{Binding}" IsEnabled="True" Closing="Window_Closing">
    55    <Grid>
    6         <StackPanel Name="stackPanel1" Height="130" VerticalAlignment="Top">
    7             <TextBlock Height="16" Name="textBlock1" Text="Initializing..." Width="384" Margin="8" />
     6        <StackPanel Name="stackPanel1" Height="75" VerticalAlignment="Top">
     7            <TextBlock Height="16" Name="textBlock1" Text="Updating, CrypTool 2.0 will restart soon..." Width="384" Margin="8" />
    88            <ProgressBar Height="27" Name="progressBar1" Width="386" HorizontalContentAlignment="Center" Margin="8" />
    9             <Button Content="OK" Name="button1" Width="75" Visibility="Visible" Margin="20" IsEnabled="False" Click="button1_Click" />
    109        </StackPanel>
    1110    </Grid>
  • trunk/CrypUpdater/MainWindow.xaml.cs

    r2032 r2055  
    2121    {
    2222
    23         internal bool restartFailed = false;
    24 
    2523        public MainWindow()
    2624        {
     
    2826        }
    2927
    30         private void button1_Click(object sender, RoutedEventArgs e)
     28        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    3129        {
    32             button1.IsEnabled = false;
    33 
    34             if (!restartFailed)
    35             {
    36                 if (App.CryptoolExePath != null)
    37                 {
    38                     try
    39                     {
    40                         System.Diagnostics.Process.Start(App.CryptoolExePath);
    41                         Application.Current.Shutdown();
    42                     }
    43                     catch (Exception)
    44                     {
    45                         restartFailed = true;
    46                         textBlock1.Text = "Error occurred while restarting CT2! Try again later.";
    47                         button1.IsEnabled = true;
    48                     }
    49                 }
    50                
    51             }
    52             else
    53             {
    54                 Application.Current.Shutdown();
    55             }
    56 
     30            e.Cancel = false;
    5731        }
    5832
Note: See TracChangeset for help on using the changeset viewer.