[Erledigt]ExeName im Quellcode ändern

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

[Erledigt]ExeName im Quellcode ändern

Beitrag von Frank Ranis »

Hallo ,

gibt es eine Möglichkeit den ExeNamen im Quellcode zu ändern ?

Normal wird das ja während der Programmierphase unter ' Complilereinstellung / Ziel-Dateiname ' , z.B. project1 eingetragen und hinten fällt project1.exe raus.

Ich möchte das bedingt per {$define Bedingung} im Quellcode machen.

Code: Alles auswählen

 
Also oben
 
{$define Bedingung_eins}  oder  {$define Bedingung_zwei} vorgeben
 
{$ifdef Bedingung_eins}
-> ExeName soll zu otto.exe werden
{$endif}
 
{$ifdef Bedingung_zwei}
-> ExeName soll zu kalle.exe werden
{$endif}
 

Gibt es irgendwelche Compiler-Schalter ?

Gruß

Frank
Zuletzt geändert von Frank Ranis am Mo 4. Mär 2019, 12:39, insgesamt 1-mal geändert.
www.flz-vortex.de

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: ExeName im Quellcode ändern

Beitrag von pluto »

Im Allgemeinen geht sowas unter Lazarus unter :
Projekte/Projekt Einstellungen/Pfade/Ziel Dateinamen.
MFG
Michael Springwald

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

Re: ExeName im Quellcode ändern

Beitrag von Frank Ranis »

Hallo pluto,

pluto hat geschrieben:Im Allgemeinen geht sowas unter Lazarus unter :
Projekte/Projekt Einstellungen/Pfade/Ziel Dateinamen.


Ja das ist schon klar , hatte ich ja oben so beschrieben.

Ich muß wohl etwas mehr ausholen .

Ich habe mir ein Konfigurations-Programm geschrieben .

Hier kann man diverse Einstellungen vornehmen .
1) Voll - oder Demoversion
2) Seriennummern-Zähler
u.u.u.

Diese Tool schreibt dann die Einstellungen in eine Include-Datei 'lizenz.inc' , welche sich im Quellcode-Pfad befindet.
Hier steht dann z.B. oben an erster Stelle.

{$define Voll}

oder

{$define Demo}

Am Ende des Konfigurations-Programm wird dann 'lazbuild' aufgerufen .
Z.B. mit eine TProcess und den Parametern 'C:\lazarus\lazbuild -B Programm.lpr' .

In der Hauptunit wird die 'lizenz.inc' eingebunden.
Je nach Einstellung (Voll oder Demo) werden dann bestimmte Quell-Code-Blöcke mit kompiliert ode ausgeklammert .

So weit so gut , das funktioniert auch alles prima und ich brauch nicht jedesmal die Lazarus-IDE aufmachen .

Wenn alles Durchgelaufen ist fällt hinten Programm.exe raus , egal ob es nun die Demo oder die Vollversion ist.

Derzeit behelfe ich mir damit , das ich dann per File-Rename , die Programm.exe in

Programm_Voll.exe
oder
Programm_Demo.exe

umbenenne .

Finde ich aber nicht so elegant.

Besser fände ich , wenn Lazarus die Ausgabedatei (je nach {$define Voll} oder {$define Demo}) dann halt automatisch passend machen würde .
Also den Compiler / Linker dazu veranlassen den EXE-Filenamen zu ändern.

In der LPI möchte ich nicht rumpatchen , dann kann ich das mit dem File-Rename auch so lassen wie bisher.

Gruß

Frank
www.flz-vortex.de

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: ExeName im Quellcode ändern

Beitrag von wp_xyz »

Versuch's mal mit Build-Modes: "Projekt-Optionen" > '...' neben "Build-Modes". Build-Modes für Voll- und Demo-Version erzeugen. Nacheinander jeden Build-Mode aktivieren und unter "Compiler-Optionen" die gewünschten Parameter eintragen, v.a. auch den Ziel-Dateinamen. Je nachdem welcher Build-Mode aktiv ist, werden die entsprechenden Parameter verwendet. Zum schnellen Umschalten zwischen den Buildmodes vor dem Compilieren gibt es auch ein Icon in der Toolbar (2.Zeile, 3.Icon).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: ExeName im Quellcode ändern

Beitrag von af0815 »

für den Vorschlag von wp und lazbuild dann den entsprechenden Mode verwenden

Code: Alles auswählen

--build-mode=<project/ide build mode> or --bm=<project/ide build mode>
override the project build mode.

Siehe auch http://wiki.lazarus.freepascal.org/lazbuild

Somit kannst du dir über den Buildmodus dann aussuchen welche Datei wie erzeugt wird, auch Verzeichnisse kann man damit umschalten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: ExeName im Quellcode ändern

Beitrag von Socke »

Du könntest eine zusätzlich FPC-Konfiguration erstellen und dort den Parameter -okalle.exe setzen. Diese Konfigurationsdatei bindest du per @configfile.txt ein (Projektoptionen > Compilereinstellungen > Konfiguration und Ziele). Der entsprechende Parameter sollte in den Projektoptionen dann entsprechend leer sein.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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

Re: ExeName im Quellcode ändern

Beitrag von Frank Ranis »

Hallo ,

ich danke euch , probiere mit den Infos mal herum .

Gruß

Frank
www.flz-vortex.de

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: ExeName im Quellcode ändern

Beitrag von aro »

Hallo,
Kopiere nur Deine Projektdateien in ein anderes temporäres Verzeichnis. Dann öffnest Du das Projekt nennst das Projekt in den Namen den es als Vollversion haben soll und setzt im Project {$define Voll}
Dann verschiebst Du die kopierten Datein zurück in das ursprüngliche Verzeichnis. Du öffnest das alte Projekt und änderst es in den Demonamen und setzt V {$define Demo}

Du hast jetzt im ursprünglichen Verzeichnis 2 fast gleiche Projekte.

Wenn Du das Demoprojekt kompilierst erhälst Du die Demoversion mit dem richtigen Namen.
Wenn Du das Vollversionprojekt kompilierst erhälst Du die Vollversion mit dem richtigen Namen.

Da beide Projekte auf die gleiche Units zugreifen arbeitest Du mit dem gleichen Quelltext und die Programmpflege bleibt übersichtlich.

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: ExeName im Quellcode ändern

Beitrag von aro »

Hallo,
Kopiere Deine Projektdateien in ein anderes temporäres Verzeichnis. Dann nennst du das Projekt in den Namen um den es als Vollversion haben soll und setzt {$define Voll}
Dann verschiebst Du die kopierten Datein zurück in das ursprüngliche Verzeichnis. Du öffnest das Projekt und änderst es in den Demonamen und setzt {$define Demo}

Wenn Du das Demoprojekt kompilierst erhälst Du die Demoversion mit dem richtigen Namen.
Wenn Du das Vollversionprojekt kompilierst erhälst Du die Vollversion mit dem richtigen Namen.

Da beide Projekte auf die gleiche Units zugreifen arbeitest Du mit dem gleichen Quelltext und die Programmpflege bleibt übersichtlich.

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

[gelöst] ExeName im Quellcode ändern

Beitrag von Frank Ranis »

Hi ,

so hat ne Weile gedauert , bis ich die Infos von wp_xyz und af0815 verstanden habe.
Ich weis nicht , wie ich das letzte Jahrzehnt ohne diese Möglichkeiten überlebt habe, aber 'wat der bur net kennt dat fret er net' .

Hier nun mal ne Anleitung (für Dummies) , wie ich zum Ziel gekommen bin .
Aufgabe ist :
a) Die Anwendung soll es als Voll- und Demo-Version geben.
b) Die Kompilierung soll sowohl per Lazarus-IDE , als auch ohne IDE durch ein externes Steuerungsprogramm möglich sein .

1) In Lazarus eine neue Anwendung erzeugen .
2) Wir klicken nun den Button für 'Einstellmodus ändern' siehe Bild1 .
Es öffnet sich das Fenster 'Einstellungen für project:project1'
3) Dort ganz oben rechts auf den Button (mit den drei Punkten) drücken , siehe Bild2 .
Es öffnet sich nun der Editor für den Einstellmodus .
Hier dann zwei mal auf den Button '+' klicken , um zwei neue Einträge zu bekommen .
Die Texte für die neuen Zeilen mit 'Voll' und 'Demo' beschriften .
Dann auf die Zeile 'default' gehen und einmal den Button '-' clicken um diese Zeile zu löschen.
Fertige Eingaben siehe Bild3 .
Mit Button 'OK' verlassen.
4) Im Fenster 'Einstellungen für project:project1' wählen wir nun den Menüpunkt 'Benutzerdefinierte Einstellungen' und rechts oben in der Combobox einen unsere beiden neuen Modi aus (Voll oder Demo) .
Dann tragen wir in das Textfeld unter 'Benutzerdefinierte Einstellungen' einmal '-dVoll' oder '-dDemo' ein .
Siehe Bild4 und Bild5.
Dann auf OK , Fenster 'Einstellungen für project:project1' schließen.
Projekt komplett speichern.

Test in der IDE:

Im Quelltext der HauptUnit tragen wir nun die Defines für die Voll- Und Demo-Version ein .

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
 
type
 
 { TForm1 }
 
 TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
 private
 
 public
 
 end;
 
// Hier Defines für Voll- und Demo-Version zum Testen eintragen.
// Beim Programmstart soll dann in der Titelzeile 'Demo-Version' oder 'Voll-Version' angezeit werden.
{$ifdef Demo}
const Titel='Demo-Version';
{$endif}
{$ifdef Voll}
const Titel='Voll-Version';
{$endif}
 
var
 Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 caption:=titel; // Titel je nach Define
end;
 
end.                           
 


5) Zum probieren können wir nun die Voll- oder Demoversion per Menü-Popup auswählen (Pfeil neben dem Zahnradbutton 'Einstellmodus ändern' .
Siehe Bild6.
Es sollte dann im Quelltext
const Titel='Demo-Version';
oder
const Titel='Voll-Version';

scharf geschaltet werden .
Und die fertige Exe sollte dann in der Titel-Caption auch 'Voll-Version' oder 'Demo-Version' ausgeben.

Fersteuerungs-Programm:
Wenn man sich ein Konfigurations-Tool bauen will , kann man die Application 'hier project1' auch per Lazbuild kompilieren.
Benutze dazu hier TProcess , das geht ja auch unter LINUX.

Im ZIP das Programm Fernsteuerungs_Programm.lpi .

Code: Alles auswählen

unit unit_fernsteuerung;
 
{$mode objfpc}{$H+}
 
interface
 
uses
 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
 process;
 
type
 
 { TForm1 }
 
 TForm1 = class(TForm)
  Button1: TButton;
  RadioButton1: TRadioButton;
  RadioButton2: TRadioButton;
  procedure Button1Click(Sender: TObject);
 private
 
 public
 
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
// Project kompilieren mit lazbuild
procedure TForm1.Button1Click(Sender: TObject);
var prozess:tprocess;
    voll_demo:string;
begin
 if radiobutton1.Checked
  then voll_demo:='voll'
  else voll_demo:='demo';
 
 // Das Project neu copilieren
 // Programmaufruf
 prozess:=tprocess.create(nil);
 
 // prozess.CommandLine:='C:\lazarus\lazbuild -B --build-mode='+voll_demo+' project.lpr';
 
 prozess.Executable:='C:\lazarus\lazbuild.exe'; // Pfad zu Lazbuild
 prozess.Parameters.Add('-B');
 prozess.Parameters.Add('--build-mode='+voll_demo); // Einstellmodus 'voll' oder 'demo'
 prozess.Parameters.Add('project.lpr');
 
 prozess.Execute;
 prozess.free;
end;
 
end.                                           
 


Kompilieren mit Batch-Datei:
Siehe die beiden Bat-Dateien im ZIP im Anhang :

Entweder:
Für die Vollversion mit

start C:\lazarus\lazbuild -B --build-mode=voll project.lpr

oder

start C:\lazarus\lazbuild -B --build-mode=demo project.lpr

Sorry , mir ist es leider nicht gelungen , die Bilder in den Text einzufügen , hab es ne halbe Stunde ohne Erfolg probiert.
Bilder sind im ZIP enthalten.

Gruß

Frank
Dateianhänge
ExeName_im_Quellcode_aendern.zip
(1.82 MiB) 129-mal heruntergeladen
www.flz-vortex.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [Erledigt]ExeName im Quellcode ändern

Beitrag von af0815 »

Wenn du dir schon eine solche Arbeit machst, wäre die besser im Wiki von Lazarus aufgehoben. :D
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: [gelöst] ExeName im Quellcode ändern

Beitrag von fliegermichl »

Frank Ranis hat geschrieben:Hi ,

Sorry , mir ist es leider nicht gelungen , die Bilder in den Text einzufügen , hab es ne halbe Stunde ohne Erfolg probiert.
Bilder sind im ZIP enthalten.

Gruß

Frank


Bei Dateianhang kann man ein Häkchen setzen "Im Beitrag anzeigen"
Logo Lazarusforum
Logo Lazarusforum

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: [Erledigt]ExeName im Quellcode ändern

Beitrag von wp_xyz »

af0815 hat geschrieben:Wenn du dir schon eine solche Arbeit machst, wäre die besser im Wiki von Lazarus aufgehoben. :D

Das möchte ich unterstützen. Auch im Wiki ist es schwer, bestimmte Beiträge wiederzufinden, aber hier ist es absolut unmöglich, wenn man nicht weiß, dass sich eine solche Anleitung unter den Beiträgen befindet.

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

Re: [Erledigt]ExeName im Quellcode ändern

Beitrag von Frank Ranis »

Hi ,

af0815 hat geschrieben:Wenn du dir schon eine solche Arbeit machst, wäre die besser im Wiki von Lazarus aufgehoben. :D


wp_xyz hat geschrieben:
af0815 hat geschrieben:Wenn du dir schon eine solche Arbeit machst, wäre die besser im Wiki von Lazarus aufgehoben. :D

Das möchte ich unterstützen. Auch im Wiki ist es schwer, bestimmte Beiträge wiederzufinden, aber hier ist es absolut unmöglich, wenn man nicht weiß, dass sich eine solche Anleitung unter den Beiträgen befindet.


Ich habe noch nie nen Wiki-Beitrag gebaut , gibt es dazu auch ne Anleitung , ohne ne Woche Einarbeitung ?

fliegermichl hat geschrieben:
Frank Ranis hat geschrieben:Hi ,

Sorry , mir ist es leider nicht gelungen , die Bilder in den Text einzufügen , hab es ne halbe Stunde ohne Erfolg probiert.
Bilder sind im ZIP enthalten.

Gruß

Frank


Bei Dateianhang kann man ein Häkchen setzen "Im Beitrag anzeigen"
Lazarusforum.PNG


Habe ich gerade versucht .

Zip-Anhang , Bilder 1,2,3 geht auch noch , bei Bild 4 sagt mit der Editor 'max 4 Anhänge erlaubt' , was tun ?

Gruß

Frank
www.flz-vortex.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [Erledigt]ExeName im Quellcode ändern

Beitrag von af0815 »

Es geht nur den Beitrag über mehrere Posts zu führen. Alternativ ein Dokument erstellen, dann ein PDF draus zu machen und hier anzuhängen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten