static int Uninstall() { logger.WriteLine(); logger.WriteLine($"Unregister... version {AssemblyInfo.Version}"); try { // unregister is more lenient than register... if any of these // actions don't succeed, we can still complete with SUCCESS var ok0 = new ShutdownOneNoteAction(logger, stepper).Uninstall() == CustomAction.SUCCESS; var ok1 = new ProtocolHandlerAction(logger, stepper).Uninstall() == CustomAction.SUCCESS; var ok2 = new TrustedProtocolAction(logger, stepper).Uninstall() == CustomAction.SUCCESS; var ok3 = new RegistryWowAction(logger, stepper).Uninstall() == CustomAction.SUCCESS; if (ok0 && ok1 && ok2 && ok3) { logger.WriteLine("completed successfully"); } else { logger.WriteLine("completed with warnings"); } return(CustomAction.SUCCESS); } catch (Exception exc) { logger.WriteLine("error unregistering"); logger.WriteLine(exc); return(CustomAction.FAILURE); } }
static void Main(string[] args) { // hide this console window // - This program needs to run as a console app so it blocks while the edge webview2 // - installer runs and completes. But we want to hide the window so the user can't // - close it while the installer is running, leaving it in a bad state. // - Can comment this out for debugging ShowWindow(Process.GetCurrentProcess().MainWindowHandle, 0); if (args.Length == 0 || string.IsNullOrEmpty(args[0])) { // nothing to do return; } logger = new Logger("OneMoreSetup"); stepper = new Stepper(); ReportContext(); int status; switch (args[0]) { case "--install": status = Install(); break; case "--uninstall": status = Uninstall(); break; // direct calls for testing... case "--install-activesetup": status = new ActiveSetupAction(logger, stepper).Install(); break; case "--install-edge": status = new EdgeWebViewAction(logger, stepper).Install(); break; case "--install-handler": status = new ProtocolHandlerAction(logger, stepper).Install(); break; case "--install-registrywow": status = new RegistryWowAction(logger, stepper).Install(); break; case "--install-shutdown": status = new ShutdownOneNoteAction(logger, stepper).Install(); break; case "--install-trusted": status = new TrustedProtocolAction(logger, stepper).Install(); break; case "--uninstall-edge": status = new EdgeWebViewAction(logger, stepper).Uninstall(); break; case "--uninstall-registrywow": status = new RegistryWowAction(logger, stepper).Uninstall(); break; case "--uninstall-shutdown": status = new ShutdownOneNoteAction(logger, stepper).Uninstall(); break; default: logger.WriteLine($"unrecognized command: {args[0]}"); status = CustomAction.FAILURE; break; } Environment.Exit(status); }