7Zip entpackt in falsche Orte

Antworten
Vielleichtmann
Beiträge: 20
Registriert: So 13. Jan 2013, 16:53

7Zip entpackt in falsche Orte

Beitrag von Vielleichtmann »

Hallo,
um mein Allround-Programm ein bisschen voranzutreiben, habe ich mir heute einen PNG/JPG/BMP-Converter programmiert. Damit sich das Programm selbstständig updatet habe ich einen FTP-Download eingebaut und ein bisschen die 7Zip-Parameter ausprobiert. Funktioniert an sich auch alles ganz gut, mein Problem ist nur, dass das Programm die Datei in den ursprünglichen Projekt-Ordner auf dem Desktop entpackt. Vielleicht weiß ja hier jemand, wie ich das ändern kann :-)
Der Code ist

Code: Alles auswählen

 
procedure TForm1.Button3Click(Sender: TObject);
var code: integer;
begin
  if DirectoryExists('C:\programme\7-Zip') then begin
    try
  code := ExecuteProcess('C:\programme\7-Zip\7zG.exe',['e','C:\log\Bild Converter\Bild Converter.zip']);
  if code = 0 then
    ShowMessage('Erfolgreich entpackt')
  except
  on E: EOSError do ShowMessage(E.Message);
  else Showmessage('7Zip existiert nicht');
  end;
end;
  end;  
 
Vielen Dank schonmal, falls mir hier jemand helfen kann :-)
Windows 7, Lazarus v. 1.0.6 :-)

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 282
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: 7Zip entpackt in falsche Orte

Beitrag von h-elsner »

Hi,

versuch mal den switch -o{Zielverzeichnis}zu benutzen. Damit kannst du angeben wohin ausgepackt wird.
Siehe hier: http://dotnetperls.com/7-zip-examples

Wäre auch gut das Commandlinetool 7za.exe zu nehmen. Ich benutze es in meinen Programmen schon lange und funktioniert sehr gut und schnell.

Gruß HE

Vielleichtmann
Beiträge: 20
Registriert: So 13. Jan 2013, 16:53

Re: 7Zip entpackt in falsche Orte

Beitrag von Vielleichtmann »

h-elsner hat geschrieben: versuch mal den switch -o{Zielverzeichnis}zu benutzen. Damit kannst du angeben wohin ausgepackt wird.
Danke :-) Damit klappt es. Der komplette Code ist dann

Code: Alles auswählen

procedure TForm1.Button3Click(Sender: TObject);  // Entpackung
var code: integer;
begin
  if DirectoryExists('C:\programme\7-Zip') then begin
    try
  code := ExecuteProcess('C:\programme\7-Zip\7zg.exe',['e','-oC:\log\Bild Converter','C:\log\Bild Converter\Bild Converter.zip']);
  if code = 0 then
    ShowMessage('Erfolgreich entpackt')
  except
  on E: EOSError do ShowMessage(E.Message);
  else Showmessage('Das Verzeichnis existiert nicht');
  end;
end;
  end;    
falls den nochmal jemand braucht.
Die geschweiften Klammern hatten mich erst verwirrt, aber wenn man sie weglässt klappt es wunderbar. Dankeschön :-)

Und 7zg.exe ist ja quasi das gleiche wie 7za.exe, so wie ich das jetzt verstanden habe, da 7zg.exe ja auch über Kommandozeilen gesteuert wird.
Windows 7, Lazarus v. 1.0.6 :-)

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 282
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: 7Zip entpackt in falsche Orte

Beitrag von h-elsner »

Nun ja, 7zg lässt sich auch über Kommandozeile steuern, aber die readme-Datei sagt Folgendes:
7zg.exe - GUI module
7z.exe - Command line version
.
Das wird schon seinen Sinn haben.
z7a hat den Vorteil, dass es eine Standalone-Version ist, d.h. du musst 7-ZIP nicht installiert haben. Das macht dann Sinn, wenn du dein Programm weitergeben willst. Du kannst ja nicht wissen, in welchem Pfad 7-ZIP installiert ist. In diesem Falle 7za einfach mit deinem Programm mitgeben und du bist alle Sorgen los.

Gruß HE

Antworten