Discussion:
Alternative zu regsvr32
(zu alt für eine Antwort)
Marcus Reiter
2006-07-19 15:19:51 UTC
Permalink
Hallo zusammen,

folgendes Problem:

Programmverzeichnis liegt auf Netzwerkfreigabe. Wenn das Programm
gestartet wird schauen wir nach ob eine gewisse DLL schon registriert
ist. Ist sie das nicht soll diese nachgeholt werden.

Nur wie ?

regsvr32 will keine UNC-Pfade !

Wie löse ich das Problem, habt Ihr Input für mich ?


Gruß

Marcus
Jürgen Nordholz
2006-07-19 16:06:39 UTC
Permalink
Hallo Marcus,

das einfachste ist es die zu registrierenden DLL-Dateien und OCX-Dateien in
das Programmverzeichnis zu legen.

Aufruf im Programm mit "run /n regsvr32 /s self32.dll".

Funktioniert bei uns einwandfrei.

Gruß Jürgen
Marcus Reiter
2006-07-20 05:11:04 UTC
Permalink
Post by Jürgen Nordholz
Hallo Marcus,
das einfachste ist es die zu registrierenden DLL-Dateien und OCX-Dateien in
das Programmverzeichnis zu legen.
Aufruf im Programm mit "run /n regsvr32 /s self32.dll".
Funktioniert bei uns einwandfrei.
Gruß Jürgen
Hallo Jürgen,

wie die dll registriert wird ist schon klar. Und das alles auf dem PC
einwandfrei funktioniert auch. Wir wollten allerdings nicht immer auf
dem PC direkt installieren sondern einfach auf dem Netzwerk in einer
Freigabe das Programm verfügbar machen. Beim regsvr32 nimmt er
allerdings den UNC-pfad nicht an.

Gruß


Marcus
Olaf Doschke
2006-07-20 07:09:56 UTC
Permalink
wie die dll registriert wird ist schon klar. Und das alles auf dem PC einwandfrei funktioniert auch. Wir wollten allerdings
nicht immer auf dem PC direkt installieren sondern einfach auf dem Netzwerk in einer Freigabe das Programm verfügbar machen.
Beim regsvr32 nimmt er allerdings den UNC-pfad nicht an.
Im Beispiel von Jürgen wird allerdings gar kein Pfad zur DLL angegeben,
dann kann das doch eigentlich auch zu keinem Problem mit einem
UNC-Pfad kommen, oder? Ich weiß nicht, ob regsvr32 sich prinzipiell
verweigert DLLs im LAN zu registrieren.

Wenns bei allen Versuchen scheitert wohl nicht, probieren geht über studieren.

Es ist so einfach mittels eines XCOPY das jeweilige Netzverzecihnis oder
auch nur die neuen Dateien daraus nach lokal zu kopieren. Außerdem läßt sich
die neue Version dann auch einfach überschreiben. Sonst muß man doch schon
tricky mit Versiosnummern im Dateinamen arbeiten.

Ich seh keinen Vorteil, die Applikation nicht auf die lokale Platte zu holen.
Ihr habt sicher eine Verknüpfung zur EXE im LAN. Wenn das eine Ver-
knüpfung zu eine CMD-Datei im Netz wird, die mit einem Zweizeiler die
Dateien im Netz nachh lokal kopiert und startet ist die Sache schon geritzt.

Tschüß, Olaf.
Bernhard Sander
2006-07-20 08:05:15 UTC
Permalink
Hallo Olaf,
Post by Olaf Doschke
Es ist so einfach mittels eines XCOPY das jeweilige Netzverzecihnis oder
auch nur die neuen Dateien daraus nach lokal zu kopieren.
Das ist nur einfach, wenn der betreffende Benutzer auch die Rechte dazu hat.
Hat er zwar meistens, ist aber eigentlich nicht im Sinne eines sauber mit
Rechten versehenen Systems. Da sollte normalerweise in den
Programmverzeichnissen ein gewöhnlicher Benutzer eigentlich keine Schreibrechte
haben.

Allerdings kämpfe ich selber auch noch damit: Wann gebe ich wem wo welche
Rechte. Damit einhergehend: wo lege ich Konfigurationen ab und wo persönliche
Einstellungen.
Klar, bei mir zu Hause darf ich alles, aber beim Kunden sieht das anders aus.
Wenn ich es nicht selbst einrichte, muss ich mich wenigestens mit dem
Systemverwalter abstimmen können.

Gruß
Bernhard Sander
Olaf.Doschke
2006-07-20 10:12:03 UTC
Permalink
Post by Bernhard Sander
Allerdings kämpfe ich selber auch noch damit: Wann gebe ich wem wo welche
Rechte. Damit einhergehend: wo lege ich Konfigurationen ab und wo
persönliche Einstellungen.
Klar, bei mir zu Hause darf ich alles, aber beim Kunden sieht das anders
aus. Wenn ich es nicht selbst einrichte, muss ich mich wenigestens mit dem
Systemverwalter abstimmen können.
Da ist was dran. Größere Betriebe nutzen Softwareinstallationen per SUS
Server o.ä., da kennen sich die entsprechenden Administratoren vor Ort
schon so gut aus, daß man denen nicht mal das nötige Paket zusammen-
schnüren muß.

Ein Installer zu machen ist ja auch kein Ding, aber die Lösung eine
Applikation
im Lan liegen zu haben ist typischerweise eine Idee von Leuten, die als
einizge
Alternative sehen, daß da sonst jemand mit einer CD herumrennen müßte.

Wird ja durchaus erfolgreich betrieben, das Modell Applikation im LAN,
hat für mich nach wie vor einen faden Beigeschmack. Neben evtl. der Mehr-
zahl, für die das funktioniert, melden sich ja öfters mal einzelne, bei
denen
ab dem 2. User die Applikation langsam wird.

Daneben muß ja nicht unbedingt der Windowsordner für Programme der
sein, unter dem man seine Applikation hinlegt, wenn das auch nicht die
Ideal-
lösung ist.

Klar, insgesamt muß man sich schon mit den Systemadministratoren vor Ort
einigen und sich denen u.U. beugen.

Tschüß, Olaf.
Olaf.Doschke
2006-07-19 15:59:54 UTC
Permalink
Post by Marcus Reiter
Programmverzeichnis liegt auf Netzwerkfreigabe. Wenn das Programm
gestartet wird schauen wir nach ob eine gewisse DLL schon registriert ist.
Ist sie das nicht soll diese nachgeholt werden.
Nur wie ?
regsvr32 will keine UNC-Pfade !
Denkfehler?

Nur weil das Programmverzeichnis irgendwo im Netzwerk liegt, muß ja die
DLL nicht auf dem Fileserver, sondern immer auf dem ausführenden Rechner
registriert sein!? Oder aber auch gar nicht, wie z.B. der großteil der VFP
Runtimes.

Oder reden wir hier über CreateObjectEx()?

Tschüß, Olaf.
Marcus Reiter
2006-07-20 05:07:22 UTC
Permalink
Post by Olaf.Doschke
Post by Marcus Reiter
Programmverzeichnis liegt auf Netzwerkfreigabe. Wenn das Programm
gestartet wird schauen wir nach ob eine gewisse DLL schon registriert ist.
Ist sie das nicht soll diese nachgeholt werden.
Nur wie ?
regsvr32 will keine UNC-Pfade !
Denkfehler?
Nur weil das Programmverzeichnis irgendwo im Netzwerk liegt, muß ja die
DLL nicht auf dem Fileserver, sondern immer auf dem ausführenden Rechner
registriert sein!? Oder aber auch gar nicht, wie z.B. der großteil der VFP
Runtimes.
Oder reden wir hier über CreateObjectEx()?
Tschüß, Olaf.
Hallo Olaf,

vielleicht ist es auch ein Denkfehler.

Wir wollen eigentlich das Programmverzeichnis nur im Netzwerk liegen
haben und nichts auf dem PC direkt installieren. Kann allerdings nun
sein das es genau das nicht mit einer DLL funktioniert die registriert
werden muß... Das wäre wohl dann der Denkfehler.

Wie verhält sich das den nun, muß eine DLL die registriert wird auf dem
PC auf einer lokalen Festplatte vorhanden sein ?

Gruß

Marcus
Udo Bierlage
2006-07-20 08:03:58 UTC
Permalink
Hallo Marcus,

RegSvr32 kann UNC-Pfade.
Wenn der OLE-Server definitiv nur von Deiner Anwendung benutzt wird, und die
Anwendung im gleichen Pfad wie die DLL liegt, dann spricht auch nichts
dagegen.
Ansonsten würde ich dringen abraten, weil nicht sichergestellt werden kann,
das der File-Server immer verfügbar ist, wenn der OLE-Server benötigt wird.
Beim programmatischen Aufruf von regsvr32 musst Du den gesamten Pfad zur DLL
angeben.

Übrigens tut RegSvr32 nicht anderes, als die exportierte Funktion
DllRegisterServer() der DLL auszuführen.
Das kannst Du auch direkt tun:

DECLARE DllRegisterServer IN (MeineDLL)
DllRegisterServer()
CLEAR DLLS (MeineDLL)

Groß-Klein-Schreibung beim DECLARE ist wichtig!

So kannst Du dir den Aufruf von RegSvr32 sparen und die DLL kann selbst
rausfinden, wo sie liegt.
--
Grüße aus Budapest

Udo Bierlage
Michael Broeker
2006-07-20 09:47:59 UTC
Permalink
Hallo Udo, Hallo an den Rest.
Post by Udo Bierlage
DECLARE DllRegisterServer IN (MeineDLL)
DllRegisterServer()
CLEAR DLLS (MeineDLL)
Ich arbeite mit Marcus gem. an dem Projekt und ich kann für meinen Part
sagen, das ist die Lösung.
Danke an Udo.
Es betraf übrigens die "XiCr50.dll" (Cryptor) und wir hatten von ProLib als
Anleitung zum Registrieren den "RegSvr32" genannt bekommen.

Nun haben wir dazu gelernt :-))

Gruß aus dem sonnigen und schwülen Karlsruhe.

Michael
Jochen Kirstaetter
2006-07-25 10:32:59 UTC
Permalink
Hallo Marcus,
Post by Marcus Reiter
Programmverzeichnis liegt auf Netzwerkfreigabe. Wenn das Programm
gestartet wird schauen wir nach ob eine gewisse DLL schon registriert
ist. Ist sie das nicht soll diese nachgeholt werden.
Wow, bei euch sind alle Benutzer Administratoren bzw. mindestens
Hauptbenutzer. Glückwunsch für die Vireneinladung.

Mal Spass beiseite, aber die Registrierung von Komponenten ist eigentlich
Aufgabe eines Setups bzw. einer Installation, welche zumeist als lokaler
Admin ausgeführt wird.

Die Registrierung von Cryptor basiert darauf, dass dieser per COM
instanziert wird und daher in der lokalen Registry hinterlegt sein muss.

Deine Aussage zu RegSvr32 und UNC-Pfaden ist falsch:

---------------------------
RegSvr32
---------------------------
DllRegisterServer in \\hermes\temp\html.plugin.dll erfolgreich
durchgeführt.
---------------------------
OK
---------------------------


Mit freundlichen Grüßen,

Jochen Kirstätter
--
|\_/| ------ ProLib - programmer's liberty ---------
(.. ) Unsere MVPs und MCPs bringen den Fuchs zum Laufen...
- / auf www.prolib.de und www.AFPages.de
Hans-Peter Grözinger
2006-07-25 10:50:51 UTC
Permalink
Hallo JoKi !
Post by Jochen Kirstaetter
Post by Marcus Reiter
Programmverzeichnis liegt auf Netzwerkfreigabe. Wenn das
Programm gestartet wird schauen wir nach ob eine gewisse
DLL schon registriert ist. Ist sie das nicht soll diese
nachgeholt werden.
Wow, bei euch sind alle Benutzer Administratoren bzw.
mindestens Hauptbenutzer. Glückwunsch für die Vireneinladung.
Für die Entwickler ist das natürlich einfach, die Admins schlagen
aber die Hände über den Köpfen zusammen. ;-)
Post by Jochen Kirstaetter
Mal Spass beiseite, aber die Registrierung von Komponenten
ist eigentlich Aufgabe eines Setups bzw. einer Installation,
welche zumeist als lokaler Admin ausgeführt wird.
Für die Erstinstallation ist das auf jeden Fall der Weg der
zu gehen ist.
Bei Updates kann das per MSI-Script über den WSUS gemacht
werden. Dazu muß aber natürlich immer dieses erstellt werden.

Wir gehen da noch einen Zwischenweg indem nur die neue EXEs/APPs/
DLLs/OCX'e auf den Kundenserver kopiert werden. Kam da eine DLL
oder ein OCX hinzu, muß sich der Admin auf dem/den jeweiligen
PC´s einloggen und das Programm anstarten, sodaß die Registrier-
ung der Komponente per VFP erfolgen kann.
Bei kleinen Firmen ist dieser Weg noch gangbar, da der Admin
ansonsten ja auch den WSUS (wenn das bei einer kleinen Firma
überhaupt eingerichtet ist) konfigurieren und wir das MSI-Script
erstellen müssen.

Bei mehr als 10 Plätzen und vorhandenem WSUS geht man natürlich
diesen Weg.

PS: Kannst du ein gutes freies Tool empfehlen, welches MSI-Scripte
erstellen kann?
Wir benutzen INNO-Setup und ich habe da noch nicht die Möglich-
keit gefunden MSI-Dateien zu erstellen.
--
Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote
http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
Jochen Kirstaetter
2006-07-26 12:06:21 UTC
Permalink
Hallo Hans-Peter,
Post by Hans-Peter Grözinger
PS: Kannst du ein gutes freies Tool empfehlen, welches MSI-Scripte
erstellen kann?
Wir benutzen INNO-Setup und ich habe da noch nicht die Möglich-
keit gefunden MSI-Dateien zu erstellen.
Well, aus firmentechnischer Sichtweise empfehle ich dir Wise for Windows
Installer -
http://www.wise.com/Wise/Products/Installations/WiseforWindowsInstaller/Ove
rview.aspx

Privat tendiere ich zum Toolset von Microsoft: Wix -
http://wix.sourceforge.net/


Mit freundlichen Grüßen,

Jochen Kirstätter
--
|\_/| ------ ProLib - programmer's liberty ---------
(.. ) Unsere MVPs und MCPs bringen den Fuchs zum Laufen...
- / auf www.prolib.de und www.AFPages.de
Loading...