Selbstausführendes ZIP-Archiv

  • So ... ich suche nach folgendem, das es nach meinen Recherchen eigentlich geben müsste. Zur Erstellung konnte ich aber nur wenige Mosaiksteine zusammentragen, mit denen allein ich allerdings nichts ausrichten kann.


    Was ich erstellen möchte:


    - Ein Archiv im echten ZIP-Format, dass ohne zusätzliche Software mit Windows-Bordmitteln geöffnet werden kann. Auch wenn die Dateiendung später möglicherweise .cmd oder .exe sein sollte, müsste es alternativ als ZIP-Archiv geöffnet und entpackt werden können.


    - Bei Doppelklick auf das Archiv müsste eine der im Archiv enthaltenen Dateien ausgeführt werden ohne das Archiv formal zu entpacken (nur intern). Letztere Möglichkeit ist zumindest bei ZIP-Archiven grundsätzlich gegeben. Wenn man ein Archiv geöffnet hat, kann man die Dateien jeweils per Doppelkilick starten, ohne sie vorher ausdrücklich entpacken zu müssen.


    Gefunden habe ich einige Skript Befehle wie "RunProgram=xyz.exe", die man wohl per config oder ini Dateie einfügen kann. Auch von der Einbettung eines SFX-Headers in das Archiv war die Rede.


    Nur wie man diese Bausteine zusammenfügt, dass daraus etwas brauchbares entsteht, blieb für mich ein Geheimnis ... :confused:


    Es gibt vorkonfektionierte Software, mit denen man zwar eine ausführbare exe-Datei erstellen kann. Nur sind dabei ausnahmlos alle eingebetteten Dateien (wie etwa Bilder einer Slideshow) unwiderruflich "verloren", weil man diese exe-Dateien nicht mehr entpacken kann.


    Bei der von mir gesuchten Lösung könnte man den Inhalt des Archivs alternativ per unzip wieder extrahieren.


    Meine Idee entspringt zip-Archiven, bei deren Öffnung eine Anwendersoftware per Setup auf dem Rechner installiert wird. Alternativ kann man diese selbstinstallierenden Archive aber auch auf konventionellem Wege entpacken und das Setup selbst starten. Grundsätzlich müsste man mit dieser Form von Dateien doch auch andere Anwendungen starten können ... oder sehe ich das falsch?


    Wenn ich nichts konkretes habe finden können, mag das daran liegen, dass ich insgesamt ein wenig im Nebel tappe.


    Frankie

  • Re: Selbstausführendes ZIP-Archiv


    Moin.


    Also so richtig verstehe ich nicht was du vor hast, bitte nochmal für mich etwas verständlicher :confused:


    Zitat

    Original geschrieben von frank_aus_wedau
    - Bei Doppelklick auf das Archiv müsste eine der im Archiv enthaltenen Dateien ausgeführt werden ohne das Archiv formal zu entpacken (nur intern). Letztere Möglichkeit ist zumindest bei ZIP-Archiven grundsätzlich gegeben. Wenn man ein Archiv geöffnet hat, kann man die Dateien jeweils per Doppelkilick starten, ohne sie vorher ausdrücklich entpacken zu müssen.


    Wenn du ein zip-Archiv als selbstentpackend packst (*.exe), wird es beim Doppelklick entpackt und du kannst auf die darin entahlten Dateien zugreifen. Das du bei einem "normalen" zip-Archiv nur einen Doppelklick machst und so den Inhalt siehst und ausführst, hat nur etwas mit der windowseigenen Entpackfunktion zu tun und nicht mit dem Archiv selbst. Es wird natürlich auch erst entpackt, aber im Hintergrund ohne Benutzerinteraktion. Bei Windows 2000 und älter funktioniert das nämlich nicht.


    bye Kai

  • Re: Re: Selbstausführendes ZIP-Archiv


    Zitat

    Original geschrieben von Mozart40
    Wenn du ein zip-Archiv als selbstentpackend packst (*.exe), wird es beim Doppelklick entpackt und du kannst auf die darin entahlten Dateien zugreifen.


    Und das kann eigentllich jede WinZip-Version, auch alternativen wie WinRar und WinAce können soweit ich weiß als zip packen, bin mir nur nicht sicher ob die auch die zip-exe können/dürfen.
    Du kannst eine zip-exe auch mit WinZip oder sogar mit den Windows-Boardmitteln öffnen wenn Du die als *.zip umbenennst.

    Grüße, Jens

  • Re: Selbstausführendes ZIP-Archiv


    Hi


    es gibt grundsätzlich nur diese Möglichkeiten:


    1. Du erstellst eine ZIP-Datei (mit der Endung *.zip), die bei einem Doppelklick vom assoziierten Programm (WinZIP, WinRAR oder dem Windows-eigenen Entpackprogramm) geöffnet wird. Hier gibt es m. W. nicht die Möglichkeit, nach dem Öffnen automatisch irgendetwas zu starten (dies wäre auch eine Funktion, die jeden Virenscanner sofort Alarm schlagen lassen würde).


    2. Du erstellst eine EXE-Datei (mit der Endung *.exe), die prinzipell nach dem Doppelklicken alles mögliche machen kann. Hierzu gibt es sehr gute Tools, wie zum Beipsiel "NSIS" oder der deutlich schwächere Winzip-Self-Extractor (http://www.winzip.com/prodpagese.htm).


    Am nähesten kommt Deinem Ansinnen folgendes: Du erstellst mit NSIS eine - ich nenne sie mal Container-EXE- , die einerseits Dein ZIP-Archiv enthält, und andererseits die Exe (wir nennen sie intern-EXE), die Du starten möchtest. Klickst Du nun auf die Container-Exe, wird zuerst die Intern-Exe gestartet und anschließend Das ZIP-Archiv irgendwo (wählbar oder fest vorgegeben) auf dem Computer abgelegt und bei Bedarf auch gleich geöffnet.


    Variante: Man könnte nach dem Start der Container-Exe einen kleinen Dialog einbauen:
    "Möchten Sie die Intern-Exe starten oder die ZIP-Datein entpacken?" und den Nutzer wählen lasen.


    Am Ende ist das Festhalten an einem ZIP-Archiv auch gar nicht notwendig (mir fällt zumindest kein Grund ein, warum man dies tun sollte), denn mit NSIS kann man auch eine Container-Exe erstellen, die (komprimiert) sowohl die Intern-Exe als auch die Dateien Deines ZIP-Archives enthält und bei der man nach Doppelklick gefragt wird:


    Intern Exe starten [( )ja ( )nein]
    Dateien entpacken [( ) ja ( )nein] -> Zielort wählen [...]


    [[GO!]]


    Überdies ist bei NSIS die Kompression um WELTEN besser (falls das eine Rolle spielt), denn es unterstützt LZMA und SOLID compression.


    All dies geht mit dem sehr mächtigen NSIS, das auch solche Feinheiten wie Vista/Windows7-UAC beherrscht, denn eine Exe kann man auf diesen Systemen nicht "einfach so" irgebdwohin kopieren und starten.



    Bei Fragen hierzu einfach nochmal melden.


    Gruß


    HHFD

    Gesendet von meinem Motofone F3

  • Prima ... die Antworten helfen mir schon mal einen Schritt weiter. Insbesondere auf das das Prog NSIS war ich bei meinen Recherchen nicht gestoßen.


    HHFD:
    Meinst Du mit WinZip Self Extractor die über die Befehszeile zu startende Routine "iexplore.exe"?


    Das wäre prinzipiell genau das, wonach ich suche. Nur habe ich damit ein Problem: Die vom Archiv zu startende Anwendung ist eine Html-Datei. Wenn ich versuche, die mit iexplore gepackte exe-Datei zu starten, gibt es nur eine Fehlermeldung. Eine DLL schlägt Alarm. Ich befürchte, dass die von iexplore erstellten Archive als auszuführendes Objekt nur .exe und .com akzeptieren.


    Gibt es eine Möglichkeit, dieses Problem zu umgehen? Etwa indem man dem htm-Dateinamen einen command voranstellt? Etwa in dem Format "iexplore.exe .... xyz.htm"?


    Frankie

  • Zitat

    Original geschrieben von frank_aus_wedau
      HHFD:
    Meinst Du mit WinZip Self Extractor die über die Befehszeile zu startende Routine "iexplore.exe"?


    Nein, gehe mal auf http://www.winzip.com/prodpagese.htm , der WinZIP Self Extractor hat nicht s mit der Internet-Explorer-Startdatei iexplore.exe zu tun., sondern ist - wie NSIS - eine Software, um einfache Scripts in eine EXE-Datei zu packen und auszuführen.


    Ferner ist es nicht "sauber" bzw. standardkonform, eine HTML-Datei zwingend mit dem Internet Explorer öffnen zu lassen. Was, wenn der Nutzer Opera, Firefox oder Googles Chrome als bevorzugten Browser eingerichtet hat? Er wird nicht schlecht staunen, wenn dann der IE aufgeht, falls der überhaupt installiert ist (dann funktioniert Deine Variante gar nicht).



    Besser ist es, NSIS's interne Routine zu benutzen, die automatisch das "richtige" Programm auswählt.



    Der Befehl


    ExecShell "open" '"$INSTDIR\franks-html-datei.html"'


    zum Beispiel öffnet franks-html-datei.html mit dem passenden Browser.


    Kleines Beispiel-Script für NSIS:


    SetCompressor /SOLID lzma
    !define VERSION "1.0.0.0"
    Name "franks-exe ${VERSION}"
    Icon "frank.ico"
    OutFile "franks-exe.exe"
    SilentInstall silent
    SetOverwrite try
    AllowSkipFiles on
    AllowRootDirInstall true
    InstallDir $PROGRAMFILES\Frank
    RequestExecutionLevel admin


    Section
    SetOutPath $INSTDIR
    SetShellVarContext all


    File "Frank1.doc"
    File "Frank1.xls"
    File "Frank1.avi"
    File "franks-html-datei.html"
    ExecShell "open" '"$INSTDIR\franks-html-datei.html"'
    SectionEnd



    Die 4 File-Zeilen entpacken die Dateien Frank1.doc, Frank1.xls, usw. nach "C:\Programme\Frank", und die letzte Zeile (ExecShell) startet die franks-html-datei.html im jeweils passenden Browser.



    Es schadet nicht, sich in NSIS einwenig einzuarbeiten, denn es wird auch von größeren Softwarefirmen eingesetzt und ist kostenlos. Übrigens ein Produkt von Justin Frankel von Nullsoft, das ja durch WinAMP bekannt ist.


    Gruß


    HHFD

    Gesendet von meinem Motofone F3

  • So ... ich habe die Fülle an Tipps mal in einen Sack gesteckt, mir das eine und andere herausgesucht und bin (anscheinend) auf einem richtigen Weg.


    Es ergibt sich folgender Zwischenstand:


    Meine Maxime, allein mit den Bordmitteln von Windows zu verfahren, musste ich leider (ein wenig) verlassen. Allerdings nur bei der Erstellung der Archive. Und hier musste ich nur auf ein Prog ausweichen, das ohnehin zu meinen Bordmitteln gehört und wohl (fast) Standard auf den Windows-Rechnern dieser Welt ist: WinRAR.


    Beim Ausführen und Entpacken bleibt es allerdings dabei, dass Hilfsmittel nicht erforderlich sind. Vor Erstellung dieses Beitrags hatte ich bereits 7zip ausprobiert und feststellen müssen, dass zwar ZIP-Archive erstellt werden können, leider aber keine selbstentpackenden. Die können nur im "hauseigenen" Format 7z gepackt werden, so dass diese Lösung für mich leider ausschied.


    Bei WinRAR hatte ich entsprechendes angenommen - glücklicherweise bin ich hier eines besseren belehrt worden. Und dem Einwand von HHFD, dass der Standard-Browser häufig nicht der IE ist, habe ich auch Rechnung getragen. Zum Öfnnen wird der Standardbrowser verwendet.


    Bisher läuft auf meinem Desktop alles erwartungsgemäß. Ich persönlich kann die von mir erstellten exe-Dateien ohne Sicherheitswarnung ausführen. Falls ich mal ein Machwerk mit Texten und/oder Bildern weitergebe, haben Skeptiker die alternative Möglichkeit, das Archiv ohne Ausführung der exe mit Windows-Bordmitteln von Hand zu entpacken.


    Auf meinem Notebook läuft das leider nicht so reibungslos. Selbst bei den mit dem eigenen NB erstellten exe-Dateien erhalte ich die Sicherheitswarnung, dass die Vertrauenswürdigkeit des Erstellers der Datei nicht verifizierbar ist und ein Fenster, in dem ich die weitere Ausführung der Datei bestätigen soll.


    Warum das trotz (vermeintlich) gleicher Sicherheitseinstllungen so ist, leuchtet mir noch nicht ein. Das gilt es jetzt zu klären.


    Später dann wäre es noch Kür (aber keine Pflicht), die Ausführung innerhalb des eigenen Netzwerks ohne Sicherheitwarnung hinzubekommen. Die Zertifikate meines Desktop habe ich zwar schon in die vertrauenswürdige Rubrik eines NB übertragen, aber das hatte (erwartungsgemäß) keine Auswirkungen. Mit solchem "Kram" musste ich mich glücklicherweise bisher nie beschäftigen. Jetzt gilt es dem Rechner klarzumachen, dass ich mir selbst natürlich vertraue. ;)


    Frankie



    Edit:
    Problem scheint gelöst. Für die Freigabe des Netzwerkspeichers im Intranet musste ich die Adresse "fritz.box" durch "192.168.178.1" ersetzen. Warum ich hier von Hand auflösen musste, weiß ich zwar nicht - weil ich das aber ohnehin routinemäßig mache, hat sich das Prob quasi von selbst in Luft aufgelöst. ;)


    Nochmal vielen Dank für Eure hilfreichen Tipps.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!