static void Install(InstallInfo info) { RestartExplorer restartExplorer = new RestartExplorer(); //restartExplorer.ReportProgress += Console.WriteLine; //restartExplorer.ReportPercentage += (percentage) => //Console.WriteLine($"Percentage: {percentage}"); // Create directory if (!Directory.Exists(info.TargetPath)) { Console.Write("Creating target directory... "); Directory.CreateDirectory(info.TargetPath); Console.WriteLine("OK."); // First copy files to program files folder foreach (var item in info.FilesToCopy) { var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write(string.Format("Copying {0}... ", item)); File.Copy(item, targetFilePath, true); Console.WriteLine("OK."); } } else { //foreach (var item in info.FilesToRegister) //{ // var targetFilePath = System.IO.Path.Combine(info.TargetPath, item); // RegisterDLL(targetFilePath, false, true); // RegisterDLL(targetFilePath, true, true); // Console.WriteLine("OK."); //} restartExplorer.Execute(() => { // First copy files to program files folder foreach (var item in info.FilesToCopy) { var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write($"Copying {item}... "); File.Copy(item, targetFilePath, true); Console.WriteLine("OK."); } }); } // Register assemblies //RegistrationServices regAsm = new RegistrationServices(); foreach (var item in info.FilesToRegister) { var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write($"Registering {item}... "); RegisterDLL(targetFilePath, true, false); Console.WriteLine("OK."); } }
static bool RollBack(InstallInfo info) { // Unregister assembly //RegistrationServices regAsm = new RegistrationServices(); foreach (var item in info.FilesToRegister) { var targetFilePath = Path.Combine(info.TargetPath, item); RegisterDLL(targetFilePath, false, true); RegisterDLL(targetFilePath, true, true); } // Delete files RestartExplorer restartExplorer = new RestartExplorer(); restartExplorer.Execute(() => { // First copy files to program files folder foreach (var item in info.FilesToCopy) { var targetFilePath = Path.Combine(info.TargetPath, item); if (File.Exists(targetFilePath)) { Console.Write($"Deleting {item}... "); File.Delete(targetFilePath); Console.WriteLine("OK."); } } }); if (Directory.Exists(info.TargetPath)) { Console.Write("Deleting target directory... "); Directory.Delete(info.TargetPath); Console.WriteLine("OK."); } return(true); }
static void Install(InstallInfo info) { Console.WriteLine("Installing taskbar-monitor on your computer, please wait."); RestartExplorer restartExplorer = new RestartExplorer(); // Create directory if (!Directory.Exists(info.TargetPath)) { Console.Write("Creating target directory... "); Directory.CreateDirectory(info.TargetPath); Console.WriteLine("OK."); // First copy files to program files folder foreach (var file in info.FilesToCopy) { var item = file.Key; var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write(string.Format("Copying {0}... ", item)); File.WriteAllBytes(targetFilePath, file.Value); //File.Copy(item, targetFilePath, true); Console.WriteLine("OK."); } // copy the uninstaller too File.Copy("TaskbarMonitorInstaller.exe", Path.Combine(info.TargetPath, "TaskbarMonitorInstaller.exe")); } else { restartExplorer.Execute(() => { // First copy files to program files folder foreach (var file in info.FilesToCopy) { var item = file.Key; var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write($"Copying {item}... "); File.WriteAllBytes(targetFilePath, file.Value); //File.Copy(item, targetFilePath, true); Console.WriteLine("OK."); } // copy the uninstaller too File.Copy("TaskbarMonitorInstaller.exe", Path.Combine(info.TargetPath, "TaskbarMonitorInstaller.exe"), true); }); } // Register assemblies //RegistrationServices regAsm = new RegistrationServices(); foreach (var item in info.FilesToRegister) { var targetFilePath = Path.Combine(info.TargetPath, item); Console.Write($"Registering {item}... "); RegisterDLL(targetFilePath, true, false); Console.WriteLine("OK."); } Console.Write("Registering uninstaller... "); CreateUninstaller(Path.Combine(info.TargetPath, "TaskbarMonitorInstaller.exe")); Console.WriteLine("OK."); // remove pending delete operations { Console.Write("Cleaning up previous pending uninstalls... "); if (CleanUpPendingDeleteOperations(info.TargetPath, out string errorMessage)) { Console.WriteLine("OK."); } else { Console.WriteLine("ERROR: " + errorMessage); } } }
static bool RollBack(InstallInfo info) { // Unregister assembly //RegistrationServices regAsm = new RegistrationServices(); foreach (var item in info.FilesToRegister) { var targetFilePath = Path.Combine(info.TargetPath, item); RegisterDLL(targetFilePath, false, true); RegisterDLL(targetFilePath, true, true); } // Delete files RestartExplorer restartExplorer = new RestartExplorer(); restartExplorer.Execute(() => { // First copy files to program files folder foreach (var file in info.FilesToCopy) { var item = file.Key; var targetFilePath = Path.Combine(info.TargetPath, item); if (File.Exists(targetFilePath)) { Console.Write($"Deleting {item}... "); File.Delete(targetFilePath); Console.WriteLine("OK."); } } }); { var item = "TaskbarMonitorInstaller.exe"; Console.Write($"Deleting {item}... "); try { if (Win32Api.DeleteFile(Path.Combine(info.TargetPath, item))) { Console.WriteLine("OK."); } else { Win32Api.MoveFileEx(Path.Combine(info.TargetPath, item), null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } } catch { Win32Api.MoveFileEx(Path.Combine(info.TargetPath, item), null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } } if (Directory.Exists(info.TargetPath)) { Console.Write("Deleting target directory... "); try { Directory.Delete(info.TargetPath); Console.WriteLine("OK."); } catch { Win32Api.MoveFileEx(info.TargetPath, null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } } Console.Write("Removing uninstall info from registry... "); DeleteUninstaller(); Console.WriteLine("OK."); return(true); }
static void Install(InstallInfo info) { Console.WriteLine($"Installing HA Climate Deskband {Version} on your computer, please wait."); RestartExplorer restartExplorer = new RestartExplorer(); try { // Create directory if (!Directory.Exists(info.TargetPath)) { Console.Write("Creating target directory.. "); Directory.CreateDirectory(info.TargetPath); Console.WriteLine("OK."); CopyFiles(info); // Copy the uninstaller too File.Copy(Assembly.GetExecutingAssembly().Location, Path.Combine(info.TargetPath, InstallerExecutableName), true); } else { restartExplorer.Execute(() => { CopyFiles(info); // Copy the uninstaller too File.Copy(Assembly.GetExecutingAssembly().Location, Path.Combine(info.TargetPath, InstallerExecutableName), true); }); } // Register assemblies foreach (string filename in info.FilesToRegister) { string targetFilePath = Path.Combine(info.TargetPath, filename); Console.Write($"Registering {filename}.. "); RegisterDLL(targetFilePath, true, false); Console.WriteLine("OK."); } Console.Write("Registering uninstaller.. "); FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(info.TargetPath, DllName)); CreateUninstaller(Path.Combine(info.TargetPath, InstallerExecutableName), Version.Parse(fileVersionInfo.FileVersion)); Console.WriteLine("OK."); // Remove pending delete operations Console.Write("Cleaning up previous pending uninstalls.. "); if (CleanUpPendingDeleteOperations(info.TargetPath, out string errorMessage)) { Console.WriteLine("OK."); } else { Console.WriteLine($"ERROR: {errorMessage}"); } } catch (Exception ex) { Console.WriteLine("Error while installing.."); Console.WriteLine(ex.ToString()); } }
static bool RollBack(InstallInfo info) { // Unregister assembly foreach (string item in info.FilesToRegister) { string targetFilePath = Path.Combine(info.TargetPath, item); RegisterDLL(targetFilePath, false, true); RegisterDLL(targetFilePath, true, true); } // Delete files RestartExplorer restartExplorer = new RestartExplorer(); restartExplorer.Execute(() => { // Remove files foreach (string filename in info.FilesToCopy) { string targetFilePath = Path.Combine(info.TargetPath, filename); if (File.Exists(targetFilePath)) { Console.Write($"Deleting {filename}.. "); File.Delete(targetFilePath); Console.WriteLine("OK."); } } }); Console.Write($"Deleting {InstallerExecutableName}.. "); try { if (Win32Api.DeleteFile(Path.Combine(info.TargetPath, InstallerExecutableName))) { Console.WriteLine("OK."); } else { Win32Api.MoveFileEx(Path.Combine(info.TargetPath, InstallerExecutableName), null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } } catch { Win32Api.MoveFileEx(Path.Combine(info.TargetPath, InstallerExecutableName), null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } if (Directory.Exists(info.TargetPath)) { Console.Write("Deleting target directory.. "); try { Directory.Delete(info.TargetPath); Console.WriteLine("OK."); } catch { Win32Api.MoveFileEx(info.TargetPath, null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); Console.WriteLine("Scheduled for deletion after next reboot."); } } Console.Write("Removing uninstall info from registry.. "); DeleteUninstaller(); Console.WriteLine("OK."); return(true); }