opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Antworten
Benutzeravatar
jub
Beiträge: 58
Registriert: 25 Nov 2010, 12:40

opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von jub »

Hallo allerseits,

für das Erzeugen von Links sind in einem Anwendungsfall eine Reihe von Parametern zu übergeben. Die Verarbeitung des Strings ist in diesem Fall jedoch fehlerhaft.

Deutlicher wird das am Beispielcode:

Code: Alles auswählen

[actions]
setLogLevel=9
DefVar $AppName$
DefVar $AppTarget$
DefVar $AppParameters$
DefVar $InstallDir$

set $AppName$ = "Awesome Applic"
set $InstallDir$    = "c:\App Dir\" 
set $AppTarget$	    = '"' + $InstallDir$ + 'app.exe"'

; Parameter werden korrekt im Link gesetzt:
;set $AppParameters$ = 'dir="' + $InstallDir$ + 'modules\" "' + $InstallDir$ + 'mod1.bin"'
;set $AppParameters$ = '-v "' + $InstallDir$ + 'modules\" "' + $InstallDir$ + 'mod1.bin"'

; Parameter werden FALSCH im Link gesetzt:
set $AppParameters$ = '"' + $InstallDir$ + 'modules\" "' + $InstallDir$ + 'mod1.bin"'
; ...es bleibt nur "c:\App Dir\modules\" (ohne Anführungszeichen) übrig; der zweite Pfad entfällt

comment "Parameters: ["+ $AppParameters$ +"]"
LinkFolder_CreateDesktopLink

;=====================================================================
[LinkFolder_CreateDesktopLink]
;=====================================================================
set_basefolder desktopdirectory
set_subfolder ""
set_link
       name: $AppName$
       target: $AppTarget$
       parameters: $AppParameters$
       working_dir: %UserProfileDir%\Documents
       icon_file:
       icon_index:
end_link
Da der Parameter-String Pfade mit Leerzeichen enthält, sind diese in Anführungszeichen zu setzen. Somit beginnt der String hier mit einem Anführungszeichen, was den Fehler verursacht: es bleibt nur der erste Teil des Strings übrig.
Beginnt der String jedoch mit einem anderen Zeichen (ausser Space; im obigen Beispiel '-v' oder 'dir='), ist der erzeugte Link korrekt.

Version opsi-script: 4.12.0.21

Viele Grüsse,
Jens
Benutzeravatar
r.roeder
uib-Team
Beiträge: 540
Registriert: 02 Jul 2008, 10:08

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von r.roeder »

Hallo,

das ist im Ergebnis zweifelsohne ein Fehler, aber war als Feature zur flexibleren Verwendung des LinkFolders gedacht: Ein String-Eintrag soll sowohl mit Anführungszeichen wie ohne funktionieren. Wenn der Text mit einem Anführungszeichen beginnt, wird vom ersten Fall ausgegangen und der Inhalt des (Anführungszeichen-umrahmten) Strings herausgeholt. Ich habe jetzt nicht direkt eine Idee, wie man das fehlerhafte Verhalten verhindern kann ohne das bisherige Standardverhalten zu brechen.

Auf jeden Fall erst einmal danke für den Problemhinweis.

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/.
Benutzeravatar
jub
Beiträge: 58
Registriert: 25 Nov 2010, 12:40

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von jub »

Hallo,

eventuell zwei mögliche Ansätze:
(1) Bei der Veraerbeitung des Strings werden die Anführungszeichen gezählt und deren Position ausgewertet. Gibt es derer mehr als zwei oder sind diese nicht erstes und letztes Zeichen des Strings, müssen sie unverändert erhalten bleiben.
(2) Whitespaces (zumindest) am Anfang des Strings werden derzeit entfernt. Man könnte diese aber - auch wenn sie dennoch entfernt werden - als Anweisung betrachten alles, was danach folgt inkl. der Anführungszeichen zu übernehmen.

Wenn ich das richtig verstanden habe, kollidieren beide Ansätze nicht mit dem bisherigen Design.
Ich persönlich würde Variante (1) den Vorzug geben.

Viele Grüsse,
Jens
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von d.oertel »

Hi,

Danke für den Hinweis.

Ich habe mir dazu ein internes Ticket aufgemacht.
Ich werde es bearbeiten, wenn ich routinemäßig sowieso wieder am opsi-script arbeite.

(Per Support Ticket läßt sich das beschleunigen ....)

gruß
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Benutzeravatar
GEI
Beiträge: 229
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von GEI »

@UIB
bitte nehmen Sie 2h von unserem Juli-Supportbudget dafür.
Georg-Eckert-Institut - Leibniz-Institut für internationale Schulbuchforschung (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
http://www.gei.de/o4i - https://wiki.o4i.org
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von d.oertel »

Hi,

ich habe mir das angeschaut

Da $AppParameters$ mit quotes anfängt muß es hier nochmal zusätzlich gequted werden:

Code: Alles auswählen

set_link
       name: $AppName$
       target: $AppTarget$
       parameters: '$AppParameters$'
       working_dir: %UserProfileDir%\Documents
       icon_file:
       icon_index:
end_link
Kann man damit leben ?

gruß
detlef oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Benutzeravatar
jub
Beiträge: 58
Registriert: 25 Nov 2010, 12:40

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitrag von jub »

Hallo,

in der Tat scheint das zusaetzliche Quoting in der LinkFolder-Section das Problem im skizzierten Fall zu loesen.

Vielen Dank,
Jens
Antworten