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

Outils Delphi Discussion :

[Inno Setup] Associer une extension à un programme


Sujet :

Outils Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [Inno Setup] Associer une extension à un programme
    Bonjour

    Il s'agit de mon premier post sur ce forum. J'ai effectué de longues recherches sur le net et je ne parviens pas à mes fins... Je remercie donc par avance les personnes qui sauront m'aider.

    Mon programme est une "extension" gratuite pour le logiciel MS Project.
    Je distribue en fait un fichier ".pok" contenant un code VBA assez lourd.

    Nom de mon appli : BiPok
    Répertoire d'installation : C:/BiPok
    Fichier gabarit : C:/BiPok/BiPok.pok

    Avec InnoSetup j'aimerais :
    1. associer mes fichiers ".pok" au programme MS Project
    2. ajouter l'option "Projet BiPok" dans la liste "clic droit/Nouveau" de l'explorateur Windows, qui créé une copie du fichier BiPok.pok

    J'ai réussi à faire tout ça en copiant brutalement des clefs registre crées manuellement sous Win XP, que j'installe ensuite via un batch, qui lui même utilise un fichier .reg... Bref : un truc déguelasse !

    Le problème est que ça ne fonctionne pas sous Windows Vista ni sous Seven, et que selon la version MS Project installée ça n'associe pas le fichier à WinProj.exe (forcément, le répertoire d'installation Office varie...)

    Si quelqu'un a une idée SVP...

    Merci par avance...

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 785
    Points : 5 916
    Points
    5 916
    Par défaut
    Bonjour,
    Citation Envoyé par mebtp Voir le message
    Si quelqu'un a une idée SVP...
    Ben, après une petite recherche dans l'historique du forum, j'ai trouvé ceci :
    inno-setup-probleme-dassociation-extension-programme
    --
    Philippe.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Philippe et merci pour la réponse.
    Mes recherches m'avaient effectivement menées sur ce post et d'autres similaires.

    Malheureusement dans mon cas l'association ne fonctionne pas...

    Voici mon code .iss
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Registry]
    Root: HKCR; Subkey: ".pok"; ValueType: string; ValueName: ""; ValueData: "BiPok"; Flags: uninsdeletevalue
    Root: HKCR; Subkey: "Planning BiPok"; ValueType: string; ValueName: ""; ValueData: "Planning BiPok"; Flags: uninsdeletekey
    Root: HKCR; Subkey: "Planning BiPok\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\BiPok.ico"
    Root: HKCR; Subkey: "Planning BiPok\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{code:ProjectEXEdirectory}"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function ProjectEXEdirectory (Param: String): String;
    var 
         V: string; 
         Version: string;
     begin;
       if RegQueryStringValue(HKCR, 'MSProject.Application\CurVer', '', V) then begin
            if Pos('MSProject.Application.14', V) = 1 then begin
              Version:= ExpandConstant('{pf}')+'\Microsoft Office\Office14\WINPROJ.EXE'
            end else begin;
            end;
            if Pos('MSProject.Application.12', V) = 1 then begin
              Version:= ExpandConstant('{pf}')+'\Microsoft Office\Office12\WINPROJ.EXE'
            end else begin;
            end;
            if Pos('MSProject.Application.11', V) = 1 then begin
              Version:= ExpandConstant('{pf}')+'\Microsoft Office\Office11\WINPROJ.EXE'
            end else begin;
            end;
     
          Result :=Version
       end else begin; 
       end;
    end;

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 785
    Points : 5 916
    Points
    5 916
    Par défaut
    Bonjour,

    Ce sont les informations que tu places dans la base de registre qui sont incorrectes : tu indiques pour ton extension une clé (ValueData de ta 1° ligne) qui ne correspond pas à celle que tu crées (la racine de ta Subkey).

    La section de code d'Innosetup doit ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Registry]
    Root: HKCR; Subkey: ".pok"; ValueType: string; ValueName: ""; ValueData: "BiPok"; Flags: uninsdeletevalue
    Root: HKCR; Subkey: "BiPok"; ValueType: string; ValueName: ""; ValueData: "Planning BiPok (.pok)"; Flags: uninsdeletekey
    Root: HKCR; Subkey: "BiPok\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\BiPok.ico"
    Root: HKCR; Subkey: "BiPok\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{code:ProjectEXEdirectory}"
    Le contenu ValueData de la dernière ligne me semble incomplet. Sauf erreur de ma part, en partant de ton cas, la valeur attendue devrait correspondre à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Root: HKCR; Subkey: "BiPok\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{code:ProjectEXEdirectory} %1"
    Remarques secondaires :
    Dans cette partie de la base de registre les noms des subkey ne contiennent pas d'espace, à ta place, je les éviterais.
    Dans Innosetup, Tu peux omettre les ValueName: ""; voire les guillemets tant que tes valeurs ne contiennent pas d'espace.

    --
    Philippe.

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci beaucoup, j'ai pu résoudre le problème de l'extension avec votre réponse.

    Maintenant, comment puis-je résoudre le problème de ma seconde question :
    - Ajouter un entrée "Planning BiPok" au "clic droit > Nouveau" de l'explorateur windows ?
    A l'image du "clic droit > Nouveau document Word" par exemple, et qui aille cherche mon gabarit vierge situé à l'emplacement C:/BiPok/BiPok.pok
    ??

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 785
    Points : 5 916
    Points
    5 916
    Par défaut
    Au temps pour moi, j'ai zappé cette question en lisant ton 1° message !

    Pour ce 2° point, il s'agit d'ajouter une extension au Shell de Windows.
    En gros, cette extension est un objet COM prévu pour fonctionner dans un serveur COM, avec certaines interfaces spécifiques.
    Cela s'implémente via une dll qui doit être enregistré dans le SE. L'extension doit également être référencée dans la base de registre.

    Suivant la version de Delphi, tu as des exemples dans le sous-répertoire d'installation Demos\ActiveX\ShellExt.

    Tu peux également trouver un tutoriel à l'emplacement suivant : Extension du shell - Menu contextuel

    Ce sera moins rapide et simple à implémenter que l'association d'extension...
    --
    Philippe.

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Ce sera moins rapide et simple à implémenter que l'association d'extension...
    Ouch !!
    Effectivement... Je suis un bleu en programmation, je "maitrise" le VBA/VB, j'en ai déjà bavé pour comprendre le Delphi Inno Setup...
    Etant donné que c'était quelque chose de purement accessoire... Je vais laisser tomber hein !!

    Merci beaucoup pour les réponses apportées en tout cas ! A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2013, 13h18
  2. Comment associer une extension à son programme
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 20h21
  3. Associer une extension à un programme
    Par rabah200830 dans le forum Général Java
    Réponses: 2
    Dernier message: 23/05/2012, 14h15
  4. Réponses: 1
    Dernier message: 30/07/2010, 10h15
  5. Réponses: 8
    Dernier message: 30/01/2009, 13h15

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