Erstellen einer einzelnen ausführbaren Datei aus einem Verzeichnis in Windows?


0

Es gibt eine Antwort, aber sie ist zwei Jahre alt und enthält keine Informationen dazu.

Situation: Ich habe einen Ordner mit einer ausführbaren Datei, einigen erforderlichen DLLs und einigen Bildern. Ich möchte all dies in eine einzige ausführbare Datei packen. Bei Ausführung wird die ausführbare Datei ausgeführt.

Ich habe diesen Superuser-Beitrag gefunden . Es scheint jedoch keine Lösung zu bieten.

Wenn Sie mit Python vertraut sind, gibt es eine Anwendung namens PyInstaller. Es erstellt ausführbare Dateien mit einer Datei aus dem Python-Quellcode.

Ich bin mir nicht sicher, wie es genau funktioniert, aber im Allgemeinen funktioniert es ungefähr so:

  • Wickeln Sie das Verzeichnis mit der ausführbaren Datei in eine neue ausführbare Datei, z app.exe
  • Die neue ausführbare Datei führt ein Programm aus, das das versteckte Verzeichnis in einen temporären Ordner entpackt, einen Ordner mit dem Namen _MEIxxxxx, wobei x Zahlen sind. Zum Beispiel:C:\Users\Me\AppData\Local\Temp\_MEI188722
  • Führen Sie das Programm aus diesem Ordner aus.

Nach dem, was ich gelesen habe, verwenden sie dunkle Zauberei, um diese Arbeit zu machen. Ich frage mich, ob es ein Programm gibt, das diese Art von Dunkelmagie für Nicht-Python-Dateien ausführt.


In dem von Ihnen verlinkten Beitrag geht es nicht darum, ein Verzeichnis in eine ausführbare Datei zu konvertieren. Sie sprechen über das Speichern eines Verzeichnisses in einer ZIP-Datei, dann über das Ändern seiner Erweiterung und dann über eine hypothetische Anwendung, die der neuen Erweiterung zugeordnet wird.
drk.com.ar

@ drk.com.ar Das würde also bedeuten, dass app.newextension beispielsweise mit einer Anwendung verknüpft ist, die bereits auf dem PC des Benutzers installiert ist und das Programm innerhalb der zip startet? Es sieht so aus, als gäbe es überhaupt keine Möglichkeit, eine eigenständige Anwendung in eine eigenständige ausführbare Datei umzuwandeln. Außerdem habe ich den Beitrag umgeschrieben, um klarer zu machen, was ich erreichen möchte.
Azeirah

Nun ist Ihre Frage anders. Ich werde eine Antwort hinzufügen.
drk.com.ar

Ich schlage vor, stattdessen eine MSI-Datei zu erstellen. Windows installiert automatisch eine MSI-Datei sowie eine EXE-Datei. Eine MSI-Datei ähnelt einer anderen komprimierten Datei (zip usw.), Sie können sie jedoch so konfigurieren, dass sie Ihre App extrahiert und installiert.
Cybernard

Antworten:


0

Unter Windows kann eine Anwendung nicht auf native Weise aus einem Container (z. B. einer Zip-Datei) heraus gestartet werden. Aus diesem Grund wird PyInstaller in ein temporäres Verzeichnis entpackt, um die eigentliche Anwendung auszuführen.

Komprimierer wie ZIP und 7Zip bieten Ihnen die Möglichkeit, eine selbstextrahierende ausführbare Datei zu erstellen. Dies ist die reguläre komprimierte Datei plus den ausführbaren Code, der zum Dekomprimieren benötigt wird. In eine einzelne Datei gepackt. 7zip bietet die Möglichkeit, selbstextrahierende Archive für Installer zu erstellen. Vielleicht können Sie diese Option verwenden, um ein Standardprogramm anstelle eines Installationsprogramms auszuführen : http://7zip.bugaco.com/7zip/MANUAL/switches/sfx.htm

Sie können es so konfigurieren, dass nach dem Extrahieren eine beliebige Datei ausgeführt wird. Ich bin nicht sicher, ob Sie die Eingabeaufforderung entfernen können.


7zip oder izarc haben die Option, nach dem Extrahieren der Dateien automatisch eine exe auszuführen. Sie löschen die Dateien jedoch nicht, wenn sie fertig sind. Im besten Fall hinterlassen Sie eine Reihe von Dateien im Ordner tmp und haben dem Benutzer im schlimmsten Fall gerade gezeigt, wo er Ihre App und Ihre Dateien findet, damit er sich damit anfreunden kann.
Kendrick

Gemäß dem Link, den ich übergeben habe, entfernt 7Zip den temporären Ordner nach der Ausführung.
drk.com.ar

nicht, wenn das Programm gerade eine Datei sperrt. Ich bin zu 90% sicher, dass ich versucht habe, den sfx mit der automatischen Löschung mehrere Jahre später für unseren Wrapper zu verwenden, und er hat Dateien nie richtig gelöscht. Am Ende habe ich eine Batch-Datei erstellt, um die Dateien zu löschen, von denen die Benutzer nichts wissen wollten. Ob sie darin besser geworden sind, kann ich nicht sagen, da ich jetzt für alles nsis benutze.
Kendrick

"Windows lässt nicht zu, dass eine Anwendung aus einem Container heraus gestartet wird" - dies ist falsch. Es hat nichts zu tun mit ermöglicht , sein , dass das Programm nicht ausführbarer Code ist bis dekomprimiert wird.
Keltari

0

nsis http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System wäre die beste Option, die ich je gesehen habe. Ich habe mehrere Wrapper für Arbeits-Apps erstellt, damit Benutzer nicht in den Dateien herumstöbern, mit denen ihr PC repariert wird. Ich habe diese Woche gerade ein Virenscanner-Front-End erstellt, das das msert / mcafee stinger / mcafee rootkit mithilfe des corp-Proxys automatisch herunterlädt und dann laufen alle 3 Apps für die Technik.

Sie können das tun, was Sie mit einer Standardvorlage / einem Standardbeispiel verlangen. Setzen Sie im Hauptabschnitt das Ausgangsverzeichnis [$ OUTDIR% temp% _MEI188722] und fügen Sie eine Zeile [file yourapp.exe] für jede Datei im Originalverzeichnis hinzu, die das Programm benötigt . Verwenden Sie als nächstes eine Execwait-Zeile, um die betreffende Anwendung auszuführen. einen Befehl für 20 ms Ruhezustand und dann% temp% _MEI188722 löschen, damit die Dateien entfernt werden, nachdem sie nicht verwendet werden.

Wenn Sie das Installationsprogramm in den unbeaufsichtigten Modus versetzen, werden keine Standard-Installationsdialogfelder angezeigt, und Ihre App wird nach einem Moment geladen. Sie können auch benutzerdefinierte Dialogseiten erstellen, wenn der Benutzer zuerst Optionen auswählen muss, oder wenn die App eine Nachricht zurückgeben soll, wenn ein Fehler aufgetreten ist. Die Tutorials und die Community sind sehr aktiv und helfen uneingeschränkt. Wenn Sie sich erst einmal daran gewöhnt haben, wie nsis Dinge tut, sollte es einfach sein. http://hmne.sourceforge.net/ Dies ist ein praktisches Programm, mit dem Sie die Skriptdatei einfacher bearbeiten und die Exe erstellen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.