WiX: Escape echo

CustomAction führt ein Kommando aus, und das ist bspw. ein Shell-Befehl. In diesem Fall ein echo in eine Datei:

Will man als Teil von “foobar” jetzt Sonderzeichen mit ausgeben, muss man XML-, WiX-/MSI-, und CMD-Escaping kombinieren – oder man hält sich einfach eine Waffe an den Kopf, das geht schneller:

  • " gibt " aus, & ein & – so weit, so klar. Wenn man davon absieht, dass & eigentlich auch ein CMD-Steuerzeichen ist 🤷🏼‍♂️
  • ^&lt; gibt ein < aus, ^&gt; ein > (man beachte die ^, via)
  • [\[] gibt [ aus, [\]] ein ] (via)

Velocity: EscapeTool einrichten und verwenden

UTF8-kodierte, getrimmte Ausgaben sind ja gut und schön, aber evt. möchte man diese auch escapen 🙂 Dazu gibt es das EscapeTool. Das ist ganz cool, bietet es doch Tools für HTML, URLs, JS, … Die “Doku” ist allerdings ein wenig dürftig, deshalb kurz dazu:

Den Download findet man hier. Ich habe die velocity-tools-2.0.zip genommen; daraus benötigt man aber nur lib/velocity-tools-2.0.jar. Das kommt in den Classpath, klar.

Aktivieren und in Templates injizieren (oder wie das da heißt) tut man das so:

Und verwendet schließlich so:

Dabei ist das “!” in “$!{esc” wichtig, denn wenn $myString null ist, wird html() nicht gefunden – html() ist für String-Parameter definiert, nicht für null^^