Guts / qgis-deployment-cli

Cross-platform (but focused on Windows) CLI to perform deployment operations: profiles, plugins, etc.
https://guts.github.io/qgis-deployment-cli/
Apache License 2.0
14 stars 2 forks source link

[BUG]: job qgis-installation-finder not working correctly #505

Open NROLLANDGrandlyon opened 1 month ago

NROLLANDGrandlyon commented 1 month ago

Is there an existing issue or a documentation page for this?

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.

Guts commented 1 month ago

Bonjour @NROLLANDGrandlyon

Merci d'avoir pris le temps de remplir le ticket. @jmkerloch devrait pouvoir regarder cette semaine.

jmkerloch commented 1 month ago

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%
jmkerloch commented 1 month ago

@NROLLANDGrandlyon Pour l'installation sur les chemins suivants:

Tu avais défini manuellement les chemins d'installation ?

NROLLANDGrandlyon commented 1 month ago

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

jmkerloch commented 1 month ago

@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:

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/

NROLLANDGrandlyon commented 1 month ago

OK. Je testerai cette façon de faire. De toute façon ce job est pour l'instant "optionnel" pour nous Merci

NROLLANDGrandlyon commented 1 month ago

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 ?

jmkerloch commented 1 month ago

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.

Guts commented 1 month ago

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 :

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.

jmkerloch commented 1 month ago

Oui c'est clairement un coutournement. Il faut voir plus global. La liste de chemin de recherche me parait être une bonne idée.

NROLLANDGrandlyon commented 1 month ago

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 ?

jmkerloch commented 1 month ago

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

Guts commented 1 month ago

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.

NROLLANDGrandlyon commented 1 month ago

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'}

NROLLANDGrandlyon commented 1 month ago

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 ?

Guts commented 1 week ago

J'ai documenté l'évolution ici : https://github.com/Guts/qgis-deployment-cli/issues/523