Bei Programmstart überprüfen, ob das Programm zum ersten mal auf dem PC läuft.

  • Hallo,

    ich möchte ein Multitool erstellen von dem aus der Benutzer einige Programme (bspw:: Firefox, Word, Skype, etc...) öffnen kann...
    Da ich nun aber die Pfade der dateien brauche und nicht weiß wie ich das machen kann brauche ich ein bischen Hilfe :)

    Ich hatte mir das im Prinzip so vorgestellt das das Programm alle Pfade in einer z.B. Txt datei speichert. Wenn diese nicht vorhanden ist wird der User darauf hingewiesen und in die Optionen geleitet wo er dann die Pfade eingibt.....

    Danke im Voraus

  • Ich würde das wohl per ini file lösen, wenn das file existiert dann das auslesen, sonst diese anlegen und den benutzer nach pfaden fragen, also das selbe wie du mit .txt meintest, nur das das ini dann komfortabler ist. musst ma gucken :)

  • So vllt?

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists(@TempDir&"\Test.txt") Then
    MsgBox(0,0,"Programm läuft zum ersten Mal auf dem PC")
    FileWrite(@TempDir&"\Test.txt", "Test")
    EndIf

    [/autoit]
    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Ich würde es über der Registrie machen

    [autoit]

    #RequireAdmin
    If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\"&@ScriptName,@ScriptName) = 1 Then
    MsgBox(0,"test","Das Programm wurde schon mal gestartet")
    Else
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&@ScriptName,@ScriptName,"REG_SZ","1")
    MsgBox(0,"test","Das Programm lauft zum erstenmal")
    EndIf

    [/autoit]


    aber man brauch dafür Adminrechte...
    vlt gibt es ein Key wo man keine brauch^^, Soo Gut kenn ich mich nicht in der Sache Registrie aus....

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Warum sollte es Probleme mit dem Pfad geben? Entweder du erstellst sie direkt im selben Verzeichnis in dem auch dein Script liegt oder du benutzt die Autoit-Makros?

    [autoit]

    ; Benutzer-Ordner:
    FileWrite(@UserProfileDir&'\firstrun.txt','')
    ; Aktueller Ordner:
    FileWrite(@ScriptDir&'\firstrun.txt','')
    ; Temp-Ordner:
    FileWrite(@TempDir&'\firstrun.txt','')

    [/autoit]


    LG
    Christoph

    LG
    Christoph :)

  • Außerdem kannst Du ja am Anfang prüfen ob die Ini da ist.

    [autoit]

    If not FileExists($ini) Then
    fileinstall(.....)
    Else
    MsgBox(0,"","Programm wurde schon mal gestartet.")
    EndIf

    [/autoit]

    Achtung Anfänger! :whistling:

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

  • Zitat

    Ich steig nich mehr durch


    Warum? Solltest Du für Dein Programm irgendwann ne Ini brauchen dann kannst Du diese mit fileinstall includieren/auspacken.
    Sollte die Ini noch nicht da sein wurde das Programm noch nicht gestartet.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

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

  • Ja das siehst du richtig... :thumbup: Aber wenn du FileInstall verwendest gibt es einen entscheidenden Nachteil, den Dietmar nicht bedacht hat: egal wo ein FileInstall() Befehl im Script steht er wird immer zu Beginn des Scripts ausgeführt! Man kann die Datei nicht erst in einer Bedingung auspacken lassen. Deshalb ist die Lösung mit FileExist() und FileWrite() oder IniWrite() besser.

    LG
    Christoph :)

  • @Christoph

    [autoit]

    $ini = @ScriptDir & "\tst.txt"

    [/autoit][autoit][/autoit][autoit]

    If not FileExists($ini) Then
    fileinstall("d:\tst.txt",$ini)
    Else
    MsgBox(0,"","Programm wurde schon mal gestartet.")
    EndIf
    Exit

    [/autoit][autoit][/autoit][autoit][/autoit]

    Funktioniert einwandfrei, beim ersten Aufruf wird die Datei abgelegt beim zweiten kommt die Meldung.
    Es muss beim ersten Aufruf ja nicht gleich das Programm zuende sein.
    Was Du sagst trifft jedenfalls so nicht zu. fileinstall wird nicht IMMER ausgeführt, sondern nur wenn die Datei nicht da ist.
    Ansonsten würde der Inhalt der Textdatei trotz einer Änderung ja immer wieder auf Auslieferungszustand gesetzt wenn das Programm erneut gestartet werden würde. Dem ist aber nicht so.

    Gruss Dietmar

    Achtung Anfänger! :whistling:

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

  • Wie wär's alternativ hiermit:

    [autoit]

    If IniRead(@ScriptDir & "\deinprogramm.ini", "Conf", "Firstrun", "0") <> 1 Then
    IniWrite(@ScriptDir & "\deinprogramm.ini", "Conf", "Firstrun", 1)
    MsgBox(0,"","Das Programm läuft zum ersten Mal.")
    Else
    MsgBox(0,"","Programm wurde schon mal gestartet.")
    EndIf

    [/autoit]

    Hat halt den großen Vorteil, dass es im Prinzip ohne weitere Rechte auskommt und meiner Ansicht nach auch einfacher zu handhaben ist, als die Registry.