Register dll

Acest forum este dedicat intrebarilor de programare care nu-si au locul in unul din celelalte forumuri
Post Reply
User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Register dll

Post by adi0149 » 22 Sep 2010, 12:38

Salut. Am un dll care e un meniu pentru programul ArcGIS 9.3. Vreau sa-i fac setup ca sa-l pot pune frumos pe alte calculatoare.
Pentru a putea fi vazut de ArcGIS exista 2 variante:
1. deschizi arcgis si dai tools->customize->add from file-> si incarci manual .dll-ul (sau .tlb-ul) si gata, se "register" si devine disponibil in program
2. "registrezi" dll-ul in timpul instalarii, pentru ca sa nu mai fie nevoie de incarcarea manuala in arcgis.

Bineinteles, eu prefer varianta 2 :)

Am incercat sa fac un installer class care sa fie apelata in custom actions (in setup projectul facut cu VS) care sa apeleze o aplicatie de "register" pentru .dll-ul respectiv, problema e ca in loc sa faca treaba in background, el imi deschide pur si simplu aplicatia in timpul instalarii. Aplicatia de register se cheama esriRegSvr32.exe.
Cand am facut asta, am urmat un tutorial care se referea la ArcGIS 10, care contine o aplicatie ESRIRegAsm.exe, care nu exista in versiunea 9.3.

Ma gandesc ca trebuie sa existe o varianta simpla, (am auzit de ceva de genul winregasm), pentru ca VS 2010 imi "register" automat in momentul in care fac debug la .dll, deci ramane de vazut cum face el treaba asta.

PS: am scris tot in VB cu VS2010, iar tutorialul de care am zis e la: http://help.arcgis.com/en/sdk/10.0/arco ... 016r000000



neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Register dll

Post by neagu_laurentiu » 22 Sep 2010, 12:46

Din ce inteleg eu e vorba de un COM iar in cazul asta poti rula: regsvr32.exe mydll.dll

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: Register dll

Post by adi0149 » 22 Sep 2010, 13:07

da, e un COM. Incerc acum sa ma prind cum trebuie sa fac sa ruleze regsvr32.exe :)

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: Register dll

Post by Silviu Ardelean » 22 Sep 2010, 13:41

ShellExecute() ? Nu am lucrat cu setup-uri, dar cred ca ar trebuii sa poti apela functia asta.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Register dll

Post by Ovidiu Cucu » 22 Sep 2010, 19:37

Daca merge treaba cu regsvr32.exe (sau poti verifica cu Dependency Walker daca DLL-ul exporta functia DllRegisterServer) atunci merge elegant si simplu din projectul de setup alegand vsdrpCOMSelfReg la proprietarea Register, fara alte briz-brizuri si custom actions.
vdrdpCOMSelfReg.png
vdrdpCOMSelfReg.png (7.53 KiB) Viewed 6198 times

User avatar
Andreas
Membru
Membru
Posts: 117
Joined: 09 Nov 2008, 12:13
Judet: Timiş
Location: Timisoara

Re: Register dll

Post by Andreas » 23 Sep 2010, 12:51

de regula si eu procedez cum a aratat Ovidiu...
insa, este mai mult incurajata folosirea lui vsdrfCOM in loc de vsdrfCOMSelfReg(VS2005) din doua motive:
1. cu vsdrfCOM extragerea informatiilor pentru registry update a COM-ului se face la compilarea proiectului de setup, deci toate informatiile necesare vor fi in fisierul .msi astfel incat la instalare nu mai este necesara executare(incarcarea) COM-ului pentru extragerea datelor referitoare la CLSID, ProgID etc.. Faptul ca nu se mai executa inseamana ca nu mai creeaza eventuale dependinte de alte COM-uri care trebuiau instalate anterior permitand ca instalarea sa nu se crash-uie si sa se finalizeze cu succes;
in cazul lui vsdrfCOMSelfReg este necesara incarcarea/executarea COM-ului si o aplicatie de setup se poate crash-ui daca ai mai multe astfel de comservere interdependente, care ar trebui sa fie instalate(inregistrate) intr-o ordine prestabilita dar pe care nu o cunosti;
2. un COM poate fi la fel de bine un exe ca si un dll; deci ar fi deranjant ca in cazul unui exe care are si GUI, sa constati ca iti apare pe ecran in timpul instalarii;
asta am observat din proprie experienta...

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Register dll

Post by cristianamarie » 25 Sep 2010, 19:57

LoadLibrary/GetProcAddress pe DllRegisterServer si chemat DllRegisterServer
Nuclear launch detected

User avatar
MrSmersh
Microsoft MVP
Microsoft MVP
Posts: 289
Joined: 20 Jul 2007, 10:18
Location: Timisoara
Contact:

Re: Register dll

Post by MrSmersh » 25 Sep 2010, 21:55

Subscriu, asta e metoda care 100% merge (daca sint toate dependintele), da poate citeodata nu e la indemina, si in unele cazuri nu e recomandata dar cred ca e ce iti trebuie.

Post Reply