Seite 1 von 1

opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 22 Jun 2018, 08:39
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

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 22 Jun 2018, 16:23
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

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 23 Jun 2018, 08:28
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

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 06 Jul 2018, 16:58
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

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 27 Jul 2018, 10:05
von GEI
@UIB
bitte nehmen Sie 2h von unserem Juli-Supportbudget dafür.

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 30 Jul 2018, 12:52
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

Re: opsi-script: Fehlerhafte Stringverarbeitung in LinkFolder

Verfasst: 30 Jul 2018, 18:10
von jub
Hallo,

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

Vielen Dank,
Jens