mirror of
https://github.com/pbatard/Fido.git
synced 2025-09-16 22:28:02 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0b0643abc8 | ||
![]() |
1d88deac7c | ||
![]() |
9025d258e8 | ||
![]() |
425eb4da24 |
@@ -5,5 +5,5 @@ root = true
|
|||||||
# Must use a BOM else Unicode strings will not display
|
# Must use a BOM else Unicode strings will not display
|
||||||
charset = utf-8-bom
|
charset = utf-8-bom
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = space
|
indent_style = tab
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
232
Fido.ps1
232
Fido.ps1
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Fido v1.43 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
# Fido v1.45 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
||||||
# Copyright © 2019-2023 Pete Batard <pete@akeo.ie>
|
# Copyright © 2019-2023 Pete Batard <pete@akeo.ie>
|
||||||
# Command line support: Copyright © 2021 flx5
|
# Command line support: Copyright © 2021 flx5
|
||||||
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
||||||
@@ -43,9 +43,9 @@ param(
|
|||||||
# (Optional) Specify Windows architecture [Toggles commandline mode]
|
# (Optional) Specify Windows architecture [Toggles commandline mode]
|
||||||
[string]$Arch,
|
[string]$Arch,
|
||||||
# (Optional) Only display the download URL [Toggles commandline mode]
|
# (Optional) Only display the download URL [Toggles commandline mode]
|
||||||
[switch]$GetUrl = $False,
|
[switch]$GetUrl = $false,
|
||||||
# (Optional) Increase verbosity
|
# (Optional) Increase verbosity
|
||||||
[switch]$Verbose = $False
|
[switch]$Verbose = $false
|
||||||
)
|
)
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -53,13 +53,27 @@ try {
|
|||||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
$Cmd = $False
|
$Cmd = $false
|
||||||
if ($Win -or $Rel -or $Ed -or $Lang -or $Arch -or $GetUrl) {
|
if ($Win -or $Rel -or $Ed -or $Lang -or $Arch -or $GetUrl) {
|
||||||
$Cmd = $True
|
$Cmd = $true
|
||||||
}
|
}
|
||||||
|
|
||||||
# Craft a decimal numeric version of Windows, since Windows 7's PowerShell is too stupid to compare it to a Version object
|
# Return a decimal Windows version that we can then check for platform support.
|
||||||
$winver = [System.Environment]::OSVersion.Version.Major * 1.0 + [System.Environment]::OSVersion.Version.Minor * 0.1
|
# Note that because we don't want to have to support this script on anything
|
||||||
|
# other than Windows, this call returns 0.0 for PowerShell running on Linux/Mac.
|
||||||
|
function Get-Platform-Version()
|
||||||
|
{
|
||||||
|
$version = 0.0
|
||||||
|
$platform = [string][System.Environment]::OSVersion.Platform
|
||||||
|
# This will filter out non Windows platforms
|
||||||
|
if ($platform.StartsWith("Win")) {
|
||||||
|
# Craft a decimal numeric version of Windows
|
||||||
|
$version = [System.Environment]::OSVersion.Version.Major * 1.0 + [System.Environment]::OSVersion.Version.Minor * 0.1
|
||||||
|
}
|
||||||
|
return $version
|
||||||
|
}
|
||||||
|
|
||||||
|
$winver = Get-Platform-Version
|
||||||
|
|
||||||
# The default TLS for Windows 8.x doesn't work with Microsoft's servers so we must force it
|
# The default TLS for Windows 8.x doesn't work with Microsoft's servers so we must force it
|
||||||
if ($winver -lt 10.0) {
|
if ($winver -lt 10.0) {
|
||||||
@@ -67,36 +81,50 @@ if ($winver -lt 10.0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region Assembly Types
|
#region Assembly Types
|
||||||
$code = @"
|
$Drawing_Assembly = "System.Drawing"
|
||||||
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
# PowerShell 7 altered the name of the Drawing assembly...
|
||||||
internal static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
|
if ($host.version -ge "7.0") {
|
||||||
[DllImport("user32.dll")]
|
$Drawing_Assembly += ".Common"
|
||||||
public static extern bool ShowWindow(IntPtr handle, int state);
|
}
|
||||||
|
|
||||||
// Extract an icon from a DLL
|
$Signature = @{
|
||||||
public static Icon ExtractIcon(string file, int number, bool largeIcon)
|
Namespace = "WinAPI"
|
||||||
{
|
Name = "Utils"
|
||||||
IntPtr large, small;
|
Language = "CSharp"
|
||||||
ExtractIconEx(file, number, out large, out small, 1);
|
UsingNamespace = "System.Runtime", "System.IO", "System.Text", "System.Drawing", "System.Globalization"
|
||||||
try {
|
ReferencedAssemblies = $Drawing_Assembly
|
||||||
return Icon.FromHandle(largeIcon ? large : small);
|
ErrorAction = "Stop"
|
||||||
} catch {
|
WarningAction = "Ignore"
|
||||||
return null;
|
MemberDefinition = @"
|
||||||
|
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
|
||||||
|
internal static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool ShowWindow(IntPtr handle, int state);
|
||||||
|
// Extract an icon from a DLL
|
||||||
|
public static Icon ExtractIcon(string file, int number, bool largeIcon) {
|
||||||
|
IntPtr large, small;
|
||||||
|
ExtractIconEx(file, number, out large, out small, 1);
|
||||||
|
try {
|
||||||
|
return Icon.FromHandle(largeIcon ? large : small);
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"@
|
"@
|
||||||
|
}
|
||||||
|
|
||||||
if (!$Cmd) {
|
if (!$Cmd) {
|
||||||
Write-Host Please Wait...
|
Write-Host Please Wait...
|
||||||
$Drawing_Assembly = "System.Drawing"
|
|
||||||
# PowerShell 7 altered the name of the Drawing assembly...
|
if (!("WinAPI.Utils" -as [type]))
|
||||||
if ($host.version -ge "7.0") {
|
{
|
||||||
$Drawing_Assembly += ".Common"
|
Add-Type @Signature
|
||||||
}
|
}
|
||||||
Add-Type -ErrorAction Stop -WarningAction Ignore -IgnoreWarnings -MemberDefinition $code -Namespace Gui -UsingNamespace System.Runtime, System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies $Drawing_Assembly -Name Utils
|
|
||||||
Add-Type -AssemblyName PresentationFramework
|
Add-Type -AssemblyName PresentationFramework
|
||||||
|
|
||||||
# Hide the powershell window: https://stackoverflow.com/a/27992426/1069307
|
# Hide the powershell window: https://stackoverflow.com/a/27992426/1069307
|
||||||
[Gui.Utils]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0) | Out-Null
|
[WinAPI.Utils]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0) | Out-Null
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -281,15 +309,6 @@ $WindowsVersions = @(
|
|||||||
@("Windows 8.1 KN", ($ko + 62))
|
@("Windows 8.1 KN", ($ko + 62))
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@(
|
|
||||||
@("Windows 7", "WIN7"),
|
|
||||||
@(
|
|
||||||
"with SP1 (build 7601)",
|
|
||||||
@("Windows 7 Ultimate", 0),
|
|
||||||
@("Windows 7 Professional", 1),
|
|
||||||
@("Windows 7 Home Premium", 2)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
@(
|
@(
|
||||||
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
||||||
@(
|
@(
|
||||||
@@ -319,49 +338,13 @@ $WindowsVersions = @(
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
@(
|
@(
|
||||||
@("UEFI Shell 2.0", "UEFI_SHELL 2.0"),
|
@("UEFI Shell 2.0", "UEFI_SHELL 2.0"),
|
||||||
@(
|
@(
|
||||||
"4.632 [20100426]",
|
"4.632 [20100426]",
|
||||||
@("Release", 0)
|
@("Release", 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
$Windows7Versions = @(
|
|
||||||
# 0: Windows 7 Ultimate
|
|
||||||
@(
|
|
||||||
# Need a dummy to prevent PS from coalescing single array entries
|
|
||||||
@(""),
|
|
||||||
@("English (US)", "en-us",
|
|
||||||
@(
|
|
||||||
@("x64", "https://download.microsoft.com/download/5/1/9/5195A765-3A41-4A72-87D8-200D897CBE21/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_ULTIMATE_x64FRE_en-us.iso"),
|
|
||||||
@("x86", "https://download.microsoft.com/download/1/E/6/1E6B4803-DD2A-49DF-8468-69C0E6E36218/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_ULTIMATE_x86FRE_en-us.iso")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
# 1: Windows 7 Profesional
|
|
||||||
@(
|
|
||||||
@(""),
|
|
||||||
@("English (US)", "en-us",
|
|
||||||
@(
|
|
||||||
@("x64", "https://download.microsoft.com/download/0/6/3/06365375-C346-4D65-87C7-EE41F55F736B/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_PROFESSIONAL_x64FRE_en-us.iso"),
|
|
||||||
@("x86", "https://download.microsoft.com/download/C/0/6/C067D0CD-3785-4727-898E-60DC3120BB14/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_PROFESSIONAL_x86FRE_en-us.iso")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
# 2: Windows 7 Home Premium
|
|
||||||
@(
|
|
||||||
@(""),
|
|
||||||
@("English (US)", "en-us",
|
|
||||||
@(
|
|
||||||
@("x64", "https://download.microsoft.com/download/E/A/8/EA804D86-C3DF-4719-9966-6A66C9306598/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_HOMEPREMIUM_x64FRE_en-us.iso"),
|
|
||||||
@("x86", "https://download.microsoft.com/download/E/D/A/EDA6B508-7663-4E30-86F9-949932F443D0/7601.24214.180801-1700.win7sp1_ldr_escrow_CLIENT_HOMEPREMIUM_x86FRE_en-us.iso")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
)
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Functions
|
#region Functions
|
||||||
@@ -411,9 +394,9 @@ function Select-Language([string]$LangName)
|
|||||||
($SysLocale.StartsWith("tr") -and $LangName -like "*Turk*") -or `
|
($SysLocale.StartsWith("tr") -and $LangName -like "*Turk*") -or `
|
||||||
($SysLocale.StartsWith("uk") -and $LangName -like "*Ukrain*") -or `
|
($SysLocale.StartsWith("uk") -and $LangName -like "*Ukrain*") -or `
|
||||||
($SysLocale.StartsWith("vi") -and $LangName -like "*Vietnam*")) {
|
($SysLocale.StartsWith("vi") -and $LangName -like "*Vietnam*")) {
|
||||||
return $True
|
return $true
|
||||||
}
|
}
|
||||||
return $False
|
return $false
|
||||||
}
|
}
|
||||||
|
|
||||||
function Add-Entry([int]$pos, [string]$Name, [array]$Items, [string]$DisplayName)
|
function Add-Entry([int]$pos, [string]$Name, [array]$Items, [string]$DisplayName)
|
||||||
@@ -506,7 +489,7 @@ function ConvertTo-ImageSource
|
|||||||
function Throw-Error([object]$Req, [string]$Alt)
|
function Throw-Error([object]$Req, [string]$Alt)
|
||||||
{
|
{
|
||||||
$Err = $(GetElementById -Request $Req -Id "errorModalMessage").innerText -replace "<[^>]+>" -replace "\s+", " "
|
$Err = $(GetElementById -Request $Req -Id "errorModalMessage").innerText -replace "<[^>]+>" -replace "\s+", " "
|
||||||
if (-not $Err) {
|
if (!$Err) {
|
||||||
$Err = $Alt
|
$Err = $Alt
|
||||||
} else {
|
} else {
|
||||||
$Err = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Err)
|
$Err = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Err)
|
||||||
@@ -517,7 +500,7 @@ function Throw-Error([object]$Req, [string]$Alt)
|
|||||||
# Translate a message string
|
# Translate a message string
|
||||||
function Get-Translation([string]$Text)
|
function Get-Translation([string]$Text)
|
||||||
{
|
{
|
||||||
if (-not $English -contains $Text) {
|
if (!($English -contains $Text)) {
|
||||||
Write-Host "Error: '$Text' is not a translatable string"
|
Write-Host "Error: '$Text' is not a translatable string"
|
||||||
return "(Untranslated)"
|
return "(Untranslated)"
|
||||||
}
|
}
|
||||||
@@ -555,7 +538,7 @@ function Error([string]$ErrorMessage)
|
|||||||
if (!$Cmd) {
|
if (!$Cmd) {
|
||||||
$XMLForm.Title = $(Get-Translation("Error")) + ": " + $ErrorMessage
|
$XMLForm.Title = $(Get-Translation("Error")) + ": " + $ErrorMessage
|
||||||
Refresh-Control($XMLForm)
|
Refresh-Control($XMLForm)
|
||||||
$XMLGrid.Children[2 * $script:Stage + 1].IsEnabled = $True
|
$XMLGrid.Children[2 * $script:Stage + 1].IsEnabled = $true
|
||||||
$UserInput = [System.Windows.MessageBox]::Show($XMLForm.Title, $(Get-Translation("Error")), "OK", "Error")
|
$UserInput = [System.Windows.MessageBox]::Show($XMLForm.Title, $(Get-Translation("Error")), "OK", "Error")
|
||||||
$script:ExitCode = $script:Stage--
|
$script:ExitCode = $script:Stage--
|
||||||
} else {
|
} else {
|
||||||
@@ -625,10 +608,10 @@ if ($Cmd) {
|
|||||||
$EnglishMessages = "en-US|Version|Release|Edition|Language|Architecture|Download|Continue|Back|Close|Cancel|Error|Please wait...|" +
|
$EnglishMessages = "en-US|Version|Release|Edition|Language|Architecture|Download|Continue|Back|Close|Cancel|Error|Please wait...|" +
|
||||||
"Download using a browser|Download of Windows ISOs is unavailable due to Microsoft having altered their website to prevent it.|" +
|
"Download using a browser|Download of Windows ISOs is unavailable due to Microsoft having altered their website to prevent it.|" +
|
||||||
"PowerShell 3.0 or later is required to run this script.|Do you want to go online and download it?|" +
|
"PowerShell 3.0 or later is required to run this script.|Do you want to go online and download it?|" +
|
||||||
"This feature is not available for this version of Windows."
|
"This feature is not available on this platform."
|
||||||
[string[]]$English = $EnglishMessages.Split('|')
|
[string[]]$English = $EnglishMessages.Split('|')
|
||||||
[string[]]$Localized = $null
|
[string[]]$Localized = $null
|
||||||
if ($LocData -and (-not $LocData.StartsWith("en-US"))) {
|
if ($LocData -and !$LocData.StartsWith("en-US")) {
|
||||||
$Localized = $LocData.Split('|')
|
$Localized = $LocData.Split('|')
|
||||||
# Adjust the $Localized array if we have more or fewer strings than in $EnglishMessages
|
# Adjust the $Localized array if we have more or fewer strings than in $EnglishMessages
|
||||||
if ($Localized.Length -lt $English.Length) {
|
if ($Localized.Length -lt $English.Length) {
|
||||||
@@ -655,7 +638,8 @@ function Size-To-Human-Readable([uint64]$size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Check if the locale we want is available - Fall back to en-US otherwise
|
# Check if the locale we want is available - Fall back to en-US otherwise
|
||||||
function Check-Locale {
|
function Check-Locale
|
||||||
|
{
|
||||||
try {
|
try {
|
||||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/software-download/"
|
$url = "https://www.microsoft.com/" + $QueryLocale + "/software-download/"
|
||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
@@ -792,7 +776,7 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
$xml = New-Object System.Xml.XmlDocument
|
$xml = New-Object System.Xml.XmlDocument
|
||||||
if ($Verbosity -ge 2) {
|
if ($Verbosity -ge 2) {
|
||||||
Write-Host Querying $url
|
Write-Host Querying $url
|
||||||
}
|
}
|
||||||
$xml.Load($url)
|
$xml.Load($url)
|
||||||
$sep = ""
|
$sep = ""
|
||||||
$archs = ""
|
$archs = ""
|
||||||
@@ -829,7 +813,7 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
$r = Invoke-WebRequest -Method Post -Headers @{ "Referer" = $ref } -UseBasicParsing -UserAgent $UserAgent -WebSession $Session $url
|
$r = Invoke-WebRequest -Method Post -Headers @{ "Referer" = $ref } -UseBasicParsing -UserAgent $UserAgent -WebSession $Session $url
|
||||||
if ($r -match "errorModalMessage") {
|
if ($r -match "errorModalMessage") {
|
||||||
$Alt = [regex]::Match($r, '<p id="errorModalMessage">(.+?)<\/p>').Groups[1].Value -replace "<[^>]+>" -replace "\s+", " " -replace "\?\?\?", "-"
|
$Alt = [regex]::Match($r, '<p id="errorModalMessage">(.+?)<\/p>').Groups[1].Value -replace "<[^>]+>" -replace "\s+", " " -replace "\?\?\?", "-"
|
||||||
if (-not $Alt) {
|
if (!$Alt) {
|
||||||
$Alt = "Could not retrieve architectures from server"
|
$Alt = "Could not retrieve architectures from server"
|
||||||
} else {
|
} else {
|
||||||
$Alt += " " + $SessionId + "."
|
$Alt += " " + $SessionId + "."
|
||||||
@@ -849,7 +833,7 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
foreach ($var in $xml.inputs.input) {
|
foreach ($var in $xml.inputs.input) {
|
||||||
$json = $var.value | ConvertFrom-Json;
|
$json = $var.value | ConvertFrom-Json;
|
||||||
if ($json) {
|
if ($json) {
|
||||||
if (($Is64 -and $json.DownloadType -eq "x64") -or (-not $Is64 -and $json.DownloadType -eq "x86")) {
|
if (($Is64 -and $json.DownloadType -eq "x64") -or (!$Is64 -and $json.DownloadType -eq "x86")) {
|
||||||
$script:SelectedIndex = $i
|
$script:SelectedIndex = $i
|
||||||
}
|
}
|
||||||
$links += @(New-Object PsObject -Property @{ Type = $json.DownloadType; Link = $json.Uri })
|
$links += @(New-Object PsObject -Property @{ Type = $json.DownloadType; Link = $json.Uri })
|
||||||
@@ -871,7 +855,7 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
function Process-Download-Link([string]$Url)
|
function Process-Download-Link([string]$Url)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if ($PipeName -and -not $Check.IsChecked) {
|
if ($PipeName -and !$Check.IsChecked) {
|
||||||
Send-Message -PipeName $PipeName -Message $Url
|
Send-Message -PipeName $PipeName -Message $Url
|
||||||
} else {
|
} else {
|
||||||
if ($Cmd) {
|
if ($Cmd) {
|
||||||
@@ -903,9 +887,9 @@ if ($Cmd) {
|
|||||||
$winLanguageName = $null
|
$winLanguageName = $null
|
||||||
$winLink = $null
|
$winLink = $null
|
||||||
|
|
||||||
# Windows 7 has become too much of a liability
|
# Windows 7 and non Windows platforms are too much of a liability
|
||||||
if ($winver -le 6.1) {
|
if ($winver -le 6.1) {
|
||||||
Error(Get-Translation("This feature is not available for this version of Windows."))
|
Error(Get-Translation("This feature is not available on this platform."))
|
||||||
exit 403
|
exit 403
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1067,7 +1051,7 @@ $XMLForm.Title = $AppTitle
|
|||||||
if ($Icon) {
|
if ($Icon) {
|
||||||
$XMLForm.Icon = $Icon
|
$XMLForm.Icon = $Icon
|
||||||
} else {
|
} else {
|
||||||
$XMLForm.Icon = [Gui.Utils]::ExtractIcon("imageres.dll", -5205, $true) | ConvertTo-ImageSource
|
$XMLForm.Icon = [WinAPI.Utils]::ExtractIcon("imageres.dll", -5205, $true) | ConvertTo-ImageSource
|
||||||
}
|
}
|
||||||
if ($Locale.StartsWith("ar") -or $Locale.StartsWith("fa") -or $Locale.StartsWith("he")) {
|
if ($Locale.StartsWith("ar") -or $Locale.StartsWith("fa") -or $Locale.StartsWith("he")) {
|
||||||
$XMLForm.FlowDirection = "RightToLeft"
|
$XMLForm.FlowDirection = "RightToLeft"
|
||||||
@@ -1076,9 +1060,9 @@ $WindowsVersionTitle.Text = Get-Translation("Version")
|
|||||||
$Continue.Content = Get-Translation("Continue")
|
$Continue.Content = Get-Translation("Continue")
|
||||||
$Back.Content = Get-Translation("Close")
|
$Back.Content = Get-Translation("Close")
|
||||||
|
|
||||||
# Windows 7 has become too much of a liability
|
# Windows 7 and non Windows platforms are too much of a liability
|
||||||
if ($winver -le 6.1) {
|
if ($winver -le 6.1) {
|
||||||
Error(Get-Translation("This feature is not available for this version of Windows."))
|
Error(Get-Translation("This feature is not available on this platform."))
|
||||||
exit 403
|
exit 403
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1095,9 +1079,9 @@ $WindowsVersion.DisplayMemberPath = "Version"
|
|||||||
# Button Action
|
# Button Action
|
||||||
$Continue.add_click({
|
$Continue.add_click({
|
||||||
$script:Stage++
|
$script:Stage++
|
||||||
$XMLGrid.Children[2 * $Stage + 1].IsEnabled = $False
|
$XMLGrid.Children[2 * $Stage + 1].IsEnabled = $false
|
||||||
$Continue.IsEnabled = $False
|
$Continue.IsEnabled = $false
|
||||||
$Back.IsEnabled = $False
|
$Back.IsEnabled = $false
|
||||||
Refresh-Control($Continue)
|
Refresh-Control($Continue)
|
||||||
Refresh-Control($Back)
|
Refresh-Control($Back)
|
||||||
|
|
||||||
@@ -1106,7 +1090,7 @@ $Continue.add_click({
|
|||||||
1 { # Windows Version selection
|
1 { # Windows Version selection
|
||||||
$XMLForm.Title = Get-Translation($English[12])
|
$XMLForm.Title = Get-Translation($English[12])
|
||||||
Refresh-Control($XMLForm)
|
Refresh-Control($XMLForm)
|
||||||
if ($WindowsVersion.SelectedValue.Version.StartsWith("Windows") -and $WindowsVersion.SelectedValue.Version -ne "Windows 7") {
|
if ($WindowsVersion.SelectedValue.Version.StartsWith("Windows")) {
|
||||||
Check-Locale
|
Check-Locale
|
||||||
}
|
}
|
||||||
$releases = Get-Windows-Releases $WindowsVersion.SelectedValue.Index
|
$releases = Get-Windows-Releases $WindowsVersion.SelectedValue.Index
|
||||||
@@ -1165,9 +1149,9 @@ $Continue.add_click({
|
|||||||
$XMLForm.Close()
|
$XMLForm.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$Continue.IsEnabled = $True
|
$Continue.IsEnabled = $true
|
||||||
if ($Stage -ge 0) {
|
if ($Stage -ge 0) {
|
||||||
$Back.IsEnabled = $True
|
$Back.IsEnabled = $true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ $Back.add_click({
|
|||||||
} else {
|
} else {
|
||||||
$XMLGrid.Children.RemoveAt(2 * $Stage + 3)
|
$XMLGrid.Children.RemoveAt(2 * $Stage + 3)
|
||||||
$XMLGrid.Children.RemoveAt(2 * $Stage + 2)
|
$XMLGrid.Children.RemoveAt(2 * $Stage + 2)
|
||||||
$XMLGrid.Children[2 * $Stage + 1].IsEnabled = $True
|
$XMLGrid.Children[2 * $Stage + 1].IsEnabled = $true
|
||||||
$dh2 = $dh
|
$dh2 = $dh
|
||||||
if ($Stage -eq 4 -and $PipeName) {
|
if ($Stage -eq 4 -and $PipeName) {
|
||||||
$Check.Visibility = "Collapsed"
|
$Check.Visibility = "Collapsed"
|
||||||
@@ -1202,7 +1186,7 @@ $Back.add_click({
|
|||||||
})
|
})
|
||||||
|
|
||||||
# Display the dialog
|
# Display the dialog
|
||||||
$XMLForm.Add_Loaded( { $XMLForm.Activate() } )
|
$XMLForm.Add_Loaded({$XMLForm.Activate()})
|
||||||
$XMLForm.ShowDialog() | Out-Null
|
$XMLForm.ShowDialog() | Out-Null
|
||||||
|
|
||||||
# Clean up & exit
|
# Clean up & exit
|
||||||
@@ -1211,8 +1195,8 @@ exit $ExitCode
|
|||||||
# SIG # Begin signature block
|
# SIG # Begin signature block
|
||||||
# MIIkWAYJKoZIhvcNAQcCoIIkSTCCJEUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
# MIIkWAYJKoZIhvcNAQcCoIIkSTCCJEUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAin+3j4moQLVFU
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCMJv431qiE9xy1
|
||||||
# tqR8rGAmmgj13m89LOKayGbAncwfZqCCElkwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
# 2Km7MvT+QN0u+/w5ek1xMY9QLEDXQqCCElkwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||||||
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||||||
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
||||||
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
||||||
@@ -1315,22 +1299,22 @@ exit $ExitCode
|
|||||||
# aWMgQ29kZSBTaWduaW5nIENBIEVWIFIzNgIRAL+xUAG79ZLUlip3l+pzb6MwDQYJ
|
# aWMgQ29kZSBTaWduaW5nIENBIEVWIFIzNgIRAL+xUAG79ZLUlip3l+pzb6MwDQYJ
|
||||||
# YIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK
|
# YIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK
|
||||||
# KwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG
|
# KwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG
|
||||||
# 9w0BCQQxIgQgel+r/YQC+D0iNMGrveay91mPrAI0D8kUPZcul7Zh01kwDQYJKoZI
|
# 9w0BCQQxIgQgU6kfzXtqFM95UYOKG40MSFBPYFNCnkglZ4Ymhc2Oyf0wDQYJKoZI
|
||||||
# hvcNAQEBBQAEggIAnHvSbYCOjz/C743Fuk+AAnBU7WXRE4XbmpE90ECJyR+yO/tE
|
# hvcNAQEBBQAEggIAoMhK/l7p5OwearMs4gke3tH8HQgc5U2/TTyo2EVwH5wO8UqS
|
||||||
# 3r3v/68pYQJrGZHKN6T+Y9iNVTIMHNYPLaBmPziQNASPcaLRWC3lz1dWAnDb1oCZ
|
# vkzWS94vWlzm2J+h/nZYBgHKQ6wGPxMVUxQb7IzwOmLL1WJESwybRV6RjdOgbOjX
|
||||||
# m/IYpxr5rpt4p/9PRjaB1E1ERc3PZ/htdoqWPi/3EqdAo1UljGLUF2CI6X6DMJZB
|
# H1zxAjYGXAHvupUDY4BxEI3QCH+2zWyBVyzjQpcJvYFdcf4YhlbDTS1A+TgZ/nCj
|
||||||
# hHYUP/PuD6RdKCO1OUo4HMuPGA7h3BnEp2uTPG0gBH4AiwViAkbMCJ0yVgsGzWU7
|
# X6j4Fe8dxyM/Gsa9kA9Ar6Ogip1uaYD8/rILhAUEoL+OblbQo6aTz48Z5ibmFYHR
|
||||||
# 6gNnTDXl5fS9pxyUKjfB9ckl2jynS56mfQOQYo4rM+NbYCBwl1pHyx3ZexojSRsG
|
# QdoIscQ1TzZPAlKvcXkswIxICIYP52V7ooJH08TnE8wxQ5U9aT8K/BqfpGNtKI78
|
||||||
# 69k9TOY9L13h3zko7gafKOmQBJy950NEjgwdCq5UX7oQ1dN85Jgq+FI5DMsKqvcY
|
# 2XydZifpOuU7mVNgPH+q509Qz28pINGspTCfbxnzEZDf+mGC+pbokQxNv2ZjKUYB
|
||||||
# O55zddW0+ssrJsKaK78RQS7mZwbhmRJj592fPBFog8ba+/FsuYQH267wXirsqbej
|
# Nf9BBgUJgaVRJBLHvaOHGhZaRu1Fbd0ykpJLd9EAEgAKCV5+SkpcaqOqDDaMEwJL
|
||||||
# USvzxAjVs2wAGGv/0A9L0eMvoTlKNP3tb0AiH34fN3R+KecVT9eZSJY6hidnRiVH
|
# rGcD7TkF1U0hyW4ZPq5ICsHjzjnXsy+MMkjfYYhi03ZpJJw696F9Pq3M/fXemT9e
|
||||||
# Op5oBHd+r1Dez3Lzgd7BVn70hWkxwA/1SNQDpABL/8/ZLBCjUe29JPjCnG71mwom
|
# PMKLoOXPZefAOTyGcFVUdSL9ctxboRKVRl1z/94r1bqN4LiHng99CF+pazPtDa4e
|
||||||
# z9TSVtwJ+sCjUHnTzewRrQ0JIynnZoS5Id+tXLDh38lfVu9HvxNWciRrj95abV9V
|
# E7QgGkKYYAaH2t2LGxxXFH8/ifg2EvOMWlqT0JFKD6K6s/j6jKI+Ucr7h3OSbhqc
|
||||||
# HoE1a6hvNruqVKbjTTLvfUIDGZXIbbVSPEni1UTaeB91vnjkGOfBYOZdPW+hgg48
|
# R8MY+vshQdFpxD2aYLOAPhwg8vUcBeqYfNUNxXVoYBJuaKbr/hqS8pAEjUOhgg48
|
||||||
# MIIOOAYKKwYBBAGCNwMDATGCDigwgg4kBgkqhkiG9w0BBwKggg4VMIIOEQIBAzEN
|
# MIIOOAYKKwYBBAGCNwMDATGCDigwgg4kBgkqhkiG9w0BBwKggg4VMIIOEQIBAzEN
|
||||||
# MAsGCWCGSAFlAwQCATCCAQ4GCyqGSIb3DQEJEAEEoIH+BIH7MIH4AgEBBgtghkgB
|
# MAsGCWCGSAFlAwQCATCCAQ4GCyqGSIb3DQEJEAEEoIH+BIH7MIH4AgEBBgtghkgB
|
||||||
# hvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCCGqni2QlwqB21hyU6Rs+gDl1tPIOma
|
# hvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCAPk/eUEWByIigDrAkGcyON/txivadC
|
||||||
# qMmxXDGtqTM4EAIUUqSQEpawBA8DWrWIdtuxvP7TczgYDzIwMjMwMjA2MDExOTI0
|
# G8BK3lF8ZDGmCQIUDt7R6LryZ+2Z9cbYbrHVRuYf3PEYDzIwMjMwNDE0MTA0MjE4
|
||||||
# WjADAgEeoIGGpIGDMIGAMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMg
|
# WjADAgEeoIGGpIGDMIGAMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMg
|
||||||
# Q29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMTAv
|
# Q29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMTAv
|
||||||
# BgNVBAMTKFN5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgU2lnbmVyIC0gRzOg
|
# BgNVBAMTKFN5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgU2lnbmVyIC0gRzOg
|
||||||
@@ -1394,13 +1378,13 @@ exit $ExitCode
|
|||||||
# A1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRy
|
# A1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRy
|
||||||
# dXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBp
|
# dXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBp
|
||||||
# bmcgQ0ECEHvU5a+6zAc/oQEjBCJBTRIwCwYJYIZIAWUDBAIBoIGkMBoGCSqGSIb3
|
# bmcgQ0ECEHvU5a+6zAc/oQEjBCJBTRIwCwYJYIZIAWUDBAIBoIGkMBoGCSqGSIb3
|
||||||
# DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjMwMjA2MDExOTI0
|
# DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjMwNDE0MTA0MjE4
|
||||||
# WjAvBgkqhkiG9w0BCQQxIgQgLweTPLKPtanJVxxrIuCqGzru3xtAintj/2W8Y+R8
|
# WjAvBgkqhkiG9w0BCQQxIgQgSRmRX32ZtvpctsTQsO6ZmUJ/MJA07g0cGrMcieDX
|
||||||
# nXwwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgxHTOdgB9AjlODaXk3nwUxoD54oIB
|
# XE4wNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgxHTOdgB9AjlODaXk3nwUxoD54oIB
|
||||||
# PP72U+9dtx/fYfgwCwYJKoZIhvcNAQEBBIIBAE4XHtLfg6sAuof9wFzniSPNmYks
|
# PP72U+9dtx/fYfgwCwYJKoZIhvcNAQEBBIIBAJmHrI1rxYP3Tn0turyB5Nt12cQj
|
||||||
# BPkufnx3wPWvzQECIQ1cmfDDHh8TjPENpMpmosJz6WVtAOjlVlrgFfT/A/5J8fh5
|
# OJ3WvJtAGrW6uT2EJp2xWIYcf9lYPz35+ar/OGTh0WgV+Ci62lY8C+D4V+3BRPTe
|
||||||
# vj7vdDHhkW+PozQyKJI2UROJrFyo1ZbD8fHIgBGalHT9PD+/BoN3yps6vLvgVUWX
|
# 2NAD6PR+sNj/NocG0A+BT+4agepoXxOjBCsNlDxi+qxb42alJUuf/G9zz+G+HLuO
|
||||||
# +mMdH7g1gwcHvmLl2ocmPANNR7gfdw/8BUtLlnK5Jgta3DANEh/A7Wedo1Gt4ctN
|
# rVNSf0E97W+8iGyHv1QvJ+KMO9nppMPdSpjOXPu/pKsAMjmds5n8R7OSW6vFkIkt
|
||||||
# NVC2g3Vs1BhyF8EJj274wtQuSC/9Q9SoBQhrnBYD/pElwOkFCQB+VFAP0TOnyqvS
|
# 9INEVTJHzMrSkE0DNRKmh2NBkSJOJn+5gNfINmhJ8LtKvuRhuW+7NvpBoKqsepBz
|
||||||
# YO9QM5G3Xd31TRkW9i83G1SNMhKf0du/voqtplcIEMqXfYGdagtzY+qSf1c=
|
# E8lsh852z2vlN1kD7XAw1yDw4hTaJJrtA5V3q593/svRL5j9N+stc2dY2C0=
|
||||||
# SIG # End signature block
|
# SIG # End signature block
|
||||||
|
Reference in New Issue
Block a user