Installation mit Prüfung der Rechte

  • Hallo Leute,

    ich möchte gern bevor die Installation des Programms (bereits fertig) ausgeführt wird folgendes prüfen und brauche euere Hilfe.

    Schritt 1: Prüfen, ob der angemeldete User Admin auf dem Rechner ist.
    Wenn ja, dann Sprung zum Schritt 2.
    Wenn nicht die MsgBox ausgeben: Sie müssen die Adminstrator-Rechte haben, um das Programm zu installieren. Dann der Abbruch der Installation

    Schritt 2: Wenn der User Admin Rechte hat, prüfen ob dieses Zeichnecode HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBE371D7-5430-4485-B0EC-529BF08C10CA} in Registry vorhanden ist.
    a) Wenn dieses Zeichencode in der Registry nicht vorhanden ist, dann die Installation des Programms starten.

    b) Wenn dieses Zeichencode in der Registry vorhanden ist, dann die MsgBox ausgeben: Programm ist installiert ! Deinstallieren ? JA / NEIN
    Wenn JA, dann diesen UninstallString ausführen: RunWait('msiexec /x {FBE371D7-5430-4485-B0EC-529BF08C10CA} /qn /norestart')
    Und nach der Deinstallation, die Installation des Programms starten.
    Wenn NEIN, dann die MsgBox ausgeben: "Abbruch der Installation"

    Besten Dank im Voraus !

    Viele Grüße,
    Dino

    Einmal editiert, zuletzt von Dino (8. November 2009 um 14:58)

  • So irgendwie.

    Spoiler anzeigen
    [autoit]

    If Not IsAdmin() Then Exit MsgBox(64, "Kein Recht!", "Sie müssen Administrator sein um dieses Programm fortzusetzen!")
    Local $RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBE371D7-5430-4485-B0EC-529BF08C10CA}"
    Local $IsInstalled = RegRead($RegKey, "")
    If $IsInstalled = "" Then
    ;installieren
    Else
    If MsgBox(36, "Neuinstallation?", "Das Programm ist bereits installiert. Soll es neuinsalliert werden?") = 6 Then
    ;deinstallieren
    RunWait('msiexec /x {FBE371D7-5430-4485-B0EC-529BF08C10CA} /qn /norestart')

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

    ;installieren
    Else
    MsgBox(64, "Abbruch!", "Abbruch der Installation")
    EndIf
    EndIf

    [/autoit]
  • ich habe diese Zeile Local $IsInstalled = RegRead($RegKey, "DisplayName") noch angepasst und jetzt funktioniert es.

    Spoiler anzeigen
    [autoit]

    If Not IsAdmin() Then Exit MsgBox(64, "Kein Recht!", "Sie müssen Administrator sein um dieses Programm fortzusetzen!")
    Local $RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBE371D7-5430-4485-B0EC-529BF08C10CA}"
    Local $IsInstalled = RegRead($RegKey, "DisplayName")
    If $IsInstalled = "" Then
    ;installieren
    MsgBox(64, $IsInstalled, "1")
    Else
    If MsgBox(36, "Neuinstallation?", "Das Programm ist bereits installiert. Soll es neuinsalliert werden?") = 6 Then
    ;deinstallieren
    MsgBox(64, "Deinstallieren", "2")
    RunWait('msiexec /x {FBE371D7-5430-4485-B0EC-529BF08C10CA} /qn /norestart')

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

    ;installieren
    MsgBox(64, "Installieren", "3")
    Else
    MsgBox(64, "Abbruch!", "Abbruch der Installation")
    EndIf
    EndIf

    [/autoit]


    Eine Frage habe ich noch. Die Installation gibt es an zwei Stellen im Code. Gibt es die Möglichkeit die Installationsroutine innerhalb eine au3 zu includen?
    Ich möchte in obigen Code die Installationsroutine nicht als separates au3 incuden. Würde gern alles über eine Datei machen, wenn es geht.

    Besten Dank !!!

    VG,
    Dino

  • Zitat

    Ich möchte in obigen Code die Installationsroutine nicht als separates au3 incuden. Würde gern alles über eine Datei machen, wenn es geht.

    versteh ich dich falsch oder meinst du ne einfache funktion?

    also sowas in der art:

    [autoit]

    If Not IsAdmin() Then Exit MsgBox(64, "Kein Recht!", "Sie müssen Administrator sein um dieses Programm fortzusetzen!")
    Local $RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBE371D7-5430-4485-B0EC-529BF08C10CA}"
    Local $IsInstalled = RegRead($RegKey, "DisplayName")
    If $IsInstalled = "" Then
    Installieren()
    MsgBox(64, $IsInstalled, "1")
    Else
    If MsgBox(36, "Neuinstallation?", "Das Programm ist bereits installiert. Soll es neuinsalliert werden?") = 6 Then
    ;deinstallieren
    MsgBox(64, "Deinstallieren", "2")
    RunWait('msiexec /x {FBE371D7-5430-4485-B0EC-529BF08C10CA} /qn /norestart')

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

    Installieren()
    MsgBox(64, "Installieren", "3")
    Else
    MsgBox(64, "Abbruch!", "Abbruch der Installation")
    EndIf
    EndIf

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

    Func Installieren()
    ; dateien erstellen
    ; regwerte schreiben
    ; verknüpfungen
    ; ...
    Endfunc

    [/autoit]