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# Discussion :

Lancement Application Citrix gestion du multi lancement


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 52
    Points
    52
    Par défaut Lancement Application Citrix gestion du multi lancement
    Bonjour,
    si joint mon cas d'utilisation

    J'ai une application Client qui doit se lancer une seul fois sur le PC sur laquel elle est installé.
    Donc j'implémente :
    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
    static bool IsStarted()
    		{
    			bool start=true;
    			Process current = Process.GetCurrentProcess();
    			Process []all = Process.GetProcesses();
    			int i=0;
    			for (i=0;i<all.Length;i++)
    			{
    				if (current.ProcessName==all[i].ProcessName)
    				{ 
    					if (current.Id!=all[i].Id)
    					{
    						start=false;
    					}
     
     
    				}
     
    			}	
    			return start;
    		}
    Pas de problémes en installation cleitn LOURD pas de souci.
    Mais en deploiement Citrix TSE... les chose sont plus compliqué
    Je sais que l'on peut limiter le lancement une instance par utilisateur. Mais est ce que mon code ne va limiter l'application a une Instance tout court du genre le premier connecté gagne.
    Je n'ai pas trouver d'éléments convainquant sur le net.
    Est ce que quelqu'un est deja tomber sur ce cas.
    je sais qu'il y a une solution de faciliter je met en parametre dans le fichier de config .net pour citrix=0 ou 1 et je met la limitaton citrix mais j'aimerais quelque chose de plus sioux....

    Merci de votre coup de main

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    le pb avec citrix, c'est que c le "serveur" qui fait tourner l'application pour toi sur sa machine...

    Cela dit, il me semble que chaque utilisateur en géré sous forme de session

    LE mieux serait de faire le test
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    c'est tres mauvais de passer par la liste des process, car tu peux theoriquement lancer plusieur l'app sur la machine avec ce test !! (enfin bon c est une mauvaise methode)


    il faut passer par l'isolation par mutex, tu crée un mutex avec un nom unique + l'id de la session

    genre mutexdemonapp.1

    et la c est parfait: chaque utilisateur est pleinement isolé donc pu de probleme sous citrix / tse !

    je peux te donner un exemple si tu veux

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     static Mutex mutex;
     
    static private string ChannelName
    {
    get { return "MonSuperMutexUnique" + Process.GetCurrentProcess().SessionId.ToString(); }
    }
     
    static public void Run()
    {
    bool createNew = false;
    try
    {
    mutex = Mutex.OpenExisting(ChannelName);
    }
    catch (WaitHandleCannotBeOpenedException)
    {
    mutex = new Mutex(true, ChannelName, out createNew);
    }
    if (createNew)
    {
    mutex.ReleaseMutex();
    Application.Run();
    }
    else
    {
    try
    {
    // On attend la libération du mutex
    mutex.WaitOne();
    CreateClient();
    }
    catch (Exception) { }
    finally
    {
    mutex.ReleaseMutex();
    }
    }
    }

    soit on crée l 'app mere soit l'app client (genre dans ton cas, l app cliente peut dire "désolé mais le programme est deja lancé")


    je pense que c est la façon propre de faire ce que tu souhaites !
    (d'autres peuvent donner leur avis)

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Merci pour l'info..
    Mais justement j'avais du Mutex avant qui ne marchait pas je pense qu'il était pas bien fais...
    Alors j'ai renforcé le truc...
    Je vous remercie je vais d'abord tester ma méthode sous citrix, puis faire le mutex decrit si dessous

    Citation Envoyé par alavoler Voir le message
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     static Mutex mutex;
     
    static private string ChannelName
    {
    get { return "MonSuperMutexUnique" + Process.GetCurrentProcess().SessionId.ToString(); }
    }
     
    static public void Run()
    {
    bool createNew = false;
    try
    {
    mutex = Mutex.OpenExisting(ChannelName);
    }
    catch (WaitHandleCannotBeOpenedException)
    {
    mutex = new Mutex(true, ChannelName, out createNew);
    }
    if (createNew)
    {
    mutex.ReleaseMutex();
    Application.Run();
    }
    else
    {
    try
    {
    // On attend la libération du mutex
    mutex.WaitOne();
    CreateClient();
    }
    catch (Exception) { }
    finally
    {
    mutex.ReleaseMutex();
    }
    }
    }

    soit on crée l 'app mere soit l'app client (genre dans ton cas, l app cliente peut dire "désolé mais le programme est deja lancé")


    je pense que c est la façon propre de faire ce que tu souhaites !
    (d'autres peuvent donner leur avis)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    OK!
    Je pense que l'exemple que je t'ai donné est clair, et c'est une bonne approche (si quelqu un peu critiquer mon code qu'il n'hesite pas à l'ameliorer)

    pour info : mon exemple marche sous windows server 2003 (j ai pas testé sous citrix)

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    J'ai tester ma méthode ne marche pas avec le montage/maquettage standard citrix de notre application.....


    Je vous remercie je vais voir une autre technique....
    Autre chose....

Discussions similaires

  1. [Batch] multi lancement application plus rebootage pc
    Par castou60 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 03/02/2012, 01h33
  2. Pb lancement application extérieure
    Par christellel198 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/10/2005, 15h01
  3. [vb][excel][MSPROJECT] lancement application
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/09/2005, 11h18
  4. Fermeture et delay de lancement application sur dos
    Par jason59 dans le forum Windows
    Réponses: 5
    Dernier message: 18/09/2005, 20h01
  5. [NetBeans] [4.1] lancement application
    Par hutchuck dans le forum NetBeans
    Réponses: 11
    Dernier message: 31/08/2005, 22h59

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