IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Comment savoir si une application est installée


Sujet :

C++Builder

  1. #1
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut Comment savoir si une application est installée
    Bonjour,

    J'aimerai savoir comment l'on fait pour savoir si une application est installée. Je m'explique, je fais une application qui pourra permettre l'ouverture de fichiers d'acquisition avec une application réalisée par mes soins.

    Si cette application n'est pas sur le PC, il faudra alors que j'ouvre une autre fichier correspondant en jpeg avec l'outil de visualisation Windows.

    Le hic c'est que mon application est installée par un package InnoSetup, donc l'utilisateur a le choix de l'endroit d'installation, de la mise ou non des icônes sur le bureau ou en bar des tâches.

    Donc, y a t il un moyen de trouver le répertoire d'installation d'une application, en connaissant son nom, à partir d'une application externe?

    Merci

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Je ne sais pas si c'est la solution la plus simple, mais toutes les applications installées sur ton PC (via un installeur, et possédant donc un désinstalleur) doivent se retrouver dans le registre sous:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
    A toi de tester l'existence de la clé créée par ton application pour savoir si elle est installée ou non.

    Il y a notamment la clé DisplayName qui contient le nom donnée a ton application dans Ajout/Suppression de Programmes, et la clé UninstallString qui contient le chemin vers l'exécutable de désinstallation (Uninstal.exe)

    Donc tu peux tester la clé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NOM_DE_TON_APPLI\DisplayName
    Pour lire dans le registre, utilise la classe TRegistry (<Registry.hpp>)
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Avec une clé dans la base de registre ?

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Voici une autre astuce trouvée sur le net pour lister dans un fichier texte les applications installées sur un poste.
    Je n'ai pas tester cette solution, mais a priori il suffit de lancer le script depuis ton application puis de lire le fichier texte généré pour vérifier si ton application est présente ou non
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Ton application installée crée la clé HKEY_LOCAL_MACHINE\SOFTWARE\monappli\folder
    Il suffit ensuite de vérifier que cette valeur est valide. Ainsi, tu as le fait que l'appli est installé et à quel endroit.

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Merci messieurs pour vos réponse, mais je n'ai malheureusement pas trouvé mon soft dans le registre.

    J'ai regardé dans
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
    Mais je ne trouve pas le nom de mon logiciel, alors qu'il figure bien dans l'ajout/suppression de programme. Mais j'ai utilisé la clé "OpenKey", et non "DisplayName". Avec un peu de chance, peut être que je pourrait la trouver.

    gandf, aujourd'hui mon application ne créer pas de clé
    HKEY_LOCAL_MACHINE\SOFTWARE\monappli\folder
    Et ce qui me gène, c'est que si je la modifie maintenant pour créer cette clé, ma deuxième appli qui cherche ma première, ne sera compatible qu'à partir d'une certaine version. Or tout est déjà dedans, il suffit de savoir où.

    Par contre, question idiote. Une fois trouvé dans le registre, comment je récupère le répertoire d'installation?

  7. #7
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Si ton programme figure dans Ajout/Suppression de Programmes, il doit y avoir une valeur pour ton application dans:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
    Utilise Regedit pour identifier le nom de ton application dans le registre, elle doit forcément y être.

    Pour récupérer le chemin d'installation, tu peux ensuite lire la clé UninstallString qui contient le chemin vers le fichier Uninstal.exe de ton application, donc en théorie il s'agit du même répertoire que ton application.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  8. #8
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Merci du tuyau,

    J'ai utilisé RegEdit et j'ai recherché mon application.
    Je l'ai trouvé sous:
    HKEY_CURRENT_USERS\Software\Classes\Application\MonAppli.exe
    Le nom n'est pas le même. Borland me génère un fichier exe, que je renomme avant d'encapsuler dans InnoSetup, et c'est l'ancien nom qui figure à cet endroit.

    Je n'ai rien dans HKEY_LOCAL_MACHINE.
    Je devrai me débrouiller comme ca, mais est ce normal?

  9. #9
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Dans mon cas j'utilise l'installateur NSIS et je doit ajouter ceci à mon code d'installateur pour entrer les informations de désinstallation dans Ajout/Suppression de Programmes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME} 1.9"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "Contact" "support@macompagnie.com"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayVersion" "1.9"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "HelpLink" "http://www.macompagnie.com"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "HelpTelephone" "123 123-123-1234"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "Publisher" "Ma Compagnie"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://www.macompagnie.com"
    WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoModify" 1
    WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoRepair" 1
    Avec les définitions suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    !define PRODUCT_NAME "Mon Programme"
    !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
    Je ne sais pas si InnoSetup le fait automatiquement?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    C'est bien ce qui me semblait. J'ai regardé rapidement cette clé l'autre jour et il m'a semblé que le contenu dépendait de l'installeur. On retrouve effectivement toujours l'executable mais pas toujours avec la même clé.
    D'ailleurs j'utilise également NSIS pour mes install et je n'ai pas autant d'infos que toi.

    Pour répondre à cette question je ferais une recherche de l'executable dans HKLM et j'analyserais tous les résultats. J'ai vaguement souvenir d'avoir vu des listes des executables installés sur le système mais laquelle est la bonne ?

    Par exemple (notez que ce n'est pas dans HKLM):

    HKCR\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

    On retrouve aussi cette clé dans HKEY_USERS car l'install dépends également su user.
    A confirmer par Google.

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Et encore ceci:

    HKLM\Software\Microsoft\Windows\CurrentVersion\Uinstall
    HKLM\Software\<company>\<Software>\Setup (celle-ci dépends de l'installeur)

  12. #12
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Messieurs,

    J'ai trouvé mon application, mais j n'ai qu'une valeur dedans comprenant le chemin de mon exe. Le hic c'est que le nom de cette valeur est "(par défaut)" et que je n'arrive pas à le voir.
    En utilisant la commande GetValueNames, je n'obtiens rien, or je le vois au moins dans l'éditeur du Registre.

    Comment connaître la liste de toutes les choses que je vois dans l'éditeur?

Discussions similaires

  1. Comment savoir si une application est installée ?
    Par kOrt3x dans le forum Développement iOS
    Réponses: 2
    Dernier message: 05/03/2013, 16h18
  2. [VB][VBA] Savoir si une application est installée
    Par DotNET74 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 11/04/2007, 16h11
  3. comment savoir si une application est fermée ?
    Par Flow_75 dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/12/2006, 10h27
  4. Réponses: 2
    Dernier message: 14/09/2006, 23h35
  5. Comment savoir si une application est lancée ?
    Par Teddy dans le forum Delphi
    Réponses: 2
    Dernier message: 02/07/2006, 19h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo