Having experienced the misery of repeated errors with MikTeX on MS Windows, I felt compelled to say what eventually worked for me.
My problem: Firewall at work prevented full download. With minimal installation, intermittent & frustrating issues with missing packages. (I use LyX which of course depends on TeX).
Attempted solution: On home PC, while attempting to download full copy into directory, multiple issues with "MikTeX encountered an internal error", and bizarre failure to identify an 'appropriate' directory. Others appear to have had similar problems on the internet, with varying levels of frustration and a lot of vague/unhelpful advice. MikTeX console was actively hostile with messages like "MikTeX console is already running", or (when accessible) failing to update anything.
This is a command line solution to downloading and eventually installing MikTeX. Open up a DOS console in Administrator mode.
First remove every vestige of MikTeX from home PC (Uninstall from Windows)
Made C:\MikTeX directory, with sensible-looking subdirectory called C:\MikTeX\setup (for all the .lzma and other files downloaded)
This is likely not vital, but also made potentially useful directories called common_config, common_data, common_install, common_link_target_directory
Downloaded setup (.zip) file from https://miktex.org/download
Extract executable from this zip: miktexsetup_standalone.exe. Put this in C:\MikTeX
Run this as follows (Can all be on one line):
The key parts are the download instruction; the local package repository specification; the complete package set; and the repository. Some of the other statements are likely unneeded but I was too frustrated at this point to play!
This downloaded the full 4GB without a hiccough.
I used the unsw.edu.au repo because it's close, but you can obtain a list of repositories and write this list to a text file using:
miktexsetup_standalone --list-repositories > repositories.txt
Once download completes, can copy this monster, and install for local user by saying:
miktexsetup_standalone --modify-path=yes --verbose --use-registry=yes
For more fancy considerations, try the command-line help:
Hope this helps some poor sufferer.