示例#1
0
        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);
            }
        }