Code: Alles auswählen
if FileExists (""+$ProductPath$+"\uninstall\helper.exe")
set $UninstallPath$ = "C:\Program Files(x86)\Mozilla Firefox\uninstall\helper.exe"
[...]
Warum?
Entweder nimmst du zweimal die Variable oder zweimal den gesamten Pfad oder tauscht es gar aus, also Varibale definieren udn due Variable in das fileexists rein
Dass die IF den Pfad findet und die WinBatch dann nciht ist ganz klar, da in deiner Variablendefinition ein Leerzeichen fehlt.
Bei konsequenter Verwendung (siehe meine Kritik oben) wäre das nicht passiert.
Erläuterung zu dienem obigen Code:
Code: Alles auswählen
set $ProductPath$ = "%ProgramFilesDir%\Mozilla Firefox"
setzt im Fall Win7 64 Bit (Standardinstallation) folgenden Wert:
Daraufhin prüft
Code: Alles auswählen
if FileExists (""+$ProductPath$+"\uninstall\helper.exe")
ob die Datei
Code: Alles auswählen
C:\Program Files (x86)\Mozilla Firefox\uninstall\helper.exe
existiert, und das tut sie. Deshalb setzt
Code: Alles auswählen
set $UninstallPath$ = "C:\Program Files(x86)\Mozilla Firefox\uninstall\helper.exe"
den Wert
Code: Alles auswählen
C:\Program Files(x86)\Mozilla Firefox\uninstall\helper.exe
in deine Variable.
Und heir fehlt dann ein Leerzeichen vor dem (x86)
Hättest du konsequent Variablen verwendet, wäre das nicht passiert:
Code: Alles auswählen
set $UninstallPath$ = $ProductPath$+"\uninstall\helper.exe"