DLL's, OCX's und TLB's automatisiert regsitrieren

andralin

Erfahrenes Mitglied
Hallo Leute,

ich such schon den ganzen Vormittag im Netz um ein Problem zu lösen. Komm aber nicht weiter. *lächel*

Problemstellung:
Ein umfangreicher Wechsel von Softwareversionen der auf Entwicklungsrechnern immer wieder erforderlich ist um eine Software Version gegen eine andere aus zu tauschen, wurde bisher über wenig intelligente BATCH Dateien abgewickelt.

Also knapp beschrieben:
alle DLL's, OCX's, TLB's eines Ordners und dessen Unterordnern werden zuerst deregistriert, dann die komplette Struktur gelöscht und durch eine andere Version der Software überschrieben, danach wird die komplette neue Struktur wieder registriert.

Bisher das ganze mit einem Haufen von Batch-Dateien die bääääh sind.
Nun hab ich die ehrenvolle Aufgabe was zu machen, da manche Dateien auch mehrfach, eine sogar 15 x in einem Durchlauf kopiert und registriert werden.

Ich weis das ich die Anwendungen regsvr32.exe, regasm.exe und RegTlib.exe als Prozess starten kann und mit Parametern.....

Aber das find ich unsauber. Denn in einem vorherigen Projekt hatte ich keine Möglichkeiten Registrierstatus von Dateien ab zu fragen, die erfolgte Registrierung zu prüfen und im Zweifelsfall intelligente Meldungen an den Lebendorganismus vor dem Screen zu reporten.

Gibt es keine Klassen welche die drei Programme (regsvr32.exe, regasm.exe und RegTlib.exe) ersetzen? So das man Sachen wie regsrv.status("std_rff_file.dll") eingibt und dann zurückbekommt ob registriert wurde oder nicht. Oder wo man auf gleiche weise damit registriert, deregistriert, etc?

Für schnelle Antworten wäre ich dankbar! Die Woche ist noch zu jung um jetzt schon an Lustlosigkeit zu sterben.

cu s00n Andralin!°

sorry für Tippfehler im SUBJECT....
 
Zuletzt bearbeitet:
Ansatzweise habe ich eine Lösung.
Indem ich die API einbinde.
Aber leider nur ein VB Beispiel gefunden das nach dem Umbau zu C# nicht so ganz will. Eigentlich hab ich auch das VB.net beispiel ned ans laufen bekommen.

Fehlerhafter Teil ist:
Code:
private static extern long CreateThread(object lThreadAttributes, long lStackSize, IntPtr lStartAddress, long larameter, long lCreationFlags, long lThreadID);

bzw:
Code:
CreateThread(null, 0, lProcAddress, 0, 0, lThread);


Werde das aber mal in einem neuen Thread posten, glaub das ist eher Interop...
 
Zurück