Compare commits

..

77 Commits
v1.12 ... v1.65

Author SHA1 Message Date
Pete Batard
2fc1739224 Add UEFI Shell 25H1 downloads 2025-06-12 17:42:16 +01:00
Pete Batard
96c3637863 Add UEFI Shell 24H2 downloads
* Also add a new -PlatformArch option, to help avoid the very time consuming WMI call to autodetect the native CPU arch.
2024-11-24 22:26:40 +00:00
Pete Batard
c034a4e72a Fix localization of error message 715-123130
* As usual, Microsoft are completely unable to properly process UTF-8 content, even if
  the response from an Invoke-WebRequest query explicitly specifies "charset=utf-8".
* So, once again, we need to force PowerShell's hand to treat the content as UTF-8.
* Also improve the default error message if we can't get it from Microsoft.
2024-11-20 13:51:17 +00:00
Pete Batard
ce405fa35c Switch to using the new JSON Windows download API
* This simplifies things quite a bit since we were converting HTML to XML to JSON before.
* Also drop the custom User Agent for now.
  We'll have to see how long it takes Microsoft to go back to filtering out PowerShell...
* Closes #98.
2024-11-19 22:42:39 +00:00
Pete Batard
5402fc6222 Add ARM64 Windows 11 downloads
* Gotta really praise Microsoft for having designed their download servers to
  handle multiple archs for the same Windows SKUs... and then completely throw
  that out of the window to instead make Windows 11 ARM64 a different SKU.
* Now, because we don't want to be *AS MORONIC AS MICROSOFT*, we go the extra
  mile (and issue multiple requests, using multiple session IDs) to make the
  ARM64 *ARCHITECTURE* fall into the fold of where it belongs, i.e. as a user
  selectable property of a single Windows 11 release.
* Closes #97.
2024-11-18 01:52:22 +00:00
Pete Batard
f8cec58032 Clean up and update
* Drop Korean exception, since Microsoft no longer serves Korean specific images, and simplify Chinese exceptions.
* Drop Windows 7 ISO handling, since Microsoft no longer serves Windows 7 ISOs.
* Update Firefox user agent version.
* Add a new -Debug switch to dump responses, and simplify verbosity handling.
2024-11-15 13:15:01 +00:00
Pete Batard
ec4673831c Remove Windows 11 23H2 ISO downloads 2024-10-03 16:53:10 +01:00
Pete Batard
3f791c6c4c Add Windows 11 24H2 downloads
* With thanks to @ave9858.
2024-10-01 21:20:35 +01:00
Pete Batard
29d8150b04 Remove Windows 8.1 downloads
* Microsoft removed them from their website.
2024-07-08 12:34:10 +01:00
Pete Batard
f55fd2932c Switch back to using 'Invoke-WebRequest' instead of 'curl'
* Closes #91.
2024-06-18 12:08:48 +01:00
Pete Batard
06a14ba11c Add UEFI Shell 24H1 ISO downloads 2024-05-30 13:16:38 +01:00
Pete Batard
4e6f25f351 Work around the latest Microsoft server restrictions
* It looks like Microsoft are actively filtering our script by detecting our first request with the
  spoofed user-agent, so work around that.
* Also switch to using 'curl' instead of 'Invoke-WebRequest'. May break PowerShell 7.0, but I'm only
  concerned about Rufus usage for now.
* Also add timeouts on web requests.
* Closes #88.
2024-02-07 15:55:59 +00:00
Pete Batard
d43d7aeee3 Add Windows 11 23H2 v2 downloads
* With thanks to @ave9858.
* Closes #83.
2023-12-19 10:27:44 +00:00
Pete Batard
d8b2d24242 Add UEFI Shell 23H2 ISO downloads
* Also fix Windows 11 23H2 build version since Microsoft are *UTTERLY USELESS*
  at providing an accurate product version number in the .wim's XML versioning
  files they are in bloody charge of populating...
2023-11-25 17:55:01 +00:00
Pete Batard
903cae2f00 Add Windows 11 23H2 downloads
* Replaces Windows 11 22H2, since past history indicates that Microsoft is
  not going to keep the Windows 11 22H2 ISOs available for much longer.
* Note that Microsoft has *no* plans to ever release a Windows 10 23H2.
* Closes #76.
2023-10-31 19:23:43 +01:00
Pete Batard
5d4a4d7d14 Fix a regression with IgnoreWarnings
* Commit 1d88deac7c removed the IgnoreWarnings flag which was
  needed as a fix for pbatard/rufus#2030.
* Contributed by @Tom-EllisEVENTS.
* Closes pbatard/rufus#2315.
2023-09-08 18:35:53 +01:00
Pete Batard
4a694421af Add UEFI Shell 2.2 23H1 download 2023-06-06 13:49:50 +01:00
Pete Batard
15a1a5923d Add Windows 10 22H2 v1 downloads
* Closes #72
2023-05-25 00:07:45 +01:00
ChaseKnowlden
85a29fa2ae Add Windows 11 22H2 v2 downloads
* And remove Windows 11 22H2 v1 downloads since these have been disabled by Microsoft
* Closes #71
2023-05-24 00:31:37 +01:00
Pete Batard
a99f8a10d3 Remove releases that have been made inaccessible by Microsoft
* Closes #67
2023-05-23 17:26:18 +01:00
Pete Batard
146eec8673 Add -Locale option and fix encoding for error handling 2023-05-15 11:42:08 +01:00
Pete Batard
e9a0a367d9 Update README 2023-04-14 11:54:05 +01:00
Pete Batard
0b0643abc8 Remove Windows 7 downloads
* Since Microsoft removed the ISOs from their servers
* Closes #64
2023-04-14 11:42:34 +01:00
Dmitry Nefedov
1d88deac7c Improve code for P/Invoke
* Closes #62
2023-04-14 11:36:33 +01:00
Pete Batard
9025d258e8 Harmonise the use of $true/$false and not operator 2023-04-14 11:29:40 +01:00
Pete Batard
425eb4da24 Prevent Fido from running on non Windows platforms
* Per #58, we consider that letting non-Windows users run Fido is going to become
  too much of liability moving forward, so the script now detects non Windows
  platforms and actively prevent itself from running there.
* Closes #60.
* Also some whitespace cleanup.
2023-03-07 12:16:57 +00:00
Pete Batard
10acbf9f84 Improve error handling
* Simplify regex and fix unconverted characters.
* Also use Start-BitsTransfer for cmdline downloads (Closes #56).
* Also remove -DisableProgress now that we use Start-BitsTransfer.
2023-02-06 01:22:02 +00:00
Pete Batard
4b24ae5795 Fix Windows 7 detection
* Of course, Windows 7's PowerShell is too stupid to actually compare Version objects.
2023-01-27 15:12:02 +00:00
Pete Batard
2ca0f62f53 Fix language regexp and force TLS for Windows 8.x
* Non En locales may still return '<select id="product-languages">' instead of
  '<select id="product-languages" ...>' so make sure we account for that case.
* Addresses pbatard/rufus#2148
* Also force TLS for Windows 8.x to address pbatard/rufus#2133
2023-01-27 13:39:13 +00:00
Pete Batard
448cfa72cf Remove Windows 7 support
* "I'm sorry for your loss. Move on."
2023-01-27 13:28:28 +00:00
Pete Batard
9552df66d5 Update language option regexp to match latest Microsoft HTML fragment
* Addresses pbatard/rufus#2146
* Also update .gitattributes to clean up release archives
2023-01-25 20:04:14 +00:00
Pete Batard
4bafb688da Remove unneeded files
* .whitesource is unneeded because we don't use external dependencies.
* VS project files are unneeded when we just edit the .ps1 in a text editor.
2023-01-11 20:22:13 +00:00
Pete Batard
ad79094c30 Improve error handling and reporting when querying vlscppe.microsoft.com
* Also use a better default icon and add a preemptive localized message for
  future countermeasures from Microsoft.
2023-01-09 17:32:59 +00:00
Pete Batard
8cf4a279ff Work around Microsoft's new ISO download countermeasures
* The Microsoft servers now use session Id whitelisting, so add querying
  of https://vlscppe.microsoft.com/tags with the session Id.
* Closes #52.
* Also harmonize/improve -replace calls
* Also make sure we use POST for the getskuinformationbyproductedition
  query (in case Microsoft add some more countermeasures).
* Also drop 'cmd /c' invocation in sign.sh since the cygwin people can't
  seem to get their act together there...
2023-01-08 22:10:01 +00:00
Pete Batard
84f833b067 Improve error reporting
* Now return the error message from the Microsoft server where possible (See #52)
2023-01-06 21:58:20 +00:00
Pete Batard
c34a41fe3f Add UEFI Shell 2.2 22H2 download 2022-12-15 00:20:19 +00:00
Erik Dansbo
6593585ff3 Add an option to disable progress report for commandline
* Closes #50
2022-12-14 17:11:09 +00:00
Pete Batard
fac4c49262 Add Windows 10 22H2 builds
* And remove Windows 11 22H2 *v0* builds since Microsoft removed the ISOs from their servers
2022-10-19 13:48:03 +01:00
Pete Batard
f8aacf0703 Add Windows 11 22H2 v1 builds
* "How many Microsoft engineers does it take to release the ISO of a light bulb?"
* This addresses #45 by restoring a working Windows 11 22H2 download, though it
  remains to be seen if the ISO for 22H2 v0 will be accessible ever again...
2022-10-01 13:59:42 +01:00
Pete Batard
24a7a04d78 Update README 2022-09-23 17:36:21 +01:00
Pete Batard
eefc2453c4 Fix handling of parentheses for -Lang option
* Closes #29
2022-09-23 17:02:36 +01:00
Pete Batard
ed1a6b31a6 Fix Add-Type warnings being treated as errors on PS < 7.0
* Closes pbatard/rufus#2030
2022-09-23 16:47:44 +01:00
Pete Batard
9beb231b78 Fix Windows 7 "Referer header" error
* Closes #44
* Also fix incorrect build number for Windows 11 22H2
2022-09-21 16:59:01 +01:00
Pete Batard
ce7cb583e5 Add Windows 11 22H2 builds 2022-09-20 22:57:29 +01:00
William Bulin
0287fe274e Fixed Windows 10/11 ISO downloads
* Closes #41
* Closes #42
2022-08-13 15:08:20 +01:00
Pete Batard
129e5d6f5c Disable Windows ISO downloads
* Per #41 Microsoft appear to have altered their website to make it hostile to our script.
* Considering that trying to troubleshoot this is likely to take a long while, and that I
  sure could use some help with it, add a notice about this whole mess...
2022-08-12 14:02:34 +01:00
Pete Batard
79bcf10633 Add Shell 2.2 22H1 download 2022-05-28 15:21:05 +01:00
Pete Batard
35b8863c0c Bump version and update signing script for EV cert 2022-01-26 21:49:05 +01:00
Biswapriyo Nath
bb2c04cb07 Add Windows 11 21H2 v1 22000.318 builds
* Closes #35
2022-01-26 21:49:04 +01:00
Pete Batard
e1535ba775 Add Windows 10 21H2 19044.1288 builds 2021-11-16 21:04:41 +00:00
Muhammad Hussein Ammari
2a139583ce Update README.md (#27)
* https://www.microsoft.com/software-download/Windows8ISO
* https://www.microsoft.com/software-download/Windows10ISO
These links will be redirected to the following site:
https://www.microsoft.com/en-us/software-download
2021-10-07 10:16:29 +01:00
Pete Batard
e293e97bac Add Windows 11 downloads
NB: No Edu yet
2021-10-04 22:47:54 +02:00
Biswapriyo Nath
b1eebac8dc Add Windows 10 Redstone 5 17763.379 builds
* Closes #25
2021-09-25 21:11:17 +01:00
Pete Batard
8508ac6164 Add UEFI Shell 2.0 ISO downloads
* Also retrieve archs from the GitHub releases
* Also add Shell 2.2 21H2 download
2021-08-30 21:41:07 +01:00
Pete Batard
eac06c958f Update README.md 2021-08-24 16:49:42 +02:00
Pete Batard
2ee5f896d3 Add UEFI Shell bootable ISO downloads 2021-08-24 16:43:44 +02:00
Pete Batard
28725b287c Update README.md 2021-08-19 23:00:56 +02:00
Pete Batard
b7331f7873 Fix download of Windows 10 1507
* This versions uses weird SkuIds ('FQC-08932', 'FQC-08929', ...) that aren't integers...
* Closes pbatard/rufus#1769
2021-08-19 22:48:59 +02:00
Pete Batard
6160db3c66 Improve download handling for commandline
* Report the download size and handle errors
* Also improve exit code and verbosity handling
2021-08-15 13:44:38 +02:00
flx5
8b40c85d76 Add Commandline support
* Also fix a regression introduced by previous commit
* Closes #15
* Closes #24
2021-08-07 23:32:09 +02:00
Pete Batard
f70836e6c1 Split stages into separate function calls
* This is based on work done by flx5 in branch https://github.com/flx5/Fido
2021-08-06 22:39:34 +02:00
Pete Batard
af17001505 Add Windows 7 en-US ISO downloads
* Because why not?
2021-06-10 11:42:44 +01:00
Pete Batard
43adf47d5d Sign our script
* Because why not, and some folks might have policies where this could help.
2021-05-26 17:32:36 +01:00
Pete Batard
99f6f246b8 Add Windows 10 21H1 19043.985 builds
* https://support.microsoft.com/en-us/topic/windows-10-update-history-1b6aac92-bf01-42b5-b158-f80c6d93eb11
2021-05-22 17:34:07 +01:00
Pete Batard
36e9b4420c Remove DisableFirstRunCustomize related options
* No longer needed, since we are not invoking IE behind the scenes any more.
* Also update "fake" Firefox version range.
2021-05-22 13:35:51 +01:00
Pete Batard
6d630f83f2 Switch to basic parsing everywhere and perform our own DOM handling
* Addresses #19
* Also fix PowerShell 7.1.3 warnings
2021-05-13 14:10:12 +01:00
Pete Batard
ee0393cb74 Update version and copyright year 2021-01-30 02:55:42 +00:00
isos4all
a8abb94a16 Add Windows 10 20H2 19042.631 builds
* Microsoft updated 20H2 in December. Make sure we enable those downloads too.
* Closes #21
2021-01-30 02:53:59 +00:00
Pete Batard
15a48fe24f Fix script failure with PowerShell 7.x
* Won't help though, since Microsoft forcibly removed the ability to
  parse HTML in newer PowerShell, which we need...
* Also fix session variable not being set.
* Closes #19
2020-11-16 17:26:11 +00:00
Pete Batard
e0c1015ade Add Windows 10 20H2 19042.508 builds 2020-10-21 14:58:08 +01:00
Pete Batard
46c399ecd7 Add Windows 10 20H1 19041.264 builds
* Also enable going back on error
2020-05-27 22:13:51 +01:00
Pete Batard
445ca5c074 Merge pull request #13 from pbatard/whitesource/configure
Configure WhiteSource Bolt for GitHub
2020-04-14 18:09:08 +01:00
whitesource-bolt-for-github[bot]
037cd1ad9b Add .whitesource configuration file 2020-04-14 17:08:12 +00:00
Pete Batard
aa378cad13 Fix handling of '&nbsp;' in product name
* Some locales (e.g. Russian) will return something like "Windows&nbsp;10"
  for the product name which threw our JSON conversion off
* Also fix a typo
* Closes #12
2019-11-23 21:52:04 +00:00
Pete Batard
3c4fafa207 Add Windows 10 19H2 18363.418 builds 2019-11-12 22:57:50 +00:00
Pete Batard
a405ebf79c Add Windows 10 19H1 18362.356 builds
* Since Microsoft now appears to do "refreshes" of refresh versions...
* This is *NOT* 19H2, which has not been officially released as an ISO yet.
2019-10-30 12:39:56 +00:00
Pete Batard
b0599d7a94 Update Readme
* Fix typos, improve style, etc.
2019-07-14 00:04:12 +01:00
7 changed files with 1066 additions and 457 deletions

View File

@@ -2,7 +2,8 @@
root = true
[*]
trim_trailing_whitespace = true
insert_final_newline = true
# Must use a BOM else Unicode strings will not display
charset = utf-8-bom
insert_final_newline = true
indent_style = tab
trim_trailing_whitespace = true

3
.gitattributes vendored
View File

@@ -1,3 +1,6 @@
* text=auto
*.ps1 eol=crlf
*.sh eol=lf
.gitattributes export-ignore
.gitignore export-ignore
sign.sh export-ignore

1316
Fido.ps1

File diff suppressed because it is too large Load Diff

View File

@@ -1,35 +0,0 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>6CAFC0C6-A428-4d30-A9F9-700E829FEA51</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>Fido</RootNamespace>
<AssemblyName>Fido</AssemblyName>
<Name>Frida</Name>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup />
<ItemGroup>
<Compile Include="Fido.ps1" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Target Name="Build" />
<Import Project="$(MSBuildExtensionsPath)\PowerShell Tools for Visual Studio\PowerShellTools.targets" Condition="Exists('$(MSBuildExtensionsPath)\PowerShell Tools for Visual Studio\PowerShellTools.targets')" />
</Project>

View File

@@ -1,25 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.271
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F5034706-568F-408A-B7B3-4D38C6DB8A32}") = "Fido", "Fido.pssproj", "{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AD54CEAE-0992-4213-BEDB-8F1CF98A9F22}
EndGlobalSection
EndGlobal

137
README.md
View File

@@ -1,5 +1,5 @@
Fido: Full ISO Download Script (for Windows retail ISOs)
========================================================
Fido: A PowerShell script to download Windows and UEFI Shell ISOs
=================================================================
[![Licence](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat-square)](https://www.gnu.org/licenses/gpl-3.0.en.html)
[![Github stats](https://img.shields.io/github/downloads/pbatard/Fido/total.svg?style=flat-square)](https://github.com/pbatard/Fido/releases)
@@ -7,26 +7,32 @@ Fido: Full ISO Download Script (for Windows retail ISOs)
Description
-----------
Fido is a PowerShell script that is primarily designed to be used in [Rufus](https://github.com/pbatard/rufus) but that
can also be used in standalone fashion, and that automates access to the official Windows retail ISO download links.
Fido is a PowerShell script that is primarily designed to be used in [Rufus](https://github.com/pbatard/rufus), but that
can also be used in standalone fashion, and whose purpose is to automate access to the official Microsoft Windows retail
ISO download links as well as provide convenient access to [bootable UEFI Shell images](https://github.com/pbatard/UEFI-Shell).
We decided to create this script because, while Microsoft does make retail ISO download links freely and publicly
available on their website (at least for Windows 8 and Windows 10), it only does so after actively forcing users to
jump through a lot of unwarranted hoops, that create an exceedingly counterproductive, if not downright unfriendly,
consumer experience, which greatly detracts from what people really want (direct access to ISO downloads).
This script exists because, while Microsoft does make retail ISO download links freely and publicly available (at least
for Windows 8 through Windows 11), up until recent releases, most of these links were only available after forcing users
to jump through a lot of unwarranted hoops that created an exceedingly counterproductive, if not downright unfriendly,
consumer experience, that greatly detracted from what people really want (direct access to ISO downloads).
As to the reason one might want to download Windows __retail__ ISOs, as opposed to the ISOs that can be generated by
Microsoft's own Media Creation Tool (MCT), this is because it is only with an official retail ISO that one can assert
with complete certainty whether its content has been altered in any way or not. Indeed, retail Microsoft's ISOs are the
only ones you will be able to obtain an official SHA-1 for (from sites [such as this one](https://msdn.rg-adguard.net/public.php))
allowing you to be 100% certain that the image you are using is non corrupted and safe to use.
As to the reason one might want to download Windows __retail__ ISOs, as opposed to the ISOs that are generated by
Microsoft's own Media Creation Tool (MCT), this is because using official retail ISOs is currently the only way to
assert with absolute certainty that the OS content has not been altered. Indeed, because there only exists a single
master for each of them, Microsoft retail ISOs are the only ones you can obtain an official SHA-1 for (from MSDN, if you
have access to it, or from sites [such as this one](https://msdn.rg-adguard.net/public.php)) allowing you to be 100%
sure that the image you are using has not been corrupted and is safe to use.
This, in turn, offers assurance that the content __YOU__ are using to install your OS, and which it is indeed critical
to validate beforehand if you care about security, does matches bit for bit the one that Microsoft officially released.
This, in turn, offers assurance that the content __YOU__ are using to install your OS, which it is indeed critical to
validate beforehand if you have the slightest concern about security, does match, bit for bit, the one that Microsoft
released.
On the other hand, because no two MCT ISOs are the same (due to MCT always regenerating the ISO content on the fly)
it is impossible to get the same kind of assurance from non-retail ISOs. Hence the need to provide users with a much
easier and less restrictive way to access official retail ISOs...
On the other hand, regardless of the manner in which Microsoft's Media Creation Tool produces its content, because no
two MCT ISOs are ever the same (due to MCT always regenerating the ISO content on the fly) it is currently impossible to
validate with absolute certainty whether any ISO that was generated by the MCT is safe to use. Especially, unlike what
is the case for retail ISOs, it is impossible to tell whether an MCT ISO may have been corrupted after generation.
Hence the need to provide users with a much easier and less restrictive way to access official retail ISOs...
License
-------
@@ -36,40 +42,89 @@ License
How it works
------------
The script basically performs the same operation as one might perform when visiting either of the following URLs (that
is, provided that you have also changed your `User-Agent` browser string, since, when they detect that you are using a
version of Windows that is the same as the one you are trying to download, the Microsoft web servers at these addresses
redirect you __away__ from the pages that allow you to download retail ISOs):
The script basically performs the same operation as one might perform when visiting the following URL (that is, in the
case of Windows 10, provided that you have also changed your `User-Agent` browser string, since, the Microsoft web
servers detect that you are using a version of Windows that is the same as the one you are trying to download, they
may redirect you __away__ from the page that allows you to obtain a direct ISO download link):
* https://www.microsoft.com/software-download/Windows8ISO
* https://www.microsoft.com/software-download/Windows10ISO
https://www.microsoft.com/en-us/software-download
After visiting those with a full browser (Internet Explorer, running through the `Invoke-WebRequest` PowerShell Cmdlet),
to confirm that they are accessible queries web APIs on the Microsoft servers to first request the language selection
available for the for the version of Windows that was selected, and then the download links for the various architecture
enabled for that version + language combination.
After checking basic access to the Microsoft software downloads website the script first queries the web API from the
Microsoft servers, to request the language selection available for the version of Windows selected, and then requests
the actual download links, for all the architectures available for that language + version.
Requirements
------------
PowerShell 3.0 or later is required. But the script does detect if you are using an older version and points you to the
relevant PowerShell 3.0 download page if needed, which should only be the case if you are running a vanilla version of
Windows 7.
Windows 8 or later with PowerShell. Windows 7 is __not__ supported.
Also, because Internet Explorer is being used behind the scenes, if you haven't gone through the first time setup for
Internet Explorer, you may receive an error about it when running the script. If that is the case, then you need to
make sure that you manually launch IE at least once and complete the setup.
Commandline mode
----------------
Note that, if running this script elevated, this annoyance can be avoided by using the `-DisableFirstRunCustomize`
option (which basically __temporarily__ creates the key of the same name in the registry __if__ it doesn't already
exist, to bypass that behaviour).
Fido supports commandline mode whereas, whenever one of the following options is provided, a GUI is not instantiated
and you can instead generate the ISO download from within a PowerShell console or script.
Note however that, as of 2023.05, Microsoft has removed access to older releases of Windows ISOs and as a result, the
list of releases that can be downloaded from Fido has had to be reduced to only the latest for each version.
The options are:
- `Win`: Specify Windows version (e.g. _"Windows 10"_). Abbreviated version should work as well (e.g `-Win 10`) as long
as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected.
You can obtain a list of supported versions by specifying `-Win List`.
- `Rel`: Specify Windows release (e.g. _"21H1"_). If this option isn't specified, the most recent release for the chosen
version of Windows is automatically selected. You can also use `-Rel Latest` to force the most recent to be used.
You can obtain a list of supported versions by specifying `-Rel List`.
- `Ed`: Specify Windows edition (e.g. _"Pro/Home"_). Abbreviated editions should work as well (e.g `-Ed Pro`) as long
as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected.
You can obtain a list of supported versions by specifying `-Ed List`.
- `Lang`: Specify Windows language (e.g. _"Arabic"_). Abbreviated or part of a language (e.g. `-Lang Int` for
`English International`) should work as long as it's unique enough. If this option isn't specified, the script attempts
to select the same language as the system locale.
You can obtain a list of supported languages by specifying `-Lang List`.
- `Arch`: Specify Windows architecture (e.g. _"x64"_). If this option isn't specified, the script attempts to use the same
architecture as the one from the current system.
- `GetUrl`: By default, the script attempts to automatically launch the download. But when using the `-GetUrl` switch,
the script only displays the download URL, which can then be piped into another command or into a file.
Examples of a commandline download:
```
PS C:\Projects\Fido> .\Fido.ps1 -Win 10
No release specified (-Rel). Defaulting to '21H1 (Build 19043.985 - 2021.05)'.
No edition specified (-Ed). Defaulting to 'Windows 10 Home/Pro'.
No language specified (-Lang). Defaulting to 'English International'.
No architecture specified (-Arch). Defaulting to 'x64'.
Selected: Windows 10 21H1 (Build 19043.985 - 2021.05), Home/Pro, English International, x64
Downloading 'Win10_21H1_EnglishInternational_x64.iso' (5.0 GB)...
PS C:\Projects\Fido> .\Fido.ps1 -Win 10 -Rel List
Please select a Windows Release (-Rel) for Windows 10 (or use 'Latest' for most recent):
- 21H1 (Build 19043.985 - 2021.05)
- 20H2 (Build 19042.631 - 2020.12)
- 20H2 (Build 19042.508 - 2020.10)
- 20H1 (Build 19041.264 - 2020.05)
- 19H2 (Build 18363.418 - 2019.11)
- 19H1 (Build 18362.356 - 2019.09)
- 19H1 (Build 18362.30 - 2019.05)
- 1809 R2 (Build 17763.107 - 2018.10)
- 1809 R1 (Build 17763.1 - 2018.09)
- 1803 (Build 17134.1 - 2018.04)
- 1709 (Build 16299.15 - 2017.09)
- 1703 [Redstone 2] (Build 15063.0 - 2017.03)
- 1607 [Redstone 1] (Build 14393.0 - 2016.07)
- 1511 R3 [Threshold 2] (Build 10586.164 - 2016.04)
- 1511 R2 [Threshold 2] (Build 10586.104 - 2016.02)
- 1511 R1 [Threshold 2] (Build 10586.0 - 2015.11)
- 1507 [Threshold 1] (Build 10240.16384 - 2015.07)
PS C:\Projects\Fido> .\Fido.ps1 -Win 10 -Rel 20H2 -Ed Edu -Lang Fre -Arch x86 -GetUrl
https://software-download.microsoft.com/db/Win10_Edu_20H2_v2_French_x32.iso?t=c48b32d3-4cf3-46f3-a8ad-6dd9568ff4eb&e=1629113408&h=659cdd60399584c5dc1d267957924fbd
```
Additional Notes
----------------
Because of it's intended usage with Rufus, this script is not designed to cover all possible retail ISO downloads, but
mostly those that the general public are likely to use. For instance, we currently have no plan to add support for
LTSB/LTSC Windows 10 ISOs downloads.
Because of its intended usage with Rufus, this script is not designed to cover every possible retail ISO downloads.
Instead we mostly chose the ones that the general public is likely to request. For instance, we currently have no plan
to add support for LTSB/LTSC Windows ISOs downloads.
If you are interested in such downloads, you are kindly invited to visit the relevant download pages from Microsoft
If you are interested in such downloads, then you are kindly invited to visit the relevant download pages from Microsoft
such as [this one](https://www.microsoft.com/evalcenter/evaluate-windows-10-enterprise) for LTSC versions.

View File

@@ -20,6 +20,8 @@ sign_file() {
fi
}
# Update the Authenticode signature
MSYS2_ARG_CONV_EXCL='*' "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool" sign /v /sha1 fc4686753937a93fdcd48c2bb4375e239af92dcb /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 Fido.ps1
read -s -p "Enter pass phrase for `realpath $PRIVATE_KEY`: " PASSWORD
echo
# Confirm that the pass phrase is valid by trying to sign a dummy file