From 574d128cb664bc600ad7df92506d93cafc47dba6 Mon Sep 17 00:00:00 2001 From: Elizabeth Cray Date: Wed, 12 Jul 2023 11:21:53 -0400 Subject: [PATCH] Dependency checking --- Installer/Dexif_Installer/Helper.cs | 29 ++++++++++ Installer/Dexif_Installer/MainWindow.xaml | 2 + Installer/Dexif_Installer/MainWindow.xaml.cs | 60 ++++++++++++++++---- 3 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 Installer/Dexif_Installer/Helper.cs diff --git a/Installer/Dexif_Installer/Helper.cs b/Installer/Dexif_Installer/Helper.cs new file mode 100644 index 0000000..766d38a --- /dev/null +++ b/Installer/Dexif_Installer/Helper.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dexif_Installer { + class Helper { + // https://stackoverflow.com/a/3856090/4708786 + public static bool ExistsOnPath(string fileName) { + return GetFullPath(fileName) != null; + } + + public static string GetFullPath(string fileName) { + if (File.Exists(fileName)) { + return Path.GetFullPath(fileName); + } + var values = Environment.GetEnvironmentVariable("PATH"); + foreach (var path in values.Split(Path.PathSeparator)) { + var fullPath = Path.Combine(path, fileName); + if (File.Exists(fullPath)) { + return fullPath; + } + } + return null; + } + } +} diff --git a/Installer/Dexif_Installer/MainWindow.xaml b/Installer/Dexif_Installer/MainWindow.xaml index f29420b..2b0e1a4 100644 --- a/Installer/Dexif_Installer/MainWindow.xaml +++ b/Installer/Dexif_Installer/MainWindow.xaml @@ -6,6 +6,8 @@ xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:local="clr-namespace:Dexif_Installer" mc:Ignorable="d" + WindowStartupLocation="CenterScreen" + Loaded="WindowLoaded" Title="DEXIF Installer" Height="300" Width="510" > diff --git a/Installer/Dexif_Installer/MainWindow.xaml.cs b/Installer/Dexif_Installer/MainWindow.xaml.cs index 7130ed9..019987d 100644 --- a/Installer/Dexif_Installer/MainWindow.xaml.cs +++ b/Installer/Dexif_Installer/MainWindow.xaml.cs @@ -21,6 +21,7 @@ using System.Windows.Shapes; * - Install Exec * - Install Reg Keys * - Add to "Installed Programs" + * - Add uninstall functionality * * (Very Very Future TODO) * - Recursion Support for Directories @@ -28,16 +29,53 @@ using System.Windows.Shapes; * - Configurable Suffix / Etc. Opts */ -namespace Dexif_Installer -{ - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow : Window - { - public MainWindow() - { - InitializeComponent(); - } +namespace Dexif_Installer { + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window { + public MainWindow() { + InitializeComponent(); } + + public void WindowLoaded(object sender, RoutedEventArgs e) { + EnsureChocolatey(); + EnsureExiftool(); + } + + private void EnsureChocolatey() { + String ChocolateyExecutable = "choco.exe"; + String DefaultInstallPath = "C:\\ProgramData\\chocolatey\\bin\\"; + if (Helper.ExistsOnPath(DefaultInstallPath + ChocolateyExecutable)) { + Status_Chocolatey.Icon = FontAwesome.WPF.FontAwesomeIcon.CheckCircleOutline; + Locate_Chocolatey.Content = "Change"; + Status_Chocolatey.ToolTip = DefaultInstallPath + ChocolateyExecutable; + } else if (Helper.ExistsOnPath(ChocolateyExecutable)) { + Status_Chocolatey.Icon = FontAwesome.WPF.FontAwesomeIcon.CheckCircleOutline; + Locate_Chocolatey.Content = "Change"; + Status_Chocolatey.ToolTip = Helper.GetFullPath(ChocolateyExecutable); + } else { + Status_Chocolatey.Icon = FontAwesome.WPF.FontAwesomeIcon.TimesCircleOutline; + Status_Chocolatey.ToolTip = "Chocolatey not found."; + } + return; + } + private void EnsureExiftool() { + String ExiftoolExecutable = "exiftool.exe"; + String DefaultInstallPath = " C:\\ProgramData\\chocolatey\\bin\\"; + if (Helper.ExistsOnPath(DefaultInstallPath + ExiftoolExecutable)) { + Status_Exiftool.Icon = FontAwesome.WPF.FontAwesomeIcon.CheckCircleOutline; + Locate_Exiftool.Content = "Change"; + Status_Exiftool.ToolTip = DefaultInstallPath + ExiftoolExecutable; + } else if (Helper.ExistsOnPath(ExiftoolExecutable)) { + Status_Exiftool.Icon = FontAwesome.WPF.FontAwesomeIcon.CheckCircleOutline; + Locate_Exiftool.Content = "Change"; + Status_Exiftool.ToolTip = Helper.GetFullPath(ExiftoolExecutable); + } else { + Status_Exiftool.Icon = FontAwesome.WPF.FontAwesomeIcon.TimesCircleOutline; + Status_Exiftool.ToolTip = "Exiftool not found."; + } + return; + } + } }