Aller au contenu

Installer QGIS sur Windows en ligne de commande (OSGeo4W et Powershell)#

📆 Date de publication initiale : 3 juillet 2020

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 et (surtout) la démarche ? 😉

Prérequis

  • une machine avec Windows et Powershell
  • droits administrateur
  • droits d'exécution de scripts, comme pour les environnements virtuels Python (voir la doc Microsoft ou cet article) : Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • 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.

OSGeo4W QGIS

--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 travaillé sur différentes thématiques et types de structures : gestion des déchets en milieu urbain à Madagascar, foncier d'intérêt général auprès de l'EPF de La Réunion, organisation et la résilience urbaine face aux risques naturels à Lima pour l'IRD, gouvernance et ouverture des données à Isogeo.

Je travaille désormais à Oslandia.
Féru des dynamiques de contributions, je participe activement à Geotribu depuis fin 2011.

Commentaires

Afin de favoriser les échanges constructifs, merci de préférer le pseudonymat à l'anonymat. Pour rappel, l'adresse mail n'est pas exposée publiquement. Consulter la page sur la confidentialité et les données personnelles.
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.

Ce contenu est sous licence Creative Commons BY-NC-SA 4.0 International Pictogramme Creative Commons Pictogramme Creative Commons BY Pictogramme Creative Commons NC Pictogramme Creative Commons SA