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

VB.NET Discussion :

Assembleur, distribuer application


Sujet :

VB.NET

  1. #1
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut Assembleur, distribuer application
    Bonjour,

    J'ai créé une application qui utilise des DLL d'un autre logiciel.
    Les PC qui vont recevoir cette application n'ont pas forcément le dit logiciel.

    Je pensais donc enregistrer les DLL en locale afin de les enregistrer sur les PC destinataires avec Regasm.

    Hors cela ne fonctionne pas.

    Après quelques recherches, j'ai vu des sujets sur l'assembleur.
    Je me suis aperçu que dans C:\Windows\Assembly, j'avais le même nom que mes DLL.

    Donc voici mes questions :

    - Est-il possible de distribuer des applications qui font références à des DLL qui ne sont pas forcément installées sur le PC hôte ?
    - Qu'est-ce que l'assembleur ?
    - Comment fonctionne t'il ?
    - Comment faire pour généré l'assembleur sur le PC hôte ?
    - Est-ce que cette affaire d'assembleur sera suffisant pour faire tourner mon application sur ces PC ?
    - Où bien, l'utilisation de runtime est elle la seule solution à mon problème ?

    Merci beaucoup de bien vouloir éclairer ma pauvre lanterne.

    Cordialement

    Christophe

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    pour utiliser une dll dans un .Exe il faut .net il faut que la dll soit référencée pendant le développement dans visual studio (sauf pour du p/invoke je pense)
    ensuite si c'est une dll COM il faut la registrer (regsvr32.exe pathdll)
    si c'est une dll .NET il faut soit la mettre à côté de l'exe (simple), soit dans le GAC (plus compliqué)

    un assembly en .net est un exe ou une dll
    l'assembleur est un langage de programmation de très bas niveau
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir Pol63,

    Merci pour toutes ces précisions.

    J'ai continué, de mon côté, à essayer de faire fonctionner mon appli, mais sans résultats probants.
    Effectivement, il semblerait que je dois enregistrer ces DLL dans le GAC.
    J'ai un collègue spécialiste en informatique qui m'aide sur ce projet.

    Nous continuerons demain nos tests mais je serais certainement obligés de te demander encore conseil et notamment pour l'enregistrement dans le GAC car nous n'avons pas compris comment faire.

    Cordialement

    Christophe

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    l'enregistrement dans le gac est rarement obligatoire (référence par nom fort seulement je crois), et n'est valable que pour les dll .NET
    et pour les dll .NET les mettre à côté de l'exe suffit

    ta dll est-elle en .net déjà ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir,

    En fait, je n'en sais rien.

    Les DLL que j'utilises sont issues d'un logiciel externe et je ne sais pas comment faire pour savoir si elles sont en .Net.

    L'idée est de pouvoir utiliser mon application sur des PC qui n'ont pas ce logiciel tout en utilisant les DLL du dit logiciel.

    Cordialement

    Christophe

  6. #6
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Si ce sont des biblios dotnet, elles ont été ajoutées aux "références du projet" et leurs objets sont utilisés comme des objets dotnet. Si ce sont des biblios natives, elles sont utilisées via un mécanisme appelé p/invoke, en important ces fonctions via des attributs [DllImport].

    Une fois que nous saurons si ce sont des bibilios dotnet ou natives nous pourrons t'aider. Cela étant dit, il n'y a aucune histoire d'assembleur en dotnet (le langage assembleur est le langage "machine", bas niveau), tu dois avoir confondu avec le terme "assembly" (et dotnet une dll est une assembly) et le "global assembly cache". Tu as également avoir compris le mot "runtime" (qui signifie simplement "lors de l'exécution" : run + time, le moment où le programme s'exécute).

    Petite question : peux-tu redistribuer les dll manquantes si l'appli n'est pas installée (peu importe si elles ne fonctionnent pas) ?

  7. #7
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir DonQuichote,

    Vraiment un grand merci pour ces précisions.

    En effet, sur la version précédente de ce logiciel externe, les DLL étaient stockées dans un répertoire DotNet.
    Pour la nouvelle version, je soupçonne que mon service informatique ait mal installé le logiciel car je n'ai plus ce répertoire dans le répertoire d'installation du logiciel.

    Je dois revoir ce détail avec le service informatique dès demain.
    Donc pour récupérer les DLL de la nouvelle version de ce logiciel externe, mon service informatique a réussit à les copier en MsDos en pointant dans C:\Windows\Assembly.


    Pour les DLL, à priori pas de problème pour les redistribuer.
    Il me suffit de les copier.
    Le problème, c'est que je ne suis pas sur de bien les enregistrer sur mes nouveaux PC.
    En fait, pour l'instant j'ai créer un batch pour les enregistrer avec Regasm.
    Est-ce la bonne solution ?

    Assembly, GAC, j'avoue que tout cela est totalement inconnu pour moi.
    Habituellement, je développe sous Access. En Vb.Net, c'est véritablement ma 1° application, alors c'est la découverte pour le processus que je voudrais réaliser.

    Merci de vos conseils.

    Cordialement

    Christophe

  8. #8
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Si ce sont des biblios (assemblies) dotnet, elles doivent effectivement être impérativement présentes pour démarrer l'application, sans quoi une exception sera levée, car leur présence est vérifiée au démarrage. La situation aurait été différente avec des biblios natives, qui ne sont recherchées qu'au moment où elles sont utilisées.

    Les assemblies peuvent être placées à plusieurs endroits (plus de détails sur msdn - how the CLR locate assemblies) :
    * Dans le même dossier que l'exécutable lui-même.
    * Dans le GAC (global assembly cache, le c:\windows\assembly). On ne doit pas y copier directement les dll, il faut appeler l'utilitaire gacutil.exe (msdn - gacutil)
    * Dans un sous-dossier du dossier de l'application, portant le même nom que la dll voulue.
    * Dans tout autre dossier explicitement spécifié dans le fichier app.config ( msdn - <probing>).

    Le plus simple ici est donc d'en inclure une copie dans le même dossier que l'exécutable. Note cependant que pour la redistribution des assemblies requises, je ne me référais pas à un problème de possibilité physique mais de droits (l'éditeur de ces biblios autorise t-il leur libre redistribution ?). Si ce n'était pas possible il faudrait apporter des changements à l'application pour que ces biblios manquantes ne fassent plus partie de ses références en créant un plugin (une assembly tierce) qui serait ou non chargée à l'exécution.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Si ce sont des biblios dotnet, elles ont été ajoutées aux "références du projet" et leurs objets sont utilisés comme des objets dotnet. Si ce sont des biblios natives, elles sont utilisées via un mécanisme appelé p/invoke, en important ces fonctions via des attributs [DllImport].
    il y a les dll COM qui sont très répandues aussi



    Citation Envoyé par DonQuiche Voir le message
    Si ce sont des biblios (assemblies) dotnet, elles doivent effectivement être impérativement présentes pour démarrer l'application, sans quoi une exception sera levée, car leur présence est vérifiée au démarrage
    non, les dlls .net sont chargées lors du premier appel les nécessitant
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Salut,
    j'ai pas lu la conversation jusqu'à la fin mais pour voir si des DLL sont en .NET tu peux utiliser .NET Reflector tu le glisse dans la liste et si il apparait en rouge, ça veut dire qu'il n'est pas en .NET
    J'espère t'avoir un peu aidé ! Bye

  11. #11
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir à tous,

    Désolé du retard de réponse, mais j'ai beaucoup de travail en ce moment.

    Donc, une fois de plus, un grand merci à vous tous pour vos conseils.

    Toutefois, tout cela dépasse mes compétences et je vais rester humble sur ce projet.

    Dans l'immédiat, j'ai inclus mes références dans mon application et cela fonctionne sur les PC qui ont le même logiciel externe.

    J'envisage de faire un stage Vb.Net l'année prochaine. Je penses qu'à l'issu, tout cela sera plus clair pour moi et je pourrais alors reprendre mon idée initiale.

    Encore merci à tous

    Cordialement

    Chrsitophe

Discussions similaires

  1. Algorithme Crible d'Ératosthène en distribué (application réparti)
    Par tomap3 dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 12/07/2010, 16h15
  2. VB2005 Distribuer application
    Par cricrides dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/02/2008, 16h40
  3. [Debutant] application distribuée ??
    Par tiPouick dans le forum Développement
    Réponses: 2
    Dernier message: 16/06/2003, 17h17
  4. Droits pour distribuer une application
    Par aliasjcdenton dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/03/2003, 14h15
  5. Réponses: 2
    Dernier message: 15/04/2002, 13h56

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