Prozeduraufrufe verschachteln

Antworten
bernhardus
Beiträge: 30
Registriert: 02 Apr 2009, 11:25

Prozeduraufrufe verschachteln

Beitrag von bernhardus »

Hallo,

ich verfolge die Entwicklung von OPSI seit ca. 2 Jahren und habe mich nun auch hier im Forum angemeldet. Ich will OPSI bei uns einsetzen und erstelle gerade meine ersten Installations-Skripte.

Für die Installation von ghostscript benutze ich ein Haupt-Skript ghostscript.ins, welches die ganzen Vor- und Nacharbeiten durchführt und aus dem heraus ich ein anderes Skript mittels

Code: Alles auswählen

sub "%ScriptPath%\uninstall_prev.ins"
aufrufe, um vorhergehende Versionen zu entfernen.

Dort wiederum werden im Hauptteil abhängig von der jeweiligen Software-Version Variablen gesetzt und dann eine weitere Prozedur aufgerufen, die die eigentliche Arbeit macht, indem sie einzelne Sektionen aufruft (Code s. u.). Wenn nun eine solche Sektion (bspw. [Files_UninstPath]) aufgerufen wird, passiert gar nichts. Im Log erscheint der Eintrag

Warning: Section "Files_UninstPath" does not exist or is empty

was aber definitiv nicht zutrifft - die Sektion existiert in uninstall_prev.ins, und sie ist auch nicht leer.

Deshalb meine Frage: Gibt es eine Beschränkung der Verschachtelungstiefe von Prozedur- bzw. Sektionsaufrufen? Oder mache ich etwas grundsätzlich falsch?

Gruß
Bernd

Code: Alles auswählen

	if (IniVar ("AFPL GhostScript 8.14") = "yes")
		set $UninstPrevName$ = "afpl_gs_814"
		{...}
		sub_UninstPrev
	endif

[sub_UninstPrev]
	{...}
	Files_UninstPath
	{...}

[Files_UninstPath]
	{...}
	delete -fs $UninstPath$
	{...}

Gruß
Bernd
___________
opsi 4.0.0.18
winst 4.10.8.7
Ubuntu 10.04
Benutzeravatar
r.roeder
uib-Team
Beiträge: 540
Registriert: 02 Jul 2008, 10:08

Re: Prozeduraufrufe verschachteln

Beitrag von r.roeder »

Hallo,

ein als Datei ausgelagerte Prozedur kann keine Unterprozedur enthalten - alle Prozeduren/Sektionen müssen dem Skriptparser direkt zugänglich sein. Daher die weiteren Sub-Sub-Prozeduren entweder auch extern oder direkt ins Hauptskript einbinden.

Gruß,

R.Röder
opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.


Wondering who's using opsi? Have a look at the opsi map: http://opsi.org/opsi-map/.
bernhardus
Beiträge: 30
Registriert: 02 Apr 2009, 11:25

Re: Prozeduraufrufe verschachteln

Beitrag von bernhardus »

Ja, habe ich mittlerweile ausprobiert:

Innerhalb einer ausgelagerten Prozedur kann ich nur auf Sektionen und Prozeduren "1. Ordnung" zugreifen, also nicht aus einer Prozedur heraus eines weitere aufrufen etc. Wohl aber auf weitere ausgelagerte Prozeduren, für die dann dass eben gesagte wieder gilt.

Danke für die Info
Bernd
Gruß
Bernd
___________
opsi 4.0.0.18
winst 4.10.8.7
Ubuntu 10.04
Antworten