30.09.2015, 08:31
Hallo zusammen,
ich nutze schon seit einiger Zeit die Pre-Build / Post-Build Funktionalität um vor bzw. nach dem Erstellen einer Applikation bestimmte Aktionen auszulösen, mit dem Post-Build packe ich z.B. das gesamte Build-Directory in eine ZIP-Datei und versehe das Archiv (im Dateinamen) mit einer Build-Nummer und einem Datum, die dann automatisch in ein Archiv geschoben werden usw ...
Nun bin ich schon seit einiger Zeit an einem Thema dran, das sich als harte Nuss rausstellt: ich möchte mit Hilfe des Pre-Build-VIs alle VIs, die in die EXE kompiliert werden automatisch übersetzen (der Teil der automatischen Übersetzung ist aber nicht Bestandteil dieser Frage ...) und dazu brauche ich die Referenzen zu den VIs in der App-Builder Instance von LabVIEW.
Das Problem ist: ich komme da einfach nicht ran. Für mich sieht es so aus als wären die VIs, die beim Build in die App-Builder-Instance geladen würden irgendwie vom Rest von LabVIEW abgeschottet, die Appplication-Invoke-Node "Sync in all Contexts" wurde auch irgendwann mit 2012 oder 2013 entfernt und ist komplett deaktiviert. Selbst wenn man die Application-Builder VIs hackt, die die Application-Reference der App-Builder-Instanz rauszieht und an das Pre-Build-VI übergibt (und bei "Open-VI-Reference" nutzt), kommt man nicht an die "richtigen" VIs, sondern nur an die in der Main-Instance. Man "verhuddelt" sich damit nur die VIs, in der Main-Instance, die VIs in der Exe sind aber noch im "original"-Zustand. Darum hab ich den Verdacht, dass die VIs zum Zeitpunkt zu dem das Pre-Build-VI aufgerufen wird noch gar nicht in der App-Builder-Instance geladen sind.
Hat jemand vielleicht ein Proof-of-Concept-VI mit dem man zur Build-Time ein VI in der App-Builder-Instance programmatisch durch LV-Scripting oder Property-Nodes manipulieren kann, so dass in der Exe das manipulierte VI gespeichert wird??
Alternativ: hat jemand ein Proof-of-Concept, wie man die VIs in einer compilierten Exe wieder extrahiert, manipuliert und die Exe wieder zusammenbaut?
Last but not least: nein, ich will nicht das SEA Translation tool oder ähnliche verwenden
Sowas hatte ich schon selbst spätestens 2007, und es geht mir bis heute auf den Sack, im besonderen z.B. weil man sich einen abbrechen muss um String-Konstanten (z.B. für "format into string") im Block-Diagramm zu behandeln und ähnliches. Meine Ziel-Vorstellung ist, dass ich - im Groben - zur Build-Time die VI-Strings programmatisch exportiere, automatisch übersetze und wieder importiere und damit die übersetzten String fest in die EXE eingebunden sind.
Danke & viele Grüße
cb
ich nutze schon seit einiger Zeit die Pre-Build / Post-Build Funktionalität um vor bzw. nach dem Erstellen einer Applikation bestimmte Aktionen auszulösen, mit dem Post-Build packe ich z.B. das gesamte Build-Directory in eine ZIP-Datei und versehe das Archiv (im Dateinamen) mit einer Build-Nummer und einem Datum, die dann automatisch in ein Archiv geschoben werden usw ...
Nun bin ich schon seit einiger Zeit an einem Thema dran, das sich als harte Nuss rausstellt: ich möchte mit Hilfe des Pre-Build-VIs alle VIs, die in die EXE kompiliert werden automatisch übersetzen (der Teil der automatischen Übersetzung ist aber nicht Bestandteil dieser Frage ...) und dazu brauche ich die Referenzen zu den VIs in der App-Builder Instance von LabVIEW.
Das Problem ist: ich komme da einfach nicht ran. Für mich sieht es so aus als wären die VIs, die beim Build in die App-Builder-Instance geladen würden irgendwie vom Rest von LabVIEW abgeschottet, die Appplication-Invoke-Node "Sync in all Contexts" wurde auch irgendwann mit 2012 oder 2013 entfernt und ist komplett deaktiviert. Selbst wenn man die Application-Builder VIs hackt, die die Application-Reference der App-Builder-Instanz rauszieht und an das Pre-Build-VI übergibt (und bei "Open-VI-Reference" nutzt), kommt man nicht an die "richtigen" VIs, sondern nur an die in der Main-Instance. Man "verhuddelt" sich damit nur die VIs, in der Main-Instance, die VIs in der Exe sind aber noch im "original"-Zustand. Darum hab ich den Verdacht, dass die VIs zum Zeitpunkt zu dem das Pre-Build-VI aufgerufen wird noch gar nicht in der App-Builder-Instance geladen sind.
Hat jemand vielleicht ein Proof-of-Concept-VI mit dem man zur Build-Time ein VI in der App-Builder-Instance programmatisch durch LV-Scripting oder Property-Nodes manipulieren kann, so dass in der Exe das manipulierte VI gespeichert wird??
Alternativ: hat jemand ein Proof-of-Concept, wie man die VIs in einer compilierten Exe wieder extrahiert, manipuliert und die Exe wieder zusammenbaut?
Last but not least: nein, ich will nicht das SEA Translation tool oder ähnliche verwenden
Sowas hatte ich schon selbst spätestens 2007, und es geht mir bis heute auf den Sack, im besonderen z.B. weil man sich einen abbrechen muss um String-Konstanten (z.B. für "format into string") im Block-Diagramm zu behandeln und ähnliches. Meine Ziel-Vorstellung ist, dass ich - im Groben - zur Build-Time die VI-Strings programmatisch exportiere, automatisch übersetze und wieder importiere und damit die übersetzten String fest in die EXE eingebunden sind.
Danke & viele Grüße
cb