using System.Diagnostics; using System.Reflection; using Excel = Microsoft.Office.Interop.Excel; namespace Installer { public partial class FRMInstaller : Form { private string googleDriveFolderPath = string.Empty; private string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); private string serverExecutableFileName = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\HR-Exporter\HRServer.exe"; public FRMInstaller() { InitializeComponent(); } private void btn_next_Click(object sender, EventArgs e) { if (!checkBox_GoogleDrive.Checked && !checkBox_MicrosoftExcel.Checked && tablessTabControl.SelectedTab.Text == "tabPage_Selection") { MessageBox.Show("Please select at least one option."); return; } this.tablessTabControl.SelectedIndex++; } private void tablessTabControl_SelectedIndexChanged(object sender, EventArgs e) { if (this.tablessTabControl.SelectedTab.Text == "tabPage_Finish") { if (checkBox_GoogleDrive.Checked) { File.WriteAllText("GoogleDrive.dat", googleDriveFolderPath); } if (checkBox_MicrosoftExcel.Checked) { var filePath = "HorseCollection.xlsm"; try { // Mit "Streams" den Zone.Identifier löschen Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = $"/c echo. > \"{filePath}:Zone.Identifier\""; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.Start(); process.WaitForExit(); Console.WriteLine("Dateiblock wurde erfolgreich entfernt."); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); return; } } CopyDirectory(AppDomain.CurrentDomain.BaseDirectory + @"\Server", appDataPath + @"\HR-Exporter", true); // Create the service string serviceName = "HRServer"; ExecuteCommand($"create \"{serviceName}\" binPath= \"{serverExecutableFileName}\" start= auto"); ExecuteCommand($"start \"{serviceName}\""); Console.WriteLine($"The service \"{serviceName}\" was created successfully and started."); } } static void ExecuteCommand(string arguments) { var process = Process.Start(new ProcessStartInfo { FileName = "sc", Arguments = arguments, RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true }); process.WaitForExit(); if (process.ExitCode != 0 && process.ExitCode != 1073) { throw new Exception(process.StandardError.ReadToEnd()); } } public void CopyDirectory(string sourceDir, string destinationDir, bool recursive) { // Get information about the source directory var dir = new DirectoryInfo(sourceDir); // Check if the source directory exists if (!dir.Exists) { MessageBox.Show("There was an issue running the installer. Please make sure that you're running the installer from within the root directory."); Environment.Exit(-1); return; } // Create the destination directory if it doesn't exist Directory.CreateDirectory(destinationDir); // Copy all the files foreach (FileInfo file in dir.GetFiles()) { string targetFilePath = Path.Combine(destinationDir, file.Name); file.CopyTo(targetFilePath, overwrite: true); } // If recursive, copy subdirectories if (recursive) { foreach (DirectoryInfo subDir in dir.GetDirectories()) { string newDestinationDir = Path.Combine(destinationDir, subDir.Name); CopyDirectory(subDir.FullName, newDestinationDir, recursive); } } } private void checkBox_GoogleDrive_checked(object sender, EventArgs e) { if (checkBox_GoogleDrive.Checked) { FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.Description = "Select the folder where the Google Drive file is going to be located at."; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { googleDriveFolderPath = folderBrowserDialog.SelectedPath; lbl_GoogleDrivePath.Text = googleDriveFolderPath; lbl_GoogleDrivePath.Visible = true; } else { checkBox_GoogleDrive.Checked = false; } } else { googleDriveFolderPath = string.Empty; lbl_GoogleDrivePath.Visible = false; lbl_GoogleDrivePath.Text = string.Empty; } } private void btnDone_Click(object sender, EventArgs e) { Application.Exit(); } } }