Checkbox erstellen für installierte Software

  • Hallo,

    ich muss immer wieder PC´s installieren, damit ich nicht etwas vergesse, möchte ich ein Tool haben welches mir diverse Einstellungen prüft.
    Ca. 45 Programme und Reg´s muss ich prüfen. Dies würde ich gerne per "Checkbox" abfragen.
    Zu fast 100% sind das alles W7 64bit PC´s.

    Und "ja" es gibt einen "Softwareserver" leider nicht aktuell, da er von der Zentrale "nicht" gepflegt wird...

    Ich hätte gerne ein Fenster in dem ich z.b stehen habe "IE 9 installiert" dahinter einen grünen punkt, wenn er installiert ist.
    Kann man das unter Software abfragen, was installiert ist? Wenn der nicht installiert ist dann einen roten Punkt.

    Somit würde ich das Programm nach beleiben erweitern... es wäre eine Box wo links die Programme und Toole bzw Regs stehen und daneben der Status...

    Evtl würde ich Abfragen mit einem Strich trennen, so das im ersten Teil der Box alles für Windows abgefragt wird , dan zb Programme und dann Tools oder auch Reg´s.

    Wenn ich die erste Zeile habe und weiß wie ich die box erweitern kann, das wäre super!

    Gruß

  • Werden denn alle Programme unter "C:\Programme (x86)" oder "C:\Programme" abgelegt?

    Das prüfen an sich sollte das kleinste Problem sein.
    Vielleicht kann man das auch mit einer kleinen ini Datei lösen, in der der Name und der Pfad der Software hinterlegt sind. Dann bist du bei deiner Prüfung relativ dynamisch, falls du mal was neues installierst.

    Welche Einstellungen möchtest du denn genau überprüfen?

    LG

    LG

    Philip

  • hört sich gut an, wenn ich die Datei erweitere mit Abfragen, wie zb 7zip, somit müsste geprüft werden ob 7zip installiert ist.
    Kann man nicht beide Folder abfragen, auch 64bit, es gibt noch Programme die liegen unter: c:\Programm, der Ordner müsste auch abgefragt werden.

    Und weil ich es etwas "schöner" haben möchte, wäre ein Status mit Punkt klasse.... wie der vor unserem Profilnamen im Forum, grün ist installiert und "aus" halt nicht... wäre das machbar?

  • Hi firewalldevil,
    ich würde das über RegRead machen. Da kannst Du Dir auch gleich die Version ausgeben lassen, z.B. beim IE wäre der Schlüssel "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer". Dort gibt es dann den Eintrag "Version".
    Schau Dir auch mal das Beispiel für "RegEnumKey" in der Registry an.

    Gruß
    André

  • Du meinst wohl eine GUI. Schau Dir mal in der Hilfe das Beispiel für "GUICreate" an. Da steht eigentlich alles drinnen.
    Ich würde das ganze dann in einem Listview anzeigen lassen. Da solltest Du Dich zuerst einarbeiten.
    Die Beispiele in der AutoIt-Hilfe sind dafür echt gut.

    Viel Spaß

  • Für den Anfang wäre das denk ich mal ganz gut. Müsste dann entsprechend noch weitergeführt werden. (Reg-Eintrag hab ich aus Zeitgründen mal weggelassen)

    [autoit]

    $Form=GUICreate("Alles installiert?",800,600)
    $ListView_Progs=GUICtrlCreateListView("Programm|Status",10,30,385,565)
    $ListView_Regs=GUICtrlCreateListView("Eintrag|Status",405,30,385,565)
    GUISetState(@SW_SHOW)

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

    akt()

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

    while 1
    sleep(100)
    WEnd

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

    Func akt()
    $inifilepath="testini.ini"
    if FileExists($inifilepath) then
    $ProgsCount=IniRead($inifilepath,"Progs","Pfad0",0)
    for $i=1 to $ProgsCount step 1
    $data=IniRead($inifilepath,"Progs","Pfad"&$i,"error")
    if FileExists($data) then
    GUICtrlCreateListViewItem(IniRead($inifilepath,"Progs","Name"&$i,"error")&"|"&"Installiert",$ListView_Progs)
    else
    GUICtrlCreateListViewItem(IniRead($inifilepath,"Progs","Name"&$i,"error")&"|"&"Fehlt",$ListView_Progs)
    endif
    next
    $RegsCount=IniRead($inifilepath,"Regs","Entry0",0)
    for $i=1 to $RegsCount step 1
    $data=IniRead($inifilepath,"Regs","Entry"&$i,"error")
    if RegRead("","") then;abfrage für reg eintrag. Eventuell key und value mit | trennen und über stringsplit()[1] und stringsplit()[2] auslesen
    GUICtrlCreateListViewItem(IniRead($inifilepath,"Regs","Name"&$i,"error")&"|"&"Eingetragen"&"|"&$data,$ListView_Regs)
    else
    GUICtrlCreateListViewItem(IniRead($inifilepath,"Regs","Name"&$i,"error")&"|"&"Fehlt"&"|"&$data,$ListView_Regs)
    endif
    next
    else
    FileOpen($inifilepath)
    IniWriteSection($inifilepath,"Progs","Pfad0=0"&@LF&"Name0=0"&@LF)
    IniWriteSection($inifilepath,"Regs","Entry0=0"&@LF&"Name0=0"&@LF)
    endif
    EndFunc

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

    #cs
    Beispielhafter Aufbau der Ini:
    [Progs]
    Pfad0=3
    Pfad1=C:\Program Files (x86)\AutoIt3\AutoIt3.exe
    Pfad2=C:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe
    Pfad3=C:\Program Files (x86)\AutoIt3\SciTE\SciTE1.exe
    Name0=2
    Name1=Autoit
    Name2=SciTE
    Name3=SciTE1
    [Regs]
    Entry0=0
    Entry1=0
    Entry2=0
    Name0=0
    Name1=0
    Name2=0
    #ce

    [/autoit]

    Viel Glück noch!