Τρόπος λήψης εξαρτημένα DLL στον Internet Explorer με ένα αρχείο.inf

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 165075 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Συχνά είναι απαραίτητη η λήψη εξαρτημένα DLL μαζί με ένα στοιχείο ελέγχου ActiveX. Τα στοιχεία ελέγχου MFC και Visual Basic έχουν αυτήν την απαίτηση. Αυτό το άρθρο θα εξηγούν τρεις τρόποι που μπορείτε να το κάνετε.

Περισσότερες πληροφορίες

Υπάρχουν τρεις τρόποι για να συμπεριλάβετε τα εξαρτημένα αρχεία DLL με τη λήψη ενός στοιχείου ελέγχου. Ο πρώτος τρόπος είναι να συμπεριλάβετε το DLL(s) στο αρχείο CAB για το στοιχείο ελέγχου μαζί με τα αρχεία OCX και INF. Το μειονέκτημα αυτής είναι ότι το DLL θα λαμβάνονται κάθε φορά που γίνεται λήψη του στοιχείου ελέγχου. Σε ορισμένες περιπτώσεις, αυτό είναι κατάλληλο. Η επόμενη τρόπος είναι να συσκευάσετε εξαρτημένων DLL(s) σε ένα ξεχωριστό αρχείο CAB και να αναφερθείτε σε που στο αρχείο INF για το στοιχείο ελέγχου. Ο τρίτος τρόπος συσκευάζει επίσης το αρχείο DLL σε ένα ξεχωριστό αρχείο CAB, αλλά το αρχείο CAB αναφέρεται στο αρχείο INF του στοιχείου ελέγχου με ένα αγκίστρου. Χρησιμοποιώντας ένα άγκιστρο επιτρέπει τη διαδικασία λήψης για την εκτέλεση ενός αρχείου INF ή EXE που περιέχονται στο εξαρτημένο αρχείο CAB.

Για να προσθέσετε μια εξάρτηση για ένα OCX (Simpdll.dll σε αυτό το παράδειγμα), μια ενότητα που είναι παρόμοια με την ενότητα για το στοιχείο ελέγχου προστίθεται στην ενότητα [AddCode] του αρχείου INF:
   [Add.Code]
   TestDw.ocx=TestDw.ocx
   simpdll.dll=simpdll.dll
				
Στη συνέχεια προστίθεται μια ενότητα στο αρχείο INF για να ελέγξετε την εγκατάσταση του αρχείου DLL:
   [simpdll.dll]
   FileVersion=1,0,0,1
   file-win32-x86=thiscab
				
Είναι ο πρώτος τρόπος που αναφέρονται για να συμπεριλάβετε μια εξάρτηση DLL στο στοιχείο λήψης.

Για να συμπεριλάβετε το αρχείο DLL σε ένα ξεχωριστό αρχείο CAB, το μόνο που χρειάζεται είναι να αλλάξετε τη θέση από "thiscab" στη διεύθυνση URL στην οποία θα βρίσκεται το εξαρτημένο CAB:
File-Win32-x86=http://www.contoso.com/Controls/Dependent.cab
Στην περίπτωση αυτή, Simpdll.cab περιέχει μόνο simpdll.dll.

Πολλές βιβλιοθήκες DLL μπορούν να προστεθούν τα αρχεία INF και CAB παραπάνω αν είναι απαραίτητο.

Είναι το τρίτο τρόπο για να συσκευάσετε τα εξαρτημένα αρχεία DLL για αναφορά σε αρχείο CAB εξαρτημένα DLL χρησιμοποιώντας ένα άγκιστρο. Με αυτήν την τεχνική, ένα αρχείο INF ή EXE το εξαρτημένο CAB είναι δυνατό να εκτελεστούν κατά τη λήψη.

Η ακόλουθη ενότητα από ένα αρχείο .inf που ελέγχει τα εξαρτημένα DLL λήψης για τα στοιχεία ελέγχου MFC:
   [Add.Code]
   ...
   msvcrt.dll=msvcrt.dll
   mfc42.dll=mfc42.dll
   olepro32.dll=olepro32.dll

   [msvcrt.dll]
   FileVersion=4,20,0,6164
   hook=mfc42installer

   ...

   [mfc42installer]
   file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
   run=%EXTRACT_DIR%\mfc42.exe
				
Σε αυτήν την περίπτωση, τα αρχεία DLL MFC είναι συσκευασμένες σε ένα αυτοαποσυμπιεζόμενο αρχείο .exe που περιέχεται στο αρχείο .cab (mfc42.cab). Ωστόσο, εργαλεία για να δημιουργήσετε αρχεία .exe αυτόματης εξαγωγής δεν είναι διαθέσιμη αυτήν τη στιγμή από τη Microsoft. Επομένως, θα πρέπει είτε να συσκευάσετε τα εξαρτημένα αρχεία DLL με ένα αρχείο .inf ή αναφέρονται στο αρχείο .inf το άγκιστρο εγκατάστασης:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
Εναλλακτικά, θα πρέπει να δημιουργήσετε ένα αυτόματης εξαγωγή αρχείο EXE, χρησιμοποιώντας τα εργαλεία τρίτων.

Για να απεικονίσει, ακολουθεί το αρχείο .inf που χρησιμοποιείται για να εγκαταστήσετε τα εξαρτημένα αρχεία DLL MFC. Μπορείτε να τροποποιήσετε για να εγκαταστήσετε τα δικά σας αρχεία DLL με τον ίδιο τρόπο που έχουν εγκατασταθεί τα αρχεία DLL MFC.
   ; ========================= Mfc42.inf =========================

   ; This file will control the download of the MFC 4.2 DLLs

   [version]
   ; version signature (same for both NT and Win95) do not remove
   signature="$CHICAGO$"
   AdvancedINF=2.0

   [SourceDisksNames]
   ; This section specifies that all sources are in the "default"
   ; location.
   1="default",,1

   [DefaultInstall]
   ; Default section to process and copy all files under the section
   ; mfcdllsx.files and Register DLLs under the section mfcdllsx.register.
   CopyFiles=mfcdllsx.files
   RegisterOCXs=mfcdllsx.register

   [DestinationDirs]
   ; Destination Directories for CopyFiles Sections.
   ; 11 indicates LDID_SYS - system directory
   mfcdllsx.files=11

   [mfcdllsx.files]
   ; ,,,32 - Suppress version conflict dialog and don't overwrite newer
   ; DLLs
   msvcrt.dll,,,32
   mfc42.dll,,,32
   olepro32.dll,,,32

   [mfcdllsx.register]
   ; msvcrt.dll is not self registering
   %11%\mfc42.dll
   %11%\olepro32.dll

   ; ====================== Mfc42.inf ======================
				
Ένα αρχείο DLL πρέπει να παρατίθενται στην ενότητα .register εάν αυτό εξάγει μια συνάρτηση DllRegisterServer. Μπορεί να προσδιοριστεί, εξετάζοντας το αρχείο DLL με βοηθητικό πρόγραμμα Dumpbin.exe του μεταγλωττιστή της Visual C. Μπορείτε επίσης να εκτελέσετε το Regsvr32 από το αρχείο DLL, που επιχειρεί να καταχωρήσετε το αρχείο DLL. Regsvr32 φορτώνει το αρχείο DLL, επαληθεύει ότι το DllRegisterServer σωστά εξάγεται καλώντας GetProcAddress() τη συνάρτηση DLLRegisterServer. Εάν επιτύχει, η συνάρτηση DllRegisterServer εξάγεται και στη συνέχεια καλείται.

Προσοχή, ωστόσο, ότι η εκτέλεση του Regsvr32 από το αρχείο DLL ενδέχεται να έχουν ανεπιθύμητα αποτελέσματα. Όταν καλείται το DllRegisterServer κάνει καταχωρήσεις μητρώου κατάλληλα τη θέση του αρχείου DLL στον υπολογιστή. Για παράδειγμα, πληκτρολογώντας τα εξής σε μια γραμμή εντολών MS-DOS, για σκοπούς δοκιμής, μπορεί να προκαλέσει προβλήματα:
   copy mfc42.dll C:\Test
   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"
   delete mfc42.dll
				
Την επόμενη φορά που το σύστημα προσπαθεί να αναζητήσει Mfc42.dll, θα κάνει αναζήτηση στο μητρώο, εντοπίζει ότι το αρχείο έχει αντιστοιχιστεί σε C:\Test\Mfc42.dll και δεν βρίσκουν εκεί. Εκτέλεση Regsvr32 σε ένα αρχείο που είναι ήδη εγκατεστημένο στον υπολογιστή δεν προκαλεί προβλήματα.

Εγκατάσταση ενός αρχείου DLL με ένα άγκιστρο και μιας αυτόματης εξαγωγή EXE είναι χρήσιμη για τον εξής λόγο: αν ένα αρχείο DLL που πρέπει να αναβαθμιστεί έχει ήδη φορτωθεί στη μνήμη, η λήψη θα αποτύχει. Πρόκειται για ένα γνωστό θέμα, το οποίο έχει διορθωθεί στο Internet Explorer έκδοση 4.0. Internet Explorer 4.0 θα προτείνει μια επανεκκίνηση και να φορτώσετε το νέο αρχείο DLL κατά την επανεκκίνηση.

Αναφορές

Για πρόσθετες πληροφορίες, ανατρέξτε στα ακόλουθα άρθρα της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
167158Τρόπος ελέγχου MFC πακέτου για χρήση μέσω του Internet
167597Καθορισμός FileVersion και #Version για λήψη στοιχείων

Για περισσότερες πληροφορίες, δείτε την ακόλουθη εκπομπή:
Πώς Internet λήψης στοιχείων εργασίας;

Ιδιότητες

Αναγν. άρθρου: 165075 - Τελευταία αναθεώρηση: Τετάρτη, 28 Σεπτεμβρίου 2011 - Αναθεώρηση: 5.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Windows Internet Explorer 8
  • Windows Internet Explorer 8 on Windows Server
Λέξεις-κλειδιά: 
kbcode kbdownload kbfaq kbhowto kbmt KB165075 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:165075

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com