From f43d176f95601ff7524e06247166d4f3b6e61c05 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 2 Jul 2021 10:18:08 -0500 Subject: Make the BA responsible for parsing restart prompt behavior. Fixes #4975 --- .../WixToolset.Mba.Core/BootstrapperCommand.cs | 33 +++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'src/api/burn/WixToolset.Mba.Core/BootstrapperCommand.cs') diff --git a/src/api/burn/WixToolset.Mba.Core/BootstrapperCommand.cs b/src/api/burn/WixToolset.Mba.Core/BootstrapperCommand.cs index 345e0448..88a9b9bb 100644 --- a/src/api/burn/WixToolset.Mba.Core/BootstrapperCommand.cs +++ b/src/api/burn/WixToolset.Mba.Core/BootstrapperCommand.cs @@ -17,7 +17,6 @@ namespace WixToolset.Mba.Core /// /// /// - /// /// /// /// @@ -30,7 +29,6 @@ namespace WixToolset.Mba.Core public BootstrapperCommand( LaunchAction action, Display display, - Restart restart, string commandLine, int cmdShow, ResumeType resume, @@ -43,7 +41,6 @@ namespace WixToolset.Mba.Core { this.Action = action; this.Display = display; - this.Restart = restart; this.CommandLine = commandLine; this.CmdShow = cmdShow; this.Resume = resume; @@ -61,9 +58,6 @@ namespace WixToolset.Mba.Core /// public Display Display { get; } - /// - public Restart Restart { get; } - /// public string CommandLine { get; } @@ -97,6 +91,7 @@ namespace WixToolset.Mba.Core var args = ParseCommandLineToArgs(this.CommandLine); var unknownArgs = new List(); var variables = new List>(); + var restart = Restart.Unknown; foreach (var arg in args) { @@ -104,7 +99,25 @@ namespace WixToolset.Mba.Core if (arg[0] == '-' || arg[0] == '/') { - unknownArg = true; + var parameter = arg.Substring(1).ToLowerInvariant(); + switch (parameter) + { + case "norestart": + if (restart == Restart.Unknown) + { + restart = Restart.Never; + } + break; + case "forcerestart": + if (restart == Restart.Unknown) + { + restart = Restart.Always; + } + break; + default: + unknownArg = true; + break; + } } else { @@ -127,8 +140,14 @@ namespace WixToolset.Mba.Core } } + if (restart == Restart.Unknown) + { + restart = this.Display < Display.Full ? Restart.Automatic : Restart.Prompt; + } + return new MbaCommand { + Restart = restart, UnknownCommandLineArgs = unknownArgs.ToArray(), Variables = variables.ToArray(), }; -- cgit v1.2.3-55-g6feb