Eine Anwendung portabel machen - DLLs und DLLs in system32 registrieren

3208

Ich möchte eine Anwendung portabel machen (unter Windows XP), damit sie direkt von einer CD ausgeführt werden kann. Die Anwendung erfordert, dass einige DLLs und OCXs registriert werden, und einige davon müssen sich bei der Registrierung (aus irgendeinem Grund) in system32 befinden.

Welche Konsequenzen hat die Registrierung vieler DLLs mit regsvr32 in einem Wrapper-Programm / Skript in der Anwendung? Könnte dies ein System durcheinander bringen? Und was passiert, wenn die Dateien entfernt werden (da sie sich auf einem Wechseldatenträger befinden)? Ich denke, ich könnte sie wieder abmelden, wenn die portable Anwendung gestoppt ist. Was aber, wenn eine von ihnen eine allgemeine DLL ist, die auch von anderen Anwendungen verwendet wird? Würde die Aufhebung der Registrierung diese anderen Anwendungen beschädigen?

Ich gehe davon aus, dass das zufällige Kopieren von Dateien auf system32 beim Starten einer portablen Anwendung eine schlechte Idee ist. Warum sollte eine Anwendung verlangen, dass sich einige DLLs und OCXs im System32-Ordner befinden? Gibt es eine Möglichkeit, dies zu umgehen? Ist die einzige Möglichkeit, das Wrapperprogramm / -skript sicherzustellen, dass vor dem Kopieren keine der Dateien vorhanden ist, und sie nach dem Ausführen der Anwendung zu entfernen?

Hat sich die Funktionsweise dieser Dinge in Windows Vista und 7 geändert?

Die Anwendung, die ich portabel machen möchte, ist die Demo-Version der (norwegischen) Genealogie-Anwendung Embla Familie og Slekt ( norwegische Website, übersetzt von Google ). Mein Großvater, der viel mit der Genealogie gearbeitet hat, ist kürzlich verstorben, daher möchte ich seine Arbeit an meine Verwandten verteilen. Es wäre schön, wenn sie nur eine CD einlegen müssten und die Software aufspringe. Die Installation und Einrichtung der Daten meines Großvaters ist für den Computeranfänger ein wenig kompliziert. (Ich habe versucht, die Autoren ohne Erfolg zu kontaktieren, aber ich werde es erneut versuchen, wenn es funktioniert, um sicherzustellen, dass der Vertrieb der Demo legal ist.)

Vielen Dank und bitte verzeihen Sie meine Unwissenheit - ich lasse Windows normalerweise nicht laufen. :)

1
Ich denke, die ThinApp von VMWare ist ein bisschen übertrieben, angesichts des Preises auf der Sonnenseite von $ 6.000 :) vor 14 Jahren 0
Ich glaube, dass http://portableapps.com eine gute Ressource für die Entwicklung tragbarer Anwendungen ist. Diese Frage scheint nicht sehr fortgeschritten zu sein, so dass Sie Ihre Antwort dort finden können. alfplayer vor 14 Jahren 0

2 Antworten auf die Frage

1
shf301

Ich weiß nicht, warum die DLLs in System32 sein müssten; Sie sollten nicht sein müssen, es ist jedoch eine schlechte Praxis, Anwendungs-DLLs jedoch im Verzeichnis des Systems zu speichern.

Ja, DLLs und OCXs, die COM-Objekte verfügbar machen (z. B. diejenigen, die registriert werden müssen), müssen registriert und in der Registrierung aufgeführt sein. Bei Windows XP und später gibt es jedoch eine kostenlose COM-Registrierung. Die kurze Erklärung lautet, dass Sie für jede .DLL- und .EXE-Datei eine Dateiname.ext.manifest-Datei erstellen, in der alle Komponenten aufgelistet sind, die exportiert und verwendet werden. Leider ist die Realität komplexer. In diesem Artikel finden Sie eine Beschreibung . Es ist theoretisch möglich, die für die Manifestdateien benötigten Informationen zu erhalten, aber Sie benötigen ein gutes Verständnis von COM.

Vielen Dank. Dies beantwortet viele meiner Fragen. Ich löste mein Problem jedoch, indem ich die Software in Sandboxie (sandboxie.com) installierte und dann Sandboxie tragbar machte. Beachten Sie jedoch, dass Sie die Sandboxie-Lizenzvereinbarung nicht zulassen, Sandboxie ohne kommerzielle Lizenz oder besondere Erlaubnis des Autors auf anderen Computern zu verteilen. vor 14 Jahren 0
0
Neal

Vor vielen Jahren war mir klar, dass Windows, wenn eine nicht registrierte DLL-Datei benötigt wurde, automatisch im Verzeichnis der Exe-Datei gesucht wurde. In einer solchen Welt ist es sehr einfach, die Anwendung portabel zu machen.

Ich habe keine Ahnung, ob ich mich daran erinnere (oder sogar mehr oder weniger richtig) oder ob es immer noch so ist oder nicht, aber das Kopieren aller Dateien auf einen USB-Stick und das Einfügen in einen anderen Computer wäre ziemlich schnell und einfach prüfen.

Danke für deinen Vorschlag. Leider scheint das nicht zu funktionieren. Ich habe die Installation in Sandboxie durchgeführt und konnte so viele ähnliche Dinge in verschiedenen Sandboxie-Sandboxen testen. Es scheint, dass alle DLLs registriert sein müssen (obwohl sie sich im selben Ordner wie das exe befinden) und einige von ihnen im system32-Ordner sein müssen (es funktioniert nicht, wenn ich sie registriere.) wenn sie woanders sind). Ich werde Ihren Tipp aber morgen auf einem sauberen Computer ausprobieren. Vielleicht hat das Sandboxie-Zeug irgendwie etwas versaut. :) vor 14 Jahren 0