示例#1
0
        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.");
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                }
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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());
            }
        }
示例#6
0
        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);
        }