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

Langage Delphi Discussion :

Relancer mon application


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 109
    Par défaut Relancer mon application
    Bonjour à tous,
    Je voudrais savoir s'il est possible de pouvoir relancer mon application suite a une erreur, cependant sans executer ShellExecute?
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try
    instruction 1
    .
    .
    .
    intrsution N
    except on E: Exception do 
      //Ici je souhaiterais relancer mon application
    end;
    Merci bcp

  2. #2
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    ShellExecute ou CreateProcess... C'est la même chose dans le fond. Pourquoi tu ne veux pas l'utiliser ?

    D'autre part, pourquoi la relancer ? Ne peux-tu pas simplement refaire le code que tu appèles dans les OnCreate ? Un seul cas impose un redémarrage : la mise à jour de l'exécutable ( MAJ du soft ). Dans le cas contraire il y a certainement mieux à faire.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 109
    Par défaut
    Parce que en fait j'empeche mon application de s'executer 2 fois (mutex), et j'aimerais faire un peu comme Microsoft office (désolé pour la pub)quand je rencontre une erreur grave et inconnu il y a un truc du style:
    "L'application a rencontré une erreur inconnu .Voulez vous relancer l'application?"
    Si j'utilise ShellExecute je suis obligé de retoucher à mon module qui gère le fait de ne pas pouvoir lancer l'application 2 fois.
    Mais bon si tu me dis qu'il y a mieux a faire je vais essayer de trouver une solution "plus saine". Et au pire je retoucherai à ce module c'est pas dramatique
    Merci pour tes Conseils Nono40

  4. #4
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Pour info, j'utilise cette méthode pour le MAJ automatique :

    Création du nouvel exe.
    Lancement du nouvel exé avec un paramètre spécifique qui ne va par créer les fiches, mais attendre que la première instance ce ferme avant de supprimer l'ancien et créer une copie du nouveau et de la relancer.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 109
    Par défaut
    Ca m'interresse fortement! J'envisage de faire une gestion des MAJ
    Par contre j'ai pas bien saisi comment tu va pouvoir "glisser" en douceur de l'ancienne version à la nouvelle?

  6. #6
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Glisser en douceur ce n'est pas facile. L'application doit se fermer et se lancer elle-même ensuite. Voici la méthode en détail :

    Par exemple tu as une appli Toto.exe

    L'utilisateur lance toto.exe, et effectue un test de mise à jour.
    Si nouvelle version, alors la nouvelle est téléchargée et sauvée en tant que fichier Toto2.exe
    Toto.exe lance Toto2.exe et se ferme automatiquement.
    Toto2.exe quand il se lance détecte que c'est "Toto2" donc une version temporaire. ( il suffit de tester ParamStr(0) ) Dans ce cas le mutex ne doit pas être créé.
    Toto2.exe attend que Toto.exe soit complètement fermé, en testant un time-out au cas où.
    Une fois Toto.exe fermé, attendre 1 sec ( sleep ).
    Toto2.exe va alors supprimer Toto.exe et copier Toto2.exe en Toto.exe
    Attendre encore une seconde
    Toto2 va lancer Toto.exe et se fermer de lui-même ( c'est pour cela que Toto2 ne doit pas créer de mutex.

    Le code utilisé par la copie Toto2 ( qui est en fait une simple copie de la nouvelle version ) doit être placé dans le source du projet afin de ne créer aucune fenêtre ni rien initialiser d'autre. Ca évite de voir les fenêtre clignoter pendant les mises à jour.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 109
    Par défaut
    Très bien merci bcp pour ton aide précieuse!

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

Discussions similaires

  1. Création d'un alias via mon application
    Par Neilos dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/10/2003, 23h29
  2. Comment faire générer du rtf par mon application?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2003, 09h35
  3. [Access] Mon application est détruite !!!
    Par mathias dans le forum Access
    Réponses: 4
    Dernier message: 26/06/2003, 14h14
  4. Réponses: 7
    Dernier message: 26/06/2003, 09h11
  5. Impossible de quitter mon application!
    Par Bouillou dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2002, 20h43

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