Pfad Problem 32/64 bit

  • Hallo zusammen,

    ich bin neu hier und habe ein bisschen angefangen mit autoit--bin sehr begeistern.
    Ich habe folgendes problem:
    habe ein Program der über silent install sich automatisch installiert anhand der OS Version unter c:\program files\prog oder c:\program files (x86)\prog
    Ich möchte nach der installation auf eine Datei die rechte ändern.
    Ich habe eine Variable gesetzt $prog=@ProgramFilesDir
    Allerdings durch die unterschiedliche Pfade greift nicht zu.

    Benötige hilfe.

    Vielen DANK :thumbup:

  • wär ganz praktisch enn man den code und eine genauere beschreibung des problems hätte, dann müsste man nicht raten, wo das problem ist ;) .
    Aber wenn ich richtig geraten habe, dann willst du mehrere pfade in einer Variable speichen und verarbeiten.
    In AutoIT geht das aber nicht, du musst einweder ein array nehmen oder die variablen mit einem trennzeichen getrennt in einen string speichern und vor der verarbeitung wieder trennen
    hoffe das dir das weiterhilft

    inventor

    MFG inventor

    wenn's weitere Fragen gibt -> PN
    wenn da keine Antwort kommt, überdenk deine Frage noch mal

  • 8| , wenn du doch bei der Installation die OS Version abfragst dann weißt du doch auch Automatisch wo er deine Software hinpackt?
    ich denke mal du prüfst ob der Ordner Existent ist oder ähnliches .. geht aber viel einfacher :P

    [autoit]

    @OSArch ; siehe AutoIt Hilfe :)

    [/autoit]

    Gruß

  • Protex,

    meine vorgeschlagende Methode fragt dirket die dafür zuständigen Umgebungsvariablen ab.
    Die ProgramFiles(x86) Variable gibt es nur auf 64Bit Windows Systemen.

    Sonst Schaut auch mal meine Antwort zu diesem Thread an, da prüfe ich auf das vorhandensein in beiden Pfaden und breche ab wenn die Datei nicht vorhanden ist:

    http://www.autoit.de/index.php?page=Thread&postID=238344#post238344

  • Die ProgramFiles(x86) Variable gibt es nur auf 64Bit Windows Systemen.

    Das bedeutet aber nicht, das es auch zwingend da landet, bei Software die sich auch als 64Bit installieren lässt fällt das X86 wieder weg.
    Vielleicht besser den Installpfad aus der Registry auslesen?

    Achtung Anfänger! :whistling:

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

  • ich verstehe nicht mal wieso hier überhaupt deine Diskussion aufkommt .. der Ablauf ist doch völlig klar

    Er startet seine Install Setup, diese wählt anhand der OS Version 32 / 64 Bit aus in welchen Ordner die Software kopiert werden soll und auch die damit verbundenen Daten.. diesen Pfad in den die Datei kopiert wird muss er sich doch nur in eine Variable speichern somit weiß er auch genau wo die Datei am Ende sich befindet, dessen Berechtigungen er ändern möchte..

    ich sehe überhaupt kein Problem in meiner Lösung , die Lösung von Blinz ist auch okay aber macht einfach keinen Unterschied.. ' viele Wege führen zum selben Ziel ' ...

    Gruß Marvin

  • @Protex

    Zitat

    ich verstehe nicht mal wieso hier überhaupt deine Diskussion aufkommt ..


    Das haben Foren so an sich, aber warum regst Du Dich denn auf? :S

    Desweiteren wird der Pfad doch mitunter schon vorgeschlagen und man klickt nur weiter, ja ich weiß ist uncool, kann aber sein.
    Hinzu kommen noch andere Exoten also Betriebsysteme die nix können Deutsch/English.
    Oder meinst Du ProgramFiles heisst in polnisch Niederlänsdisch oder Franz auch so?

    @OSArch ; siehe AutoIt Hilfe :) prüft ja nur was für Möglichkeiten das OS hat sagt aber nix darüber aus wo die Anwendung landet.
    MSOffice12 die 64 Bit Version installiert sich mitunter auch lustig in beide Pfade.

    Zitat

    diese wählt anhand der OS Version 32 / 64 Bit aus in welchen Ordner die Software kopiert werden soll und auch die damit verbundenen Daten.. diesen Pfad in den die Datei kopiert wird muss er sich doch nur in eine Variable speichern somit weiß er auch genau wo die Datei am Ende sich befindet, dessen Berechtigungen er ändern möchte..


    Richtig, klingt aber dennoch komplizierter als ein einfacher regread Befehl und gescheite Software findet man in der Registry problemlos wieder.
    Oracle eher mit Envget da Multiplattform und nicht so auf Registry fixiert.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

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

    Einmal editiert, zuletzt von Dietmar (4. November 2011 um 16:29)

  • Zitat

    Oder meinst Du ProgramFiles heisst in polnisch Niederlänsdisch oder Franz auch so?

    Also ab Vista heissen die Ordner tatsächlich immer gleich - aber deshalb soll ein Programmierer ja auch die Umgebungsvariablen nutzen damit er das nicht wissen muss.

    BLinz

  • Aber selbst bei @programFiles ist doch nicht klar welches es nun ist oder?
    Und wenn das OS 64 Bit fähig und der Ordner program files (x86) vorhanden ist,
    heisst das doch nicht zwingend das es dort auch installiert wurde.

    Außer man weiß das es sich um eine 32Bit Anwendung handelt (wurde hier imho nicht drauf hingewiesen)
    dann würde sie der Ordnunghalber da gut hinpassen, funktionieren würde das Programm aber überall.

    Übrigens Entwarnung: ProgramFiles heisst in NL und PL jedenfalls gleich andere Ordner varieren mitunter.
    Ich meine bei russisch wird es interessant wenn man mit anderem Zeichensätzen hantiert.(kyrillisch etc)

  • Also Dietmar,

    wenn du es so nimmts gibt es keine zuverlässige Methode - wir können nur wahrsheinlichkeiten annehmen.
    Im Idealfall setzt die gesuchte Anwendung einen Registry-Schlüssel über Ihren Installationsort, ansonsten müssten wir die Standardpfade absuchen (das macht mein Skriptvorschlag) oder, im nächsten Schritt, gezielt nach der Exe Datei suchen.

    Ich persönlich würde ja

    1. Die beiden Standardpfade abklopfen
    2. wenn beide fehlschlagen einen Dateiöffnen Dialog starten und den Benutzer den Ort der Datei auswählen lassen
    3. Das Ergebnis für den nächsten Start in der Registry abspeichern
    4. In mein programm einbauen das es zuerst in die Registry schaut
    5. bei jeden Start prüfen ob das Pogramm noch da ist und sonst wieder eine Suche straten.

    BLinz