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

Windows Forms Discussion :

Le chemin de l'appli n'est pas le même dans le Menu et dans le démarrage Windows


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Par défaut Le chemin de l'appli n'est pas le même dans le Menu et dans le démarrage Windows
    Bonjour à tous,

    J'ai créé une appli VB 2008 et je bloque depuis quelques jours sur l'auto-démarrage testé sur une config Vista indépendante. Je dois dire que les chemins vituels de Vista, pour moi c'est le brouillard.

    Donc lorsque je déploie l'appli sur un poste Vista de test, tout va bien. L'appli est lancée après le déploiement et fonctionne parfaitement bien. Si je ferme l'appli et la relance, il n'y a aucun problème.

    En revanche, lorsque je redémarre Windows c'est la cata! En effet, l'appli auto-démarrée ne retrouvent plus ses fichiers de contenu (ex MaBase.sdf) et les Settings sont ré-initialisés ! Je ferme et relance depuis le Menu 'Tous les programmes' du bureau et là tout fonctionne bien!

    Si je regarde dans la base de registre le chemin de l'exécutable et l'utilise manuellement, alors le même problème ré-apparaît !!!

    A l'évidence, les chemins ne sont pas les mêmes dans le menu et dans la base de registre !!! Je n'y comprends rien.

    Voici un extrait de ma source :

    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
        Public Sub AppliAutoDemarre(ByVal Action As Boolean) 
           
    
            Dim regKey As RegistryKey
            regKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    
            Dim AppliEXE = Application.ExecutablePath
            Dim IsKeyExist As Boolean = (regKey.GetValue(Application.ProductName) = AppliEXE)
           
            If Action And Not IsKeyExist Then
                regKey.SetValue(Application.ProductName, AppliEXE)
            End If
    
            If Not Action And IsKeyExist Then
                regKey.DeleteValue(Application.ProductName)
            End If
    
            regKey.Close()
    
    
        End Sub
    
     Private Sub ValideOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ValideOptions.Click
    
    
            My.Settings.PERIODE = MonAppli.Période
            My.Settings.ENCRE = MonAppli.CouleurEncre
            My.Settings.AUTODEMARRE = MonAppli.AutoDemarre
            My.Settings.VISIBLE = MonAppli.hVisible
            My.Settings.GENRE = MonAppli.Genre
    
            Call AppliAutoDemarre(MonAppli.AutoDemarre)
            My.Settings.Save()
            Me.Close()
    
    
        End Sub


    Merci d'avance de votre aide ...


    Gilles

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Dit moi pas que tu utilises des chemins relatifs dans ton application !

    En fait, j'ai l'impression que tu as des trucs genre au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenFile(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "MaBase.sdf"))
    Le premier code n'est pas correcte car il suppose que l'application est lancée avec comme répertoire courant le dossier qui contient l'exe, ce qui est une supposition bien heureuse, et cela cause souvent des problèmes si on n'y fait pas attention.
    Si faire ces changements ne résous pas le problème, il faudrait peut être que tu nous montre un peut de code ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Par défaut
    Bonjour

    Concernant les fichiers de contenus, un dossier files a été créé dans l'Explorateur de Solution, voici le chemin utilisé dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.StartupPath & "\files"
    Concernant la base sql, voici la valeur de My.Settings.planningConnectionString:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=|DataDirectory|\files\planning.sdf

    Merci de votre aide ...

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Creatiel Voir le message
    Concernant la base sql, voici la valeur de My.Settings.planningConnectionString:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=|DataDirectory|\files\planning.sdf
    Complète toi même le chemin avec Application.StartupPath pour modifier la chaine de connexion, ou alors modifie le répertoire actuel avec Environment.CurrentDirectory pour y mettre Application.StartupPath

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Par défaut
    Bonjour,

    J'ai essayé Environment.CurrentDirectory = Application.StartupPath
    mais cela ne change rien.

    J'ai introduit un mouchard pour connaître le chemin utilisé pour ExecutablePath et DataDirectory

    Le chemin de l'exécutable est strictement le même dans les 2 cas :
    C:\Users\Admin\AppData\Local\Apps\2.0\0PEAEHYQ.AL2\05Q327MY.8C6\plan..tion_a8187d5594136725_0001.0000_731ba769c3f56475\PLAN 3000.exe

    En revanche, le chemin affecté à DataDirectory est différent :

    1 - Appli depuis le Menu:
    C:\Users\Admin\AppData\Local\Apps\2.0\Data\37X04Z7X.VBY\LH4XXR2A.146\plan..tion_a8187d5594136725_0001.0000_731ba769c3f56475\Data\files

    2 - Appli auto-démarrée :
    C:\Users\Admin\AppData\Local\Apps\2.0\0PEAEHYQ.AL2\05Q327MY.8C6\plan..tion_a8187d5594136725_0001.0000_731ba769c3f56475\files

    Effectivement dans le dossier 2, le fichier planning.sdf est absent.

    Comment expliquer la différence de chemin alors que l'exécutable est bien le même ?

    De surcroît, les Settings sont visiblement affectés à 2 users différents !

    Merci de votre réponse

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    oulà, on dirait que le problème est plus profond ....
    Comment est assignée la valeur de DataDirectory ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Par défaut
    Bonjour,

    Lorsque je crée une base avec l'explorateur de base de données, Connection String contient |DataDirectory|

    Je ne connais pas d'objet path qui le représente dans VB. Je ne peux donc pas le manipuler.

    Gilles

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Par défaut
    Bonsoir,

    J'ai regardé le fichier cible dans le Menu et il ne s'agit pas de MonAppli.EXE !

    J'ai essayé de me documenter et j'ai cru comprendre que le FW ne considère pas un fichier EXE comme une application déployée, d'où le pb avec les chemins et les Settings.

    Après déploiement Click-Once, Il faut lancer un raccourci de type MonAppli.appref-ms

    J'ai piqué celui du Menu, ... ainsi dans ma fonction Auto-Demarre j'ai donc remplacé ExecutablePath par AppliStartPath défini de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Public Function AppliStartPath() As String
     
            Dim ProgramsPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Programs)
            Dim ShortCutPath As String = System.IO.Path.Combine(ProgramsPath, Application.ProductName)
            ShortCutPath = System.IO.Path.Combine(ShortCutPath, Application.ProductName) & ".appref-ms"
            Return ShortCutPath
     
        End Function
    A présent, mon programme fonctionne bien mais je ne suis pas sûr que cela soit le moyen le plus sûr. Qu'en pensez-vous? Qui peut m'en dire davantage a propos de "appref-ms" ?

    Gilles

Discussions similaires

  1. Un nom de chemin d'accès vide n'est pas légal.
    Par Jinkas dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 06/05/2013, 16h35
  2. [XL-2003] Conversion .pdf le nom du fichier n'est pas le même que le .xls.
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2013, 00h44
  3. F5 et location.reload(true) c'est pas la même chose en chrome ?
    Par bouhmid86 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/12/2012, 14h10
  4. mon appli n'est pas réactive
    Par firgon dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 30/03/2009, 14h46

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