2024-07-31 13:41:45 +00:00
|
|
|
using namespace Microsoft.Win32;
|
|
|
|
|
|
|
|
$null = New-Module {
|
2024-08-01 10:24:28 +00:00
|
|
|
. "$PSScriptRoot/Scripting.ps1";
|
2024-07-31 13:41:45 +00:00
|
|
|
[RegistryKey] $key = $null;
|
|
|
|
$runOncePath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce";
|
2024-08-01 00:19:05 +00:00
|
|
|
$runOnceName = "PortValhalla";
|
2024-07-31 13:41:45 +00:00
|
|
|
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Gets the reghistry key containing the `RunOnce` commands.
|
|
|
|
#>
|
|
|
|
function Get-RunOnceKey {
|
|
|
|
Get-Item $runOncePath;
|
|
|
|
}
|
|
|
|
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Registers a task to run the setup once after the next reboot.
|
|
|
|
|
|
|
|
.PARAMETER UserKey
|
|
|
|
The regtistry key of the user to register the task for.
|
|
|
|
#>
|
|
|
|
function Register-Setup {
|
|
|
|
param(
|
|
|
|
[RegistryKey] $UserKey
|
|
|
|
)
|
|
|
|
|
|
|
|
$key = Get-RunOnceKey $UserKey;
|
|
|
|
|
2024-08-01 00:19:05 +00:00
|
|
|
Set-ItemProperty -Path $key.PSPath -Name $runOnceName -Type "ExpandString" -Value (
|
|
|
|
"pwsh -Command " +
|
|
|
|
"`$env:PWSH_PATH = $(ConvertTo-Injection $env:PWSH_PATH);" +
|
|
|
|
"`$env:INSTALLER_SCRIPT = $(ConvertTo-Injection $env:INSTALLER_SCRIPT);" +
|
|
|
|
"`$env:CONFIG_MODULE = $(ConvertTo-Injection $env:CONFIG_MODULE);" +
|
|
|
|
"& `$env:INSTALLER_SCRIPT;"
|
|
|
|
);
|
2024-07-31 13:41:45 +00:00
|
|
|
|
|
|
|
$key.Handle.Close();
|
|
|
|
}
|
|
|
|
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Reboots the machine intermediately and restarts the setup after the next login.
|
|
|
|
#>
|
|
|
|
function Restart-Intermediate {
|
|
|
|
Register-Setup;
|
|
|
|
Restart-Computer;
|
|
|
|
}
|
|
|
|
}
|