qgis-deployment-cli icon indicating copy to clipboard operation
qgis-deployment-cli copied to clipboard

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

Open NROLLANDGrandlyon opened this issue 1 year ago • 16 comments

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.

NROLLANDGrandlyon avatar May 14 '24 14:05 NROLLANDGrandlyon

Bonjour @NROLLANDGrandlyon

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

Guts avatar May 14 '24 14:05 Guts

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 avatar May 14 '24 14:05 jmkerloch

@NROLLANDGrandlyon Pour l'installation sur les chemins suivants:

  • Program File(x86)/QGIS 3.34.5/bin
  • Program Files/QGIS3/bin

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

jmkerloch avatar May 14 '24 14:05 jmkerloch

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 avatar May 14 '24 15:05 NROLLANDGrandlyon

@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éfaut C:\\OSGeo4W qui 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/

jmkerloch avatar May 14 '24 15:05 jmkerloch

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

NROLLANDGrandlyon avatar May 14 '24 15:05 NROLLANDGrandlyon

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 ?

NROLLANDGrandlyon avatar May 15 '24 07:05 NROLLANDGrandlyon

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.

jmkerloch avatar May 15 '24 07:05 jmkerloch

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.

Guts avatar May 15 '24 08:05 Guts

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

jmkerloch avatar May 15 '24 08:05 jmkerloch

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 ?

NROLLANDGrandlyon avatar May 15 '24 08:05 NROLLANDGrandlyon

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

jmkerloch avatar May 15 '24 09:05 jmkerloch

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.

Guts avatar May 15 '24 09:05 Guts

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 avatar May 15 '24 09:05 NROLLANDGrandlyon

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 ?

NROLLANDGrandlyon avatar May 15 '24 09:05 NROLLANDGrandlyon

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

Guts avatar Jun 18 '24 14:06 Guts

@NROLLANDGrandlyon @Guts je propose de cloturer l'issue.

L'ajout de l'option search_paths permet pour moi de régler ce problème.

jmkerloch avatar Oct 18 '24 08:10 jmkerloch