Nach Windows Installation Scripts starten?

  • Hi ...

    Ich habe folgende Frage,
    Ich habe mir grade mit vLite mir eine Installations CD für nen PC erstellt die soweit auf mienen Virutellen Maschinen auch super läuft...

    Nun möchte ich aber nachdem Windows erfolgreich installiert wurde, dass er ein Script von mir startet (das script beinhaltet mehrere autoinstaller etc.)

    wie kann ich dies nun in die Windows installation mit reinbringen?

    bei vLite habe ich jetzt nichts diesbezüglich gefunden.

    Würde mich über eine Hilfe freuen

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

    Einmal editiert, zuletzt von blackdeath911 (13. März 2010 um 12:41)

  • Alles schön und gut... habe beide varienten ausprobiert...

    bei der 1. kam ein Error das der die exe nicht gefunden hat obwohl ich alles "richtig" gemacht hatte...

    bei der 2. kommt einfach garnix...

    ich bin ratlos... was könnte ich falsch gemacht haben?

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Also die Ordnerstruktur ist wie folgt:

    Addons/GUI.exe


    mehr soll er eigentlich nicht machen ...

    meine setupcomplete.cmd sieht so aus:

    Spoiler anzeigen

    @echo off
    %systemroot%\setup\scripts\bie7_inst.exe

    for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\sources\install.wim set SOURCE=%%x:

    REM ------------ Hier zu startende Programme eintragen-------------------
    start %SOURCE%\Addons\GUI.exe
    REM ---------------------------------------------------------------------

    del /F %0

    Hoffe du kannst mir helfen...

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Also wenn ich auf den Ordner der DVD gehe wo auch die Setup.exe für windows drin liegt habe ich dort den Ordner Addpns erstellt darin liegt direkt die GUI.exe

    Diese eine Zeile stand schon vorher da drin und ist anscheinend für Windows um da i was einzustellen...
    könnte diese ausshclaggebend sein dafür, dass mein script nicht startet?

    Weil wie du auch schon sagtest.. du siehst ja auch nichts ausschlaggebendes....

    please help

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Ich werd das mal ausprobieren, aber nicht mehr heute...

    melde mich dann wenn Ichs wieder mal nicht hinbekomme :)

    Für weitere Tipps stehe ich weiterhin zur verfügung :)
    evtl. kann man ja anders was beim 1. start starten lassen

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • habe es mir grade nochmal angeguckt die cmd sieht ja so aus:

    @echo off
    %systemroot%\setup\scripts\bie7_inst.exe

    for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\sources\install.wim set SOURCE=%%x:

    REM ------------ Hier zu startende Programme eintragen-------------------
    start %SOURCE%\Addons\GUI.exe
    REM ---------------------------------------------------------------------

    del /F %0


    der rot markierte bereich ? was macht der?
    weil ich möchte nichts "installieren" ich möchte nur eine GUI starten wo man bestimmte sachen einstellen kann...

    die CMD schmeißt er auch schon auf bei der INstallation wenn er die "viedeoleistung überprüft"
    da kann er ja nicht wirklich meine GUI öffnen...

    blickt da grade wer durch was ich meine? ich nämlich nichtmehr ganz...

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Code
    for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\sources\install.wim set SOURCE=%%x:

    Die Zeile prüft, ob der Pfad "\sources\install.wim" auf einem der Laufwerke a:\ bis z:\ existiert.
    Bei einem Treffer wird DIe Variable SOURCE auf den gefunden Laufwerksbuchstaben gesetzt.

    Spoiler anzeigen
    [autoit]

    Local $array = StringSplit("A,B,C,D,E;F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
    For $i = 0 To 26
    If FileExists($array[$i] & ":\install.wim") Then
    MsgBox(0,"","Datei gefunden auf Laufwerk " & $array[$i])
    EndIf
    Next

    [/autoit]
  • Hey mir ist grade etwas aufgefallen....

    so wie es jetzt geschrieben ist passiert ja folgendes:
    Er öffnet das CMD fenster bei der überprüfung der Videoleistung
    Da öffnet er anscheinend auch miene GUI was ich aber nicht sehe da er ja die Videoleistung überprüft
    Nach der überprüfung der videoleistung stratet er die maschine neu...

    DH: der start der GUI ist sinnlos gewesen?

    Wie kann ich es machen das wenn ich zum 1. mal starte die GUI dort erst gestartet wird...?

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Wenn der Zeitpunkt nicht passt, dann erstell dir doch mal eine .exe die einen Autostarteintrag für deine GUI in die Registry schreibt und häng die dann in die .cmd.
    Deine eigentliche GUI.exe solltest du während der Installation per $OEM$ Ordner auf dem PC ablegen können. (Für XP könnt ich's dir erklären, bei Vista und 7 hab ich's noch nie gemacht)
    Nach dem ersten Login sollte sie dann starten.

  • Wie sähe denn so ein script aus was einen eintrag in der Registry macht das auch nur 1 Mal beim neustart die GUI von der CD startet (wo das CD laufwerk ja auch variabel ist)

    habe noch nie etwas per autoit in den autostart bzw. registry geschrieben...

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

  • Autostarteinträge liegen in HKCU\Software\Microsoft\Windows\Current Version\Run.(RegWrite)
    Das auszuführende Skript müsstest du während der Installation, z.B. per $OEM$, auf der HDD ablegen.
    Wenn deine GUI nur einmal sterten soll, dann muss sie vor dem schliessen den Registry-Eintrag wieder entfernen.

    Ich würde es allerdings trotzdem mal mit einer saubere ISO versuchen, dann klappt es vlt. auch mit der normalen Methode.
    Was die Jungs von BIE an der ISO schon alles gedreht haben wissen nur sie selbst und niemand sonst.

  • Also es gibt folgende Möglichkeiten:

    1. über die Registry

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "test", "REG_SZ", "C:\test\test.exe")

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

    if @ScriptDir = "C:\test" AND @ScriptName = "test.exe" Then
    MsgBox(0,"Bestätigung","Richtig")
    Else
    MsgBox(0, "Fehler", "Die Datei muß unter ' c:\test\'stehen und die Datei muß den Namen 'test.exe' haben.")
    Exit
    EndIf

    [/autoit]


    oder:

    Spoiler anzeigen
    [autoit]


    _startbei_pc_start("N:\", "ordner\datei.exe")
    Func _startbei_pc_start($laufwerk, $name)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","test", "REG_SZ", '"' & $laufwerk & $name & '"')
    if @error Then
    Return 0
    Else
    Return 1
    Endif
    Endfunc

    [/autoit]

    2.) Du schaust Dir das Video zu diesem Thema an
    Video Neustart
    Hiermit habe sogar ich es geschafft. Leider kann ich Dir das Script nicht senden, da ich es nicht hier vorliegen habe, sondern auf einem USB-Stick der auf Arbeit liegt und da bin ich ja derzeitig nur als Besucherin (wegen B...pause).

    Viel Erfolg.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • so wie es jetzt geschrieben ist passiert ja folgendes:
    Er öffnet das CMD fenster bei der überprüfung der Videoleistung
    Da öffnet er anscheinend auch miene GUI was ich aber nicht sehe da er ja die Videoleistung überprüft


    Prinzpiell sollte das Setup erst weitermachen wenn die SetupComplete.cmd fertig abgearbeitet ist.
    Da du ja gleich den Parameter /Wait bei dem Start-Kommando entfernt hast ist das quasi sofort.
    Also denkt das Setup es geht weiter weil die SetupComplete.cmd ja schon beendet wurde.
    Es hat schon seinen Sinn das ich das mit /Wait geschrieben habe.
    Wenn du dennoch das ganze später starten willst dann bleibt noch die Möglichkeit, wie hier schon erwähnt, die RunOnce-Einträge zu nutzen.
    Ich hatte mal, exakt für diesen Fall, ein kleines Kommandozeilentool namens RoExAdd.exe geschrieben welche exakt das macht.
    Wie du es dann anwendest ist kurz >>hier<< dargestellt.

  • Hi habe es mal wieder versucht :)

    Hier der Code von dem File das ich in die Setupcomplete.cmd verknüpft habe (als startup.exe)

    [autoit]

    IF FileExists("C:\GUI3.6.exe") Then
    If ProcessExists("explorer.exe")Then
    run ("C:\GUI3.6.exe")
    exit
    EndIf
    Else
    FileCreateShortcut(@ScriptFullPath,@StartupDir & "\guistart.lnk","C:\")
    Filecopy(@ScriptDir & "\GUI3.6.exe","C:\")
    FileCopy(@ScriptDir & "\iniread.exe","C:\")
    FileCopy(@ScriptDir & "\startup.exe","C:\")
    EndIf
    Exit

    [/autoit]

    Soweit so gut auf meinem System wenn ich diese Exe ausführe macht er schön die verknüpfung und kopiert die Files...
    Doch wenn ich es bei der Windows installation mache kopiert er die verknüpfung wunderbarer weise auch einfach auf c:\

    die Frage: WARUM???

    Ich komm einfach nicht weiter so sollte alles klappen und er das setup erst ausführen (GUI3.6.exe) wenn der prozess explorer.exe da ist... doch wenn dieser nicht im autostart ist kanns ja logischer weise auch nicht starten.. aber WARUM kopiert er die startup.exe verknüpfung auf C:\ ???

    kann mir da wer helfen?

    Edit:

    Grade mal der installation komplett zugeschaut...
    da wo das CMD fenster aufgeht und worin auch die startup.exe gestartet wird kommt folgender fehler:

    Spoiler anzeigen


    Was soll ich machen?

    EDIT2:
    Wo der Fehler noch nicht kam (bei der 1. installation mit dem script (wo diese Zeilen am anfang in der GUI standen (in abgewandelter form))) haben sich die dateien noch kopiert... doch jetzt wo der fehler da ist kommen selbst nichtmehr die Dateien in C:\

    MFG: Blacky

    Kleiner AutoIt Lehrling :)

    2 Mal editiert, zuletzt von blackdeath911 (21. Februar 2010 um 00:51)

  • Doch wenn ich es bei der Windows installation mache kopiert er die verknüpfung wunderbarer weise auch einfach auf c:\

    Wahrscheinlich weil zu diesem Zeitpunkt noch kein Nutzer erstellt wurde bzw. keiner angemeldet ist.
    Ich leite davon ab das du nicht mit der RoExAdd.exe arbeitest weil die dafür sorgt das das Skript erst später aufgerufen wird.
    @StartupDir bezieht sich auf das Verzeichnis des aktuell angemeldeten Users und während einer Windows-Installation ist das nicht gegeben.
    Versuch stattdessen mal lieber @StartupCommonDir bzw. benutz gleich die entsprechenden Registry-Einträge.