Going Dark in Windows - An Offline Single Player Gaming PC

Author: Jonathan Vasquez <jon@xyinn.org>
Last Updated: 2024-11-22-0800
Originally Posted: 2023-06-25-0210

Windows 10 22H2 (Gone Dark / Dark Island)

Image: The Dark Island. The above images show a Windows 10 machine that has no internet connection, but has been allowed LAN access to facilitate the sideloading of applications (to maximize security, you can have no ethernet or wifi connections as well, and use a traditional sneakernet approach to sideloading files, meaning you can put your files in an external hard drive and use that to transfer files between this machine and the outside world, essentially airgapping the machine at a basic level). The primary purpose of this set up is to continue gaming in an Offline Single Player DRM Free type of way, but prevent Microsoft from collecting telemetry information on us, and preventing them from forcing us to update and reboot our machines. Since the machine isn't connected to the internet, the Windows 10 activation servers cannot be reached, and thus the activation timer never starts up. This effectively means that we have a full and legal copy of Windows 10 that works immediately after installation, and never expires. We never need to worry that our games will stop working as long as we have backed up all of our files and dependencies, and we never need to worry about being spied on. This set up is philosophically modeled after the way I used to play games while I was growing up using the N64/PS1/Gameboy consoles.

The second image shows the Dark Island running a VM that's used as a convenient way to continue browsing the web, while still keeping the host relatively isolated. However, due to security concerns with attacks escaping out of the VM (especially since we are planning on using this even after Windows 10 hits EOL), I would recommend to restrict your usage of the VM to just downloading games from GOG. For everything else, you should use a physically separate machine that's running FreeBSD or Linux.

FreeBSD 13.2-RELEASE on my Framework Laptop

func main()

Ever since I was little, I've loved playing video games. Whether it was on NES, SNES, GB/GBC/GBA/SP/DS Lite, N64, PS1, PS2, or PC. I use to go to the local game store, look at all of the game boxes on a massive long wall, and just go through all of the systems with my eyes. I was a kid back then, and there was a divider where the workers would walk along by and help customers (plus helps prevent theft). I remember seeing the blue PS2 box, and I even remember seeing a white dreamcast box, that for whatever reason, never got sold. My favorite wall was the gameboy one. Once I bought the game, I went back home, unwrapped it, even smelled the booklet, and then popped in the cartridge, and turned it on (hopefully I have enough batteries O.O). My kiwi color Gameboy Color and Pokemon Red were the first two games I remember getting in my life, that made a significant impact. Even though I am now Buddhist (Early Buddhist, with material coming mostly from the Theravada Tradition / Pali Canon), Christmas was a very important and fun holiday for my family. They aren't religious but are culturally Catholic, so it was a nice day to get all of the families together and have a mega party. We would go to my late Aunt's house on Christmas Eve, and once 12:00 AM, 12/25 hit, it was time to unwrap the presents! The build up was intense. If my family got there at 5 pm, that could be a 7 hour wait, and that's a long time for a 5-6 year old (my age circa 1996, '91 baby). For that Christmas, my Mom and Aunt asked me what I wanted, and I said the Gameboy Color - Kiwi Color, and Pokemon Red. Problem was, the presents would be split between my Mom and Aunt, so even if my Mom was willing to give me the Gameboy Color before Christmas, I would have to wait till 12/25 12:00 AM for me to even be able to play the game! So we did it that way, my Mom got me the Gameboy Color, and my Aunt got me the Pokemon Red. I can still remember me sitting by the sofa, staring at the Christmas tree and looking at all the boxes underneath. I wasn't a dumb kid, I knew that the Pokemon Red box's physical dimensions wouldn't be that big, so a quick scan of all of the wrapped gifts under the tree allowed me to relatively easily, detect my package. Once it was found, it was just a long wait till midnight, and of course you already know what's going to happen at midnight!

One of the reasons I'm bringing all of this up is because there are a few critical things that have allowed me to continue reliving that beautiful experience even as I'm getting older, is primarily that You need to have control of your equipment, games, and environment. This means that you need to be able to still play what you have purchased (ideally for the remainder of your lifetime if technological advancements allow) regardless of what the company you bought it from does after that point. When you purchase something, you should never need to go back to the vendor in order to use the product. I'm not speaking about repairing the device, just straight up I bought this and now I wanna use it. For everything in our lives in the physical world (at least in the West), if we buy it, we own it. Why do corporations get away with selling people digital goods that can be taken away from them? I'm perfectly fine with proprietary software, I make some components of my software proprietary, but I also love open source and the majority of my stuff is open source. With that said, if we go back to all of the devices that I've mentioned above, they all have the following things in common:

  1. They were Single Player devices or Couch Co-Op.
  2. Most of them didn't have any ability to connect to the internet.
    • The PS2 had the ability with a separate Network Adapter purchase, but I was young and I didn't actually start using the internet in a more stable manner, until around 2003. Before that it was only some times that I was either able to get on via 56k, mostly through Netzero since they had a free 1 hour internet plan. This may have been due to a combination of my family not necessarily making a lot of money, combined with the fact that the internet at that time (1996/1997) wasn't something that everyone had nor used in society, at least not that I remember or saw in the the Brooklyn, NY area. It most likely was more due to the latter than the former. The other two ways of getting free internet was either:
      • To use K-Mart's Bluelight service, which was my favorite one (they even had a pretty catchy song playing when you were dialing in!)
      • Or pick up one of the many AOL CDs that were scattered all over NYC streets and buildings. You could see CDs even under cars that were street parked. I would go into different buildings and try to score a "30 day" (or whatever the longer length of time) free trial CD. There were AOL CDs that only gave you like 7 days or something, those were the "bad ones" haha.
  3. They were physical offline products.
    • This means that once you purchased it from the store, you can use the device and play your games whenever you want, for as long as you want, there are no software updates, games were more polished, the bugs that were in the game usually would be fun (like missingno in gen 1 pokemon, lvl 365 here I come, but only use missigno in Cable Link battles because you don't get experience there. If you use it in combat, it will level up and I think it dropped back to level 100, making it significantly less powerful). 25+ years later, as long as the physical circuits were working, and no hardware issues, you would guarantee reliving that experience. And nowadays we have many tools to make local backups (ROMs) of your own game collection catridges legally, which allow you to style play the Virgin ROM with your own aftermarket hardware, thanks to technological advancements. Which is what I've done with every game across all of my consoles as described later in this post.

Once games went digital, companies locked the software down (not code, but access to play). CD Keys (although I'm not against this one), SecuROM, and other things were built to prevent people from pirating (and also makes things more difficult for legal purchases that want to buy and backup their games, like myself), but things continued developing. To be clear, companies were already locking things down by even having proprietary cartridge formats, and other things ... people just didn't have the means to extract that information at that time. As mentioned before, I buy all of my games, because I do believe in supporting the developers, regardless whether they are a big company or an indie developer. I'll buy the game once, and after that, I never want to talk to you again. I own it, and I'll put it on all of my computers if I want. I don't tend to share my purchased binaries though since I do want to incentivize the purchase from the original vendors. It's a balancing act between trying to meet in the middle between consumer rights and vendor rights. I think most consumers are reasonable and can make moral/ethical decisions on whether or not they want to redistribute copyrighted binaries. I think if vendors aren't too greedy, and actually try to trust the consumers in supporting them, not charging insane rates, and then trying to also control if you could even play the game after purchase (mandatory online logins, forcing periodic verification, controlling the installation files - I love Steam, but I don't buy from them anymore (I use GOG now or I buy the CDs directly on eBay and then back them up). I do know that Steamworks is something that a vendor decides to use, and not all games on Steam have DRM, but Steam created a pretty effective DRM ecosystem (which I completely understand and I can accept it in some limited situations, like for streamed content, fine, but for an offline single player game (not multiplayer), it's unacceptable from the consumer perspective. To make matters worse, there isn't even a DRM label on the Steam games (or at least it may exist deep within the game page itself on the bottom right, but no easily visible DRM labeling filtering system). If Steam wants to be consumer friendly and help protect consumer rights, they would add a DRM label. This means that the vendor can decide if they want to use Steamworks DRM or not, but if they do, they get a label. This may seem like it's almost sabotaging the vendor's sales, maybe, but Steam being a platform for consumers also means that consumers should have full transparency when making a purchase. It's logical to tag any games that have DRM on Steam as DRM, and allow an easy search filter to just be able to see DRM-free options. This simple change would actually motivate me to come back and buy games on Steam, because if games are labeled, at least I can decide to buy the game or not, and I won't feel like Steam or the vendors are trying to sneak one on me and get a purchase. I'm ok with having a Steam account so that I can be able to re-download my games, but I'm not ok with a mandatory client though, and for DRM free games, Steam should also allow people to download the binaries of the DRM free game via the website from within their account. This is what GOG does. GOG's client is optional, but it does bring those nice features Steam has, while still respecting your rights. Steam having a 2 hour play time return window is ridiculous as well. Nobody can even really beat or experience a game in two hours. This one bit me personally before when I started experiencing technical issues when Wolcen first came out in 2020. I primarily bought that game because it allowed you to play the game on Offline Single Player (even with the Steam DRM), but problem was they released some updates that made it so my Single Player character never actually saved on disk (multiplayer was fine). I waited for months, patch after patch, and still nothing. I even reported the problem with a good amount of information from my trial and error debugging, and never got a response from Wolcen. I gave up on that game even though I was starting to enjoy it, and never went back. It's sad. But because I had played the game for prolly 20-50 hours in a few days (but didn't beat it, it's an ARPG, I was taking my time), and started experiencing unplayable errors, it was too late. This happened to be my last direct purchase on the Steam platform (February 15, 2020).

GOG has a 30 day return policy no questions asked essentially, they trust the consumers, and I won't take advantage of that trust and lie to get a refund. If I bought a game that I didn't like but there wasn't anything wrong with it, I would probably just eat the costs. Grim Dawn is an excellent Action RPG and they truly respect their customers / players. The base game and all of the expansions are completely DRM free, and you can even buy DRM free cosmetics (Loyalist's Packs) if you really want to continue supporting them in the meantime. I've bought Grim Dawn multiple times, for my wife, and for my sister, and even again when it came to GOG. Even after I had the DRM free versions, I still bought it as gifts to the mentioned people. I love Crate, and I'm sure I'll buy Farthest Frontier (assuming it's also going to be DRM free) just to give them more money. Although the game is looking to be amazing on its own merit.

Image: My oldest Steam entries are from when I redeemed by CS 1.5 and CZ CD-Keys into Steam a few months after Steam came out. I was around 13 years old and started using the internet a little bit more consistently. This was early 2000s and kids around my age (and probably parents as well) were starting to be a bit more connected (in the Brooklyn, NY area). At the time, I remember using a DSL connection, I still remember using 56k though. Internet cafes were usually on a T1 line.

Given that all the games I have or play now are DRM free Single Player games, given that I usually don't have much time in the day to focus on gaming (life, family, other interests, but trying to make more time ...), and also given that I have a huge catalog of games across GB/GBC/GBA and PC that I either haven't played, or want to replay, (and this is in addition to me continuing to play Diablo 2 (1.00-1.10) for 20 years already on and off), I literally don't have enough time to play all of these games, and I actually own them. They are sitting there, ready to be explored and enjoyed. So why would I buy a more modern game that basically restricts my rights, now I have a potentially impermanent game where I now need to ask for permission to play, post transaction, and I still don't have time to play it. Lol, it doesn't make sense. I guess impulse buying and going with whatever the new game the society is following is the reason for the purchase. But no, I'm good, I'm making my own decisions and going my own way. Corporations can keep their games. Vote with your wallet, act with your conscience. Every little bit counts, and it makes you feel better as well.

NOTE: All of the above cartridges and PC games have been backed up either with the BennVenn's Joey Jr ROM Dumper or Alcohol 120% (it has the best chance for success since it can also copy the SecuROM (or other) DRM's bad blocks, that usually trip up ISO mounters / game loaders. Although keep in mind that Alcohol 120% is proprietary and requires online activation. However, after contacting Alcohol Support, they were extremely helpful and were able to provide me with a customized and fingerprinted offline activation patch. Thus I can now use Alcohol 120% completely offline! If you need high quality software that can successfully backup your gaming CDs, I highly recommend supporting and purchasing Alcohol 120. This is not sponsored, I've just been a long time Alcohol 120 customer and have been very satisfied, especially after they accommodated my "Dark Island" offline gaming use case). I keep all the ROMs on my Anbernic RG35XXSP running muOS. This is an excellent device if you just care about GB/GBC/GBA emulation. I also recommend the Save The Heroes: Builders open source catridge reader.

So why all of this? Well after thinking of many different solutions for continuing to game on PC post Windows 10's EOL date of October 14, 2025, and Microsoft forcing Windows 11 users to have an online connection in order to use their computer before first use, I won't be upgrading to it. Which basically means that Windows 10 will be my last PC gaming platform, thus I need to make sure I have all the files necessary to be able to survive long term on Windows 10, regardless of what Microsoft or other companies do with any of the required original files. If I can keep the original files, for offline single player DRM free games that I already own, I can effectively freeze on Windows 10, and use it as a traditional gameboy, playstation 1 / 2, n64 - type of device. None of those devices have internet, nor did they get updated. Security wasn't a problem. The same goes with this approach. If I just freeze on Windows 10 for my current gaming computer (which is a recently built machine running an AMD Ryzen 9 7950X. 16 Core / 32 Threads, 64 GB DDR5 RAM (4x 16 GB), 2x M.2 1TB Drives, and an AMD Radeon XT 6900), and go offline, then I'm golden. The only thing is that I still need to get software onto the box, that's where my LAN comes in. I can sideload all of the stuff I want on that machine via the LAN (or you can just put the files on an external hard drive and copy them back onto the gaming computer). So now that means I can buy my games on GOG, or buy the CDs, put the files on my FreeBSD server, fetch it to the Wintendo via a SAMBA connection, install, and play the game. Of course, run only trusted applications since you won't be getting any security updates, virus definition updates, no updates, but other than that, you have a fully stable, forever working, gaming box. As long as you have no hardware failures, that will be a rock solid, reliable, gaming computer. Just like the game boy was. You have full ownership. Activation isn't even a problem now on Windows 10. If you have purchased it, you could technically allow it to connect quickly and then disconnect the Ethernet cable. However, if you install Windows without the Ethernet cable connected at all (because I never wanna receive any Microsoft updates, I don't want my data collected without my ability to choose, and I don't want to be forced to upgrade), then you'll need to activate Windows. Therefore I've decided never to let my legal copy of Windows activate, and never let Windows reach the public internet. I've been using this strategy for 1-2 years and it's worked great. Never allowing Windows to connect will leave you with a fully working copy of Windows that just says Unable to reach Microsoft activation servers in the activation window, due to the fact that since the OS can never reach Microsoft's servers, the activation timer never starts, and thus you always stay in the same state as if you were activated.

So that's why I've Gone Dark on Windows. No more internet for my Windows gaming computer, only local transfers are allowed, and I've never felt better and more in control. No worries of forced updates, telemetry collection, and all other shenanigans. It literally doesn't matter anymore, I'm not affected, I have a stable base snapshot, the Windows 10 22H2 ISO, and the computer. Even if Microsoft makes a new Windows 10 22H2 ISO with some fixes to make this lifestyle more difficult, people can just download one of the original Windows 10 22H2 ISOs, and confirm it's the original with the master hashes. This applies if you still wanna game on Windows XP, Windows 7 or any other older Windows. I've actually been doing this in VMs for a while, install a VM, use host only network, or something else that doesn't let the VM go on the internet, but still can see the local network. You could also use a Shared Folder within the VM and use your host as the transfer point from LAN to Gaming VM). Unfortunately it's hard to get good performance for gaming in a VM without GPU passthrough. Hopefully the technology continues to develop and become easier. It is trending in that direction. The Windows 10 ISO I'm using as my stable snapshot for the gaming machine is the Win10_22H2_English_x64v1.iso (2023 Update) with the following hash: bbb1b234ea7f5397a1906ee59187087c78374f35. It's safe to assume that any version of Windows 10 older than this hash will work.

You may also be thinking, why all of this effort, just game on Linux (or insert your favorite OS). The thing is, I love Windows for gaming. It may be nostalgia, but yea, I grew up with Windows as my gaming OS, everything is made for it, even the weird Windows quirks that a particular game you love has when you play, in a way, is part of the experience. I just want to turn on the computer, click the game, and play, exactly the way I remember it. Windows is great for that. I just don't want the baggage. Going dark is my solution.

So overall, the solution is actually really easy, especially once you are ready to mentally commit to this philosophy and take control of your purchases. If you like multiplayer games, that's fine. In that case you literally need internet so it makes sense (like a DRM free World of Warcraft kinda doesn't make sense, but I also did have a bad experience with Monster Hunter World because yea, even though the game can be played offline, the game itself is big enough and designed around multiple people playing. Like it was difficult for me to catch a damn flying bird all by myself because it was flying too quickly. It takes me 10 minutes just to walk to the spot that the bird landed in LOL, and then it would fly away again to a spot 15 min away? FML. At that point, I need to refine my definition of games I'm willing to buy to: Offline Single Player DRM-free games that are actually designed for Single Player.

So like I said earlier, what we wanna do is block Windows from accessing the internet, but we still want LAN communication. This could be done at the firewall level, but for me it's just one computer, isolated to just gaming, hence Wintendo. Security isn't the most important thing in this environment. We can just change the Network Adapter settings in the OS. Before installing Windows 10 22H2, make sure to unplug your Ethernet cable. You must use Windows 10 Pro since this allows you to make a local offline account. Then follow the steps below:

  1. Start -> Settings
  2. Network & Internet -> Advanced network settings -> Change adapter options
  3. Right click your ethernet adapter interface -> Properties. (If you are on wifi, then select your wireless interface). Basically anything that will be connecting to your LAN and that you don't want internet access to work for.
  4. Uncheck Internet Protocol Version 4 (TCP/IPv6) (or configure it if you need it). I personally disabled IPv6 completely because I just need IPv4 for this purpose, and I also don't want the machine to accidentally connect to the internet, if I ever enable IPv6 on my modem (and/or if the ISP also has working IPv6).
  5. Right click Internet Protocol Version 4 (TCP/IPv4) -> Properties
  6. Check Use the following IP address (this should automatically also set Use the following DNS server addresses).
  7. Set the IP address to an IP on your local network that doesn't conflict with your DHCP (maybe a static ip outside of the DHCP range). The Subnet mask should automatically be set to 255.255.255.0. Leave the Default gateway and Preferred DNS Server empty.
  8. Press OK and Close

That's basically it! Enjoy your life, be free, be happy. Let's play. Go dark!

fearedbliss

Other Options

Now at this point, we have two options:

  1. (Recommended): Use another computer as your main computer (or for downloading games for your Wintendo), and use an external hard drive to transfer the files over from that machine to the gaming machine (sneakernet). If you are going with a pure sneakernet setup, make sure to also disable any network interfaces in the gaming computer's BIOS and OS, and never connect an ethernet cable to it. Essentially creating a simple airgapped system.
  2. (Poses a security risk): Setup a Virtual Machine in VirtualBox for downloading games and any other internet related tasks. Due to the potential security risk, I recommend restricting your usage of the VM to just downloading games from GOG.

If you switch your virtual machine's network configuration from NAT to Bridged Adapter, you can share your host's network adapter with the guest directly. The Windows host will still have settings that prevent it from accessing the internet, and the guest will have its own completely different settings that allows it to access the internet. This means that we can download all of our games from GOG in the guest, and transfer it with no issues to our host via the LAN network at full speeds. I had issues with transferring files between the Host and Guest via VirtualBox's Shared Folders, for any games that required a large amount of disk space. But transferring over LAN was fine (i.e transferring the files from the guest to the NAS and then back to the host). Due to the security risk of attacks escaping from the VM, I don't recommend this approach. Use a separate machine instead for your regular computing and keep the gaming machine as isolated as possible.

Going Dark Tips

The following section will contain information for anything that may be relevant for "Going Dark".

Backing up and Restoring the Windows 10 Driver Store

Before you "Go Dark", you'll want to back up all of the drivers that your machine currently has. Since we aren't planning on going online with this machine, we won't be able to use the Windows Update platform to automatically detect the machine's hardware and auto-download the drivers. So while you are still in your current Windows 10 install, go ahead and apply all updates, make sure that devmgmt.msc doesn't show any missing drivers (or that you've got all the drivers you care about having), and once everything looks good, you can run the following command in Powershell (Run as Administrator):

Export-WindowsDriver -Online -Destination C:\store

Once it's done, all of the needed drivers will be in C:\store. Back up that directory to a safe location away from the current machine (USB, NAS, etc). Before saying "mission accomplished" and moving on, you'll want to test out that your driver solution is ready to go for the long haul. When you are ready, re-install Windows 10 on your current machine, and try restoring all of the drivers to make sure it's ready to go. If everything looks good, then you are good.

To restore the drivers after you install Windows, you can open up devmgmt.msc again, and follow the below steps for each device with a missing driver:

  1. Right click the device in question.
  2. Update driver.
  3. Browse my computer for drivers.
  4. Search for drivers in this location -> Set it to the folder containing your previously backed up driver store.
  5. Click Next.

It should automatically scan and find the correct driver. You may need to reinstall some particular drivers to get their corresponding control panel applications (like restoring the NVIDIA driver will properly restore the core driver, but you won't have the NVIDIA Control Panel without actually re-installing the NVIDIA driver through its installer).

Forcing the Windows 10 installer to show all versions

The Windows 10 installer will (by default), automatically detect the version of Windows 10 that your computer's firmware has, and auto-select it. For example, if your computer was sold to you with Windows 10 Home, then the default ISO will auto-select Windows 10 Home. However, since we are going dark, we can just use Windows 10 Pro and not have to worry about activation anyways since it's never going to go online. We can force the Windows 10 installer to reveal all options by creating a file in the sources directory called ei.cfg. Once you have that file created, place the following:

[Channel]
Retail

The Windows 10 installer should now show you all available Windows 10 versions on the installer, rather than auto-selecting the one matching the machine the installer is running on.

Installing .NET Framework 3.5 on Windows 10

If you want to install .NET Framework 3.5 in Windows 10 in an offline capacity, you'll need to follow the steps below. The .NET Framework 3.5 Offline (Full) Redistributable that is provided by Microsoft will not work on Windows 10. However, it's easy to enable it in an Offline Mode as long as you have the Windows 10 Installation.

So, after you install Windows 10, leave your USB (or w/e installation media) plugged in, assuming D:\ is the Windows 10 Installation Media, we can run the following in Powershell (Run as Administrator):

Enable-WindowsOptionalFeature -FeatureName "NetFx3" -Online -Source "D:\sources\sxs"

This will enable .NET Framework 3.5 on Windows 10.

Disabling Windows 10's Transparency Effects

If you are using Windows 10 inside a Virtual Machine (specifically VirtualBox), after you install the VirtualBox Guest Additions, your graphics will be severely distorted. This can be alleviated by turning off the Transparency Effects. If you installed Windows 10 and have already gone dark (or if your system is already activated), you can easily do the following:

  1. Right click the desktop
  2. Click "Personalize"
  3. Click "Colors" on the Left
  4. Scroll down until you see "Transparency effects".
  5. Uncheck it

However, if the machine got the chance to contact Microsoft's Activation servers and didn't find a key, the system will automatically start getting locked down, you will lose the ability to customize the system till a successful activation, and the activation countdown timer has most likely already begun. If this has already happened, I would recommend reinstalling and making sure you never allow the system to go online in the first place. However, given that there are many valid scenarios (particularly during tests or temporary retrieval of specific files from Windows within an isolated environment (such as a VM), we can instead go via the registry to turn off the effects:

  1. Open the Registry Editor (regedit.exe)
  2. Navigate to: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize
  3. Set EnableTransparency to 0. This should be a DWORD (32-bit) Value type.

Creating a Visual Studio 2022 Community Offline Installer

Getting and Backing Up the Visual Studio 2022 Community Files

For my particular case, I need to make sure I have a full development environment fully backed up, saved (on my NAS), and ready to be installed on a fresh, offline copy of Windows 10, so that I can continue developing Cactus long term, and any other Windows specific projects that I've decided to keep maintaining for Windows 7, and Windows 10 only.

The last toolchain I used and need was Visual Studio 2022 Community Edition, and I specifically also need .NET 4.6.2, which thankfully, is in one of the VS 2022 CE components. Given that I want to be a bit flexible about the future, I've decided to archive the entire Visual Studio 2022 Community Layout in English (by default it will download stuff for all languages). Downloading all of these files will of course require an internet connection. For this specific purpose, I decided to spin up a Windows 10 VM in VirtualBox in order to download all of these files in an isolated environment. Afterwards, I'll move over the layout to my NAS for safe keeping. My gaming laptop is also the development box for Cactus and any other Windows specific projects, so I'll fetch the layout files from my NAS later.

  1. Download the VS Community Bootstrapper (and keep this safe since we'll be using this when installing).
  2. Open Command Prompt with Admin Privileges.
  3. Navigate to where your bootstrapper is located and run the following:
vs_Community.exe --layout c:\VS-2022 --lang en-US

This will download all components in English, and save it to C:\VS-2022. At the time of writing this section (2023-07-07), the total download size was 48.3 GB. If you need a smaller, customized layout, you can check the links at the end of this section.

  1. After it's done, back up all of those files to an external device (my NAS in this case).

Installing Visual Studio 2022 Community (Offline)

Once you are ready to install it in an offline environment, you can do the following:

  1. Copy the layout files from your external device to your offline machine.

  2. Install the required certificates (if needed).

    I didn't need to do this on Windows 10 22H2 x64 v1 (2023 Update) with an ISO hash of bbb1b234ea7f5397a1906ee59187087c78374f35. If you are using this version, you can skip to the installation step immediately. If you are using another version of Windows 10, try the next step because it may already work.

    Now why is this necessary? The VS installer only installs files that have been verified. If you are using Windows 7 SP1, you'll need to install the certificates before it will work. You can navigate to the certificates folder in your layout folder and install each one by one. If it asks you for a password, just leave it blank.

  3. Once the certificates are installed, we can install Visual Studio.

    This step can be tricky because if you open the bootstrapper in the wrong folder, or you run it with the wrong commands, the installer will just say that there are missing files, and that it needs to go online. What worked for me was to run the bootstrapper from within the layout directory itself, with the following command:

    vs_Community.exe --noweb

There should already be an identical copy of the original bootstrapper you used to make the layout in the first place, in that folder (at least the hashes were the same for me). If you don't find it there, place your previously downloaded bootstrapper file in there and try again. It seems that the installer is smart enough to know that all of the files are in that same directory. That should be it! Make sure to do some workflow installation simulations to make sure everything is buttoned down properly in an offline environment before moving on, since who knows what will happen to the ecosystem over the years.

Links