/ / Windows ausführbar mit Linux-Shell-Skript innerhalb - Linux, Windows, Shell

Windows ausführbar mit Linux Shell-Skript innerhalb - Linux, Windows, Shell

Für mich hört sich das nach Missionsunfähigkeit an, aber es gibt Leute, die mehr wissen als ich, also dachte ich, vielleicht habe ich eine Chance :)

Ich hätte gerne 1 Datei, die sowohl auf Windows als auch auf Linux ausgeführt werden würde.

Grundsätzlich könnte das Programm aus 2 Teilen bestehen.
Teil 1 ist die ausführbare Windows-Datei, die unter Windows ausgeführt werden kann.
Teil 2 ist das Linux-Shell-Skript, das unter Linux ausgeführt werden kann.

Gibt es eine Möglichkeit, die Datei so zu erstellen, dass Linux die binären ausführbaren Windows-Bytes ignoriert und nur das Shell-Skript ausführt, das als Text an die binäre Windows-Programmdatei angehängt wird?

Ich habe versucht, Bytes vor der Windows-exe hinzuzufügen,und natürlich kann Windows die Datei nicht erkennen. Also ja, ich kann nichts vor die Bytes der ausführbaren Datei schreiben, aber ich kann sie am Ende der Datei hinzufügen.

Dann, auf Linux, nahm ich das einfache Skript

#!/bin/bash
echo "Hello world?"
exit 0

und fügte etwas Text vor dem Skript hinzu. Alles, was es getan hat, war über nicht existierende Befehle zu beschweren, aber weiterhin die Datei auszuführen und ich bekam den "Hallo Welt" -Text ausgegeben.

Putting diese zwei Dinge zusammen (cat runLinuxPart.sh >> myMix.exe) und dann chmod +x myMix.exe dann lauf es, ich komme The entry point method could not be loaded :(

Die Linux-Shell-Datei ist eine Art Self-Extractor-Installer. Es hält die .tar am Ende und das Skript auf der Vorderseite, also wenn ich die .sh auf Linux ausführe, bekommt es die .tar, Extrakte und tut alles was ich brauche.

Der Zweck des Windows Exe ist es, sich mit einem Remote-Linux-Rechner zu verbinden, die .sh-Datei von sich selbst zu extrahieren und sie auf Linux hochzuladen und dann auszuführen.

Ich möchte den Benutzern eine einzelne Selbstinstallationsdatei geben.

Wenn dies mein Traum unmöglich ist, werde ich natürlich mit 2 separaten Installateuren auch in Ordnung sein

Antworten:

2 für die Antwort № 1

Ein Linux-Shell-Skript sollte mit beginnen #!. Ein Linux ELF Die ausführbare Datei sollte mit beginnen x7FELF. Wenn eine Windows-Programmdatei nicht mit diesen Bytes starten kann, ist Ihr Traum nicht möglich. Ich glaube das PE (das Binärformat von Windows ausführbar) kann nicht mit diesen beginnen (aber ich bin mir nicht sicher). Daher Ihr universeller Installateur Single Datei ist ein unmöglicher Traum.

Unter Linux könnte man überlegen mit zu spielen binfmt_misc oder shar.

Lesen Levine "s Linker und Lader Buch und Elf (5) & führen (2) Linux Manpages.