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 :

Ajouter une bdd access dans le setup d'installation d'un service


Sujet :

C#

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Ajouter une bdd access dans le setup d'installation d'un service
    Bonjour tout le monde

    Récemment, j'ai créé un service windows qui permet de bloquer des processus, cette liste de processus est contenue dans une table sous Access.
    Hier, j'ai ajouté un Setup d'installation à mon service, après quelques galères, c'est bon il fonctionne, mais uniquement sur mon ordinateur puisque c'est moi qui possède la base de données Access 2007.
    J'ai donc 2 questions.
    La première est : Comment je peux ajouter ma base de données à mon setup ?
    J'ai déjà essayé en faisant "ajouter/fichier" sur mon setup puis en cherchant après mon fichier.accdb, le fichier s'ajoute bien à ma solution, mais lorsque je génère mon setup j'ai une fenêtre qui me demande d'installer "Sql Server 2005 tools" qui n'a aucun rapport avec access qui plus est.

    Ma deuxième question est : Que dois-je changer dans mon code, sachant que mon service windows fait appel à une dll, cette dll contient le connectionstring à ma base de données access que j'appelle de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            #region Idata Members
            string LIB_data.Idata.IfileDB
            {
                get
                {
                    return "C:\\Users\\Annabelle\\Desktop\\SVC_WINDOWS\\SVC_Windows\\LIB_data\\data\\connectionString.dat";
                }
            }
            #endregion
    Avec IfileDB une propriété de mon interface Idata :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            string IfileDB
            {
                get;
            }
    Mon connectionString.dat contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Annabelle\Desktop\SVC_WINDOWS\SVC_Windows\bdd_interdit.accdb;Persist Security Info=False;
    J'ai déjà pas mal cherché, j'ai été sur beaucoup de tutos portant sur la création des setup sous visual studio, mais je n'ai rien trouvé

    Merci d'avance pour vos réponses,
    Annabelle

  2. #2
    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 : 41
    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 979
    Points
    14 979
    Par défaut
    Salut.

    Juste pour satisfaire ma curiosité , j'aurais une question : il n'y a que la liste des processus à bloquer dans ta bdd access ?

    Sinon, pour ajouter un ou des fichiers en sortie à ton setup project :

    • ajoutes ta bdd au projet correspondant à ton service
    • dans ton setup project, tu fais "Add > Project Output" et tu sélectionnes "Content Files"
    • après à toi de copier au bon endroit ta bdd (du style "C:\Documents and Settings\All Users\Application Data\etc")

    Après, ton problème de connection string est plus un problème de conception que d'autre chose (ta connection string dans une dll externe où elle est écrite en dur )

    Bon courage

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Oui, la base de données contient une table : TB_interdit
    Cette table contient 2 champs : id_interdit, nom

    Pour le connectionstring, je n'ai pas le choix, c'est dans les obligations du projet !

  4. #4
    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 : 41
    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 979
    Points
    14 979
    Par défaut
    Citation Envoyé par 0nn2belle Voir le message
    Pour le connectionstring, je n'ai pas le choix, c'est dans les obligations du projet !
    Qu'elle soit en dur dans une DLL externe ???

    Et la base access aussi est obligatoire ??

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Je ne comprends pas très bien, je dois faire quoi une fois que mon "content files" a été crée ??
    Et oui la base de données access est obligatoire ainsi que la dll externe (obligation de créer un assembly publique)

    (J'oubliais dans le post précédent : merci pour ta réponse)

    Citation Envoyé par eusebe19 Voir le message
    Salut.

    Juste pour satisfaire ma curiosité , j'aurais une question : il n'y a que la liste des processus à bloquer dans ta bdd access ?

    Sinon, pour ajouter un ou des fichiers en sortie à ton setup project :

    • ajoutes ta bdd au projet correspondant à ton service
    • dans ton setup project, tu fais "Add > Project Output" et tu sélectionnes "Content Files"
    • après à toi de copier au bon endroit ta bdd (du style "C:\Documents and Settings\All Users\Application Data\etc")

    Après, ton problème de connection string est plus un problème de conception que d'autre chose (ta connection string dans une dll externe où elle est écrite en dur )

    Bon courage

  6. #6
    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 : 41
    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 979
    Points
    14 979
    Par défaut
    Citation Envoyé par 0nn2belle Voir le message
    Je ne comprends pas très bien, je dois faire quoi une fois que mon "content files" a été crée ??
    Le principe de ce que tu veux obtenir :

    • tu distribues ton service via un MSI
    • lors de l'installation, le MSI copie la base de données sur l'ordinateur local
    • le service une fois démarré fait appel à cette bdd

    Donc :

    • en ajoutant le content files, la bdd est incluse au conteneur que représente ton MSI (le conteneur contient l'exe, les dlls, enfin tout ce dont tu as besoin pour exécuter ton service)
    • ce que tu dois faire, c'est juste dire à ton setup project "quand tu fais l'installation, copie tel fichier à tel endroit"

    Ensuite :
    Citation Envoyé par 0nn2belle Voir le message
    Et oui la base de données access est obligatoire ainsi que la dll externe (obligation de créer un assembly publique)
    Je suis rassuré, tu n'es pas obligée de laisser ta connection string en dur

    Une autre question : c'est la DLL qui gère la connexion à la BDD ou elle ne fait que te renvoyer la connection string ?

    Si elle gère toute la connexion à la BDD :

    • dans le projet correspondant à ton service, tu as forcément (ou en tout cas tu en auras besoin) une classe qui hérite de la classe Installer
    • cette classe est capable de récupérer des valeurs dynamiquement depuis le MSI : dans ton cas, le répertoire où tu as copié ta BDD
    • toujours dans cette classe, via le nom de répertoire récupéré, tu peux construire une connection string et la fournir en entrée d'une méthode quelconque de ta dll pour qu'elle puisse se connecter à ta bdd

    Je ne sais pas trop si j'ai été clair dans mes propositions

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    C'est bon ça fonctionne, je n'ai pas eu besoin de faire le content files, mais juste en laissant la sortie principale.

    J'explique ce que j'ai fait pour résoudre le problème :
    J'ai choisi le répertoire d'installation du setup, dans ce dernier vont s'installer mon service.exe ainsi que ma bdd et mon connectionstring.dat
    Dans mon connectionString j'ai mis le chemin du répertoire d'installation, et dans mon code qui fait appel à mon connection string j'ai également le chemin du répertoire d'installation.
    ça fonctionne nickel à part que le service ne se démarre pas automatiquement, je dois aller dans services.msc et démarrer le service, mais ça encore ce n'est que supplémentaire.

    Sinon pour répondre à ta question, c'est la dll qui gère la connexion à la bdd.

    Voilà, tes réponses ne sont pas exactement celles qui m'ont servis, mais elles m'ont permis d'avoir la bonne réflexion pour résoudre mon problème.

    Donc merci

    Citation Envoyé par eusebe19 Voir le message
    Le principe de ce que tu veux obtenir :

    • tu distribues ton service via un MSI
    • lors de l'installation, le MSI copie la base de données sur l'ordinateur local
    • le service une fois démarré fait appel à cette bdd

    Donc :

    • en ajoutant le content files, la bdd est incluse au conteneur que représente ton MSI (le conteneur contient l'exe, les dlls, enfin tout ce dont tu as besoin pour exécuter ton service)
    • ce que tu dois faire, c'est juste dire à ton setup project "quand tu fais l'installation, copie tel fichier à tel endroit"

    Ensuite :

    Je suis rassuré, tu n'es pas obligée de laisser ta connection string en dur

    Une autre question : c'est la DLL qui gère la connexion à la BDD ou elle ne fait que te renvoyer la connection string ?

    Si elle gère toute la connexion à la BDD :

    • dans le projet correspondant à ton service, tu as forcément (ou en tout cas tu en auras besoin) une classe qui hérite de la classe Installer
    • cette classe est capable de récupérer des valeurs dynamiquement depuis le MSI : dans ton cas, le répertoire où tu as copié ta BDD
    • toujours dans cette classe, via le nom de répertoire récupéré, tu peux construire une connection string et la fournir en entrée d'une méthode quelconque de ta dll pour qu'elle puisse se connecter à ta bdd

    Je ne sais pas trop si j'ai été clair dans mes propositions

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

Discussions similaires

  1. Importer une bdd access dans SQL Server
    Par nanterrien dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 11/10/2008, 22h15
  2. Import d'une bdd Access dans SQL Server 2005 /2000
    Par nanterrien dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 06/10/2008, 15h03
  3. Afficher des donnees d'une BDD Access dans TextBox
    Par bellak dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/09/2008, 16h13
  4. Connection et différentes actions dans une BDD access par WINSOCK
    Par muzele dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/08/2007, 18h34
  5. insertion d'un champs dans une bdd access
    Par pepper18 dans le forum SGBD
    Réponses: 1
    Dernier message: 26/05/2006, 19h47

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