hilfdirselbst.ch
Facebook Twitter gamper-media
« « 1 2 » »  
WernerPerplies
Beiträge: 2201
25. Jul 2013, 17:17
Beitrag #1 von 20
Bewertung:
(4573 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hi,

eigentlich eine simple Sache:

Ich möchte eine Skriptdatei per Skript in den Editor des ESTK laden ohne das Skript auszuführen.

Wenn ich die Datei über File().excute() aufrufe, lädt das Skript die Datei und führt sie dann aus.

Wenn ich den gleichen Versuch mit einer Skriptdatei aus einem, für InDesign nicht vertrauenswürdigen Verzeichnis mache, wird das Skript geladen, dann wird eine Warnmeldung ausgegeben.

Wenn ich aber in Visual Studio (ich mache die Versionsverwaltung für die InDesign-Skriptentwicklung über Projekte in Visual Studio) den ".jsx"-Dateien das ESTK als Editor zuweise, funktioniert das Laden des Skriptes wie gewünscht.

Wer kennt den Trick?

Vielen Dank schon mal für eine gute Idee.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING Top
 
X
Uwe Laubender S
Beiträge: 4109
25. Jul 2013, 17:38
Beitrag #2 von 20
Beitrag ID: #515512
Bewertung:
(4555 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo, Werner!

Da könnte etwas für Dich dabei sein:

Bob Stucky
http://forums.adobe.com/message/4839733#4839733

und weiter unten im gleichen Thread:

Marc Autret
http://forums.adobe.com/message/4842992#4842992
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515511] Top
 
WernerPerplies
Beiträge: 2201
25. Jul 2013, 17:53
Beitrag #3 von 20
Beitrag ID: #515513
Bewertung:
(4542 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Uwe,

danke, stimmt, da könnte ich fündig werden.

Der Hintergrund für mein Anliegen:

Ich habe mir ein Skript gebaut, das eine Startdatei automatisch mit Headerinformationen (Skriptname, targetengine, Version, Erstellungsdatum, Lizenzinformationen) versieht, dann rekursiv alle Include-Dateien einfügt, dabei auch diese Dateien auf Änderungen überprüft und ggf. die Header korrigiert.

Daraus entsteht eine Gesamtdatei, die dann, hier hänge ich, in's Binärformat exportiert werden soll und anschließend automatisch in ein Aufrufskript einfügt wird, das Installationsroutinen und den eigentlichen Aufruf enthält.

Der letzte Teil funktioniert auch.

Ich hoffe also mit den von Dir genannten Infos auch den Rest erledigen zu können.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515512] Top
 
WernerPerplies
Beiträge: 2201
25. Jul 2013, 18:10
Beitrag #4 von 20
Beitrag ID: #515514
Bewertung:
(4532 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Uwe,

Bob löst das Problem innerhalb des ESTK, ich brauche ja den externen Aufruf.

Des Rätsels Lösung liegt wohl im Verzeichnis
C:\Program Files\Adobe\Adobe Utilities\ExtendScript Toolkit 2\Required

Ich bin ziemlich sichern, dass ich da fündig werde.

Vielen Dank für die Links.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515512] Top
 
Uwe Laubender S
Beiträge: 4109
25. Jul 2013, 19:04
Beitrag #5 von 20
Beitrag ID: #515516
Bewertung:
(4510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo, Werner!

Für Mac-Anwender sieht's ein wenig anders aus.

Da muss man in die app-Package reinschauen.
Dort dann unter:

Contents/Shared Support/Required

Uwe
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515514] Top
 
WernerPerplies
Beiträge: 2201
25. Jul 2013, 19:13
Beitrag #6 von 20
Beitrag ID: #515517
Bewertung:
(4506 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Uwe,

danke, das habe ich gesehen.

Zwischenzeitlich habe ich auch gesehen, wie der externe Aufruf unter Windows funktioniert, aber weiß ich keine Lösung mit JavaScript.

Mit einem externen Skript dürfte sich das reine Öffnen leicht realisieren lassen, aber bisher habe ich noch keine Lösung für das Compilieren gefunden.

Aus meiner meiner momentanen Sicht wäre es am leichtesten dafür einen Compilierparameter einzuführen, wenn ihn vielleicht nicht sogar schon gibt.

Dann könnte man den gesamten Vorgang problemlos mit kleinen externen Skripten lösen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515516] Top
 
Dirk Becker
Beiträge: 157
29. Jul 2013, 19:19
Beitrag #7 von 20
Beitrag ID: #515625
Bewertung:
(4329 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Mir ist noch nicht ganz klar, wo es hakt, ich habe aber auch Bob's Paket noch nicht durchgesehen, das kannte ich auch noch nicht. Vorerst ein paar Tips:

Etwa für vollautomatische Build-Prozesse akzeptiert ESTK Befehlszeilenargumente "cmd ScriptFileName" ohne die Quoten. Auf dem Mac muss man direkt das Binary im App-Bundle ansprechen, also die Datei in Contents/MacOS.

Man kann im "SharedSupport/Required" Ordner auch einen neuen Ordner "extensions" erstellen, der ist genau für eigene Scripts gedacht. Funktioniert gut, ich habe da schon einiges rumliegen. Der SVN Client ist aber noch eine Baustelle ;-)

Die interne Ausführungsumgebung von ESTK spricht man im ESTK Editor über ein separates Target an. Leider funktioniert dort der Debugger nicht, man muss sich mit der Konsole begnügen.

Code
#target "estoolkit#dbg" 


Das jsxbin erstellt man in diesem Target über den Befehl app.compile, wie auch in 80document.jsx so circa Zeile 2450:
Code
var bin = app.compile(code,undefined,"/"); 

Das Ergebnis dann in eine binäre Datei schreiben ...
als Antwort auf: [#515517] Top
 
WernerPerplies
Beiträge: 2201
30. Jul 2013, 08:16
Beitrag #8 von 20
Beitrag ID: #515635
Bewertung:
(4298 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Dirk,

vielen Dank fü Deinen Betrag, der mich wohl ein ganzes Stück weiterbringen wird.

Zitat ...Etwa für vollautomatische Build-Prozesse akzeptiert ESTK Befehlszeilenargumente "cmd ScriptFileName" ohne die Quoten.


Hättest Du vielleicht auch eine Kommandoliste fir mich?

Zitat Man kann im "SharedSupport/Required" Ordner auch einen neuen Ordner "extensions" erstellen, der ist genau für eigene Scripts gedacht. Funktioniert gut, ich habe da schon einiges rumliegen. Der SVN Client ist aber noch eine Baustelle ;-)

Das macht die Sache natürlich übersichtlicher, Bob packt seine Extension direkt in den Required-Ordner, der offentsichtlich in alphabetischer Reihenfolge abgearbeitet wird,
Zitat #target "estoolkit#dbg"

Na das ist doch mal eine Info,wo findet man so etwas?

Zitat var bin = app.compile(code,undefined,"/");

Ja, diese Zeile habe ich natürlich gesehen, noch eleganterwäre es wohl, wenn an die ESTK-app direkt aus dem Indesignscript aufrufen und die Methoden über ein eigenes Global-Object aufrufen könnte.

Wenn ich die Logik richtig verstanden habe, sollte so etwas möglich sein.

Ich melde mich,wenn ich mehr weiß.

Zitat Der SVN Client ist aber noch eine Baustelle ;-)

;-)Um mir diese Arbeit zu sparen,bin ich den Weg über Visual Studio und Team Foundation Server gegangen, eine bessere Lösung (nur für Windows), kenne ich icht.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515625] Top
 
Dirk Becker
Beiträge: 157
30. Jul 2013, 10:45
Beitrag #9 von 20
Beitrag ID: #515639
Bewertung:
(4270 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Zitat Hättest Du vielleicht auch eine Kommandoliste für mich?

Das Feature habe ich seit 2007 nicht mehr im Einsatz, weil meine Build-Scripts mit dem Wechsel von PowerPC und CodeWarrior auf Intel und XCode obsolet wurden. Aber soeben probiert:

Code
Dirk-MBP:~ dirk$ cat ~/Hallo.jsx  
alert("Hallo");
Dirk-MBP:~ dirk$ /Applications/Utilities/Adobe\ Utilities-CS5.localized/ExtendScript\ Toolkit\ CS5/ExtendScript\ Toolkit.app/Contents/MacOS/ExtendScript\ Toolkit -cmd ~/Hallo.jsx


ESTK startet, bringt den Alert und verabschiedet sich wieder.

#target "estoolkit#dbg"

Zitat Na das ist doch mal eine Info,wo findet man so etwas?

Indem man die richtigen Leute fragt. Früher gab es neben den öffentlichen Adobe Foren auch noch eine kleine email Liste nur zu Scripting. Inzwischen hat das Partnerprogramm (ich entwickle auch Plugins) ähnliche Bereiche.
als Antwort auf: [#515635] Top
 
WernerPerplies
Beiträge: 2201
31. Jul 2013, 13:14
Beitrag #10 von 20
Beitrag ID: #515700
Bewertung:
(4211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Dirk,

ich möchte mich noch einmal für Deine Hilfe bedanken, dieses Skript ist jetzt das Ergebnis meiner Experimente:
Code
#target "estoolkit#dbg"  
main();

function main()
{
try
{
var file = new File("C:/Users/Werner Perplies/Documents/!!!!!!Testordner/alert.jsx");
if (file.exists)
{
var sourceCode = readFile2String(file.fullName);
if ( sourceCode!=null)
{
var bin = app.compile(sourceCode);
writeString2File(file.fullName.replace(".jsx",".jsxbin"), bin);
}
}
}
catch (error)
{
alert(error.message);
}
}
/*string*/function readFile2String(/*string*/fileName)
{
try
{
var fileContent = null;
if (fileName == null) return null;
var file = File (fileName);
if (file==null)
{
throw new Error("Konnte das File-Objekt nicht erzeugen!");
}
if (!file.open("r"))
{
throw new Error(file.error);
}
var fileContent = file.read(file.length);
if (fileContent == null )
{
if ((fileContent.length == 0) && (file.error.length == 0))
{
file.error = "leere Datei\n "+ file.name;
throw new Error(file.error);
}
}
if (!(file.close()))
{
throw new Error(file.error);
}
return fileContent;
}
catch (error)
{
alert(error.message+"\n"+error.line);
return fileContent;
}
return fileContent;
}
/*bool*/function writeString2File(
/*string*/fileName, /*string*/string2Write, /*string*/encoding)
{
try
{
var file = File (fileName);
if (file==null)
{
throw new Error("Konnte das File-Objekt nicht erzeugen!");
}
if (encoding==null)
file.encoding = "UTF-8";
else
file.encoding = encoding;
if (!file.open("w"))
{
throw new Error(file.error);
}
if (!(file.write(string2Write)))
{
throw new Error(file.error);
}
if (!(file.close()))
{
throw new Error(file.error);
}
return true;
}
catch (error)
{
alert(error.message + "\n"+error.line);
return false;
}
return false;
}


Ein Problem gibt es noch:

Das Skript funktioniert im ESTK, bei Aufruf aus dem Skriptpanel ist die Methode app.compile() undefiniert.

Über DoScript habe ich es noch nicht getestet.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515639] Top
 
WernerPerplies
Beiträge: 2201
31. Jul 2013, 13:33
Beitrag #11 von 20
Beitrag ID: #515701
Bewertung:
(4206 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Jetzt habe ich es mit DoScript probiert und es klappt leider nicht, weil mein Funktionsaufruf readFile2String) als unbekannt angemeckert wird.
Hat jemand dazu vielleicht eine Idee?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515700] Top
 
mx S
Beiträge: 161
31. Jul 2013, 14:13
Beitrag #12 von 20
Beitrag ID: #515703
Bewertung:
(4180 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Werner,

und es liegt jetzt nicht vielleicht an

Zitat If a script is compiled to a .jsxbin file, the #target directive is ignored. Double-clicking a .jsxbin
file does not execute the script in the application that the #target directive defines.


?

Viele Grüße
Jo
als Antwort auf: [#515701] Top
 
WernerPerplies
Beiträge: 2201
31. Jul 2013, 15:11
Beitrag #13 von 20
Beitrag ID: #515707
Bewertung:
(4152 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Jo,

Zitat If a script is compiled to a .jsxbin file, the #target directive is ignored. Double-clicking a .jsxbin
file does not execute the script in the application that the #target directive defines.


Danke, das ist mir bekannt, und deswegen verwende ich für binäre Skripts ein Wrapper-Skript, das die Zuweisung der Target-Machine macht. Wie ich das mache, kannst bei Interesse zum Beispiel an meinen Skript WpsHyperlinkInspector sehen.
In diesem Wrapper-Script rufe dann mein eigentliches Skript per DoScript auf. Da funktionieren auch alle Unterfunktionen.

In diesem Fall aber ruft ein nicht kompiliertes Skript ein anderes nicht kompiliertes Skript auf.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515703] Top
 
Dirk Becker
Beiträge: 157
1. Aug 2013, 18:09
Beitrag #14 von 20
Beitrag ID: #515765
Bewertung:
(4079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


app.compile ist eine Funktion von der speziellen ESTK Engine. Das Script muss also von ESTK ausgeführt werden.

Ich verwende #target Anweisungen sonst nur, um beim Start aus ESTK direkt die richtige Applikation (InDesign oder InDesign Server) zu adressieren. Ob #target vom InDesign Script-Panel auch zur Adressierung der anderen Applikationen der Suite Cloud funktionieren sollte weiss ich nicht und habe ich noch nie gebraucht. Da es wohl wie von Werner beobachtet zumindest für das spezielle Target nicht funktioniert, bleibt noch immer der Aufruf über BridgeTalk - eine Wissenschaft für sich - oder über die Befehlszeile.

Btw, irgendwo gab es auch einen Bericht, dass man den jsxbin Code auch über eval() in ein jsx einbetten kann, das spart dann ggf. eine zweite Script-Datei.
als Antwort auf: [#515707] Top
 
WernerPerplies
Beiträge: 2201
1. Aug 2013, 18:20
Beitrag #15 von 20
Beitrag ID: #515766
Bewertung:
(4077 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

per Skript eine Skriptdate im ESTK laden - Windows


Hallo Dirk,

d. h.. wenn ich das richtig verstehe:

Zurück auf Los!.

Trotzdem danke.

Zitat Btw, irgendwo gab es auch einen Bericht, dass man den jsxbin Code auch über eval() in ein jsx einbetten kann, das spart dann ggf. eine zweite Script-Datei.


Ich bette den Code auch in eine jsx-Datei ein, verwende aber DoScript.

Ich habe also auch nur eine Datei.

Ergänzung:
Zitat Aufruf über BridgeTalk - eine Wissenschaft für sich

Kennt sich hier jemand damit aus?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#515765]
(Dieser Beitrag wurde von WernerPerplies am 1. Aug 2013, 18:26 geändert)
Top
 
« « 1 2 » »  
X