getOutStreamFromSection() funktioniert nicht in Sub-File (?)

Antworten
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

getOutStreamFromSection() funktioniert nicht in Sub-File (?)

Beitrag von embl-structures »

Hi,

getOutStreamFromSection() scheint nicht zu funktionieren, wenn es in einem Sub-File steht. Mit test.sub =

Code: Alles auswählen

DefStringList $mylist$
Set $mylist$ = getOutStreamFromSection("DOSInAnIcon_Echo")

[DOSInAnIcon_Echo]
echo "TEST"
ergibt der Aufruf

Code: Alles auswählen

sub "%SCRIPTPATH%\test.sub"
die Fehlermeldung Section "DOSInAnIcon_Echo" not found.

Soll das so sein? Falls ja, gibt es eine Moeglichkeit, in Sub-Files den Output von DOS-Sektionen einzufangen?

frank
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von embl-structures »

Niemand?
f.
othiman
Beiträge: 126
Registriert: 09 Sep 2009, 14:15
Wohnort: Aachen, Germany

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von othiman »

Hallo,

leider existiert dieser Bug schon seit ziemlich langer Zeit und scheint auch nicht so einfach zu lösen zu sein.

Was aber hilft ist die DOSInAnIcon Sektion eine Datei "höher" einzufügen, also in alle Dateien, die das Sub-File einbinden.

Viele Grüße
Thomas
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von embl-structures »

othiman hat geschrieben:Was aber hilft ist die DOSInAnIcon Sektion eine Datei "höher" einzufügen, also in alle Dateien, die das Sub-File einbinden.
Hmm. Danke. Leider hilft das in diesem Fall nicht, denn die gesamte Funktionalitaet soll in einem eigenen File gekapselt werden und so als globale Funktion fuer alle anderen Pakete zur Verfuegung stehen. Ich muss mir wohl einen anderen Weg suchen.
frank
othiman
Beiträge: 126
Registriert: 09 Sep 2009, 14:15
Wohnort: Aachen, Germany

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von othiman »

Vor so einem Fall stand ich auch schon mal und hab leider auch keine gute Lösung dafür gefunden. Hatte damals noch die Hoffnung, dass jemand bei UIB das Problem relativ zügig lösen kann, aber scheint doch recht kompliziert zu sein...

Gruß
Thomas
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1939
Registriert: 28 Mai 2008, 10:53

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von ueluekmen »

Hi,

subs in subs in subs in subs = Kopfschmerzen ;)

Dieses Verhalten ist uns bekannt. Beim auslagern in externe Dateien, also bei der Reorganisation der Winst-Skripte in einzelne Teilskripte entsteht das Problem, dass der Winst hin und wieder seine Sekundären Sektionen vergisst. Da in diesem Fall der Kontext aus dem das Skript aufgerufen wird nicht das selbe Skript ist, wo die gewünschte Sekundäre Sektion definiert ist. Klingt kompliziert, ist es auch ;).

Es gibt zwei Möglichkeiten:
Sekundäre Sektionen zusätzlich in das Hauptskript packen. Aber dann ist die Frage, ob man dann wirklich die Files noch mal trennt, wenn sowieso alles redundant in allen Dateien stehen muss/sollte.
Eine neue und elegante Möglichkeit ist das Winst-Feature: insert und append:

http://download.uib.de/opsi4.0/doc/html ... ds-include

Zum Aufteilen der Scripte sollten diese Features das Mittel der Wahl sein. Deshalb haben wir dieses "Known-Issue" nicht weiter bearbeitet und empfehlen auf die Methoden insert und append zurück zu greifen.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: getOutStreamFromSection() funktioniert nicht in Sub-File

Beitrag von embl-structures »

Hallo ueluekmen,
ueluekmen hat geschrieben: subs in subs in subs in subs = Kopfschmerzen ;)
[...]
Es gibt zwei Möglichkeiten:
Sekundäre Sektionen zusätzlich in das Hauptskript packen. Aber dann ist die Frage, ob man dann wirklich die Files noch mal trennt, wenn sowieso alles redundant in allen Dateien stehen muss/sollte.
Genau, es gilt naemlich auch: Redundanz = Kopfweh :)
ueluekmen hat geschrieben:Eine neue und elegante Möglichkeit ist das Winst-Feature: insert und append:

http://download.uib.de/opsi4.0/doc/html ... ds-include

Zum Aufteilen der Scripte sollten diese Features das Mittel der Wahl sein. Deshalb haben wir dieses "Known-Issue" nicht weiter bearbeitet und empfehlen auf die Methoden insert und append zurück zu greifen.
Hmm. Nette Sache, wird aber fuer mich, wenn ich das richtig sehe, nicht funktionieren. Meine Sub-Files sind - soweit es geht - in sich gekapselte Funktionalitaeten, welche sowohl primaere als auch sekundaere Sektionen enthalten koennen. Beispiel, mein "%SCRIPTPATH%\..\global\MSIInstall.sub":

Code: Alles auswählen

;
; Installs an MSI package unattended
;
; The following variables have to be defined first:
;    $_msipack: full path to MSI package
;    $_msiopts: Additional options for msiexec
;
; Return values:
;

DefVar $__msicmd
Set $__msicmd = "msiexec"


If not (FileExists($_msipack))
  Pause "SORRY, could not find " + $_msipack + ".  Please report this problem to XXXXXXXX"
  IsFatalError
else
  Set $__msicmd = $__msicmd + " /i" + '"' + $_msipack + '"' +" /passive " + $_msiopts
  WinBatch_MSIInstall
endif


[WinBatch_MSIInstall]
$__msicmd
Wenn ich dieses File mit "include_insert" hinzufuege, muesste das Skript nach "[WinBatch_MSIInstall]" wieder mit der primaeren Hauptsektion weiterfahren. Ohne es selber getestet zu habe bezweifle ich, dass das so funktioniert. Wahrscheinlich muesste ich fuer ein korrektes Hinzufuegen das File aufteilen in "MSIInstall.primary.inc" und "MSIInstall.secondary.inc". Ersteres wuerde mit "include_insert" eingefuegt, letzteres mit "include_append". Das ist zu aufwendig fuer meinen Fall. "sub <filename>" ist eine tolle Sache - wenn auch mit Haken - und ist m.E. genereller Nutzbar als include_*.

Wie siehst Du das?

Gruss
frank
Antworten