User setup for Windows
Announced last release, the user setup package for Windows is now available on stable. Installing the user setup does not require Administrator privileges as the location will be under your user Local AppData (LOCALAPPDATA) folder. User setup also provides a smoother background update experience.
Download User Setup
If you are a current user of the system-wide Windows setup, you will be prompted to install user setup, which we recommend using from now on. Don't worry, all your settings and extensions will be kept during the transition. During installation, you will also be prompted to uninstall the system-wide setup.
Reference: https://code.visualstudio.com/updates/v1_26#_user-setup-for-windows
Answer from Surenthar Pitchai on Stack OverflowUser setup for Windows
Announced last release, the user setup package for Windows is now available on stable. Installing the user setup does not require Administrator privileges as the location will be under your user Local AppData (LOCALAPPDATA) folder. User setup also provides a smoother background update experience.
Download User Setup
If you are a current user of the system-wide Windows setup, you will be prompted to install user setup, which we recommend using from now on. Don't worry, all your settings and extensions will be kept during the transition. During installation, you will also be prompted to uninstall the system-wide setup.
Reference: https://code.visualstudio.com/updates/v1_26#_user-setup-for-windows
I installed the user version side-by-side with the system version with no problems. The basic differences between the two is that the system version installs on the file system like every other app. The user install is basically a click-once (or web installer) version that installs in the User folder of the machine.
The settings made to VS Code in the system version save for Everybody on the computer and the user version the settings are only for the user. I find that the behavior of the user version is a bit annoying for me because I have reasons to want to open multiple copies of VS Code at the same time and the user version only allows one instance. Otherwise, there's not really anything different between the two as far as I can tell.
installation - Installer vs. zip or executable exe? - Stack Overflow
Should I use the User or System Installer?
Installer vs. zip or executable exe?
What's the difference between VSCodium, VSCodiumSetup and VSCodiumUserSetup installation files?
What you're really asking is:
How does an installer work?
A bit of background.

In the Before Times, man did not have such things as "installers." Software was run directly off of floppy disks (and none of that rigid 3.5" crap, I'm talking disks that flopped), like God intended.
Then came the first home computers with persistent hard drives. For the first time, it made sense to copy a program off a disk and have it stick around.
But programs still worked the way "portable" applications do today: you copied them as-is and ran them as-is.
Then operating systems began to get more complicated.

Windows introduced this notion of a registry: a central location where program and operating system configuration could be stored. Software authors began using this registry. Its arcane architecture and user-hostile editing utility (the infamous regedit.exe) made it the perfect place to store shareware information -- how many days you have left on your trial, for example.
This happened around the same time that programs began to be too large to fit -- uncompressed -- on a single floppy disk. A way was needed to split a program onto multiple disks. Since it wasn't very user-friendly to require the user to have e.g. a ZIP extractor installed (remember, this was before ubiquitous Internet), Windows programs began to be shipped with installers. You can think of these as basically portable versions of WinZIP whose sole purpose was to reassemble and extract a compressed file.

These days, installers serve a number of other purposes:
- providing a convenient user interface
- prompting the user to accept a click-through end-user license agreement (EULA)
- prompting the user for CD keys (though this is being phased out for many systems in favor of digital distribution)
- asking the user to register their software
and so on. They may also serve as DRM vehicles, validating CDs and decrypting data to prevent villainous individuals (yarr) from brrreakin' ye olde DMCA.
At their heart, they aren't any more complex than in the Windows 95 days -- a glorified unzip program.
Sidenote: Where does the installer get 5GB of data from 200MB of archives if not the Internet?
That's high, though there are plenty of ways you could get that compression ratio. Imagine a complex game whose world is defined in verbose XML -- that's readily compressible. You could even get that back in the old WinZIP days.
A zip file can only hold some files and then you unzip and get those files as is.
An installer however can be a very complicated program. It can create the needed files or folders structures, It can register the required dlls on your system, give you the options of the features that can be installed, Check your system for the compatibility and also be used as a wizard to guide you, step by step, to custom install you application.
If you have the choice of both; the installer typically just means that you get a nicer UI to choose the setup directory and some installation options, rather than having to use a seperate unzip utility and selectively remove the parts you don't want/need. Also, in the case of Windows programs an installer may also add entries to the registry (user selected options, key validation, other random stuff) which you won't get with a zip.
As Journeyman Greek said in his post, zip package is better for standalone 'installs' where you want portability and don't want to be tied down to a particular machine. This is because .zip naturally won't make any changes to registry, so unless they give you a .reg file to click on (very unlikely) it means that the entire directory is self-contained including any local .ini files.
Personally I prefer downloading the installer in general; because I get any customization options and it will setup any registry entries automatically as well.
Please note that any answer is highly dependent on the specific software you're looking at. What is true for Notepad++ may not be true for other software packages, it just depends on what the developers decided to publish.
The zip packages in the case of Notepad++ are standalone -- you can carry it with you on a thumb drive, the other one isn't. In many other cases, .exe files are blocked by some firewalls/content filters for 'safety' reasons, and zip files will work.
A more extreme case of that is PDF-XChange Viewer - which has zipped installers and exe installers (so if .exes are blocked you can download the .zip) two different msi installers and a portable zip.
I'd default to .exe or .msi if I want an installer unless it's blocked since I KNOW its an installer. I'd go for .zip if it didn't work (and I really needed the software). I'd default to .zip if i wanted a portable install, unless it was a zipped installer.
I have all my software that I install installed system-wide under "Program Files", so I don't get why one program should be an exception. Why should I want user-install? Is there really no way to force system-wide install these days?
Note that I'm not looking for descriptions of differences per se between system-wide and user install. I'm looking for what the actual benefits of user install are, and what the actual disadvantages/problems with system-wide install are.
So far I'm aware of one disadvantage of user install, and that's the fact that the start menu search can't find vscode no matter what, because it's automatically installed to a location that the start menu search ignores.
Basically a user install doesn't require admin rights. This means if you want to use VSCode on your work computer you don't need to get IT to install it.
It should still show up in the start menu. Assuming you selected the option in the installer it should have a shortcut somewhere in
%appdata%\Microsoft\Windows\Start Menu\Programs`
Finally Microsoft does provide a system install version that sounds like what you are looking for. It's located on the download page: https://code.visualstudio.com/Download
you should default to user install and only use system install when necessary. principle of least power and whatnot.
i somehow always irreparably fuck up my python install on windows because of conflicts between system versions, local versions, system pip, local pip, it’s a fuckin mess. any seasoned python dev will tell you the solution is to use one version of python and only install packages locally, preferably through aggressive use of virtual environments.
the main benefit of user install is isolation and orthogonality. system programs are in program files, personal programs that you would want to keep with you across machines are to be installed locally.
this is less relevant these days now that people rarely share computers, but the idea is the same. i act as if there’s another user who uses my computer under a different account sometimes. some programs should be universal, like photo editing software, video players, etc., while it isn’t really important that everyone have access to my customized text editor or the 800 million fonts i download.
The installer is typically there to make things easier for the end user. It does some combination of the following:
- Unzipping
- Creation of directories
- Installation of required runtimes (redistributable like: .Net, Visual C++, Direct x)
- Registration with the OS (for later clean uninstall)
- Display beautiful, beautiful screenshots to prepare the player for your game while it works.
- Offering the user the chance to register their game
- Downloading updates for the assets or patches for the game
- Add icons to the start menu or the desktop
- Set correct permissions for various game directories (temp folder, save directory, etc.)
- Just install it already, allow the user to mindlessly click next and get to playing the game!
An installer abstracts the process of deploying complex pieces of software infrastructure, which is usually contained within an archive, through a convenient, self-sufficient user interface.
This UI can be graphical or based on text which is output on a command-line such as the unix shell (e.g. bash). In case of graphical installers, most often a so called installation-bootstrapper is used, in the latter case, installation scripts which can be bash-scripts, Microsoft batch scripts, or other any scripting language which runs on a command line.
In the simplest case an application is simply an executable file, with the operating system knowing what to do with the file in order to run it. The application file may reside in a folder with subfolders and other auxiliary files, packed into one archive. In this case no installer may be needed.
For complex software, entire software platforms and tight integration with the underlying operating system infrastructure may be desirable, for instance to enforce the copyright of a software product.
Many installers on Windows provide an /e or /extract flag. e.g. setup.exe /e to allow extraction of the archive's contents without the installer running its installation script.
I recently needed to do just that.
Towards portability
Installers have almost become a norm for delivering professional software, no matter how simple the underlying software assets. With an increasing number of computer savvy users and the desire to migrate ones applications from one desktop to the next, portable software, often delivered in a simple archive, is becoming increasingly popular.
( I don't know how much time in total I have spent on installers, but it is definitely on the order of days. )
Tasks the installer may handle, are:
- unpacking (often using exotic, high compression archivers)
- ensuring system hardware requirements
- ensuring sufficient hard-disk space
- ensuring software platform runtime requirements (e.g. 'redistributables')
- checking for newer software updates
- downloading the software from a remote repository
- creating and/or updating program files and folders
- create configuration files, registry entries or environment variables
- install sofware drivers, mount or unmount devices
- increase accessibility for everyday users, by explaining installation steps, creating links, shortcuts
- promote the own sofware through bookmarks, etc...
- create incentive for the user to actually startup the software, by presenting the keypoints of the software during the installation, slide by slide
- create additional revenue, through software-bundling
- configure kernel-modules and automatically running components (e.g. daemons, windows-services)
- automatic patching of the sofware
- setting folder, file and user permissions
- creating GUIDs to couple the software to a specific installation-instance and for instance, prevent portability
... If you can think of other points, let me know and I will incorporate them.
It very much depends on your target audience, and what your installer needs to accomplish.
If your audience is technically savvy, and the installer just has to extract some files, and create shortcuts, I probably wouldn't bother.
If you need to modify system variables, register services, etc, definitely create an installer to make life easier for your users - regardless of how technically savvy they are.
You can always offer the option of installer / no installer, and let your users decide what they want. The number of downloads and resulting support requests will tell you whether you should utilize one or not.
And on the subject of the actual setup: Can't that be done on the first startup?
uTorrent used to do this (I'm not sure if it still does... I update automatically) and I found it a little confusing at first, since I'm used to installers. For users that are possibly clueless though, it's perfect.
For more complicated applications that have multiple files installed to several locations, I think it's better to have an installer. For a series of products we produce where I work, we have several 'flavours' of installer for each product: auto-update installers can be smaller as we know the user already has prerequisites. New users, though, get a larger installer.
I'm trying to get OpenRCT2 and followed the quickstart guide. However, as all of you probably know it leads to a download page with both an installer and a Portable Zip file. What is the difference between these two files, and do I need both?
just a different way to install, if you happen to prefer extracting everything yourself. the only difference is that the installer will automatically add shortcuts to your start menu/desktop.
don't download both, you only need one, they both contain the same files.
Generally, broadly speaking, an installer will add start menu icons and desktop icons. The portable installer doesn't do this, and you can just unzip and run it as is
What you're really asking is:
How does an installer work?
A bit of background.

In the Before Times, man did not have such things as "installers." Software was run directly off of floppy disks (and none of that rigid 3.5" crap, I'm talking disks that flopped), like God intended.
Then came the first home computers with persistent hard drives. For the first time, it made sense to copy a program off a disk and have it stick around.
But programs still worked the way "portable" applications do today: you copied them as-is and ran them as-is.
Then operating systems began to get more complicated.

Windows introduced this notion of a registry: a central location where program and operating system configuration could be stored. Software authors began using this registry. Its arcane architecture and user-hostile editing utility (the infamous regedit.exe) made it the perfect place to store shareware information -- how many days you have left on your trial, for example.
This happened around the same time that programs began to be too large to fit -- uncompressed -- on a single floppy disk. A way was needed to split a program onto multiple disks. Since it wasn't very user-friendly to require the user to have e.g. a ZIP extractor installed (remember, this was before ubiquitous Internet), Windows programs began to be shipped with installers. You can think of these as basically portable versions of WinZIP whose sole purpose was to reassemble and extract a compressed file.

These days, installers serve a number of other purposes:
- providing a convenient user interface
- prompting the user to accept a click-through end-user license agreement (EULA)
- prompting the user for CD keys (though this is being phased out for many systems in favor of digital distribution)
- asking the user to register their software
and so on. They may also serve as DRM vehicles, validating CDs and decrypting data to prevent villainous individuals (yarr) from brrreakin' ye olde DMCA.
At their heart, they aren't any more complex than in the Windows 95 days -- a glorified unzip program.
Sidenote: Where does the installer get 5GB of data from 200MB of archives if not the Internet?
That's high, though there are plenty of ways you could get that compression ratio. Imagine a complex game whose world is defined in verbose XML -- that's readily compressible. You could even get that back in the old WinZIP days.
A zip file can only hold some files and then you unzip and get those files as is.
An installer however can be a very complicated program. It can create the needed files or folders structures, It can register the required dlls on your system, give you the options of the features that can be installed, Check your system for the compatibility and also be used as a wizard to guide you, step by step, to custom install you application.