Enregistrer dll

TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 26 juin 2007 à 18:03
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 26 juin 2007 à 23:03
Bonjour,

Comment en .NET 2.0 on fait pour mettre toutes ses librairies dans le dossier système de Windows et faire en sorte que tous les futurs prgs exe qu'on crèe ira voir dans le dossier système et non pas seulement dans le dossier de l'application ?

(Ce qui évitera d'avoir tjs à dupliquer les dlls par applications) ?

[blue]TIGER/blue

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 juin 2007 à 18:16
Dans le paramétrage du package d'installation, il suffit de dire que ces dll doivent etre instalées dans le dossier système.

Si, dans ton code, tu ne définis pas de chemin pour les dll, elles dll sont recherchées dans certains dossier de la machine, dans un ordre précis. La recherche s'arrete au premier fichier ayant un nom identique à la dll cherchée. L'ordre de recherche est le suivant :
- Dossier de l'appli
- Dossier Windows
- Dossier System
- Dossiers indiqués par la variable d'environnement Path dans l'ordre d'apparition

Si tu met tes dll uniquement dans le dossier system et que dans le code, tu ne definis pas de chemin, elles doivents etre automatiquement trouvées.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
26 juin 2007 à 20:18
Tout d'abord, merci pour ta réponse super rapide, casy, c'est sympa.

Mais ce que tu dis n'est-il pas vraiment seulement en VB6 ?, car en .NET 1 ou 2 on n'a plus besois de faire des packages d'installation. C'est la 1 intérêt de .Net.

Alors je vois plusieurs possibilités à mon problème :
1/ Dans le projet, j'ajoute évidemment la référence à ma dll pour travailler avec (par l'explorateur de solution). Pour le moment j'ai pas d'autre choix que d'aller chercher la dll par "parcourir...". Le top serait que la dll aparait dans l'onglet "Composants .NET" comme les dll de Microsoft.
J'ai lu qcq part d'ailleurs qu'il faudrait utilser gacutil.exe mais j'ai pas très bien compris le principe (du moins j'ai une erreur en voulant faire gacutil.exe /i mydll.dll et je ne suis pas sur que je suis sur la bonne voie)

2/ Je copie où je veux mon exe et sa dll, ca marche. Je retire la dll pour la mettre dans C:\Windows\system32\, je n'ai pas d'erreur de fichier introuvable mais pas non plus le prg qui se lance ..
Certainement qu'avec un pack d'installation là ca marcherait, mais je me dis que .NET 2.0 n'en nécessite pas (je peux me tromper)

3/ Qd j'aurai plusieurs prgs qui utiliseront la même dll. En VB6, effectivement il suffisait d'enregistrer la dll par le pack d'installation ou encore par regsvr32 et ts les prgs exe allait chercher dans le dossier système. Mais ici, si c'est toi qui a raison (nécessaire de faire un pack); il va falloir faire un pack pour chaque prg ? j'en doute vu l'avantage de .net 2.0 ...

Bref, si tu me dis que tu parles bien de .net 2.0 également, peux-tu me préciser ce que tu entends par 'ne pas définir de chemin dans le code'. Dans le code VB en effet y a rien à indiquer, mais c'est dans le projet solution/références que je dois aller chercher la dll par parcourir (et donc l'attaché au bin de l'exe)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 juin 2007 à 20:59
Effectivement, les programmes .net peuvent ne pas avoir besoin de pack d'installation, à condition de n'utiliser des composants de base de .Net.

A partir du moment ou tu utilise des composants extérieurs, comme des dll par exemple, il faudra bien à moment donné procéder à l'installation de ces composants sur la machine cible.
Alors soit tu peux garantir que TOUS ces composants là seront systématiquement déjà installé, dans ce cas tu peux te passer du pack d'installation. Soit tu ne peux pas le garantir à 100%, alors éventuellement prendre tes précautions, au cas où, en créant un pack.

Ce n'est ni plus, ni moins que ce qui est fait avec VB6, à la différence qu'avec VB6 on y est quasiment obligé car vu le peu de composants intégrés, un prog VB6 sans composants externe est quand même rare, quoiqu'en disent certains.

Quant à ta dll, je ne connaissais pas l'astuce de gacutil. Mais visiblement ce n'est fait que pour des assembly.

Pour ta dll, vérifie dans ton projet que tu ne puisse pas dire ou allez la chercher.

Comment est-elle visible dans ton projet, comment l'utilise-tu? Tu utilise des instructions Declare, ou alors c'est une dll COM, qui te et des classes à disposition, style Excel.Application?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
26 juin 2007 à 23:03
Ce sont bien toutes des dlls que je crèe moi même. Une série de bibliothèque de classes .NET 2.0 que je réutilise dans mes applications.

Une fois référencée dans l'explorateur de solutions, y a plus qu'à faire :
imports monnamespace.mydll

et dans le code :
dim xx as new mydll 

Ce qui m'ennuie c'est donc de voir que j'ai déjà fait qcq applications utilisant ces dlls et que parfois je retravaille les dlls (ajout de fonctions ...). il faut alors recopier les dll dans chaque dossier de chaque application.

Je pense que je vais passer par un pack. Mais c'est dommage, la facilité de .NET (juste besoin du framework) et le fait qu'un simple copier/coller suffit pour faire marcher mes applications sur n'importe quel PC était parfait .. sauf qu'il faut laisser les dlls fait maison dans le même dossier que les applications, d'où ma question. En plus avec un pack, plus il faudra surement être aussi en mode administrateur pour l'installer...

Je perds donc ces 2 avantages : 1 seul fichier dll pour toutes les applications et pas de mode amdin ou d'enregistrement à faire sur PC client.

Mais si faut passer par un pacj, on passera par un pack. Je le faisais bien pour ts mes applications VB6 :-))

Et encore merci pour ton aide !
0