Now add installers for bun, node, ruby, go, crystal, zig, and include winutil.LICENSE plus my own.

master
Zed A. Shaw 5 months ago
parent 642389d850
commit dbb8b8f6d2
  1. 21
      LICENSE
  2. 184
      README.md
  3. BIN
      bunjs.ps1
  4. BIN
      crystal.ps1
  5. BIN
      go.ps1
  6. BIN
      nodejs.ps1
  7. BIN
      ruby.ps1
  8. 23
      winutil.LICENSE
  9. BIN
      zig.ps1

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Zed A. Shaw
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,184 @@
# Windows Install Scripts for Real Programmers
This is a collection of automated installer scripts for "real programmers." These scripts will
install various base packages most programmers need, and then specific packages you'll need to work
in the language you choose. The scripts are based on [Chris Titus' Winutil](https://github.com/ChrisTitusTech/winutil) but redesigned to allow you to run the script as a normal user and becoming admin as needed. If you want more software then check out Chris' very nice script.
## How to Use It
First, you run the `base.ps1` script to get an initial setup of basic things all other languages
need. This allows you to then install any other languages very quickly:
```shell
irm https://learncodethehardway.com/setup/base.ps1 > base.ps1
powershell -executionpolicy bypass .\base.ps1
```
After this script runs you should be ready, so just pick the language to install and run it like
this:
```shell
irm https://learncodethehardway.com/setup/python.ps1 | iex
```
You can also save the script locally first and view it before running it:
```shell
irm https://learncodethehardway.com/setup/python.ps1 > python.ps1
powershell -executionpolicy bypass .\python.ps1
```
You can also use `winget` and/or `choco` to install what you want manually. See the instructions
below for your language to learn how to do that, or get the script and just look at it. Usually the
only thing each language script does is run some `winget` commands.
## Base Packages
The `base.ps1` script installs the following packages:
* [winget](https://github.com/microsoft/winget-cli) -- Package installer created by Microsoft.
* [chocolatey](https://chocolatey.org/) -- Additional package installer.
* [git](https://git-scm.com/) -- Installed via winget.
* [Windows Terminal](https://github.com/microsoft/terminal) -- The new Terminal package for Windows 10/11.
* [CMake](https://cmake.org/) -- Used in quite a lot of builds for plugins in other languages.
* [Visual C++ Redist 2015+](https://www.microsoft.com/en-us/download/details.aspx?id=48145) -- Also used in a lot of builds and runtimes.
* [Geany](https://www.geany.org/) -- A nice cross platform basic programmer's editor.
* [winlibs](https://winlibs.com/) -- The GCC toolchain compiled for Windows.
* [wizfile](https://antibody-software.com/wizfile/) -- An insanely useful file search tool, so useful I just include it always.
* [sqlite3](https://www.sqlite.org/) -- Another insanely useful tool that seems to be used in lots of projects.
* [ugrep](https://github.com/Genivia/ugrep) -- Another very useful tool for simply searching in files. If you want regular GNU grep
then start an Administrator Terminal and type `winget install GnuWin32.Grep`.
This sets you up with most things every programmer needs no matter what language, and if you already
installed something it will be skipped or upgraded instead. If you don't want to install something,
just edit the script at the end and remove that line.
Each language specific script then installs additional packages. Also, these scripts should be
compatible with each other since they won't install things more than once.
### `cpp.ps1` for C/C++
This script is meant for C/C++ programming and installs the following:
* [conan](https://conan.io) -- A very useful C++ package system that helps get access to C++ libraries.
* [meson](https://mesonbuild.com/) -- So far the best cross platform build tool I've found, but it does have it's own problems.
I also recommend you install [vcpkg](https://github.com/microsoft/vcpkg) to get access to even more C++ packages. Meson and CMake should use vcpkg installed packages.
To install yourself run:
```shell
choco install winlibs
choco install conan
choco install meson
```
The `winlibs` command is just to make sure it gets installed for people who don't use the `base.ps1`
script or if that script changes and doesn't install it as a base component. That means it may do
nothing since you already have `winlibs`.
### Either `nodejs.ps1` or `bunjs.ps1` for JavaScript
The `nodejs.ps1` script installs:
* [NodeJS LTS](https://nodejs.org/en) -- I default to the LTS version but you can change it to the
latest if you want.
To install this manually do:
```shell
winget install OpenJS.NodeJS.LTS
```
You can also install the latest version by using `OpenJS.NodeJS` instead of `OpenJS.NodeJS.LTS`.
The `bunjs.ps1` script installs:
* [Bun.js](https://bun.sh/) -- Keep in mind that I do not use this and I'm only including it to be
complete. If you have suggestions to improve this installer then let me know.
```shell
winget install Oven-sh.Bun
```
### `python.ps1` for Python
* [Anaconda](https://www.anaconda.com/) -- This is mostly because I use it in my course, so feel free to edit the script and not install this.
* [Python 3](https://apps.microsoft.com/detail/9ncvdn91xzqp?hl=en-mt&gl=MT) -- Yes, the one from the Microsoft store because it's the only Python installer that seems to be "allowed" to place itself in the PATH despite every other installer saying this is basically illegal.
To install yourseful run:
```shell
winget install Anaconda.Anaconda3
winget install Python.Python.3.12
```
### `ruby.ps1` for Ruby
* [ruby](https://www.ruby-lang.org/en/) -- I'm actually not very up on Ruby these days so advice on
the script welcome.
To install this yourself do:
```shell
winget install RubyInstallerTeam.Ruby.3.2
```
There is an alternative package that installs a "dev kit" but I'm not sure how this will interact
with the `winlibs` package and other things installed so far. If you have any information on which
one to use let me know.
```shell
winget install RubyInstallerTeam.RubyWithDevKit.3.2
```
### `go.ps1` for Go
* [go](https://go.dev/) -- The Go language.
To install this yourself use:
```shell
winget install GoLang.Go
```
### `zig.ps1` for Zig
* [Zig](https://ziglang.org/) -- The Zig language.
* [zigtools.zls](https://github.com/zigtools/zls) -- Zig Language Server.
To install this yourself use:
```shell
winget install zig.zig
winget install zigtools.zls
```
### `crystal.ps1` for Crystal
* [Crystal](https://crystal-lang.org/) -- The base crystal language.
To install this yourself use:
```shell
winget install CrystalLang.Crystal
```
## Contributing Installers
If you have a language that needs this kind of installer then feel free to grab one of these and
modify it. If you can test that works and want me to include it then do a patch or pull request
with your new script and I'll take a look. Due to the unsafe nature of these scripts I'll only be
accepting PRs from people with an identifiable presence online, an actual face picture, and full
real name. Basically, if I can't get you arrested for trying to hack people then I won't accept
your script.
Be sure to test your scripts under the following conditions:
1. Windows Home 10 -- Remember, the point is to make it easy for anyone to get your language, so Windows Pro is a non-starter.
2. As a __non-admin__ user. This is important, as if your script only runs as administrator then it's dead on arrival.
3. Users will have a second account that is admin which they can enter a password for, and the scripts currently automatically switch to administrator as needed.
## I'm a Real Programmer Too!
Yes you are little IDE user. You can hit F5 and then go on vacation while the rest of us turn your code into a whole deployed solution using real tools. Aren't you so cute.

Binary file not shown.

Binary file not shown.

BIN
go.ps1

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,23 @@
* NOTE: I use a few functions from Chris' winutil. Here's his license for those parts.
MIT License
Copyright (c) 2022 Chris Titus
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Binary file not shown.
Loading…
Cancel
Save