Skip to content
28 changes: 28 additions & 0 deletions Maverick.PCF.Builder.Helper/Commands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,34 @@ public static string SetExecutionPolicyToUnrestricted()
return $"powershell \"& \"Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -force\"\"";
}

public static string SetExecutionPolicyBypassProcess()
{
return $"Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -force";
}

public static string SetExecutionPolicyBypassProcessWrapped()
{
return $"powershell \"& \"Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -force\"\"";
}

public static string SetCustomExecutionPolicy(string customPolicy)
{
if (string.IsNullOrEmpty(customPolicy))
{
return string.Empty;
}
return $"Set-ExecutionPolicy {customPolicy}";
}

public static string SetCustomExecutionPolicyWrapped(string customPolicy)
{
if (string.IsNullOrEmpty(customPolicy))
{
return SetExecutionPolicyToUnrestricted();
}
return $"powershell \"& \"Set-ExecutionPolicy {customPolicy}\"\"";
}

public static string ResetExecutionPolicy()
{
return $"powershell \"& \"Set-ExecutionPolicy -ExecutionPolicy Default -Scope CurrentUser -force\"\"";
Expand Down
38 changes: 30 additions & 8 deletions Maverick.PCF.Builder/Forms/SettingsForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Maverick.PCF.Builder/Forms/SettingsForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public SettingsForm(Settings localSettings)

txtSetWorkingFolder.Text = pluginSettings.WorkingDirectoryLocation;
txtMsBuildPath.Text = pluginSettings.MsBuildLocation;
txtCustomExecutionPolicy.Text = pluginSettings.CustomExecutionPolicy;
txtControlNamespace.Text = pluginSettings.ControlNamespace;
chkboxLoadNamespace.Checked = pluginSettings.AlwaysLoadNamespaceFromSettings;
txtPublisherName.Text = pluginSettings.PublisherName;
Expand All @@ -47,6 +48,7 @@ private void BtnSave_Click(object sender, EventArgs e)
{
pluginSettings.WorkingDirectoryLocation = txtSetWorkingFolder.Text;
pluginSettings.MsBuildLocation = txtMsBuildPath.Text;
pluginSettings.CustomExecutionPolicy = txtCustomExecutionPolicy.Text;

pluginSettings.ControlNamespace = txtControlNamespace.Text;
pluginSettings.AlwaysLoadNamespaceFromSettings = chkboxLoadNamespace.Checked;
Expand All @@ -70,6 +72,7 @@ private void BtnReset_Click(object sender, EventArgs e)
txtSetWorkingFolder.Text = string.Empty;
pluginSettings.WorkingDirectoryLocation = string.Empty;
pluginSettings.MsBuildLocation = string.Empty;
pluginSettings.CustomExecutionPolicy = string.Empty;

pluginSettings.ControlNamespace = string.Empty;
pluginSettings.AlwaysLoadNamespaceFromSettings = true;
Expand Down
9 changes: 7 additions & 2 deletions Maverick.PCF.Builder/PCFBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,12 @@ public enum AuthProfileAction

private void InitCommandLine()
{
consoleControl.StartProcess("cmd", $"/K powershell");
string customExecutionPolicyCommand = string.Empty;
if (!string.IsNullOrEmpty(pluginSettings.CustomExecutionPolicy))
{
customExecutionPolicyCommand = $" -Command \"{Commands.Cmd.SetCustomExecutionPolicy(pluginSettings.CustomExecutionPolicy)}\"";
}
consoleControl.StartProcess("cmd", $"/K powershell{customExecutionPolicyCommand}");
}

private void RunCommandLine(params string[] commands)
Expand Down Expand Up @@ -913,7 +918,7 @@ private string FindMsBuildPath()
}
else
{
string[] commands = new string[] { Commands.Cmd.SetExecutionPolicyToUnrestricted(), Commands.Cmd.FindMsBuild(), Commands.Cmd.ResetExecutionPolicy() };
string[] commands = new string[] { Commands.Cmd.SetCustomExecutionPolicyWrapped(pluginSettings.CustomExecutionPolicy), Commands.Cmd.FindMsBuild(), Commands.Cmd.ResetExecutionPolicy() };
var output = CommandLineHelper.RunCommand(commands);

if (!string.IsNullOrEmpty(output) && output.ToLower().Contains("msbuild.ps1"))
Expand Down
1 change: 1 addition & 0 deletions Maverick.PCF.Builder/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ public Settings()
public string PublisherName { get; set; }
public string PublisherPrefix { get; set; }
public bool AlwaysLoadPublisherDetailsFromSettings { get; set; }
public string CustomExecutionPolicy { get; set; }
}
}