Aller au contenu
Déploiement de QGIS sur Windows avec Powershell.

Installer QGIS sur Windows avec Powershell

📆 Date de publication initiale : 3 juillet 2020

Mots-clés : QGIS | Windows | Déploiement | Installation | Powershell

L'installation et la mise à jour de QGIS peuvent être rébarbatives, notamment sous Windows où il n'est pas possible de profiter d'une mise à jour via une simple ligne de commande (apt mon amour ❤)... Il y a quelques mois de cela, je cherchais à automatiser l'installation et la configuration de QGIS sur Windows et j'avais donc creusé du côté de l'installateur de l'OSGeo.

J'avais abouti à un petit script Powershell et vu que j'avais trouvé cela pratique, je me l'étais mis de côté sur Gist. Fidèle au Geotribu Spirit ©, pourquoi ne pas partager le résultat mais (surtout) la démarche ? 😉

Prérequis

  • une machine avec Windows installé
  • droits administrateur
  • droits d'exécution de scripts
  • optionnellement : Git

Comment L'Installateur (CLI) fonctionne

On l'oublie souvent (ou on ne le sait tout simplement pas, comme moi pendant de longues et heureuses années) mais les installateurs sont d'abord des outils en ligne de commande (des CLIs comme disent les grandes personnes) qui proposent en prime une interface graphique... qui est rarement mieux qu'un concours de clics sur Suivant.

--help ex machina

En regardant l'aide de l'exécutable, on s'aperçoit qu'il est possible de passer un certain nombre d'arguments :

# ô installateur, dis-moi quels sont tes secrets
osgeo4w-setup-x86_64.exe --help

Ce qui nous donne :

Command Line Options:
 -b --disable-buggy-antivirus      Disable known or suspected buggy anti virus
                                   software packages during execution.
 -g --upgrade-also                 also upgrade installed packages
 -o --delete-orphans               remove orphaned packages
 -n --no-shortcuts                 Disable creation of desktop and start menu
                                   shortcuts
 -N --no-startmenu                 Disable creation of start menu shortcut
 -d --no-desktop                   Disable creation of desktop shortcut
 -r --no-replaceonreboot           Disable replacing in-use files on next
                                   reboot.
 -k --autoaccept                   Accept all licenses
 -l --local-package-dir            Local package directory
 -m --menu-name                    Menu name
 -a --arch                         architecture to install (x86_64 or x86)
 -R --root                         Root installation directory
 -q --quiet-mode                   Unattended setup mode
 -M --package-manager              Semi-attended chooser-only mode
 -h --help                         print help
 -p --proxy                        HTTP/FTP proxy (host:port)
 -x --remove-packages              Specify packages to uninstall
 -c --remove-categories            Specify categories to uninstall
 -P --packages                     Specify packages to install
 -C --categories                   Specify entire categories to install
 -D --download                     Download from internet
 -L --local-install                Install from local directory
 -t --test                         Use setup_test.ini
 -A --advanced                     Advanced install (as opposed to Express)
 -S --safe                         Safe Mode (Skip some admin actions)
 -s --site                         Download site
 -O --only-site                    Ignore all sites except for -s

Avec tout ça, on a de quoi faire un joli script dont l'idée est de :

  1. télécharger l'installateur
  2. l'utiliser pour télécharger les packages de QGIS LTR
  3. l'utiliser pour installer les packages

En avant 🤓 !


Scriptons

A l'instar de beaucoup de choses dans Windows, le langage de script Powershell a une syntaxe très verbeuse plutôt lourde, du genre "Pourquoi faire simple quand on peut faire compliqué ?"... mais vient avec une interface graphique permettant de se repérer : ISE.

Je détaille ici les étapes du script mais en cas d'empressement, voir la partie Utiliser le script.

Sudoku

Tout d'abord, on s'assure que le script est bien lancé en mode administrateur :

#Requires -RunAsAdministrator

Télécharger l'installateur

Histoire de respecter les bonnes pratiques du système, on va télécharger l'installateur dans le dossier Téléchargements de l'utilisateur :

# on se met le chemin actif de côté pour y revenir en toute fin
$starter_path = Get-Location
# on se déplace dans le dossier téléchargement de l'utilisateur
Set-Location -Path "$env:USERPROFILE/Downloads"

Une fois au bon endroit, on télécharge l'installateur, sauf s'il existe déjà dans le dossier :

if (-Not (Test-Path "osgeo4w-setup-x86_64.exe" -PathType leaf )) {
   Invoke-WebRequest -Uri "https://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe" -OutFile "osgeo4w-setup-x86_64.exe"
}

Lancer le téléchargement et l'installation

Après un avoir regardé de plus près les options de l'installateur OSGeo4W, voici à quoi va ressembler notre commande que j'ai détaillée et mis en multi-lignes pour que ce soit plus lisible :

.\osgeo4w-setup-x86_64.exe `
    --advanced `                # correspond à l'option Advanced Install
    --arch x86_64 `             # on est en 2020...
    --autoaccept `              # accepte toutes les licences
    --delete-orphans `          # supprime les paquets inutilisés
    --no-desktop `              # ne pas créer d'icône sur le bureau
    --packages qgis-ltr-full `  # le paquet (en fait le meta-paquet) souhaité
    --quiet-mode `              # ne pas demander d'action de l'utilisateur
    --site http://download.osgeo.org/osgeo4w `  # le serveur principal d'où télécharger les paquets
    --site http://osgeo4w-oslandia.com/mirror   # le miroir d'Oslandia
    --upgrade-also              # met à jour les paquets

Concrètement, les packages sont téléchargés dans le dossier temporaire de l'utilisateur (classiquement : C:\Users\USERNAME\AppData\Local\Temp\{url_site}) puis sont décompressés et déplacés vers le dossier habituel de l'installateur : C:\OSGeo4W64. Il est possible de modifier ces deux emplacements via respectivement les options --local-package-dir et --root.

Serveurs (sites) de téléchargement

L'option -s/--site est répétable afin de pouvoir passer plusieurs serveurs (comme dans l'interface graphique) et les URLs doivent faire partie de ce fichier https://download.osgeo.org/osgeo4w/mirrors.lst.


Utiliser le script

Maintenant qu'on a compris les différentes étapes, voici comment utiliser le script que j'ai publié facilement.

1. Récupérer le script

Si vous avez installé Git, lancer le terminal Powershell :

# cloner le script
git clone https://gist.github.com/6303dc5eb941eb24be3e27609cd46985.git qgis-deploy-win
# entrer dans le répertoire ainsi créé
cd .\qgis-deploy-win\

Sinon il est possible de télécharger le script via ce lien et dézipper le tout.

En listant le contenu avec un bon ls des familles, voici ce que l'on obtient :

Répertoire du gist du script powershell

2. Exécuter le script

Lancer le terminal en mode administrateur cette fois et exécuter le script :

.\qgis_deploy_install_upgrade_ltr.ps1

Le téléchargement des packages se lance :

Téléchargement des packages

Puis l'installation :

Installation

Le temps d'un café (ou d'une bière) et hop, on est prêt pour de nouvelles aventures avec QGIS !

☕/🍺 --> 🚀

Conclusion

On voit donc qu'il est possible d'automatiser l'installation et le déploiement de QGIS, mais aussi de tous les logiciels et packages auxquels l'installateur OSGeo4W donne accès.


Pour la route

Pour info, il est également possible d'utiliser Chocolatey :

choco install qgis-ltr

Auteur

Julien Moura

Portrait Julien Moura

Géographe "sigiste" de formation, j'ai commencé à travailler dans la zone Océan Indien. A Madagascar, puis surtout à l'Etablissement Public Foncier de La Réunion où j'ai également animé le Club Géomatique. Après un petit tour sac au dos en Amérique du Sud, je pose mes valises 2 ans durant auprès de l'IRD (à la suite de Pierre). De retour en France, je finalise mon cursus avec le mastère SILAT puis je bosse quelques années pour Isogeo à Paris.

logo In Geo Veritas

Au printemps 2020, je me mets à mon compte en tant que consultant indépendant en créant ma petite entreprise : In Geo Veritas.

Initialement formé aux solutions propriétaires, j'ai rapidement préféré les valeurs du monde du libre. Côté développement, si je tends à utiliser tout ce qui m'est utile, j'ai particulièrement apprécié Python, avec lequel j'accouche de petits outils, comme Metadator, DicoGIS ou El Géo Paso.

Je participe activement à Geotribu depuis fin 2011 et, comme ça me manquait trop, j'ai décidé de lancer sa renaissance en 2020.


Dernière mise à jour: 1 juillet 2020
Contributions à cette page : Julien Moura (99.52%), Vandecasteele (0.48%)

Commentaires