2 Replies Latest reply on Oct 26, 2011 3:34 AM by Ratzratz

    Problem mit "FileVersion" und Umgebungsvariablen

    Ratzratz Expert
      Hallo Zusammen,

      ich verwende häufig als IsInstalled-Bedingung für Pakete Ausdrücke mit "if FileVersion".

      Z.B. für SAPGUI 7.20 habe ich als IsInstalled-Bedingung festgelegt, daß SAPGUI 7.20 als installiert zu gelten hat, wenn die saplogon.exe mindestens die Versionsnummer 7200.2.5.1057 oder höher hat. In der dsmc-Konsole erschien bei einem 32-bittigen XP dann im Reiter "Eigenschaften" unter "IsInstalled-Voraussetzungen (Client)" "@(not FileVersion('C:\Programme\SAP\FrontEnd\SAPgui\saplogon.exe')<7200.2.5.1057" anstatt "@(not FileVersion('%ProgramFilesDir%\SAP\FrontEnd\SAPgui\saplogon.exe')<7200.2.5.1057" wenn man sich durch die Ordner hangelt und die saplogon.exe anklickt. Auch manuelles Hinschreiben von "%ProgramFilesDir%" anstelle von "C:\Programme" funktioniert nicht.
      Das ist ein schon länger existierender Bug.

      Bei einem 32-bittigen XP ist es kein Problem, daß "C:\Programme\SAP\FrontEnd\SAPgui\saplogon.exe" ein hartkodierter Pfad ist und nicht in "@(not FileVersion('%ProgramFilesDir%\SAP\FrontEnd\SAPgui\saplogon.exe')<7200.2.5.1057)" umgesetzt wird, da unter XP das 32-bittige SAP ohnehin nur nach "C:\Programme\SAP" installiert wird.

      Bei einem 64-bittigen Windows 7 wird SAP jetzt aber korrekterweise nach "C:\Program Files (x86)\SAP" installiert, wodurch die IsInstalled-Bedingung "@(not FileVersion('C:\Programme\SAP\FrontEnd\SAPgui\saplogon.exe')<7200.2.5.1057" wegen dem falschen Pfad nicht mehr funktioniert.

      Ich könnte zwar die IsInstalled-Bedingung auch mit "if exist" machen (z.B. "@Exist('%ProgramFilesDir%\SAP\FrontEnd\SAPgui\saplogon.exe')", da bei "if exist" die Umgebungsvariablen funktionieren.
      Dann würde er aber bei einer Zuweisung keine neueren Versionen von SAP ausrollen, selbst wenn noch eine alte 7.1 drauf wäre.

      Eine Lösung wäre, 2 Pakete zu machen. Eins für 32-bittige Systeme und eins für 64-bittige. Die würden sich dann nur in dem einen Pfad in der IsInstalled-Bedingung unterscheiden. Das erscheint mir aber ziemlich ineffizient.
      Gibt es evtl. einen Weg, mit FileVersion zu arbeiten und dennoch Umgebungsvariablen zu nutzen oder besteht Hoffnung, daß dieser Fehler demnächst behoben wird?

      Gruß
      Matthias