Seite 1 von 1

Strings mit doppelkten "

Verfasst: 27 Sep 2008, 12:36
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

Re: Strings mit doppelkten "

Verfasst: 29 Sep 2008, 10:00
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

Re: Strings mit doppelkten "

Verfasst: 30 Sep 2008, 14:53
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$