Schoko Nougat

Mittwoch, 13. August, 2014

Zugegeben, der Titel ist eine schlechte Übersetzung des englischen Originals.
Unter Windows gibt es ein Tool NuGet - ein Paketmanager für Entwicklertools unter MS Windows. Chocolatey NuGet greift die Idee mitsamt Technologie auf und ist ein Paketmanager für (alle möglichen) Windows Applikationen. Quasi ein apt-get, yum oder rpm für MS Windows.

2014-08-13-chocolatey.png

Unter Chocolatey sind über 2000 Pakete (Metabeschreibungen) für die Installation verschiedenster Programme verfügbar: Flashplayer, Skype, Antivirus, Browser, Mailclient, Libreoffice, … Analog zu Linux Paketmanagern kann man per Kommandozeile Pakete suchen, installieren, updaten, deinstallieren …

Das gefällt mir ;-)
Als Schnelleinstieg:

  • Nach einem (zu installierenden) Program suchen:
    choco search skype
  • Installieren:
    choco install skype
  • installierte Programme ansehen:
    choco list -lo
  • Programm entfernen:
    choco uninstall [Paketname]

Und wenn man schon eine Kommandozeile hat, in der man Programme auflisten als auch installieren kann, dann kann man sich auch ein Skript schreiben, um alle Programme in einem Rutsch zu installieren. Sei es, weil man auf einem zweiten Rechner dieselbe Software drauf haben will oder als Wiederherstellungsmöglichkeit für den eigenen Rechner nach einem Notfall.

Das nachfolgende Batch-Skript erstellt im selben Ordner eine Datei choco_install.bat, die bei Aufruf alle Pakete in einem Rutsch installiert. Die Paketliste und der Loop darüber, der Paket für Paket anstösst, ist also in einer einzigen Datei.

Den Download (Skript und eine Readme) findest du ganz unten am Ende des Beitrags.

@echo off
rem ======================================================================
::
::  GENERATE INSTALL SCRIPT FOR ALL CHOCOLATEY PACKAGES
::
::  Run this script to generate an installer that reinstalls all your
::  chocolatey packages. You can use it to put the same packages on
::  another computer or for desaster recovery (then you should create a 
::  job in the taskplaner).
::
::  To list packages (choco list -lo) you need administrator privileges.
::
rem ----------------------------------------------------------------------
::  2014-08-13  axelhahn@axel-hahn.de  first version
rem ======================================================================

rem ----------------------------------------------------------------------
::  config
rem ----------------------------------------------------------------------
	set out=%~dp0choco_install.bat
	set tmpfile="%temp%chocolist.tmp"

rem ----------------------------------------------------------------------
::  main
rem ----------------------------------------------------------------------

	echo.
	echo ========== GENERATE CHOCO INSTALLER ==========
	echo.
	choco help >nul  || (
		echo ERROR: You need to be administrator to run this script.
		echo Press any key to exit.
		color cf
		pause >nul
		exit 1
	)

	rem ----------------------------------------------------------------------
	del %tmpfile% 2>nul
	echo --- fetching currently installed packages ...
	for /F "tokens=1 delims= " %%a in ('choco list -lo') do (
		echo %%a
		echo :: CHOCO:%%a >>%tmpfile%
	)

	rem ----------------------------------------------------------------------
	echo.
	echo --- creating %out% ...
	echo @echo off >%out%
	echo rem ----- info >>%out%
	echo :: >>%out%
	echo :: This installer script was generated - do not modify it! >>%out%
	echo :: generator: %0 - %username%@%computername% >>%out%
	echo :: creation time: %DATE% - %TIME% >>%out%
	echo :: >>%out%
	echo rem ----- package list >>%out%
	type %tmpfile% >>%out%
	echo :: >>%out%
	echo echo. >>%out%
	echo echo ========== CHOCO INSTALLER - generated %DATE% ========== >>%out%
	echo echo. >>%out%
	echo choco help ^>nul ^|^| ^( >>%out%
	echo      color cf >>%out%
	echo      echo ERROR: cannot start the installation. >>%out%
	echo      echo - install chocoloatey - see command on chocolatey.org >>%out%
	echo      echo - Run this script as administrator >>%out%
	echo      echo Press any key to exit.>>%out%
	echo      pause ^>nul>>%out%
	echo      exit 1>>%out%
	echo )>>%out%
	echo for /F "tokens=2 delims=:" %%%%a in ('type %%0 ^^^| findstr /v findstr ^^^| findstr "^:: CHOCO:" ') do ( >>%out%
	echo     echo --- install %%%%a >>%out%
	echo     choco install %%%%a >>%out%
	echo     echo returncode %%ERRORLEVEL%% >>%out%
	echo     echo.>>%out%
	echo )>>%out%
	echo echo --- Done. Press any key to exit. >>%out%
	echo pause ^>nul >>%out%
	del %tmpfile%

	rem ----------------------------------------------------------------------
	echo.
	echo --- output:
	echo The installer script is here:
	dir %out% | findstr "^[0-9]"
	echo.
	echo --- Done.
	timeout /t 10

rem ----------------------------------------------------------------------
::  end
rem ----------------------------------------------------------------------

Weiterführende Links: