[BUG]: job qgis-installation-finder not working correctly
Is there an existing issue or a documentation page for this?
- [X] I have searched the existing issues and within documentation
Which version of the app are you using?
0.34.2
Operating System
Windows 10+*
Packaging mode
Stand-alone executable (.i.e qdt.exe)
Related resources
No response
Description of the bug
J'ai essayé dans 2 cas avec 2 installations de QGIS sur le poste.
1er cas
QGIS dans Program File(x86)/QGIS 3.34.5/bin et une autre version 3.34 dans Program Files/QGIS3/bin
Résultat :
2024-05-02 15:00:03||WARNING||job_qgis_installation_finder||run||90||No QGIS installation found
2024-05-02 15:00:03||DEBUG||job_qgis_installation_finder||run||93||Job qgis-installation-finder ran successfully.
2eme cas
QGIS dans Program Files/QGIS 3.28.15/bin et une autre version 3.34 dans Program Files/QGIS3/bin.
Résultat :
2024-05-14 16:01:59||DEBUG||job_qgis_installation_finder||get_installed_qgis_path||132||Found installed QGIS :
{'3.28.15': 'C:\\Program Files\\QGIS 3.28.15\\bin\\qgis-ltr-bin.exe'}
2024-05-14 16:01:59||INFO||job_qgis_installation_finder||get_installed_qgis_path||153||QGIS version(s)
[3.34,3.28,3.22,3.18] not found. Using most recent found version 3.28.15 : C:\Program Files\QGIS
3.28.15\bin\qgis-ltr-bin.exe
2024-05-14 16:01:59||DEBUG||job_qgis_installation_finder||run||93||Job qgis-installation-finder ran successfully.
Alors que la 3.34 est installée et que dans le job l'ordre est défini comme suit :
- name: Find installed QGIS
uses: qgis-installation-finder
with:
version_priority:
- "3.34"
- "3.28"
- "3.22"
- "3.16"
Steps to reproduce
No response
Relevant log output
2024-05-02 15:00:03||INFO||journalizer||headers||118||========== QGIS Deployment Toolbelt - 0.34.2 ==========
2024-05-02 15:00:03||DEBUG||journalizer||headers||119||Operating System: Windows-10-10.0.19045
2024-05-02 15:00:03||DEBUG||journalizer||headers||124||Architecture: 64bit
Comment
Donc ne semble trouver que les installations "standards" durant lesquelles on n'a pas modifié le chemin proposé par défaut par l'installateur.
Bonjour @NROLLANDGrandlyon
Merci d'avoir pris le temps de remplir le ticket. @jmkerloch devrait pouvoir regarder cette semaine.
Je vais regarder ça.
@NROLLANDGrandlyon J'ai une idée du problème et j'aurais besoin de ces informations sur ton poste
Soit via powershell
$Env:PROGRAMFILES
Soit via l'invite de commande
echo %PROGRAMFILES%
@NROLLANDGrandlyon Pour l'installation sur les chemins suivants:
Program File(x86)/QGIS 3.34.5/binProgram Files/QGIS3/bin
Tu avais défini manuellement les chemins d'installation ?
echo %PROGRAMFILES% donne C:\Program Files L'installation dans Program File(x86)/QGIS 3.34.5/bin est une erreur SCCM. Ce n'est bien sûr pas la cible mais j'avais noté que QDT ne l'avait pas trouvé. L'installation dans Program Files/QGIS3/bin est bien défini manuellement et c'est la cible pour tous les postes du Grand Lyon
@NROLLANDGrandlyon
Pour l'instant QDT ne peut trouver que les versions de QGIS installés avec les options par défaut. On va donc trouver uniquement les versions qui sont disponibles dans:
- la variable d'environnement
%PROGRAMFILES%(chemin d'installation par défaut avec l'installeur QGIS) - la variable d'environnement
%QDT_OSGEO4W_INSTALL_DIR%(valeur par défautC:\\OSGeo4Wqui correspond au chemin par défaut pour l'installation OSGEO4W)
Un moyen de contournement pour le Grand Lyon serait éventuellement de passer par la variable d'environnement QDT_OSGEO4W_INSTALL_DIR qui devrait être définie sur C:/Program Files/QGIS3/
OK. Je testerai cette façon de faire. De toute façon ce job est pour l'instant "optionnel" pour nous Merci
D'ailleurs puis-je définir cette variable d'environnement QDT_OSGEO4W_INSTALL_DIR dans le scénario ? ou faut-il le faire dans le système ?
Je pense qu'on doit pouvoir la définir dans le scénario mais je t'avoue ne pas avoir encore testé complètement ce type d'option.
D'ailleurs puis-je définir cette variable d'environnement QDT_OSGEO4W_INSTALL_DIR dans le scénario ? ou faut-il le faire dans le système ?
Tu as 2 façons de le faire :
-
soit tu le mets dans les settings du scénario :
[...] settings: OSGEO4W_INSTALL_DIR: chemin [...] -
soit tu utilises le job Environment Variables manager avant le QGIS Finder :
[...] ```yml [...] - name: Set environment variables uses: manage-env-vars with: - name: QDT_OSGEO4W_INSTALL_DIR action: "add" scope: "user" value: "\\chemin" value_type: path [...]
Mais cela reste du contournement. Il faut voir si on ne devrait pas ajouter une option au job QGIS Finder pour pouvoir lui passer des chemins où chercher.
Oui c'est clairement un coutournement. Il faut voir plus global. La liste de chemin de recherche me parait être une bonne idée.
Il y le chemin dans :
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders
Nom: C:\Program Files\QGIS3
Valeur: 1
Ordinateur\HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
Nom : C:\Program Files\QGIS3\bin\qgis-ltr-bin.exe.FriendlyAppName
Valeur : qgis-ltr-bin.exe
Dans Ordinateur\HKEY_CLASSES_ROOT\QGIS Project\Shell\open\command Nom : (par défaut) Valeur : "C:\PROGRA~1\QGIS3\bin\qgis-ltr.bat" "%1"
Je ne sais pas si c'est fiable mais généralement quand on veut une info Windows on la trouve dans le registre. Bon après, dans le scénario il y avait QGIS_EXE_PATH: windows: "%PROGRAMFILES%/QGIS3/bin/qgis-ltr-bin.exe"
Ce qui revient à ajouter un chemin de recherche ?
Il y le chemin dans :
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders Nom: C:\Program Files\QGIS3 Valeur: 1
Ordinateur\HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache Nom : C:\Program Files\QGIS3\bin\qgis-ltr-bin.exe.FriendlyAppName Valeur : qgis-ltr-bin.exe
Dans Ordinateur\HKEY_CLASSES_ROOT\QGIS Project\Shell\open\command Nom : (par défaut) Valeur : "C:\PROGRA~1\QGIS3\bin\qgis-ltr.bat" "%1"
Je ne sais pas si c'est fiable mais généralement quand on veut une info Windows on la trouve dans le registre. Bon après, dans le scénario il y avait QGIS_EXE_PATH: windows: "%PROGRAMFILES%/QGIS3/bin/qgis-ltr-bin.exe"
Ce qui revient à ajouter un chemin de recherche ?
Il faudrait regarder les logs mais en théorie si la valeur définie dans QDT_QGIS_EXE_PATH est valide on s'en sert.
Ma relecture du code montre qu'on ne va pas utiliser les variables d'environnement définie dans QDT_QGIS_EXE_PATH.
Donc on regarde dans PROGRAMFILES%/QGIS3/bin/qgis-ltr-bin.exe au lieu d'aller dans C:\Program Files\QGIS3\bin\qgis-ltr-bin.exe.
==> il y a donc un bug sur l'utilisation de QDT_QGIS_EXE_PATH et le job qgis-installation-finder
Farfouiller dans la base de registre est une bonne piste à suivre. Le module est standard dans Python et on l'utilise déjà pour la gestion des variables d'environnement.
En tout cas j'ai essayé avec le job Set env variable et ça fonctionne, la version est trouvée. 2024-05-15 11:20:55||DEBUG||job_qgis_installation_finder||get_installed_qgis_path||132||Found installed QGIS : {'3.34.5': 'C:\Program Files\QGIS3\bin\qgis-ltr-bin.exe'}
Peut être que vos collègues qui "fabriquent" l'installeur pour Windows savent s'ils posent une donnée intéressante (fiable) dans la base de registre ?
J'ai documenté l'évolution ici : https://github.com/Guts/qgis-deployment-cli/issues/523
@NROLLANDGrandlyon @Guts je propose de cloturer l'issue.
L'ajout de l'option search_paths permet pour moi de régler ce problème.