benötige Hilfe beim auslesen von @ProgramFilesDir

  • Mahlzeit Leute , also vorab bin anfänger mit AutoIt
    Ich habe gegoogeltund auch hier gelesen und komme nicht auf meinen Fehler.
    So nun zum prob: Ich bin am erstellen einer Installations DVD mit checkboxen und abfrage ob das Programm schon installiert ist.
    Die Installroutine geht ohne probs und geht auch zum nächten Programm weiter , nur wenn ein Programm schon installiert ist bleibt s hängen.
    z.b. bei VLC da frägt er nicht ab und geht sofort in die install routine über , obwohl das Programm schon installiert ist

    [autoit]


    If GUICtrlRead($Vlc)=1 Then
    if FileExists("@ProgramFilesDir\VLC\vlc.exe") then
    MsgBox(1,"vorhanden","Programm ist schon installiert")
    ProcessClose("VLC1.1.8.exe")
    endif
    RunWait("Software\vlc\VLC1.1.8.exe")
    endif

    [/autoit]


    hoffe einer von Euch kann und mag mir helfen
    schonmal danke im voraus
    sollten Euch noch infos fehlen die ich vergessen habe bitte bescheid sagen

    Einmal editiert, zuletzt von osoris (3. Mai 2011 um 12:07)

  • Strings werden in AutoIt mit dem & - Zeichen verknüpft.
    Der Inhalt von @ProgramFilesDir ist ein String (Zeichenkette).
    Um einen String direkt selbst zu erstellen schreibt man die Zeichenkette in Anführungszeichen.
    Wenn du nun "@ProgramFilesDir" schreibst wird das Makro nicht ausgelesen sondern nur sein Name als Zeichenkette verstanden.

    Um zu schauen ob deine String-Konstrukte richtig sind solltest du sie dir einfach mal komplett ausgeben lassen.
    Wenn du z.B. folgendes mal zwischendurch schreibst:

    [autoit]

    MsgBox(0,"","@ProgramFilesDir\VLC\vlc.exe")

    [/autoit]


    Wirst du sehen das @ProgramFilesDir gar nicht ausgelesen wird.
    Mit dem Wissen das der Inhalt von @ProgramFilesDir schon ein String ist und Strings mit & verknüpft werden würdest du dann irgendwann auf folgendes kommen:

    [autoit]

    MsgBox(0,"",@ProgramFilesDir & "\VLC\vlc.exe")

    [/autoit]
  • erstmal danke für Deine schnelle Antwort , mach mich gleich mal dran es zu testen

    so habe es nun hinbekommen dank AspirinJunkie.

    [autoit]

    If GUICtrlRead($Vlc)=1 then
    if FileExists (@ProgramFilesDir & "\VLC\vlc.exe") then
    MsgBox(0,"da","schon da")
    ProcessClose("VLC1.1.8.exe")
    else
    RunWait("Software\vlc\VLC1.1.8.exe")

    endif
    endif

    [/autoit]

    Einmal editiert, zuletzt von osoris (3. Mai 2011 um 12:06)

  • Sollte man da nicht evtl. noch den Prozess prüfen

    [autoit]

    If ProcessExists() then ...

    [/autoit]


    nur weile eine vlc.exe da liegt muss sie ja nicht aktiv sein.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • also bisher ging es bei allen programmen, und die vlc.exe liegt ja im install ordner und ist meines wissens nur dann da wenn da prog installiert ist .
    bitte verbessern wenn ich falsch liege ;)
    soll ja nur ne abfrage sein ob das programm installiert ist

  • Na denn falls es nur die Prüfung sein soll ob es installiert ist....

    [autoit]


    Msgbox(0,"Wo ist VLC installiert? ",regread("HKEY_LOCAL_MACHINE\SOFTWARE\VideoLAN\VLC",""))

    [/autoit]

    dann verstehe ich aber das nicht

    [autoit]

    ProcessClose("VLC1.1.8.exe")

    [/autoit]

    also wozu er den Prozess, wobei er nicht mal mal weiß ob aktiv ist, beenden will, ist mir noch nicht klar.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • also Vlc schreibt sich nicht in die reg zumindest finde ich es dort nicht.
    also zu meinem prog es ist mein dvd mit software die ich installieren will
    und damit ich kein lästiges schon installiert bekomme ist die abfrage da
    achja die programme sind alle silent
    hoffe konnte damit deine frage beantworten
    der prozess der beendet werden soll ist die installroutine , wenn das programm schon vorhanden ist

  • Verstanden, vlc funzt auch ohne setup so nutze ich es meist :) Ist es aber regulär installiert worden steht es auch in der Registry,
    habe auch schon erlebt das es im HKCU Zweig steht wenn man sagt "nur für mich installieren".

    Tip: Zu Prozess beenden, wenn du ihn erst startest wenn Du weißt das er installeren soll reicht es ja
    und du brauchst ihn nicht unnötig starten / stopppen.
    Also Check muss ich installieren:
    ja) installierfunktion vlc
    nein) nix tun und oder weiter

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o