Refactor the installation loop architecture
This commit is contained in:
parent
73c0648611
commit
467ad0caab
|
@ -29,32 +29,38 @@ function Start-InstallationLoop {
|
|||
. "$PSScriptRoot/../Scripts/SetupConfig.ps1";
|
||||
|
||||
while (-not (Get-IsFinished)) {
|
||||
switch (Get-Stage) {
|
||||
$null {
|
||||
if (-not ((Get-Command "choco") -and (Get-Command "refreshenv"))) {
|
||||
Invoke-Hook "Install-Chocolatey" -Fallback {
|
||||
# Install chocolatey
|
||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
|
||||
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'));
|
||||
Import-Module $env:ChocolateyInstall/helpers/chocolateyProfile.psm1;
|
||||
refreshenv;
|
||||
};
|
||||
}
|
||||
|
||||
if (-not (Test-ChocoSoftware "powershell-core")) {
|
||||
Invoke-Hook "Install-PowerShellCore" -Fallback {
|
||||
choco install -y powershell-core --install-arguments='"ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 REGISTER_MANIFEST=1 USER_MU=1 ENABLE_MU=1"';
|
||||
};
|
||||
|
||||
Restart-Intermediate;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Test-Path $env:PWSH_PATH) {
|
||||
Remove-Item -Recurse $env:PWSH_PATH;
|
||||
}
|
||||
if (-not (Get-Stage)) {
|
||||
Set-Stage [SetupStage]::Initialize;
|
||||
break;
|
||||
} elseif (Get-Stage -eq [SetupStage]::Initialize) {
|
||||
if (-not ((Get-Command "choco") -and (Get-Command "refreshenv"))) {
|
||||
Invoke-Hook "Install-Chocolatey" -Fallback {
|
||||
# Install chocolatey
|
||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
|
||||
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'));
|
||||
Import-Module $env:ChocolateyInstall/helpers/chocolateyProfile.psm1;
|
||||
refreshenv;
|
||||
};
|
||||
}
|
||||
|
||||
if (-not (Test-ChocoSoftware "powershell-core")) {
|
||||
Invoke-Hook "Install-PowerShellCore" -Fallback {
|
||||
choco install -y powershell-core --install-arguments='"ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 REGISTER_MANIFEST=1 USER_MU=1 ENABLE_MU=1"';
|
||||
};
|
||||
|
||||
Restart-Intermediate;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Test-Path $env:PWSH_PATH) {
|
||||
Remove-Item -Recurse $env:PWSH_PATH;
|
||||
}
|
||||
} else {
|
||||
switch (Get-Stage) {
|
||||
$null {
|
||||
}
|
||||
Default {}
|
||||
}
|
||||
Default {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,11 @@ using namespace Microsoft.Win32;
|
|||
using namespace System.Security.AccessControl;
|
||||
using namespace System.Security.Principal;
|
||||
|
||||
enum SetupStage {
|
||||
Initialize = "init"
|
||||
Install = "install"
|
||||
}
|
||||
|
||||
$null = New-Module {
|
||||
[string] $configRoot = "HKLM:\Software\PortValhalla";
|
||||
[string] $stageOption = "Stage";
|
||||
|
|
Loading…
Reference in a new issue