// Install dependencies private void ButtonInstallRequirements_Click(object sender, EventArgs e) { bool osInstalled = Directory.Exists("C:\\Program Files\\Open-Shell\\"); bool sibInstalled = Directory.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\StartIsBack\\")); if (buttonInstallRequirements.Text == "Reconfigure OS+SiB") { ExtraFunctions.ReConfigureOS(osInstalled, osInstalled, sibInstalled); return; } ExtraFunctions.InstallDependencies(); //Make sure EVERYTHING is disabled before continuing ButtonDisable_Click(sender, e); CheckDependenciesAndSetControls(); }
//Install dependencies private void Button3_Click(object sender, EventArgs e) { //Win 8.1 doesn't require anything if (Environment.OSVersion.Version.Major < 10) { return; } //Check what's installed bool osInstalled = Directory.Exists("C:\\Program Files\\Open-Shell\\"); bool sibInstalled = Directory.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\StartIsBack\\")); if (button3.Text == "Reconfigure SCT+OS") { ExtraFunctions.ReConfigureOS(osInstalled, sibInstalled); return; } //Open-Shell installation if (!osInstalled && checkBox1.Checked) { //Open-Shell installation if (MessageBox.Show("To continue Open-Shell is required. Would you like Simple Classic Theme to install this for you?", "SimpleClassicTheme", MessageBoxButtons.YesNo) == DialogResult.Yes) { //Install Open-Shell File.WriteAllBytes("C:\\SCT\\openShellSetup.exe", Properties.Resources.openShellSetup); Process.Start("C:\\SCT\\openShellSetup.exe", "/qn").WaitForExit(); //Get user folder string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; if (Environment.OSVersion.Version.Major >= 6) { path = Directory.GetParent(path).ToString(); } //Prepare files for Open-Shell Directory.CreateDirectory(path + "\\AppData\\Local\\StartIsBack\\Orbs"); Properties.Resources.win7.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\win7.png"); Properties.Resources.win9x.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\win9x.png"); //Find out what start orb the user wants string orbname = MessageBox.Show("Do you want to use a Win95 style start orb (If not a Windows 7 style orb will be used)?", "Simple Classic Theme", MessageBoxButtons.YesNo) == DialogResult.Yes ? "win9x.png" : "win7.png"; //Setup Open-Shell registry File.WriteAllText(Path.Combine(Path.GetTempPath(), "\\ossettings.reg"), Properties.Resources.openShellSettings); Process.Start(Path.Combine(Path.GetTempPath(), "\\ossettings.reg")).WaitForExit(); Registry.SetValue("HKEY_CURRENT_USER\\SOFTWARE\\OpenShell\\StartMenu\\Settings", "StartButtonPath", @"%USERPROFILE%\AppData\Local\StartIsBack\Orbs\" + orbname); } else { MessageBox.Show("Using taskbar without OpenShell is not possible!", "Simple Classic Theme"); checkBox1.Checked = false; } } //StartIsBack installation if (!sibInstalled && checkBox1.Checked) { bool b = MessageBox.Show("To continue StartIsBack++ is required. Would you like Simple Classic Theme to install this for you?", "Simple Classic Theme", MessageBoxButtons.YesNo) == DialogResult.Yes; if (b) { //Get user folder string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; if (Environment.OSVersion.Version.Major >= 6) { path = Directory.GetParent(path).ToString(); } //Prepare files for StartIsBack Directory.CreateDirectory(path + "\\AppData\\Local\\StartIsBack\\Orbs"); Directory.CreateDirectory(path + "\\AppData\\Local\\StartIsBack\\Styles"); Properties.Resources.win7.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\win7.png"); Properties.Resources.win9x.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\win9x.png"); Properties.Resources.taskbar.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\taskbar.png"); Properties.Resources.null_classic3small.Save(path + "\\AppData\\Local\\StartIsBack\\Orbs\\null_classic3big.bmp"); File.WriteAllBytes(path + "\\AppData\\Local\\StartIsBack\\Styles\\Classic3.msstyles", Properties.Resources.classicStartIsBackTheme); //Setup StartIsBack registry string f = Properties.Resources.startIsBackSettings.Replace("C:\\\\Users\\\\{Username}", $"{path.Replace("\\", "\\\\")}"); File.WriteAllText("C:\\sib.reg", f); Process.Start(Path.Combine(Path.GetTempPath(), "\\sib.reg")).WaitForExit(); //Disable StartIsBack Registry.SetValue("HKEY_CURRENT_USER\\SOFTWARE\\StartIsBack", "Disabled", 1); using (WebClient c = new WebClient()) c.DownloadFile("https://s3.amazonaws.com/startisback/StartIsBackPlusPlus_setup.exe", Path.Combine(Path.GetTempPath(), "\\sib.exe")); //Install StartIsBack++ Process p = new Process() { StartInfo = { FileName = Path.Combine(Path.GetTempPath(), "\\sib.exe"), Arguments = "/silent" } }; p.Start(); p.WaitForExit(); p.Dispose(); File.Delete("C:\\ossettings.reg"); File.Delete("C:\\sib.reg"); File.Delete("C:\\sib.exe"); } else { MessageBox.Show("Using taskbar without StartIsBack++ is not possible!", "Simple Classic Theme"); checkBox1.Checked = false; } } //Make sure EVERYTHING is disabled before continuing Button2_Click(sender, e); //Inform the user and update controls MessageBox.Show("All requirements are installed! Enjoy!!!!"); CheckDependenciesAndSetControls(); }
public static bool InstallDependencies(bool commandLineOutput = false) { switch (Configuration.TaskbarType) { case TaskbarType.RetroBar: GithubDownloader download = new GithubDownloader(GithubDownloader.DownloadableGithubProject.RetroBar); download.ShowDialog(); break; case TaskbarType.SimpleClassicThemeTaskbar: if (!ExtraFunctions.IsDotNetRuntimeInstalled()) { if (commandLineOutput) { Console.WriteLine("Error: .NET 5.0 is not installed and is required for SCTT to be installed"); } else { MessageBox.Show(".NET 5.0 is not installed and is required for SCTT to be installed", "Error installing dependencies", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(false); } ClassicTaskbar.InstallSCTT(null, !commandLineOutput); if (commandLineOutput) { Console.WriteLine("Installed SCTT succesfully"); } break; case TaskbarType.StartIsBackOpenShell: ExtraFunctions.ReConfigureOS(true, true, true); if (commandLineOutput) { Console.WriteLine("Configured Open-Shell and StartIsBack++"); } int returnCode = InstallableUtility.OpenShell.Install(); if (returnCode != 0) { if (commandLineOutput) { Console.WriteLine("Error: Open-Shell installer returned error code {0}", returnCode); } else { MessageBox.Show($"Open-Shell installer returned error code {returnCode}", "Error installing dependencies", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(false); } if (commandLineOutput) { Console.WriteLine("Installed Open-Shell succesfully"); } returnCode = InstallableUtility.StartIsBackPlusPlus.Install(); if (returnCode != 0) { if (commandLineOutput) { Console.WriteLine("Error: StartIsBack++ installer returned error code {0}", returnCode); } else { MessageBox.Show($"StartIsBack++ installer returned error code {returnCode}", "Error installing dependencies", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(false); } if (commandLineOutput) { Console.WriteLine("Installed StartIsBack++ succesfully"); } break; case TaskbarType.ExplorerPatcher: MessageBox.Show("You have to install ExplorerPatcher through SCT's 'Patch Explorer' GUI.", "Error installing dependencies"); return(false); default: if (commandLineOutput) { Console.WriteLine("Warning: TaskbarType is not SCTT or OS+SiB. No dependencies will be installed."); } else { MessageBox.Show("Taskbar type is not SimpleClassicThemeTaskbar or Open-Shell with StartIsBack. No dependencies will be installed", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } break; } if (commandLineOutput) { Console.WriteLine("Dependencies installed succesfully"); } else { MessageBox.Show("Dependencies installed succesfully", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } return(true); }