ProductProperties (Multivalue) in Array schreiben?

Antworten
JMS
Beiträge: 99
Registriert: 22 Nov 2010, 12:05

ProductProperties (Multivalue) in Array schreiben?

Beitrag 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
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: ProductProperties (Multivalue) in Array schreiben?

Beitrag 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


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


JMS
Beiträge: 99
Registriert: 22 Nov 2010, 12:05

Re: ProductProperties (Multivalue) in Array schreiben?

Beitrag 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...
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: ProductProperties (Multivalue) in Array schreiben?

Beitrag 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


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


JMS
Beiträge: 99
Registriert: 22 Nov 2010, 12:05

Re: ProductProperties (Multivalue) in Array schreiben?

Beitrag von JMS »

Hallo,

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

JMS
Antworten