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 :

Interface utilisateur installer VS2008


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut Interface utilisateur installer VS2008
    Bonjour,
    Je voudrais rajouter une fenêtre à l'installeur de mon service.
    Je voudrais la rajouter à la fin une fenêtre où je pourrais modifier une certaine ligne de mon app.config.
    Est-ce que c'est possible ? Si oui, comment je peux faire?
    Merci
    Ou sinon ouvrir mon fichier .config avant la fin de l'installation.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 184
    Points : 12 327
    Points
    12 327
    Par défaut
    Tout ceci est possible dans un MSI mais les projets vdproj (projets de déploiement de VS) sont très très limités au niveau des fonctionnalités.

    Regardez du côté des installateurs plus puissants comme Wix (http://wix.sourceforge.net/).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Merci de ta réponse,j'ai trouvé une fenêtre intéressante qui permet d'entrée des champs.
    Mais je ne sais pas comment faire pour que en modifiant ces champs cela modifie mon app.config

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Comment je peux faire pour modifier les champs d'un .config grâce à une fenêtre dans le setup d'installation.J'ai ajouté une fenêtre éditeur de texte à la fin de mon install.

  5. #5
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    Dans ton service, il faut que tu disposes d'une classe qui hérite de la classe Installer. A partir de là, tu surcharges la méthode Install et tu peux écrire dans ton app.config à partir des valeurs récupérées lors de l'installation via ton MSI.

    Un excellent tuto qui t'expliquera cela en détail (partie "Au coeur de notre classe Installer").

    Bon courage

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Merci,mais tu ne m'as pas mis le lien du tuto.
    J'espére que le tuto montre aussi comment modifier le dossier d'installation par défault.

  7. #7
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par Mathew77 Voir le message
    Merci,mais tu ne m'as pas mis le lien du tuto.
    Pour modifier le dossier d'installation, cliques droit sur ton setup project > View > File System. Là tu sélectionnes "Application Folder" et dans les propriétés, tu verras "Default Location" qui correspond à ce que tu cherches
    Fichiers attachés Fichiers attachés

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Je galère avec les Context.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    InstallContext Context;
                    string repertoireentre = Context.Parameters["input"];
                    parametre.repertoireEntree = @repertoireentre;
    Bien sûr ça ne marche pas,mais si quelqu'un a déja utilisé cette méthode,j'aimerais bien qu'il m'aide.
    J'ai mis dans mes paramétres d'actions personnalisées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /input=[EDITAINPUT]/output=[EDITAOUTPUT]
    Le but est d'écrire dans mon .config grâce à une fenêtre de texte durant mon installer.

  9. #9
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Hum, tu pourrais donner des traces de ton erreur stp ? Tu obtiens une exception ou autre ? Et un petit bout de code ce serait pas mal aussi (genre ta méthode Install)

    Parce que là j'avoue que c'est difficile de t'aiguiller

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Enfaite je viens de m'apercevoir que ce que je veux faire n'est pas disponible dans VS2008.En effet je ne peux pas ajouter de bouton "parcourir"dans une fenêtre lors de mon installation,pour aller chercher les dossiers d'entrée et de sortie que l'utilisateur configure pour mon service.
    Donc j'abandonne.
    Je vais essayer de lancer le .config dans le bloc-note à la fin de l'installation à la place.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    En ajoutant un windows Form,je peux arriver à faire ce que je veux.Mais je maitrise mal l'écriture dans un xml.
    Mon xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="Input" value= "C:\Test" />
        <add key="Output" value= "C:\Test\sortie\" />
      </appSettings>
    </configuration>
    Je dois modifier la valeur des 2 values.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XmlTextWriter repertoireEntre = new XmlTextWriter("App.config", null);
                repertoireEntre.WriteAttributeString("value", ff.FileName);
                repertoireEntre.WriteEndElement();

  12. #12
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    Un petit exemple fonctionnel à partir de ce fichier app.config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="install.folder" value="nothing" />
      </appSettings>
    </configuration>
    Pour modifier la valeur de "install.folder" dans ta classe Installer, à partir d'une valeur récupérée via le MSI :
    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
    try {
    	// Getting the installation folder
    	string installFolder = Context.Parameters["assemblypath"];
     
    	// Modifying the App.config file
    	string appConfigFile = "MyExe.exe.config";
    	string fullPath = Path.Combine(installFolder, appConfigFile);
    	XmlDocument xmlDoc = new XmlDocument();
    	xmlDoc.Load(fullPath);
     
    	// Modifying XML nodes
    	string appConfigPattern = "//appSettings/add[@key='{0}']";
    	XmlNode pathNode = xmlDoc.SelectSingleNode(string.Format(appConfigPattern, "install.folder"));
    	pathNode.Attributes["value"].InnerText = installFolder;
     
    	// Validate the changes
    	xmlDoc.Save(fullPath);
    }
    catch (Exception exception) {
    	// ...
    }
    Il ne te reste plus qu'à l'adapter à ton besoin...

    Bon courage

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Merci

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    C'est bizarre,j'ai pourtant ajouter comme référence system.configuration.install mais il me trouve pas Context alors que je le vois dans l'explorateur d'objet...

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    J'avais essayé avec cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string repertoireSortie = ConfigurationSettings.AppSettings["Output"];
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.AppSettings.Settings.Remove("Output");
                config.AppSettings.Settings.Add("Output", ffff.SelectedPath);
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
                repertoireSortie = ConfigurationManager.AppSettings["Output"];
    Or avec cette méthode ne marche pas,car ce code est dans mon Form,or mon .config doit s'appeller comme mon service car mon .config est pour mon service.Donc j'ai essayé avec les xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XmlDocument configXml = new XmlDocument();
                configXml.Load(Application.StartupPath + "\\ConvertXml.exe.config"/*Emplacement de ConvertXml.exe.config*/);
                XmlElement root = configXml.DocumentElement;
                XmlNode elem = root.SelectSingleNode("appSettings[@key='Input']");
                XmlNode value = elem.SelectSingleNode("value");
                value.InnerText = fff.SelectedPath;
                configXml.Save(Application.StartupPath + "\\ConvertXml.exe.config");
    Et bien sûr ça ne marche pas
    Je voulais essayer ta méthode eusebe19,mais impossible de trouver la méthode Context.

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 184
    Points : 12 327
    Points
    12 327

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    Il y a une erreur que je n'arrive pas à résoudre dans le code de eusebe19.
    Pour mon dossier d'installation, son property est TARGETDIR. Donc j'ai fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string installFolder = Context.Parameters["TARGETDIR"];
    Mais il me donne l'erreur :
    Value cannnot be null: path1


    EDIT:
    J'ai confondu,c'est du côté des actions personnalisée qu'il faut que je regarde

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    J'ai mis dans CustomActionData de mon Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /INSTALLDIR="[TARGETDIR]\"
    Alors qu'avant c'était mon service.
    Enfin mon form et mon service s'installe dans le même répertoire.
    J'ai donc modifé comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string installFolder = Context.Parameters["INSTALLDIR"];
    Et rien n'y fait, j'ai encore la même erreur.
    Je ne comprends pas, je m'arrache les cheveux sur cette fonction.
    Utiliser un Form avec un bouton parcourir et une textbox pour ensuite mettre le contenu de cette textbox dans mon .config qui est rattaché à mon service n'a pas l'air autant compliqué.
    Je trouve aucun tuto pour m'aider surtout

  19. #19
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Euh... je suis perdu là J'aurais besoin de quelques précisions...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /INSTALLDIR=[TARGETDIR]
    Ce bloc (sans les guillemets !) est bien dans ton setup project dans un custom action data ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string installFolder = Context.Parameters["INSTALLDIR"];
    Tu exécutes bien cette ligne dans la méthode Install de ta classe qui hérite de Installer ?

    Et ton Form, il se situe à quel niveau dans tout ça ? Parce qu'il me semble avoir compris qu'il te servait à utiliser un truc du genre d'un OpenFileDialog, mais à quel moment est-il appelé ? Etc.

    Merci

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 31
    Points
    31
    Par défaut
    J'arrête mon projet se soir, l'utilisateur ira modifiera manuellement les champs du .config tant pis. Je vous remercie de votre aide en tout cas

Discussions similaires

  1. Interfaces utilisateurs
    Par 18Marie dans le forum Oracle
    Réponses: 6
    Dernier message: 15/03/2006, 22h48
  2. [2D] Interface utilisateur
    Par Captain_JS dans le forum OpenGL
    Réponses: 8
    Dernier message: 07/02/2006, 12h25
  3. Aspect interface utilisateur
    Par free07 dans le forum Composants VCL
    Réponses: 14
    Dernier message: 13/09/2005, 13h13
  4. Réponses: 2
    Dernier message: 31/10/2003, 16h32
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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