Großer Installer

  • Hi,
    also gut ich hab erst überlegt ob ich es zu nem inzel Problem mache oder zu einem Projekt und da ich mir sicher bin das nicht das letzte Problem zu diesem Installer ist schreib ichs mal zu den Projekten:

    ich versuche gerade eine eine GUI zu erstellen mit 4 ComboBoxen diese sollen ihren Inhalt aus einer Textdatei ziehen und das möglichst mit einer Eltern-Kind-Beziehung d.h. ich möchte in der ersten ComboBox etwas auswählen worauf in den anderen dann nur das erscheint was auch zu dem gehört was in der ersten steht (kapiert jemand was ich meine ich hab selber probleme mich zu verstehen)

    Naja die Textdatei sollte folgendermassen aussehen:

    [Haupt1]
    Unter1; Daten1, Daten2,
    Unter2; Daten1, Daten2,
    Unter3; Daten1, Daten2,

    [Haupt2]
    Unter1; Daten1, Daten2,
    Unter2; Daten1, Daten2,
    Unter3; Daten1, Daten2,

    [Haupt3]
    Unter1; Daten1, Daten2,
    Unter2; Daten1, Daten2,
    Unter3; Daten1, Daten2,

    Naja oder so ähnlich halt...

    ich hoffe es versteht jemand was ich meine und kann mir helfen

    Es geht darum das dieser installer sehr komplex ist und sich bei jeder Version der zu installierenden Programme leicht ändern lassen muss da durch ist die ideal lösung die inhalte aus einer oder mehreren textdateien zu ziehen so könnte man ihn auch schnell erweitern weil ich verschiedene release stände installieren können muss aber das geht jetzt zuweit...

    Danke und Gruß NemesisRE


    PS: Danke an Peethebee das du mich so schnell hier her weiter geleitet hast! Hoffentlich hilfts.

    Einmal editiert, zuletzt von NemesisRE (6. November 2006 um 13:39)

  • Alles klar durch Peethebee wurde ich darauf aufmerksam das man ein Programm mit Daten füllen kann durch das suchen von Dateien. Meine Frage ist kann man auch die Menüs damit füllen d.h. ich suche in einem Bestimmten Verzeichnis nach Ordnern und biete dann die Titel dieser Ordner als Buttons an wenn ich dann auf diesen Button klicke soll er wieder rum in diesem Ordner nach neuen Ordern suchen um diese dan wieder als Buttons anzubieten wie zuvor soll er dann bei klick wieder in den Ordner springen, von hier aus soll es so weiter gehen wie im ersten beitrag beschrieben aber statt den textdateien aus denen er sich das zieht womit er die Comboboxen füllt sol er auch diesen ordner durchsuchen diesmal nicht die ordner auflisten sondern die au3´s aber wie im ersten beitrag nur die die zur hauptauswahl gehören z.B.:

    in der ersten Combobox wähle ich "Microsoft Office" oder "OpenOffice"

    in der nächsten bekomme ich die SiervicePacks angezeigt die zu dem jeweiligen Programm gehören

    und in weiteren Comboboxen weitere zugörige sachen wie hotfixes etc.

    ich hoffe es ist verständlich was ich machen möchte, mir ist klar das das nicht einfach ist aber ich hab den auftrag ein absolut dynamisches installations programm zu bauen bisher ist mir nur autoit bekannt mit dem ich so etwas realisieren kann da ich selber aber kein programmier bin muss ich auch erst reinarbeiten deswegen baue ich auf eure hilfe oder Vorschläge.

    Danke für jede hilfe!

    Gruß NemesisRE

  • *bg*

    Also zu meiner Verteidigung, meine Idee war das nicht!

    Ich bin nur der Depp der das Irgendwie Umsetzen muss...

    Ja aber wenn du einen besseren Vorschlag hast wie man das so dynamisch Umsetzen kann dann bitte ich darum mir diesen zu unterbreiten (mein gott klingt das hoch gestochen) ich bin für jede Hilfe offen auch für die wo ich das ganze Konzept über den haufen werfen darf Hauptsache es erfüllt den zweck und ist so einfach wie Möglich...

    Es ist nur schwierig da es sich um eine sehr umfangreiche Software handelt bei der viele Parameter veränderbar sein müssen wie zum beispiel der Servicepackstand/Hotfixstand je nach Anforderung

    So Far

    Einmal editiert, zuletzt von NemesisRE (8. November 2006 um 16:02)

    • Offizieller Beitrag

    Hi,

    dann versuch doch deinen Chef wenigstens davon zu überzeugen, dass die Steuerung beim User liegen muss.

    <-- mindestens 30 % Aufwand gespart

    Es eigentlich nur Sinn macht, immer die neuste Version der Software zu installieren

    <-- wieder Aufwand gespart

    Keine ComboBoxen, sondern Tabs in den Listen sind.

    Z.B. erste Tab --> Systemsoftware zweiter --> Standardsoftware Dritter --> Drucker usw.

    Anschließend musst du noch klären, ob eine Prüfung gemacht werden soll pro Software ob ältere Version bzw. gleich Version bereits drauf, oder ob er immer einfach installieren soll.

    Hängt natürlich auch von der Intelligenz der User ab.

    Hoffe, du kannst mit den Tipps was anfangen.

    Ggf. würde ich auch mal ein paar Freeware InstallTools testen, die sind meinstens schon ganz gut.

    So long,

    Mega

  • Danke für die Tipps da kommen wir zum nächsten Problem:

    1. wir müssen für Dau´s entwickeln (muss sein damit jeder absolut jeder das ding benutzen kann ohne das Fehler passieren)

    2. es muss die Möglickeit geben mehrere Versionen der Software zu installieren

    3. es geht hier leider nur um eine Software die verschiedene Zusatzpackete benötigt daher die gute idee mit den reitern leider auch hier nicht anwendbar...


    PS: Ich hab keinen Plan ob das Projekt überhaupt machbar ist aber ich kann nicht einfach aufgeben ohne alles probiert zu haben...


    So Far

    NemesisRE

    Einmal editiert, zuletzt von NemesisRE (8. November 2006 um 16:13)

  • Hallo,
    Ich habe versucht ein Dynymisches Gui zu realisieren.
    Vieleicht hilft das ja jemanden.

    Gesteuert wird das Gui über eine INI Datei.
    Unter STARTPUNKT wird Festgelegt wo die Y,X Startkooridinaten sind.
    Dann kann man noch mit Breite und die Höhe das Aussehen des GUI Festers einstellen. Das muß man einfach mal ausprobieren. Wichtig ist auch noch der Abstand der beim hinzufügen einer Zeile berücksichtigt wird.
    TITEL stellt natürlich den Titel des Fensters ein.

    Dieses Beispiel ist für eine Schleife die meherer IP Adressen nacheinander anpingt und den Status mittels einer grünen oder roten Kugel anzeigt.
    Ich überprüfe damit welche VPN Clients gerade angemeldet sind. Man könnte aber auch verschiedene Rechner im Netzwerk abfragen, z.B. Router, Netzwerkdrucker, NAS usw.


    Hier die INI Datei "dynamisches_Gui.ini"

    Spoiler anzeigen

    [Startpunkt]
    X=0
    Y=0
    with=110
    height=20
    abstand=24
    titel=VPNSTATUS

    [Entrys]
    Edit_ip1="127.0.0.1"
    Edit_name1="localhost"
    Edit_IP2="10.3.0.2"
    Edit_name2="PC1"
    Edit_ip3="10.3.0.6"
    Edit_name3="PC2"
    Edit_IP4="10.3.0.10"


    Hier nun das eigendliche Script.
    Der Hotkey zum beenden ist ESC.


    Spoiler anzeigen


    #include <array.au3>
    #include <GuiConstants.au3>
    dim $with, $height, $var, $x, $y, $y2, $abstand, $Edit_IP, $titel, $yNR, $nr, $bubble1, $edit, $zaehler, $EditNR, $bubble
    Opt("TrayIconDebug", 1) ; zeigt am trayicon welchen Befehl das Script gerade Ausführt
    ;$PINGDELAY = 1000
    HotKeySet("{Esc}", "captureEsc")

    $inifile = "dynamisches_Gui.ini"

    $var = IniReadSection($inifile, "Entrys")


    Gui_berechnen()
    gui_erstellen()
    abfrage()


    While 1
    GuiSetState()
    ;~ tooltip("Breite:" & $with+30 & " Höhe:" & $var[0][0]*$height+25)
    WEnd


    func Gui_berechnen()
    $X = IniRead($inifile,"Startpunkt","x","")
    $Y = IniRead($inifile,"Startpunkt","y","")
    $with = IniRead($inifile,"Startpunkt","with","")
    $height = IniRead($inifile,"Startpunkt","height","")
    $abstand = IniRead($inifile,"Startpunkt","abstand","")
    $titel= IniRead($inifile,"Startpunkt","titel","")

    $zaehler=0
    EndFunc


    func gui_erstellen()

    $nr = $var[0][0]/2 ;Anzahl der Felder
    dim $edit[$nr+1]
    $edit[0]=$nr
    Dim $edit_ip[$nr+1]
    $edit_ip[0]=$nr
    dim $edit_name[$nr+1]
    $edit_name[0]=$nr
    dim $bubble[$nr+1]
    $bubble[0]=$nr

    GuiCreate($titel, $with+30, ($nr+4)*$height+25, 400,346,BitOR($WS_Border, $WS_CLIPSIBLINGS)); Hauptgui


    For $i = 1 To $nr
    $Edit_IP[$i] = IniRead($inifile, "Entrys","Edit_IP" & $i,"")
    $Edit_name[$i] = IniRead($inifile, "Entrys","Edit_name" & $i,"")
    ;~ _ArrayDisplay($edit_ip,$i & " von " & $nr )


    if $i = 1 Then
    $x = $x ; erstes Element ohne Abstand
    Else
    $y2 = $y+$abstand*($i-1); bei jedem Element den Abstand hinzufügen
    EndIf

    $edit[$i] = GUICtrlCreateLabel($Edit_IP[$i] & " - " & $edit_name[$i],$x,$y2,$with,$height)
    GUICtrlSetBkColor($Edit[$i],0xd3d3d3) ; Gray
    $bubble[$i] = GUICtrlCreatePic ("red_bubble.bmp", 116, $y2, 14, 14)
    Next

    $yNR = $y2+$abstand
    $EditNR = GUICtrlCreateLabel("Anzahl", 0, $yNR, 140, 20)

    GUISetState()
    EndFunc


    Func abfrage()
    while 1
    For $i = 1 To $nr
    ;Pingschleife()

    GuiSetState()
    ;Statusabfrage Server
    GUICtrlSetBkColor($Edit[$i],0x00ff00) ; Green
    Ping($Edit_IP[$i],1000)
    if @error = 0 Then
    GUICtrlSetImage ($bubble[$i],"green_bubble.bmp")
    Sleep(900);für die Optik
    Else
    GUICtrlSetImage ($bubble[$i],"red_bubble.bmp")
    EndIf
    GUICtrlSetBkColor($Edit[$i],0xd3d3d3) ; Gray

    $zaehler=$zaehler+1
    GUICtrlSetData($editNR,"Durchläufe=>> " & $zaehler)
    GuiSetState()
    sleep (1000)
    Next
    WEnd


    EndFunc


    Func captureEsc()
    if WinActive($titel) Then
    Exit
    EndIf
    endfunc


    Gruß
    Wolke