Seite 1 von 1

ProductProperties (Multivalue) in Array schreiben?

Verfasst: 14 Jun 2012, 14:48
von JMS
Hallo zusammen,

ich stehe gerade völlig auf dem Schlauch und bräuchte mal Eure Unterstützung für ein Paket

Ich habe eine ProductProperty (multivalue) angelegt und möchte diese Werte über eine Schleife sequentiell auslesen. Das mit der Schleife ist alles klar, doch ich bekomme entweder die Variable nicht sauber ausgelesen oder womöglich schon garnicht richtig gefüllt.

Die Fragen:
wie befülle ich zur Laufzeit einer setup.ins eine Variable mit Werten aus einem multivalue-ProductProperty. (Im Winst-Handbuch habe ich keine Hinweise finden können... das wäre doch auch was für's Kochbuch, oder ;) )
wie kann ich diese Daten auslesen, um sie dann durch "for $x$ in blubber do" zu jagen?

Vorab Danke für Hinweise


JMS

Re: ProductProperties (Multivalue) in Array schreiben?

Verfasst: 14 Jun 2012, 17:03
von d.oertel
Hi,

das steht auf der internen Feature wunschliste, dass der opsi-winst eine getProductPropertyList Function bekommt.
Im Moment hat er sie noch nicht.

Workaround: keine multivalue Properties verwenden, sondern einen z.B. mit Komma separierten string der dann im winst-script mit splistring zerlegt werden kann.

gruß
d.oertel

Re: ProductProperties (Multivalue) in Array schreiben?

Verfasst: 15 Jun 2012, 12:17
von JMS
Halllo Herr Oertel,

Danke für den Hinweis.
(Na da bin ich beruhigt... ich dachte schon, dass ich mich mit meinem Post als "Vollpfosten" oute... )

Das mit dem Workaround habe ich mir im Skript-Wiki schon mal angeguckt (oder besser "abgeguckt"), stolpere aber immer noch von Fehler zu Fehler.

Zum Workaround:
In der Sektion Action lese ich die Properties einzeln aus (takeString), wrappe Anführungsstriche um jeden Wert und baue eine Stringliste (erste Property: createStringlist, weitere Properties werden per "addtolist" angehängt)
Danach jage ich jede Property per "for $x$ in blubber do" in eine Sub (um "Messages" und "comments" erzeugen zu können) und von dort aus in eine DosInAnIcon-Sektion.

Und genau in der Sub liegt liegt der Hund begraben: die Werte kommen zwar in der Sub an, die Weitergabe an DosInAnIcon-Sektion scheitert jedoch:

Code: Alles auswählen

[6] [15.06.2012 11:41:41]     ~~~~~~~ Start Sub ~~~~~~~  Sub_makedirlist
[5] [15.06.2012 11:41:41]     message Deinstalliere Flash Player
[5] [15.06.2012 11:41:41]   
[5] [15.06.2012 11:41:41]   Execution of DosInAnIcon_makedirlist
[6] [15.06.2012 11:41:41]     c:\opsi.org\tmp\_winstbat_2.bat saved back
[6] [15.06.2012 11:41:41]     Executing "cmd.exe" /C "c:\opsi.org\tmp\_winstbat_2.bat" "Flash Player"
[6] [15.06.2012 11:41:41]                 
[6] [15.06.2012 11:41:41]                 output:
[6] [15.06.2012 11:41:41]                 --------------
[6] [15.06.2012 11:41:41]                 Der Befehl "c:\opsi.org\tmp\_winstbat_2.bat" "Flash" ist entweder falsch geschrieben oder
[6] [15.06.2012 11:41:41]                 konnte nicht gefunden werden.
[6] [15.06.2012 11:41:41]     
[6] [15.06.2012 11:41:41]     Delete "c:\opsi.org\tmp\_winstbat_*"
[6] [15.06.2012 11:41:41]       Search "c:\opsi.org\tmp\"
[6] [15.06.2012 11:41:41]       File "c:\opsi.org\tmp\_winstbat_2.bat"
[6] [15.06.2012 11:41:41]         The file has been deleted
[6] [15.06.2012 11:41:41]     
[6] [15.06.2012 11:41:41]     ~~~~~~~ End Sub   ~~~~~~~  Sub_makedirlist
Verantwortlich hierfür dürfte wohl die gewrappten Anführungszeichen sein. (Die brauche ich aber wegen Leerzeichen im String)

Kurzum:
Sorgen bereiten mir die Leerzeichen einzelner ProductProperties. Zwar funktioniert das Wrappen, jedoch habe ich nun das Problem, dass der Wert nicht vollständig in einer Dos-Sektion ankommt, um von dort ein "externes" VBS starten zu können.

Die Kernfrage: wie übergebe ich eine Property mit Leerzeichen an eine DOS-Sektion? Das Wrappen der Werte mit Anführungseichen funktioniert offensichtlich nicht.


Viele Grüße

JMS

P.S:
An Properties mit Leerzeichen führt leider kein Wert vorbei, da anhand dieses Werts die Registriy nach Display-Name durchsucht und der Wert Uninstall-String ausgelesen wird. Bei einem Treffer ruft das VBS auch gleich den Uninstall-String (ergänzt um unattended-Switch) auf. So will ich Anwendungen von den Platten kratzen können, für die es (1)entweder noch kein Opsi-Paket gibt, oder (2) deren MsiID unbekannt sind oder (3) die vom Hersteller bereitgestellten Uninstaller nicht mehr funktionieren ...
Ein (3)er-Kandidat ist zum Beispiel der "Adobe Flash Player"... nicht auszudenken, wenn wegen unvollständiger Übergabe alle "Adobe"-Produkte deinstalliert würden...

Re: ProductProperties (Multivalue) in Array schreiben?

Verfasst: 15 Jun 2012, 13:34
von d.oertel
Hi,

verwende doch innerhalb der DosBacht Sektion eine winst variable, die Du in der sub sektion füttertst.
Etwa so:

Code: Alles auswählen

defvar $toInstall$

for %s% in $mylist$ do sub_startinstall

[sub_startinstall]
set $toInstall$ = "%s%"
DosBatch_install

[DosBatch_install]
start $toInstall$
gruß
d.oertel

Re: ProductProperties (Multivalue) in Array schreiben?

Verfasst: 18 Jun 2012, 21:36
von JMS
Hallo,

kurze Rückmeldung: Prima, so hat's endlich funktioniert! Vielen herzlichen Dank...

JMS