AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ActionChain

ActionChain

Ein Thema von CCRDude · begonnen am 27. Jun 2013 · letzter Beitrag vom 4. Jul 2013
Antwort Antwort
CCRDude
Registriert seit: 9. Jun 2011
ActionChain entstand ursprünglich aus der Not, vor und nach jedem Delphi-Build noch diverse zusätzliche Aktionen ausführen zu müssen (sei es Anpassung an Release-Optionen oder nachträgliches Patchen des PE-Headers). Zeitweise habe ich dafür ein fertiges Produkt benutzt, in dem mir aber für mich wichtige Elemente fehlten.

ActionChain erlaubt es, wie der Name hoffentlich auch andeutet, Ketten von Aktionen zu definieren. Fast wie Batch-Dateien, nur grafisch zu bearbeiten. Übrigens sind diese Ketten auch wieder exportierbar als Kommandozeilenanwendung, so dass fertige Dateien nicht auf eine grafische Oberfläche angewiesen sind (das Modul fehlt hier wegen der Größenbeschränkung bei Uploads gerade).

Unterstützt sind inzwischen 264 Aktionen; mal als groben Überblick:
  • Process creation/termination
  • cwRsync synchronization
  • MySQL actions
  • Bazaar VCS actions
  • MSBuild
  • Delphi
  • FreePascal
  • Doxygen
  • Visual Studio Linker
  • WSDK Message Compiler
  • WSDK Resource Compiler
  • WSDK SignTool
  • PE patches (e.g. to fix Delphi bugs)
  • File system actions
  • File hash calculation
  • Text hash calculation
  • InCtrl5 monitoring
  • Ini files
  • InnoSetup installer
  • NSIS installer
  • FTP
  • ntrights
  • XCACLS
  • Network actions (get username, host name, ip address, mac address)
  • Network drive mappings
  • 7Zip archives
  • Arj archives
  • Cab archives
  • Chm archives
  • NSIS "archives"
  • UPX packer
  • PSTools
  • Registry actions
  • Screenshot action
  • DACL/SID actions
  • System service actions
  • GNU gettext actions
  • VMWare Remote Control
Über ein Plugin-System lassen sich andere Kommandozeilentools hinzufügen. Bestehende Aktionen lassen sich per PascalScript ergänzen.

Ich hab noch einige Tickets, was ich ergänzen möchte, würde mich aber über externes Feedback freuen, weil ich es, wenn machbar, gerne auch allgemeintauglich weiterentwickeln möchte.
Miniaturansicht angehängter Grafiken
actionchain-example-01.png   actionchain-actionsettings-01.png  
Angehängte Dateien
Dateityp: zip setup-actionchain-0.2.exe.zip (4,06 MB, 31x aufgerufen)
 
sahimba

 
Delphi 10 Seattle Professional
 
#2
  Alt 27. Jun 2013, 14:18
Hallo,

ich habe jetzt nur ganz kurz Zeit gehabt, reinzuschauen. Mein erster Eindruck:

Könnte für mich tatsächlich Ersatz für Finalbuilder werden da ich von diesem ohnehin nur einen Bruchteil der Möglichkeiten verwende. SVN Unterstützung scheint ja gegeben zu sein. Was mir auf den ersten Blick fehlt (vielleicht zeigt mir der zweite Blick, dass es geht) ist, ein Projekt mit verschiedenen Delphi-Versionen bauen zu können. Ggf. findest Du hier (http://ddobjects.de/free-software "Delphi Component Installer") ein wenig Code, welcher Dir beim Ausbau der Action helfen könnte.

Nach meinem Urlaub werde ich mich etwas ausführlicher mit Deinem Tool befassen.

Danke und Grüße
-s-
  Mit Zitat antworten Zitat
CCRDude

 
FreePascal / Lazarus
 
#3
  Alt 27. Jun 2013, 14:53
Danke für's Reinschauen

Unterstützt ist im Prinzip natürlich jedes Kommandozeilentool. Subversion ist aktuell eine Extra-Action. Bazaar ist als einziges vollständiges VCS soweit, dass einzelne Bazaar-Befehle (commit, push, ...) eigenständige Actions sind. Aber: es ist auf meiner Roadmap, SVN auch komfortabel direkt in die passenden Actions aufzusplitten. Die Rümpfe dafür habe ich schon, muss nur noch aus der SVN-Doku die Parameter der einzelnen Befehle extrahieren, dann ist kein Ausschreiben der Parameter mehr nötig, sondern sie werden aus den Einstellungen zusammengesetzt.

Eine Delphi-Versions-Erkennung habe ich sogar irgendwo rumfliegen... aktuell kann man nur manuell umschalten, indem den 3rd party path zu dcc32.exe einstellt. Müsste mal überlegen, wie ein Umschalter für die Executable da schon ins Konzept einpflegbar wäre (ansonsten wären wenigstens verschiedene Einträge für verschiedene Versionen natürlich sofort machbar!)
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

 
Delphi XE7 Professional
 
#4
  Alt 27. Jun 2013, 15:04
Wie siehts aus mit Git Unterstützung? Geplant ?

Der Exit Button im Ribbon geht übrigens nicht.

Geändert von Back2Code (27. Jun 2013 um 15:10 Uhr)
  Mit Zitat antworten Zitat
WladiD

 
Delphi XE Professional
 
#5
  Alt 27. Jun 2013, 15:19
Welche Script-Engine steckt hinter PascalScript genau?
Waldemar Derr
  Mit Zitat antworten Zitat
CCRDude

 
FreePascal / Lazarus
 
#6
  Alt 27. Jun 2013, 15:58
@Wladi: RemObjects.

Oh ja. Ribbons... ActionChain war/ist nebenbei mein Ribbons-Ausprobier-Projekt Habe ich behoben.

@Polymorphin: Git und Cvs stehen neben Svn auf der Liste, ja

Zur Veranschaulichung, so einen Block muss ich in etwa für jede Svn/Git/Cvs-Aktion schreiben:
Delphi-Quellcode:
{ TChainActionBazaarBranch }

function TChainActionBazaarBranch.CommandLineParameters: string;
begin
   Result := 'branch';
end;

class function TChainActionBazaarBranch.DisplayName: string;
begin
   Result := 'Branch Bazaar repository';
end;

class function TChainActionBazaarBranch.GetDescriptionCommandLineParameter: string;
begin
   Result := 'help branch';
end;

procedure TChainActionBazaarBranch.SpecifyParameters;
begin
   inherited;
   AddBooleanParameter('UseExistingDir', 'Use an existing directory', '--use-existing-dir');
   AddBooleanParameter('Stacked', 'Create a stacked branch', '--stack');
   AddBooleanParameter('StandAlone', 'Do not use a shared repository, even if available', '--standalone');
   AddStringParameter('FilesFrom', 'Get file contents from this tree', '--files-from=%s');
   AddBooleanParameter('Switch', 'Switch the checkout in the current directory to the new branch', '--switch');
   AddBooleanParameter('Hardlink', 'Hard-link working tree files where possible', '--hardlink');
   AddBooleanParameter('Bind', 'Bind new branch to from location', '--bind');
   AddBooleanParameter('NoTree', 'Create a branch without a working tree', '--no-tree');
   AddStringParameter('Revision', 'Revision', '--revision="%s"');
   with AddStringParameter('FromLocation', 'From location', '%s') do begin
      AddChooseDirectoryEditPopup;
   end;
   with AddStringParameter('ToLocation', 'To location', '%s') do begin
      AddChooseDirectoryEditPopup;
   end;
end;
  Mit Zitat antworten Zitat
WladiD

 
Delphi XE Professional
 
#7
  Alt 27. Jun 2013, 16:03
Danke für dei Antwort. Ist auf jeden Fall ein geiles Tool.
Waldemar Derr
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

 
Delphi 10.1 Berlin Professional
 
#8
  Alt 28. Jun 2013, 21:18
Wie greift man denn auf definierte Variablen zu?

Wenn z.B. eine Variable "TEST" mit dem Inhalt "123" existiert, kann man diesen Inhalt z.B. mit "ShowMessage (simple)" ausgeben (nur als Beispiel)?

Ich habe schon verschiedene Möglichkeiten, z.B "$(TEST)", ohne Erfolg ausprobiert.

Wie ist die Syntax mit der man auf Variablen zugreift?

Danke schon mal,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
CCRDude

 
FreePascal / Lazarus
 
#9
  Alt 4. Jul 2013, 12:28
So, Entschuldigung, hatte eine ungeplante Gartenwoche...

Das Dollarzeichen geht schon in die richtige Richtung: Mit spitzen Klammern und dem Dollar drin geht das: "Hallo <$TEST>".

Für die Skript-Funktion geht zudem:

Delphi-Quellcode:
function GetVar(AVarName: String): Variant;
function GetRawVar(AVarName: String): Variant;
procedure SetVar(AVarName: String; AData: Variant);
function GetParameter(AVarName: String): Variant;
function GetRawParameter(AVarName: String): Variant;
procedure SetParameter(AVarName: String; AData: Variant);
Also zum Beispiel eine Scripted action (CustomScript) mit folgendem OnExecute:
Delphi-Quellcode:
begin
   ShowMessage('Hallo ' + GetVar('Name'));
end.
Werde ein Demo in den Installer packen.

Subversion hab ich grob auch schon umgesetzt, fehlen noch ein paar Parameterfelder.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf