I used to work on line of business apps in C# and ASP.NET, and I was a big-time user of Visual Studio. Then, a few years ago, I switched jobs to work on iOS and Android apps and was issued a Mac for my primary developer machine, so I switched over to Visual Studio Code.
Recently I realized it had been quite a while since I used VS proper, so I decided to download the 2017 community edition and have a look.
I grabbed the installer and upon launch was greeted with a window reminiscent of Visual Studio's File > New Project dialog.
Cool! The installer was much nicer than previous versions. I was able to quickly see which components I needed, organized by "workloads," and dive a little deeper on the Individual Components tab. First-class installer support for UWP, Xamarin, Unity, Cordova, and even Linux apps. Awesome!
As I began to click and select my components, I noticed something felt slightly...different. The interface almost felt like a web app. Wouldn't that be funny, I thought, if this were actually a web app? But there was no way the VS installer was a web app...
... right?
For fun, let's just take a quick peek at the Task Manager.
There are six processes for the installer. While unusual, that doesn't necessarily indicate Electron. Let's check the command line each process was launched with.
Ah ha! A number of Electron-looking arguments here, including --type=gpu-process
. Okay, now let's go check the file system to confirm.
Yep! Definitely Electron! A resources directory containing an electron.asar
file is present, along with all the other files you typically see in an Electron app.
We've recently seen a lot of apps built with Electron/Chromium: everything from communication tools (Slack) to music players (Spotify)--heck, even terminal emulators (Hyper).
I've even used Electron to quickly build a game launcher frontend for one of my arcade machines. I chose it because it allowed me to leverage my existing knowledge of HTML/CSS/TypeScript to target Windows while developing on my Mac.
I'm pretty sure this is the first time I've seen it used for an installer. But I guess it shouldn't be too surprising, given that Visual Studio Code is also an Electron shell app.
This is definitely a new Microsoft!
(Side Note: I've written Node.js apps with lots of file system manipulation, and the asynchronous nature of JavaScript made it difficult. I would love to see a write-up from the VS team talking about the challenges of writing an installer in Node.js.)