Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ZIP mit Befehlsparameter (https://www.delphipraxis.net/194734-zip-mit-befehlsparameter.html)

creehawk 29. Dez 2017 18:22

ZIP mit Befehlsparameter
 
Moin Moin.

Wir bieten auf unserer WebSite für verschiedene Spiele (Städtebau) Szenarios, Missionen und Karten an. Diese werden mit einer Installations/Deinstallationsroutine an den Mann/die Frau gebracht.

Dazu werden die Spieldateien mit besagter Routine in eine ZIP Datei gepackt und zu einer SFX Datei - also ausführbaren EXE - zusammengestellt. Der Anwender startet also die heruntergeladene Datei, die wird entpackt und das Installationsprogramm gestartet. Soweit wohl eine normale Geschichte.

Seit Delphi 3 nutzen wir dafür VCLZip. Die erforderlichen Daten werden zusammengepackt und eine SFX erzeugt, bei der - Achtung! - ein Befehlsparameter mit angegeben wird. Nämlich der, die im Package enthaltenen Installationsroutine nach dem Entpacken zu starten.

Für Delphi 10.2 brauchen wir jetzt Ersatz, der eben diese Möglichkeit enthält.

ZipForge kann es nicht, Abbrevia auch nicht. Also soweit ich das feststellen konnte.

Weiß jemand eine entsprechende Lösung, wenn möglich kostenlos? (VCLZip neu kostet 129.00 US$)

Oder was ganz anderes?

creehawk

Delphi.Narium 29. Dez 2017 18:28

AW: ZIP mit Befehlsparameter
 
Schau mal bitte nach ZipMaster: SFXOptions are used to control how the SFX stub displays and extracts its files.

creehawk 29. Dez 2017 18:56

AW: ZIP mit Befehlsparameter
 
Geht ja wieder mal ruckzuck hier!! :-D

Bestens.

Scheint wohl genau das zu sein was ich suche. Und sogar für 10.2 bearbeitet.

Vielen und herzlichen Dank!

creehawk

creehawk 30. Dez 2017 09:55

AW: ZIP mit Befehlsparameter
 
Nach eingehendem Studium der Befehle ist das, was ich brauche, enthalten. Insgesamt zwar ziemlich bombastisch mit all den Funktionen, aber bitte. Extra DLL kopieren und machen und tun - wenn's sein muss.

Aber die Installation gemäß Beschreibung ist schlichtweg für eine sogenannte Entwicklungsumgebung lächerlich. Komplieren sie dies, kopieren sie jenes, fügen Sie hier ein, drücken Sie "Ignore" und dann wissen wir auch nicht weiter. Eigentlich wollte ich keine wissenschaftliche Arbeit machen, sondern das Ganze benutzen.

Gut. Gibt's vielleicht noch was anderes?

creehawk

creehawk 30. Dez 2017 10:04

AW: ZIP mit Befehlsparameter
 
Und bevor ich's vergesse: um mir die Funktionen anzusehen habe ich das in D7 installiert.

Dauer: 5 Sekunden. Geht doch.

Vielleicht sollte ich 10.2 deinstallieren und bei D7 bleiben.

@Delphi.Narium
Bitte kein Missverständniss! Ich fluche hier auf D 10.2 und die ZipMaster Leute, nichts anderes!

creehawk

jaenicke 30. Dez 2017 10:06

AW: ZIP mit Befehlsparameter
 
Warum schreibst du das nicht einfach selbst? So ein selbstentpackendes Modul ist doch schnell geschrieben. Dann hast du die volle Kontrolle.

Ich hatte so etwas auch schon einmal geschrieben.

Außerdem würde ich vermuten, dass es ein solches Modul mit dieser Option auch von seven zip gibt. Das hätte den Vorteil, dass die Komprimierung deutlich besser wäre.

dummzeuch 30. Dez 2017 11:23

AW: ZIP mit Befehlsparameter
 
Wie Jaenicke schon schreibt:

Man könnte das auch mit der 7zip.dll selbst machen: Einfach die DLL und die ZIP-Datei (oder 7z-Datei) als Ressourcen zum Executable hinzufügen. Beim Start dann beides in das Zielverzeichnis (oder ein temporäres Verzeichnis) kopieren, die DLL laden und das ZIP extrahieren.

Dann hat man die volle Kontrolle, insbesondere auch über das User-Interface.

Nachteil: Ein Virenscanner könnte das für "böse" halten, was bei den üblichen SFX-Stubs eher nicht passiert.

Hier steht wie es mit dem offiziellen sfx-Modul geht.

Bernhard Geyer 30. Dez 2017 12:37

AW: ZIP mit Befehlsparameter
 
Zitat:

Zitat von dummzeuch (Beitrag 1389871)
Man könnte das auch mit der 7zip.dll selbst machen: Einfach die DLL und die ZIP-Datei (oder 7z-Datei) als Ressourcen zum Executable hinzufügen. Beim Start dann beides in das Zielverzeichnis (oder ein temporäres Verzeichnis) kopieren, die DLL laden und das ZIP extrahieren.
...
Nachteil: Ein Virenscanner könnte das für "böse" halten, was bei den üblichen SFX-Stubs eher nicht passiert.

Oder der eingestellten Richtlinien verbieten das entpacken ins Temp-Verzeichnis und das Auspacken ins Anwendungsverzeichnis funktoniert wegen UAC nicht.

LTE5 30. Dez 2017 12:44

AW: ZIP mit Befehlsparameter
 
Zitat:

Oder der eingestellten Richtlinien verbieten das entpacken ins Temp-Verzeichnis und das Auspacken ins Anwendungsverzeichnis funktoniert wegen UAC nicht.
Wer das einstellt ist ja wohl selber schuld und darf sich nicht wundern, wenn X von Y Programmen nicht mehr funktionieren.
Klar ist es so sicherer, aber auch übertrieben.

Bernhard Geyer 30. Dez 2017 13:33

AW: ZIP mit Befehlsparameter
 
Zitat:

Zitat von LTE5 (Beitrag 1389877)
Zitat:

Oder der eingestellten Richtlinien verbieten das entpacken ins Temp-Verzeichnis und das Auspacken ins Anwendungsverzeichnis funktoniert wegen UAC nicht.
Wer das einstellt ist ja wohl selber schuld und darf sich nicht wundern, wenn X von Y Programmen nicht mehr funktionieren.

Du kannst das ja mal der IT eines DAX-Unternehmens sagen das sie selbst schuld sind.
Oder einfach (wie wir es gemacht haben) die entsprechenden DLLs einfach parallel mit liefert
War auch kein Hexenwerk. Das Auspacken ins Tempverzeichnis war nur von der Kaufkomponente als Defaultverhalten implementiert. Über Compiler-Define konnte man das verhalten umstellen.
Zitat:

Zitat von LTE5 (Beitrag 1389877)
Klar ist es so sicherer, aber auch übertrieben.

Da wird dir die IT aber was anderes sagen das du (wenn du hier SW Verkaufen willst) deine SW anpassen sollst/musst.

zeras 30. Dez 2017 14:25

AW: ZIP mit Befehlsparameter
 
Zitat:

Zitat von creehawk (Beitrag 1389866)
Nach eingehendem Studium der Befehle ist das, was ich brauche, enthalten. Insgesamt zwar ziemlich bombastisch mit all den Funktionen, aber bitte. Extra DLL kopieren und machen und tun - wenn's sein muss.

Aber die Installation gemäß Beschreibung ist schlichtweg für eine sogenannte Entwicklungsumgebung lächerlich. Komplieren sie dies, kopieren sie jenes, fügen Sie hier ein, drücken Sie "Ignore" und dann wissen wir auch nicht weiter. Eigentlich wollte ich keine wissenschaftliche Arbeit machen, sondern das Ganze benutzen.

Gut. Gibt's vielleicht noch was anderes?

creehawk

Ich habe den Zipmaster installiert und meines Wissens nur das Package installiert. Sollte also kein Problem sein, zumal die DLL meines Wissens kostenlos genutzt werden kann.
Ein bischen Installation für ein kostenloses Tool. Wenn du das selber schreibst, bist du bestimmt Wochen am Programmieren.
Ich habe jedenfalls sehr großen Respekt vor dem Programmierer, der das so einfach bereitstellt.

creehawk 30. Dez 2017 14:34

AW: ZIP mit Befehlsparameter
 
Jup.

Moin.Moin.

WENN das so einfach ist bin ich zu doof. Kann durchaus sein. Und Respekt vor der Programmierleistung habe ich auch.

Ändert nichts daran das ich ggf. zu dämlich bin.

Wäre es möglich eine Arbeitsliste mit deinen Schritten zu erstellen? Soweit ich das jetzt verstanden habe nimmst du die zm192setup0023.exe, startest, fertig. Dann noch DLL der Ordnung halber. Schluss.

Richtig?

Also mein D 10 sche... mir was.

creehawk

HolgerX 30. Dez 2017 14:50

AW: ZIP mit Befehlsparameter
 
Hmm..

Mal was ganz anderes...

https://theroadtodelphi.com/2010/11/...ting-archives/

Hier wird ein entsprechendes Tool mit zlib gebastelt.
Da dieses SFX-Extractor selber gebaut wird, kannst Du da Funktionen hinzufügen, wie du möchtest...

Und ist kostenlos ;)

Nur so eine Idee, als Alternative.

creehawk 30. Dez 2017 14:52

AW: ZIP mit Befehlsparameter
 
Au weia.

Ich ergebe mich und behaupte ab sofort das Gegenteil.:oops:

Das funktioniert doch alles wie vorgesehen. Allerdings nicht wenn man im UAC Bereich zugange ist und Delphi nix bemängelt ....... warum auch immer.

Jedenfalls ist jetzt alles installiert.

Ich ersuche um Gnade.

creehawk

Delphi.Narium 30. Dez 2017 14:55

AW: ZIP mit Befehlsparameter
 
Meine Vorgehen wäre:

Download von http://www.delphizip.org/192/License...str1920023.zip

Zip-Datei in ein Verzeichnis meiner Wahl entpacken.

Das beim Entpacken entstehende Verzeichnis DLL mit in den Pfad von Windows aufnehmen oder die dort enthaltenen Dateien in ein Verzeichnis kopieren, das bereits im Pfad von Windows enthalten ist.

Delphi starten.

Projekt öffnen wählen.

Dort im oben erstellten Verzeichnis das Unterverzeichnis Packages öffnen.

Dort das Package mit meiner Delphiversion im Namen öffnen, für Delphi 7 wäre dies das Package ZMstr192D7.dpk.

Für Tokyo muss man ins Unterverzeichnis Tokyo wechseln und dort die passende Datei auswählen.

Package kompilieren.

Falls Delphi nicht alles finden sollte, muss man ggfls. noch das am Anfang erstellte Verzeichnis in den Quelltextsuchpfad von Delphi aufnehmen.

Sollte eigentlich alles recht einfach funktionieren.

Was ich allerdings (wenn möglich) vermeide ist:

Eine Setup.exe aufzurufen und zu hoffen, dass damit mein Delphi mit allem nötigen "versorgt" wird.

Eigentlich klappt das Installieren von Komponenten ... immer, wenn man die vom "Hersteller" erstellten Packagequelltexte seiner Delphiversion mit der IDE öffnet und dann kompiliert.

Klappt schon, seit dem ich Delphi kenne ;-)

Und das Schreiben und Lesen dieses Posts dauert vermutlich länger, als Download, öffnen und kompilieren des Packages, samt Installation in der IDE, zusammen ;-)

PS: Gnadengesuch angenommen ;-)

creehawk 31. Dez 2017 08:22

AW: ZIP mit Befehlsparameter
 
Tja, und nach all dem Theater können wir das doch nicht brauchen......

Unser Bedarf wäre ein SelfExtract gewesen, die ohne weitere Hinweise die enthaltene ZIP entpackt und das eigentliche Installationsprogramm startet. Schluss.

Hier aber meldet sich die SFX unweigerlich mit einer Dialogbox das Sie am Werk ist und startet erst dann die angegebene Anwendung.

Den gesamten Vorgang auf "unsichtbar" schalten geht nicht. Jedenfalls fehlt eine derartige Einstellung. Zwar kann man ausschließen das der Anwender alles blocked oder sonstwie rumfummelt. Aber die Dialogboc kommt unweigerlich samt (nicht nutzbaren) Buttons und Erfinderverweisen (Aboutbox).

Frage : Na und?

Aus Erfahrung wissen wir: etliche unserer Klienten wäre als reine Anwender schlichtweg "verwirrt" über eine solche Dialogbox.
Was ist das denn? Muss ich was machen? Ist das ein Virus? Ich will doch bloß spielen!Mamaaaaaaa...

Das geht definitiv nicht. Also geht die Suche weiter.

creehwak

Fritzew 31. Dez 2017 10:30

AW: ZIP mit Befehlsparameter
 
Vielleicht habe ich die Anforderungen nicht wirklich verstanden,
aber wenn es ja sowieso eine Exe Installation ist, warum nicht einfach InnoSetup?

Delphi.Narium 31. Dez 2017 11:20

AW: ZIP mit Befehlsparameter
 
Werde jetzt mal ein bisserl spekulieren:

Der Quelltext von ZipMaster ist vorhanden.

Im Verzeichnis SFX befindet sich alles, was für eine selbstextrahierende EXE benötigt wird.

Mal ein Minimalbeispiel bauen und per Debugger durchgehen, wo der "überflüssige" Dialog herkommt. Die Stelle so ändern, dass die bisherige Funktionalität erhalten bleibt, aber der Dialog nicht angezeigt wird.

Ein Ansatz wäre da die Prozedure Run aus der Unit ZMSFXProcs. Dort mal nach DialogBox suchen und die entsprechenden Stellen so abändern, dass immer die gewünschten Rückgabewerte, ohne Anzeige der Dialogbox, gegeben werden. Das sind nur vier mögliche Stellen im Quelltext.

HolgerX 31. Dez 2017 14:04

AW: ZIP mit Befehlsparameter
 
Hmm..

Hast Du dir den Link von mir (Post #13) angeschaut?

Dort wird ohne externe Komponenten ein SFX-Extactor mit Delphi selbst erstellt.
Was und was nicht der Extractor macht, bestimmst Du!

Somit würde das doch dem entsprechen, was gesucht wird.

Und es werden keine externen Componenten benötigt, alles in Delphi dafür vorhanden..

Delphi.Narium 31. Dez 2017 14:34

AW: ZIP mit Befehlsparameter
 
Das fertige Projekt dazu gibt es hier: https://github.com/RRUZ/blog/tree/master/Misc/SFX

https://github.com/RRUZ/blog/archive/master.zip

Sieht beinahe schon banal einfach aus.

creehawk 31. Dez 2017 17:25

AW: ZIP mit Befehlsparameter
 
Moin Moin!

@Holger X
Natürlich habe die Road to Delphi betreten, aber erst mal sucht man ja einfache Lösungen. Anders gesagt : man ist faul :(

@DelphiNarium
Die Sache mit dem Abändern des Codes in ZIPMaster habe ich mir angesehen und gesteh freimütig: das ist mir zu heftig. Wer weiß was alles explodiert, denn die Form/Box die da aufgeht und stört wird an mehreren Stellen angesprochen - soweit ich das sehe.

Ich nehme jetzt mal das banal einfache Beispiel von GitHub und dann schaun' mer ma. Nächstes Jahr.

Ich möchte mich für alle Antworten nocheinmal bedanken und wünsche einen guten Rutsch und ein frohes neues Jahr mit exorbitant wenigen Fehlermeldungen.:lol:

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz