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

API, COM et SDKs Delphi Discussion :

Programme Delphi 7 et Vista


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut Programme Delphi 7 et Vista
    Bonjour,

    J'ai écrit un programme en Delphi 7. Ce programme est installé grâce à Installshield express version 3.5. Un raccourci est créé sur le bureau par installshield.

    Or avec VISTA (et uniquement vista), le programme ne se lance pas lorsqu'on double-clique sur l'icône du bureau, car il faut l'exécuter en tant qu'administrateur pour que ça marche. Le programme est bien lancé la première fois à la fin de l'installation, mais c'est tout !

    Je cherche une solution à ce problème :

    - soit créer le raccourci sur le bureau directement avec installshield, et l'option cochée "exécuter en tant qu'administrateur". Je ne sais pas faire avec ma version d'installshield, car je ne trouve pas comment le faire.

    - soit créer le raccourci sur le bureau par le programme Delphi, au premier lancement. Mais je ne sais pas faire non plus. La FAQ Delphi indique bien comment créer un raccourci, mais ne parle pas de l'option "exécuter en tant qu'administrateur"

    - soit je demande à l'utilisateur, lors du premier lancement, de compléter le raccourci en allant cocher la case dans le panneau propriétés, onglet compatibilité. Cette solution, je l'envisagerais bien si je savais que le programme fonctionne sous vista. Mais nouveau problème : je ne sais pas comment déterminer que je suis sous vista. La FAQ Delphi donne une procédure pour déterminer la version de windows, mais elle ne parle pas de vista !

    - soit j'utilise une autre solution si quelqu'un a des suggestions.....

    Merci d'avance de votre aide. J'espère avoir été clair dans mes explications.

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    Il me semble (je dis bien il me semble) que si l'installation est executée en tant qu'admin, l'executable n'aura plus besoin de l'etre ...


    Ensuite, pour connaitre la version de Windows, c'est normal que la FAQ ne parle pas de Vista, parce qu'elle n'existait pas a l'époque de la FAQ ... J'imagine que tu as vu ce lien : http://delphi.developpez.com/faq/?pa...versionwindows

    Je sais pas si t'as vu, mais ils disent a un endroit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if osvi.wProductType = VER_NT_WORKSTATION then
            begin
              if (osvi.dwMajorVersion = 5) and (osvi.dwMinorVersion = 1) then
              AddString(result, 'Microsoft Windows XP');
    Donc je pense que tu devrais tenter, sur une machine avec Vista, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage('MajorVersion : '+IntToStr(osvi.dwMajorVersion)+', MinorVersion : '+IntToStr(osvi.dwMinorVersion));
    Et tu devrais récuperer les valeurs de version qu'il te faut ! Ensuite, tu contacte le responsable FAQ pour completer cette rubrique !

    Mais je pense que le mieux, c'est que si le premier point que j'ai cité fonctionne, tu devrais, lors de l'installation, dire a l'utilisateur, que si il a Vista, d'installer et tant qu'admin ...

    Bonne chance !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut
    Et non, l'installation ayant eu lieu en tant qu'administrateur (sur mon poste), j'ai tout de même le problème que le programme ne s'ouvre pas la fois suivante.

    Pour ce qui est de connaître la version de windows, c'est bien ce que j'ai trouvé. J'en avais une version plus simple, que j'avais arrangée à ma manière : pour les versions non recensées, au lieu d'afficher les majorversion et minorversion, ça m'affiche "version inconnue" !

    En fait je peux me contenter de considérer que si ce n'est ni NT, ni W95 , ni W98, ni W2000, ni XP, ni ME, il y a de fortes chances pour que ce soit vista !

    Je préfèrerais tout de même une solution plus automatique....

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 917
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 917
    Par défaut
    C'est dû au manque de privilège et non à l'utilisateur. Le lancer en tant qu'administrateur ne changera rien. Et pour essai, ton programme tourne certainement très bien sans l'UAC.

    Lors de l'installation avec InstallShield, tu as certainement eu un message à confirmer avant que l'installation ne démarre. Et en fin d'installation, c'est InstallShield lui-même qui exécute ton programme. Ton programme est donc lancé avec les mêmes privilèges qu'InstallShield (hérités), ce qui n'est plus le cas en double-cliquant sur l'icône du bureau.

    Tu as toutes les infos ici.

    A noter que pour une utilisation régulière, tu devrais penser à stocker tes données (fichiers ou registre) ailleurs que dans les zones protégées.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut
    Oui je confirme, sans l'UAC, ça fonctionne bien !

    Actuellement, mon programme est installé dans le répertoire :

    c:\program files\ma societe\mon programme

    et les données sont dans :

    c:\program files\ma societe\mon programme\donnees

    Si je faisais une installation dans les répertoires

    c:\ma societe\mon programme
    et
    c:\ma societe\mon programme\donnees

    je n'aurais plus la demande de confirmation par l'UAC ?

    A quoi sert exactement le fichier manifest ?

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 917
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 917
    Par défaut
    Exactement. Tu serais en dehors des zones protégées. (Disque tout du moins, mais attention à la base des registres)

    Le manifest sert justement à définir le niveau de privilèges requis par ton application et qui en fonction du niveau choisi fera apparaître le message de confirmation que l'utilisateur devra quittancer manuellement.

  7. #7
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Bonjour,

    L'idéal serait que tu installes ton programme en Program Files, et tous les fichiers et données perso => en dossier utilisateur perso.

    Surtout ne rien placer en Program Files (à part ton EXE), qui soit soumis à des écritures !

    Car installer un forder presque en racine ; ça fait de nos jours un peu crade, sauf si raisons spécifiques.

    @+

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut
    Bonjour,

    J'ai compris les explications concernant le répertoire d'installation (voir plus bas). Reste la question de la base de registre. Dans quelles zones peut-on lire et écrire ? J'ai lu qu'il y a des zones protégées, mais je n'ai pas trouvé lesquelles.

    Pour le répertoire d'installation de mon programme, je ne veux pas entammer un débat philosophique, mais je voudrais souligner quelques points :
    - je souhaite que mon shéma d'installation (répertoires choisis pour l'installation) soit le même pour toutes les versions de windows.
    - je souhaite ce shéma d'installation reste simple et clair.
    - mon programme est diffusé auprès d'utilisateurs qui ont peu de connaissances en informatique, en gestion des répertoires, et je ne veux rien de compliqué. Il ne s'agit pas d'un programme duffusé au sein d'une entreprise, ayant un service informatique qui ferait des installations identiques sur tous les postes.
    - la solution d'un répertoire de données en sous-répertoire de mon programme me plait bien, car je sais que je n'écris pas un peu partout sur le disque. d'autre part, en cas de mise à jour, c'est plus simple de savoir que les données sont situées dans un sous-répertoire de l'application.
    - j'avais décidé de placer mon programme et ses données dans "program files", car je trouvais que ça fait plus propre. Or si Microsoft m'en "chasse", j'irai voir ailleur !

  9. #9
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut dans un réseau de pme-pmi
    j'ai mis mon programme dans un répertoire partager par tous les users du réseau ,
    donc pour l'utiliser depuis n'importe quel pc du réseau je pointe un raccourci dessus.
    Pour les mises à jour un seul exe à modifier

    pour les données personnalisées des utilisateurs : je les mets dans appdata romaining, ca passe très bien sur xp et vista. de plus si j'ai plusieurs profils d'utilisateurs sur un poste, cela permet de garder à chacun ses données.

    pour trouver à coup sûr le répertoire utilisateurs, il existe de nombreux fichiers de fonctions sur le web, qui contiennent les fonctions prêtes à l'emploie.

    si çà peux t'aider

    André

  10. #10
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    pour les données personnalisées des utilisateurs : je les mets dans AppData Roaming, ca passe très bien sur xp et vista. de plus si j'ai plusieurs profils d'utilisateurs sur un poste, cela permet de garder à chacun ses données.
    C'est exactement ce dont je voulais parler pour "en dossier utilisateur perso".

    Au début, ça parait curieux, mais à l'utilisation ; cela devient tout naturel.

    Hé oui ça déroute toujours au début, par rapport aux anciennes habitudes

    Question Base de Registre, là je suis passé aux programmes verts

    A part l'installeur et la gestion des folders de Windows, je ne souille pas la Base de Registre de mes utilisateurs.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut
    Bon je laisse de côté la question des répertoires d'installation.

    Malgré vos conseils, ça ne marche toujours pas.
    J'ai modifié temporairement mon programme pour qu'il ne lise et n'écrive rien dans la base de registres. Je peux me passer de ces informations....

    Mon programme n'est plus installé dans le répertoire "program files", mais dans un répertoire

    c:\ma societe\mon programme
    et les données dans :
    c:\ma societe\mon programme\donnees.

    J'ai bien compris que certains ne trouvent pas ça tout à fait propre, mais vista ne l'empêche pas après tout !

    J'ai également ajouté un fichier manifest, comme il m'était suggéré.

    Dans ce fichier manifest, si je mets un niveau HighestAvailable ou RequireAdministrator, j'obtiens un message d'erreur "élévation du niveau requise", mais le programme ne se lance pas. Si je garde le niveau AsInvoker, le programme se lance, mais plante car il ne possède pas les droits suffisants pour accéder au BDE (d'après le message d'erreur que j'obtiens)

    Donc j'en suis toujours au même point : pour faire marcher mon programme, la seule solution que j'ai trouvée est de cocher la case "exécuter en tant qu'administrateur" dans les propriétés du raccourci !

    Et là j'ai encore un message qui apparait, disant que l'éditeur du programme est inconnu, et est-ce que je lui fais confiance ? Si je dis oui, le programme s'ouvre et fonctionne !

    Bref pour résumer, aucune des explications qui m'ont été fournies ne semble donner un résultat correct.

    Ai-je oublié quelque chose ? Est-ce normal comme fonctionnement ?

  12. #12
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Tout dépend de ce que ton programme réalise comme manip spéciales, car Vista est un petit canailloux.

    Et là j'ai encore un message qui apparait, disant que l'éditeur du programme est inconnu, et est-ce que je lui fais confiance ? Si je dis oui, le programme s'ouvre et fonctionne !
    Mais au fait, comment installes-tu ce programme, car au moment de l'install, l'utilisateur doit "autoriser" ou non le lancement. Ce qui, je suppose, donne les droits au reste par répercussion.

    As-tu in installeur qui demande déjà cela ?

    @+

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Par défaut
    C'est écrit au tout début de la discussion : le programme est installé avec installshield express, verion 3.5.

    Une autorisation est demandée au lancement de l'installation.

    Quand à d'éventuelles "manip spéciales", je n'en vois pas. Est-ce "spécial", au démarrage du programme, de :
    - vérifier que le BDE est bien installé, et que l'alias utilisé pour accéder aux données est bien existant, et si ce n'est pas le cas, le créer ?
    - vérifier que les différents répertoires servant à organiser les données sont présents, et si ce n'est pas le cas les créer ?
    - vérifier que toutes les tables paradox dont le programme a besoin sont bien présentes, et si ce n'est pas le cas, les créer ?
    - enfin, ouvrir les tables dont le programme a besoin pour afficher ses données ?

  14. #14
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 917
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 917
    Par défaut
    - vérifier que le BDE est bien installé, et que l'alias utilisé pour accéder aux données est bien existant, et si ce n'est pas le cas, le créer ?
    Oui, c'est spécial. (accès à la base des registres hors de Current User)

    - vérifier que les différents répertoires servant à organiser les données sont présents, et si ce n'est pas le cas les créer ?
    Oui si tu es dans une zone protégée.

    - vérifier que toutes les tables paradox dont le programme a besoin sont bien présentes, et si ce n'est pas le cas, les créer ?
    Même chose que précédemment.

    Et comme remarques supplémentaires:

    Tu mélanges les droits, les privilèges et les codes signés.

    1. Le message "éditeur inconnu" est parce que ton code n'est pas signé numériquement. (Tu devrais avoir eu le même message à l'installation)

    2. Les privilèges (sous Vista et +) correspondent à une demande faite à l'utilisateur pour lui demander l'autorisation d'accès à certaines zones protégées. (A ne pas confondre avec les privilèges du style SeShutdownPrivilege (Reboot, Restart) qui permettent d'exécuter effectivement certaines commandes de bas niveau, de bypasser certaines stratégies de sécurité)

    3. Les droits utilisateurs qui permettent l'accès (lecture et/ou écriture), l'exécution de codes, etc. (identique sous XP)

    Pour le premier point, ben la seule façon est de mettre la main à la poche et d'acheter un certificat chez VeriSign, Commodo ou autres.

    Pour le deuxième, tu as compris que c'était par le manifest, mais le message affiché dépend du point 1... (Vérifié ou pas (éditeur inconnu)). Mais ce n'est à l'arrivée qu'un message que l'utilisateur doit quittancer manuellement et n'octroi aucun droit supplémentaire à ton soft.

    Le point 3 repose sur tes épaules. Ne pas faire n'importe quoi n'importe comment . Je pense même (aux vues de tes commentaires) que tu n'as jamais testé ton soft sous XP avec un utilisateur ayant des droits autres qu'administrateur.

    A l'arrivée, tout tes tests devraient être faits à l'installation. A l'utilisation par GUEST (exemple), il n'y a de toute façon aucune chance pour que ton alias soit supprimé. La seule chose que tu puissse éventuellement faire et d'afficher un message d'erreur, de demander la réinstallation (ou la reconfiguration) par un administrateur et de sortir proprement .

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

Discussions similaires

  1. programme Delphi permettant la création de base de donnée
    Par lassad dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/10/2005, 14h06
  2. Programme Delphi et Zone Alarm Suite
    Par vanquish dans le forum EDI
    Réponses: 1
    Dernier message: 11/10/2005, 17h26
  3. Dll en c++ dans un programme delphi
    Par wikers dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 15h39
  4. Comment intégrer un programme Delphi dans CBuilder
    Par Xavier dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/07/2005, 20h23
  5. Réponses: 3
    Dernier message: 29/06/2005, 13h56

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