Package Provider (OneGet)

In Powershell hebben we tegenwoordig de mogelijkheid om software te installeren via een Package Manager, iets wat te vergelijken is met het Linux apt-get commando.

In powershell kunnen we de Package Manager module importeren met

Import-Module PackageManagement

Om te zien welke commando’s voor de Package Manager gebruikt kunnen worden, type:

Get-Command -Module PackageManagement

Het resultaat is dan:

PS C:\WINDOWS\system32> Get-Command -Module PackageManagement

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Find-Package                                       1.0.0.1    PackageManagement
Cmdlet          Find-PackageProvider                               1.0.0.1    PackageManagement
Cmdlet          Get-Package                                        1.0.0.1    PackageManagement
Cmdlet          Get-PackageProvider                                1.0.0.1    PackageManagement
Cmdlet          Get-PackageSource                                  1.0.0.1    PackageManagement
Cmdlet          Import-PackageProvider                             1.0.0.1    PackageManagement
Cmdlet          Install-Package                                    1.0.0.1    PackageManagement
Cmdlet          Install-PackageProvider                            1.0.0.1    PackageManagement
Cmdlet          Register-PackageSource                             1.0.0.1    PackageManagement
Cmdlet          Save-Package                                       1.0.0.1    PackageManagement
Cmdlet          Set-PackageSource                                  1.0.0.1    PackageManagement
Cmdlet          Uninstall-Package                                  1.0.0.1    PackageManagement
Cmdlet          Unregister-PackageSource                           1.0.0.1    PackageManagement

Wat opvalt is dat hier een commando is om een PackageProvider te installeren. Met andere woorden, OneGet is meer een manager voor installers dan zelf een installer.

oneget-architecture

Hiermee wordt dan ook gelijk duidelijk dat we een installer zoals NuGet of Chocolately kunnen gebruiken als repository en hieruit dan packages kunnen installeren met OneGet.

Het volgende commando installeert Chocolately als Package Provider:

Get-PackageProvider -Name chocolately

Het resultaat hiervan is:

The provider 'chocolatey v2.8.5.130' is not installed.
chocolatey may be manually downloaded from https://oneget.org/ChocolateyPrototype-2.8.5.130.exe and installed.
Would you like PackageManagement to automatically download and install 'chocolatey' now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):

Name       Version   DynamicOptions
----       -------   --------------
Chocolatey 2.8.5.130 SkipDependencies, ContinueOnFailure, ExcludeVersion, ForceX86, PackageSave...

Mocht de Chocolately Package Prvider niet beschikbaar zijn, je kunt het altijd nog via het volgende powershell commando installeren:

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Hierna kunnen we packages installeren vanuit de Chocolately repository, bijvoorbeeld ‘FireFox’:

PS C:\WINDOWS\system32> Install-Package FireFox

The package(s) come(s) from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y

Name                           Version          Source           Summary
----                           -------          ------           -------
Firefox                        48.0             chocolatey       Bringing together all kinds of awesomeness to make browsing better for you

Voila, FireFox is geïnstalleerd. Eenvoudig, via de PowerShell CLI. Op deze manier is het ook mogelijk programma’s te uninstallen die via ‘Add/Remove Programms’ (ARP) geïnstalleerd zijn. Bijvoorbeeld het programma sdFormatter (om SD-Cards te formateren)

PS C:\WINDOWS\system32> Uninstall-Package sdFormatter
WARNING: Reboot is required to complete the uninstallation operation.

Name             Version          Source           Summary
----             -------          ------           -------
SDFormatter      4.0.0

.