Strings mit doppelkten "

Antworten
registforsoft
Beiträge: 4
Registriert: 27 Sep 2008, 11:35

Strings mit doppelkten "

Beitrag von registforsoft »

Hallo zusammen,

versuche gerade, meine Scripte zu optimieren. Dabei ist mir das Fehlerhandling sehr wichtig. Ich habe hier eine setup.exe, die trotz Fehler wie z.B Dateien lassen sich nicht kopieren ohne Fehler zu Ende laufen. Damit wird das Produkt auf installed gesetzt und funktioniert nicht. Zur Überprüfung der fehlerfreien Installation möchte ich daher folgenden Weg gehen :
1. schauen, ob es einen Eintrag in der Softwareliste im uninstall gibt und ob da wirklich was eingertagen ist
2. Das vorhandensein des uninstallers Programmes prüfen

Allerdings bekomme ich in der Variablen $uninstallcmd$ folgendes zurück ""C:\Programme\Programmxy\uninst.exe"" was nicht geht mit Fileexists, da es ja einfache hochkommata erwartet : "C:\Programme\Programmxy\uninst.exe"
Die Stringfunktionen vom winst zerreisst es bei den doppelten ", gibts eine Lösung oder kann ich beim einlesen der Variable was ändern ?

set $uninstallstr$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Programmxy] Uninstallstring"
set $instatus$ = "bad"

[sub_check_installed]
set $uninstallcmd$ = GetRegistryStringValue ($uninstallstr$)
if $uninstallcmd$ > ""
if FileExists ($uninstallcmd$)
set $instatus$ = "ok"
endif
endif
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Strings mit doppelkten "

Beitrag von d.oertel »

Hallo registforsoft,

Winsthandbuch
Kapitel 6.3
insbesondere 6.3.2 Strings in Strings („geschachtelte“ Stringwerte)

Einmal Handbuch vorlesen kostet einmal fuer opsi Voten unter:
http://www.eosdirectory.com/project/472/opsi.html
;-)

gruss
detlef oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
registforsoft
Beiträge: 4
Registriert: 27 Sep 2008, 11:35

Re: Strings mit doppelkten "

Beitrag von registforsoft »

Hallo herr oertel,

gelesen schon, aber leider nicht korrekt im script umgesetzt. Daher war ich der irrigen Annahme, das es nicht geht.

nach mehrmaligem hinsehen habe ich dann den Fehler entdeckt :

korrekt : takeString (1, splitstring ($uninstallcmd$, '"'))
falsch : takeString (1, splitstring ($uninstallcmd$, "'"))

sorry, aber anscheinend bin ich (temporär) strichblind. :lol:

Man erlasse mir bitte eine weitere Registrierung, stelle lieber das korrigierte Scripting zur Verfügung:

DefVar $uninstallcmd$
DefVar $uninstallstr$
DefVar $chkuninstall$
DefVar $instatus$
DefVar $silentpar$
set $instatus$ = "bad"
set $chkuninstall$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XYSoftware] Uninstallstring"
set $silentpar$ =" /S"

......
sub_check_installed
if $instatus$ = "bad"
LogError "ProgrammXY not installed"
isFatalError
else
sub_prepare_install_string
Winbatch_unattended_deinstall

[sub_check_installed]
set $uninstallcmd$ = GetRegistryStringValue ($chkuninstall$)
if $uninstallcmd$ > ""
set $instatus$ = "ok"
endif

[sub_prepare_install_string]
;ueberfluessige hochkommanta entfernen
set $uninstallstr$ = takeString (1, splitstring ($uninstallcmd$, '"'))

[Winbatch_unattended_deinstall]
$uninstallstr$ + $silentpar$
Antworten