opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

jub
Beiträge: 35
Registriert: 25 Nov 2010, 12:40

opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon jub » 22 Jun 2018, 08:39

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

r.roeder
Beiträge: 416
Registriert: 02 Jul 2008, 10:08

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon r.roeder » 22 Jun 2018, 16:23

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/.

jub
Beiträge: 35
Registriert: 25 Nov 2010, 12:40

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon jub » 23 Jun 2018, 08:28

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
Beiträge: 3255
Registriert: 04 Jun 2008, 14:27

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon d.oertel » 06 Jul 2018, 16:58

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: 206
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon GEI » 27 Jul 2018, 10:05

@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://opsi.wzb.eu/wiki

Benutzeravatar
d.oertel
Beiträge: 3255
Registriert: 04 Jun 2008, 14:27

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon d.oertel » 30 Jul 2018, 12:52

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

jub
Beiträge: 35
Registriert: 25 Nov 2010, 12:40

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Beitragvon jub » 30 Jul 2018, 18:10

Hallo,

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

Vielen Dank,
Jens