[Erledigt] Lazarus Linux prüfen ob WINE vorhanden ist

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

[Erledigt] Lazarus Linux prüfen ob WINE vorhanden ist

Beitrag von Frank Ranis »

Hallo ,

bin ja seit einiger Zeit dabei mein Lieblings-Projekt (FLZ_Vortex / Aerodynamik-Berechnungen) , von Delphi6->Lazarus->Linux zu portieren.
Mit dem Kernprogramm und diverse Hilfsprogrammen (die ich selber verbrochen habe) geht es gut vorann.

Im Laufe der letzten 10 Jahre haben mir nette Kollegen einige hilfreiche Tools gebaut , die ich dann zum Paket dazugelegt habe.

Blöd , es sind Windows(32Bit)-Applikationen und eine Portierung auf Linux ist (aus diversen Gründen) nicht machbar.

Per WINE kann ich diese Tool's aber weiterhin starten und verwenden , so weit so gut.

Ist auf dem Anwenderrechner kein WINE vorhanden , geht das Starten der Tools ins Leere.

In diesem Fall möchte ich dem User , durch ein Info , darauf hinweisen , das er bitte WINE nachinstalliert.

Ich bin ja auch totaler Linux-Anfänger und benötige mal einen Klapps von euch .

Brauch also ne Funktion , die mir prüft ob WINE(für 32Bit) vorhanden ist , einfaches Result True / False .

Gruß

Frank
Zuletzt geändert von Frank Ranis am Mo 11. Feb 2019, 12:09, insgesamt 1-mal geändert.
www.flz-vortex.de

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus Linux prüfen ob WINE vorhanden ist

Beitrag von theo »

Man könnte "which" fragen. Z.B. so

Code: Alles auswählen

uses process;
 
function CheckInstalled(Name: string): boolean;
var
  AProcess: TProcess;
  AStringList: TStringList;
begin
  AProcess := TProcess.Create(nil);
  AProcess.Executable := '/usr/bin/which';
  AProcess.Parameters.Add(Name);
  AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
  AProcess.Execute;
  AStringList := TStringList.Create;
  AStringList.LoadFromStream(AProcess.Output);
  Result := Length(Trim(AStringList.Text)) > 0;
  AStringList.Free;
  AProcess.Free;
end;     
...
CheckInstalled('wine')


Es gibt sicher auch andere Möglichkeiten.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus Linux prüfen ob WINE vorhanden ist

Beitrag von theo »

In FileUtil gibt es auch

Code: Alles auswählen

 
FindDefaultExecutablePath('wine');

das geht auch.

Welche Variante schneller ist, wäre zu testen.

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Lazarus Linux prüfen ob WINE vorhanden ist

Beitrag von Frank Ranis »

Hallo Theo,

vielen Dank , probier ich aus .

theo hat geschrieben:In FileUtil gibt es auch

Code: Alles auswählen

 
FindDefaultExecutablePath('wine');

das geht auch.

Welche Variante schneller ist, wäre zu testen.
theo hat geschrieben:Man könnte "which" fragen. Z.B. so

Code: Alles auswählen

uses process;
 
function CheckInstalled(Name: string): boolean;
var
  AProcess: TProcess;
  AStringList: TStringList;
begin
  AProcess := TProcess.Create(nil);
  AProcess.Executable := '/usr/bin/which';
  AProcess.Parameters.Add(Name);
  AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
  AProcess.Execute;
  AStringList := TStringList.Create;
  AStringList.LoadFromStream(AProcess.Output);
  Result := Length(Trim(AStringList.Text)) > 0;
  AStringList.Free;
  AProcess.Free;
end;     
...
CheckInstalled('wine')


Es gibt sicher auch andere Möglichkeiten.
www.flz-vortex.de

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Lazarus Linux prüfen ob WINE vorhanden ist

Beitrag von Frank Ranis »

Hi ,

beide Varianten gehen prima , auf Geschwindigkeit kommt es nicht an.

Gruß

Frank
www.flz-vortex.de

Antworten