public static void ShowInstaller(Form Parent) { string param = null; if (WinVer.IsVistaOrGreater()) { TaskDialog dlg = new TaskDialog(); dlg.Icon = Properties.Resources.Installer.Handle; dlg.WindowTitle = "Install TMT & Menu98"; dlg.MainInstruction = "Install TMT & Menu98"; dlg.Content = "This tweak requires <a href=\"https://www.microsoft.com/en-us/download/details.aspx?id=49984\">VC2015 runtime</a> installed!"; dlg.ExpandedControlText = "Start up parameter:"; dlg.OnRadioButtonSelected += InstallTD_OnRadioButtonSelected; dlg.OnHyperLinkClicked += InstallTD_OnHyperLinkClicked; for (int id = 0; id <= MenuControl.OSList.Length; id++) { dlg.AddRadioButton(id, MenuControl.GetOSFromIndex(id)); } dlg.SelectedRadioButton = MenuControl.Os2ListIndex(WinVer.SystemVersion); param = MenuControl.GetInjectParamFromIndex(dlg.SelectedRadioButton); if (param == null) { dlg.ExpandedInformation = "No startup"; } else { dlg.ExpandedInformation = param; } dlg.ExpandFooterAreaByDefault = true; dlg.AddButton(100, "Install Now").ShowShield = true; dlg.CommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CLOSE_BUTTON; dlg.UseCommandLinks = true; dlg.EnableHyperLinks = true; int ret = dlg.ShowDialog(Parent.Handle); if (ret != 100) { return; } param = MenuControl.GetInjectParamFromIndex(dlg.SelectedRadioButton); } else { switch (MessageBox.Show(Parent, "Yes - Install and auto startup\nNo - Just install", "Install Menu98", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)) { case DialogResult.Yes: param = "!Button"; //Hard coding here break; case DialogResult.No: param = null; //Hard coding here break; default: return; } } try { InstallToSystem(WinVer.IsX64System()); if (param == null) { CreateRegConfig(param); } if (!System.IO.File.Exists(GetConfigPath())) { DeployDefaultConfigFile(); } } catch (UnauthorizedAccessException) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.UseShellExecute = true; startInfo.WorkingDirectory = Environment.CurrentDirectory; startInfo.FileName = Application.ExecutablePath; startInfo.Arguments = "INSTALL X" + (WinVer.IsX64System() ? "64" : "86") + " "; if (param == null) { startInfo.Arguments += "\"?\""; } else { startInfo.Arguments += "\"" + param + "\""; } startInfo.Verb = "runas"; try { System.Diagnostics.Process.Start(startInfo).WaitForExit(); } catch (System.ComponentModel.Win32Exception) { MessageBox.Show("This action requires administrative privilage!", "Fail to install", MessageBoxButtons.OK, MessageBoxIcon.Error); } } if (param != null) { MenuControl.Menu98_Inject(param); } }