Benötige Hilfe bzgl registry Abfrage

  • Hallo Leute nach Std langer suche bin ich leidernnicht fündig geworden um mein Prob zu lösen.
    Evtl hat ja einer von Euch Plan was danicht ganz stimmt im script bzw im regPfad
    also bei der 1 Abfrage VLC klappt alles mit install und auch mit der Uninstall
    nur bei der 2 (Ashampoo) fragt er die reg nicht ab bzw erfindet denPfad nicht

    Spoiler anzeigen

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=osiris.ico
    #AutoIt3Wrapper_Outfile=OSIRIS.exe
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_Description=Osiris Software Installer
    #AutoIt3Wrapper_Res_Fileversion=3.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=© 2011 by Osiris
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
    #AutoIt3Wrapper_Res_Field=Compiled by|Osiris
    #AutoIt3Wrapper_Res_Field=Original Name|Osiris Software Installer
    #AutoIt3Wrapper_Res_Field=Build|Úte%
    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_Run_Tidy=y
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #Region - TimeStamp
    ; 2011-05-14 20:47:53
    #EndRegion - TimeStamp

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    Opt("GUIOnEventMode", 1) ;i Eine Gute Wahl -> mehr Macros, leichtere Fenstertechnik

    If Not FileExists(@ScriptDir & "\2.jpg") Then FileInstall('2.jpg', @ScriptDir & "\2.jpg", 1)
    ; prüfen ob Hintergrundbild vorhanden ist, wenn nicht, dann auspacken die 1 = Überschreibt bestehende Dateien
    #Region ### START Koda GUI section ###
    GUICreate("Osiris Software Installer", 896, 560)
    GUICtrlCreatePic(@ScriptDir & "\2.jpg", 0, 0, 896, 560)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ende")

    GUICtrlCreateGroup("", 170, 31, 185, 485)
    GUICtrlCreateLabel("Silent Install", 182, 16, 185, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetFont(-1, 14, 400, 0, "Old English Text MT")
    ;i #### Start Checkboxarray für 25 Checkboxen ###
    Global $aLBckbColumn1[23] = ["Vlc-Media-Player", "7-Zip", "Firefox 4", "Firefox 3", "Ashampoo Burning", "CC Cleaner", "DVD Shrink", "Fraps 2.9.8", "Img Burn", "Irfan View", _
    "Netframework 4", "OpenOffice", "PartitionsWizard", "PDF Creator", "TeamViewer 6", "TMPGEnc-Plus", "TrueCrypt 7", "Teamspeak 2", "Teamspeak 3", "Unlocker", _
    "VirtualDub", "Winrar 4", "XP-AntiSpy"] ;i zur Beschriftung der Labels
    ;i a- Array + Label-LB + Checkbox-ckb
    Global $aCkbColumn1[23], $aLBColumn1[23] ;i ArrayVariablen (kl. a am Anfang) erstellen der Controls
    ;i a- Array + Checkbox-ckb
    For $i = 0 To 22 ;i statisch kein Ubound - erstellen von 0 - 24 = 25 Checkboxen
    $aCkbColumn1[$i] = GUICtrlCreateCheckbox($aLBckbColumn1[$i], 178, 40 + $i * 19, 13, 13)
    $aLBColumn1[$i] = GUICtrlCreateLabel($aLBckbColumn1[$i], 200, 40 + $i * 19, 120, 17)
    GUICtrlSetFont(-1, 10, 400, 0, "Myriad Web Pro")
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    Next
    ;i #### Ende Checkboxarray ###
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;i Gruppe schliessen

    GUICtrlCreateGroup("", 355, 31, 185, 485)
    GUICtrlCreateLabel("User default", 367, 16, 185, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 14, 400, 0, "Old English Text MT")
    GUICtrlSetColor(-1, 0xffffff)
    ;i #### Start Checkboxarray für 25 Checkboxen ###
    Global $aLBckbColumn2[23] = ["Vlc-Media-Player", "7-Zip", "Firefox 4", "Firefox 3", "Ashampoo Burning", "CC Cleaner", "DVD Shrink", "Fraps 2.9.8", "Img Burn", "Irfan View", _
    "Netframework 4", "OpenOffice", "PartitionsWizard", "PDF Creator", "TeamViewer 6", "TMPGEnc-Plus", "TrueCrypt 7", "Teamspeak 2", "Teamspeak 3", "Unlocker", _
    "VirtualDub", "Winrar 4", "XP-AntiSpy"] ;i zur Beschriftung der Labels
    ;i a- Array + Label-LB + Checkbox-ckb
    Global $aCkbColumn2[23], $aLBColumn2[25] ;i ArrayVariablen (kl. a am Anfang) erstellen der Controls
    ;i a- Array + Checkbox-ckb
    For $i = 0 To 22 ;i statisch kein Ubound - erstellen von 0 - 24 = 25 Checkboxen
    $aCkbColumn2[$i] = GUICtrlCreateCheckbox($aLBckbColumn2[$i], 363, 40 + $i * 19, 13, 13)
    $aLBColumn2[$i] = GUICtrlCreateLabel($aLBckbColumn2[$i], 386, 40 + $i * 19, 120, 17)
    GUICtrlSetFont(-1, 10, 400, 0, "Myriad Web Pro")
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ; create 25x Checkbox
    Next
    ;i #### Ende Checkboxarray ###
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;i Gruppe schliessen

    GUICtrlCreateGroup("", 540, 31, 185, 485)
    GUICtrlCreateLabel("Portable Apps", 552, 16, 185, 17)
    GUICtrlSetFont(-1, 14, 400, 0, "Old English Text MT")
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ;i #### Start Checkboxarray für 25 Checkboxen ###
    Global $aLBckbColumn3[9] = ["Firefox", "Vlc Media Player", "TeamViewer6", "7-Zip", "OpenOffice", "Thunderbird", "FoxitReader", "FileZilla", "Spybot"] ;i zur Beschriftung der Labels
    ;i a- Array + Label-LB + Checkbox-ckb
    Global $aCkbColumn3[9], $aLBColumn3[25] ;i ArrayVariablen (kl. a am Anfang) erstellen der Controls
    ;i a- Array + Checkbox-ckb
    For $i = 0 To 8 ;i statisch kein Ubound - erstellen von 0 - 24 = 25 Checkboxen
    $aCkbColumn3[$i] = GUICtrlCreateCheckbox($aLBckbColumn3[$i], 548, 40 + $i * 19, 13, 13)
    $aLBColumn2[$i] = GUICtrlCreateLabel($aLBckbColumn3[$i], 571, 40 + $i * 19, 120, 17)
    GUICtrlSetFont(-1, 10, 400, 0, "Myriad Web Pro")
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ; create 25x Checkbox
    Next
    ;i #### Ende Checkboxarray ###
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;i Gruppe schliessen

    Global $bnInstall = GUICtrlCreateButton("Install", 355, 526, 75, 22)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 9, 400, 0, "Myriad Web Pro")
    GUICtrlSetOnEvent(-1, "_start")
    Global $bnExit = GUICtrlCreateButton("Exit", 465, 526, 75, 22)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 9, 400, 0, "Myriad Web Pro")
    GUICtrlSetOnEvent(-1, "_ende")

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    Sleep(100)
    WEnd

    Func _start()
    Local $Msg = MsgBox(32 + 4, "Installation", "Soll mit der Installation begonnen werden ?" & @TAB)
    If $Msg = 7 Then
    ConsoleWrite("Abbruch durch den Nutzer !" & @CRLF)
    Else
    _install()
    EndIf
    EndFunc ;==>_start

    Func _install()
    ;i MsgBox(0, "", "Installation ...") ;i zur Prüfung der Funktion, also ein Dummy
    _softwareInstall()
    MsgBox(64, "Installation", "Die Installation ist abgeschlossen !" & @TAB) ;i Erfolgsmeldung!
    Exit ;i Beenden
    EndFunc ;==>_install

    Func _softwareInstall()
    ;i ist die Checkbox mit Namen "$aCkbColumn1[0]" aktiv, wenn ja dann ...

    ;<<<<Spalte1
    If BitAND(GUICtrlRead($aCkbColumn1[0]), $GUI_CHECKED) = $GUI_CHECKED Then

    Local $VLN = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VideoLAN\VLC", "InstallDir"), _
    $versionVLN = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VideoLAN\VLC", "Version")
    Local $VLC = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VLC", "InstallDir"), _
    $versionVLC = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VLC", "Version")

    ;i ... Abfrage ob VLC schon auf dem PC unter VideoLAN installiert ist ...
    If FileExists($VLN & "\vlc.exe") Then
    ;i ... dann ermittle die installierte Version von VLC ...
    ConsoleWrite("VLC media player " & $versionVLN & " ist installiert" _
    & @CRLF & " und befindet sich in: " & $VLN & "\vlc.exe")
    ;i Meldung an den Nutzer über die vorhandene VLCversion, ...
    ;i ... Frage ob diese deinstalliert werden soll, wenn ja dann Deinstallation!
    If MsgBox(32 + 4, "Installation", "VLC media player " & $versionVLN & _
    " ist bereits installiert !" & @TAB & @CRLF & @CRLF & _
    "Soll das Programm deinstalliert werden ?" & @TAB) = 6 Then RunWait($VLN & "\uninstall.exe")
    ;i ... Anfrage ob VLC schon auf dem PC unter VLC installiert ist ...
    ElseIf FileExists($VLC & "\vlc.exe") Then
    ;i ... dann ermittle die installierte Version von VLC ...
    ConsoleWrite("VLC media player " & $versionVLN & " ist installiert" _
    & @CRLF & " und befindet sich in: " & $VLN & "\vlc.exe")
    ;i Meldung an den Nutzer über die vorhandene VLCversion, ...
    ;i ... Frage ob diese deinstalliert werden soll, wenn ja dann Deinstallation!
    If MsgBox(32 + 4, "Installation", "VLC media player " & $versionVLC & _
    " ist bereits installiert !" & @TAB & @CRLF & @CRLF & _
    "Soll das Programm deinstalliert werden ?" & @TAB) = 6 Then RunWait($VLC & "\uninstall.exe")
    Else
    ;i VLC aus Deinem Softwarepool installieren!
    RunWait(@ScriptDir & "\Software\vlc\vlc.exe")
    EndIf
    EndIf

    ;If BitAND(GUICtrlRead($aCkbColumn1[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    ;If BitAND(GUICtrlRead($aCkbColumn1[2]), $GUI_CHECKED) = $GUI_CHECKED Then
    ;If BitAND(GUICtrlRead($aCkbColumn1[3]), $GUI_CHECKED) = $GUI_CHECKED Then

    If BitAND(GUICtrlRead($aCkbColumn1[4]), $GUI_CHECKED) = $GUI_CHECKED Then
    Local $Ashampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\Ashampoo Burning Studio 2010 Advanced", "InstallDir"), _
    $versionAshampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\Ashampoo Burning Studio 2010 Advanced", "Version")


    If FileExists($Ashampoo & "\burningstudio2010adv.exe") Then
    ;i ... dann ermittle die installierte Version von VLC ...
    ConsoleWrite("Ashampoo Burning " & $versionAshampoo & " ist installiert" _
    & @CRLF & " und befindet sich in: " & $Ashampoo & "\burningstudio2010adv.exe")
    ;i Meldung an den Nutzer über die vorhandene VLCversion, ...
    ;i ... Frage ob diese deinstalliert werden soll, wenn ja dann Deinstallation!
    If MsgBox(32 + 4, "Installation", "Ashampoo Burning " & $versionAshampoo & _
    " ist bereits installiert !" & @TAB & @CRLF & @CRLF & _
    "Soll das Programm deinstalliert werden ?" & @TAB) = 6 Then RunWait($Ashampoo & "\unins000.exe")
    ;i ... Anfrage ob VLC schon auf dem PC unter VLC installiert ist ...
    Else
    ;i VLC aus Deinem Softwarepool installieren!
    RunWait(@ScriptDir & "\Software\ashampoo\asinstall.exe")
    EndIf
    EndIf
    Sleep(1000)

    ;>>>>Spalt1
    ;<<<<Spalte2


    ;>>>>Spalte2
    ;<<<<Spalte3
    If BitAND(GUICtrlRead($aCkbColumn3[0]), $GUI_CHECKED) = $GUI_CHECKED Then

    MsgBox(64, "Ordner erstellen", "Es wird nun ein Desktop Ordner für PortableApps erstellt", 5)
    DirCreate(@DesktopDir & "\PortableApps\FirefoxPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\FirefoxPortable", @DesktopDir & "\PortableApps\FirefoxPortable", 1)
    MsgBox(1, "PortableApps", "Programm FirefoxPortable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\VLCPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\VLCPortable", @DesktopDir & "\PortableApps\VLCPortable", 1)
    MsgBox(1, "PortableApps", "Programm Vlc Media Player Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[2]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\TeamViewerPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\TeamViewerPortable", @DesktopDir & "\PortableApps\TeamViewerPortable", 1)
    MsgBox(1, "PortableApps", "Programm TeamViewer Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[3]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\7-ZipPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\7-ZipPortable", @DesktopDir & "\PortableApps\7-ZipPortable", 1)
    MsgBox(1, "PortableApps", "Programm 7-Zip Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[4]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\OpenOfficePortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\OpenOfficePortable", @DesktopDir & "\PortableApps\OpenOfficePortable", 1)
    MsgBox(1, "PortableApps", "Programm OpenOffice Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[5]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\ThunderbirdPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\ThunderbirdPortable", @DesktopDir & "\PortableApps\ThunderbirdPortable", 1)
    MsgBox(1, "PortableApps", "Programm Thunderbird Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[6]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\FoxitReaderPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\FoxitReaderPortable", @DesktopDir & "\PortableApps\FoxitReaderPortable", 1)
    MsgBox(1, "PortableApps", "Programm FoxitReader Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[7]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\FileZillaPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\FileZillaPortable", @DesktopDir & "\PortableApps\FileZillaPortable", 1)
    MsgBox(1, "PortableApps", "Programm FileZilla Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    If BitAND(GUICtrlRead($aCkbColumn3[8]), $GUI_CHECKED) = $GUI_CHECKED Then
    DirCreate(@DesktopDir & "\PortableApps\SpybotPortable\")
    Sleep(500)
    DirCopy(@ScriptDir & "\PortableApps\SpybotPortable", @DesktopDir & "\PortableApps\SpybotPortable", 1)
    MsgBox(1, "PortableApps", "Programm Spybot Portable wurde in den PortableApps Ordner integriert", 3)
    EndIf
    ;>>>>Spalte3
    EndFunc ;==>_softwareInstall

    Func _ende()
    Exit
    EndFunc ;==>_ende

    Also bei screen 1 geht die abfrage obwohl vlc da nicht steht :?: :?:

    selbts mir der Abfrage

    [autoit]

    Local $Ashampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ashampoo\Ashampoo Burning Studio 2010 Advanced", "InstallDir"), _
    $versionAshampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ashampoo\Ashampoo Burning Studio 2010 Advanced", "Version")

    [/autoit]


    klappe es nicht

  • ich bin mir jetzt nicht sicher, ob das hilft da Deine Infos das nicht hergeben.
    Bei einem 64-bit System lautet der RegPfad RegRead('HKLM64\SOFTWARE\ .....

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • kann es an den Leerzeichen in dem Reg-Pfad von Ashampoo liegen?
    mach mal ein Bild von dem Ashampoo-Ordner...

    verwende Regedit, markiere den Schlüssel den Du abfragen willst und verwende im Menü den Befehl
    Bearbeiten --> Schlüsselnamen kopieren um Schreibfehler auszuschließen.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (15. Mai 2011 um 21:33)

  • Hallo,
    hier ist es beschrieben:
    http://msdn.microsoft.com/de-de/library/…v=vs.85%29.aspx

    [autoit]


    ;i Deine Abfrage !!
    Local $Ashampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ashampoo\Ashampoo Burning Studio 2010
    Advanced", "InstallDir"), _
    $versionAshampoo = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ashampoo\Ashampoo
    Burning Studio 2010 Advanced", "Version")

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

    ;i Warum nicht so abfragen ?
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\ ... ")
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\ ... ")
    ; Ende

    [/autoit]

    Bei der Stapelverarbeitung von Installationen kann man nicht nach jeder einzelnen einen Neustart machen, so
    würde ich den Neustart auf jeden Fall am Ende anbieten!

    [autoit]


    Func _install()
    ;i MsgBox(0, "", "Installation ...") ;i zur Prüfung der Funktion, also ein Dummy
    _softwareInstall()
    MsgBox(64, "Installation", "Die Installation ist abgeschlossen !" & @TAB) ;i Erfolgsmeldung!
    Exit ;i Beenden
    EndFunc ;==>_install

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

    ;### besser so: ###
    Func _install()
    ;i MsgBox(0, "", "Installation ...") ;i zur Prüfung der Funktion, also ein Dummy
    _softwareInstall()
    ;i Neue Erfolgsmeldung und Nutzer nach Neustart abfragen !
    If MsgBox(32 + 4, "Installation", "Die Installation ist abgeschlossen !" & @TAB & @CRLF _
    & @CRLF & "Den Computer jetzt neu starten ?" & @TAB) = 6 Then Shutdown(6)
    Exit ;i Beenden
    EndFunc ;==>_install

    [/autoit][autoit][/autoit][autoit][/autoit]
  • habe ich nach langem suchen auch so gemacht :whistling: nach sehr langem aber danke
    einziges prob dabei ist das er immer fehler bringt mal sehn wos da noch hängt

    [autoit]

    ;i Warum nicht so abfragen ?

    ; Ende
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\ ... ")
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Ashampoo\ ... ")

    [/autoit]
    Zitat

    Bei der Stapelverarbeitung von Installationen kann man nicht nach jeder einzelnen einen Neustart machen, so

    würde ich den Neustart auf jeden Fall am Ende anbieten!

    War auch mein Gedanke nur muss ich sagen hatte ich vor lauter schreiben und auslesen der reg total aus den Augen verloren
    thx fürs umsetzen und erinnern :thumbup:

    soweit Klappt alles nur 1 nicht nach der Abfrage der Uninstall ( wird auch sofort ausgeführt) wie schaffe ich es a) das dass script wartet bis die uninstall zuende durchgelaufen ist, und b) das er mir nach der uninstall dass prog installiert und nciht weiter springt zu nächsten checkbox ??

    [autoit]

    If BitAND(GUICtrlRead($aCkbColumn1[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    ;Local $Ashampoo = (@ProgramFilesDir & "\Ashampoo\Ashampoo Burning Studio 2010 Advanced")
    Local $7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "Path"), _
    $version7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "DisplayName")
    If FileExists($7zip & "\7zFM.exe") Then
    ;i ... dann ermittle die installierte Version von VLC ...
    ConsoleWrite("7-Zip " & $version7zip & " ist installiert" _
    & @CRLF & " und befindet sich in: " & $7zip & "\7zFM.exe")
    ;i Meldung an den Nutzer über die vorhandene VLCversion, ...
    ;i ... Frage ob diese deinstalliert werden soll, wenn ja dann Deinstallation!
    If MsgBox(32 + 4, "Installation", "7-Zip " & $version7zip & _
    " ist bereits installiert !" & @TAB & @CRLF & @CRLF & _
    "Soll das Programm deinstalliert werden ?" & @TAB) = 6 Then RunWait($7zip & "\Uninstall.exe /Silent")
    ;i ... Anfrage ob VLC schon auf dem PC unter VLC installiert ist ...
    Else
    ;i VLC aus Deinem Softwarepool installieren!
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    EndIf
    EndIf
    Sleep(1000)

    [/autoit]


    oder wäre es besser nen extra button (Uninstall) um die Porgs zu uninstall
    ich sehe soweit it den if´s und else durch nur bei ner weiteren abfrage nicht mehr :wacko:

    3 Mal editiert, zuletzt von Osiris (16. Mai 2011 um 15:49)

  • Hi,
    schau es Dir mal an. Du kannst auch einzelne Funktionen erstellen und jeweils prüfen und testen, dann ist es übersichtlicher.

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

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

    _SoftwareInstall_7zip()

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

    Func _SoftwareInstall_7zip()
    If BitAND(GUICtrlRead($aCkbColumn1[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    Local $7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "Path"), _
    $version7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "DisplayName")

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

    If Not FileExists($7zip & "\7zFM.exe") Then RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    If FileExists($7zip & "\7zFM.exe") Then
    Local $Message = MsgBox(32 + 4, "Installation", "7-Zip " & $version7zip & " ist bereits installiert !" _
    & @TAB & @CRLF & @CRLF & "Soll das Programm deinstalliert werden ?" & @TAB)
    Switch $Message
    Case 6 ;ja
    RunWait($7zip & "\Uninstall.exe /S ")
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    Case 7 ;nein
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    EndSwitch
    EndIf
    EndIf
    Sleep(1000)
    EndFunc ;==>_SoftwareInstall_7zip

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

    MsgBox(0, " ;)", "Bitteschön !" & @TAB)
    Exit

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

    ; Ende

    [/autoit]
  • klasse danke besser als mein veruch mit extra uninstall Button
    habs nun so gemacht

    Spoiler anzeigen

    Func _start()
    Local $Msg = MsgBox(32 + 4, "Installation", "Soll mit der Installation begonnen werden ?" & @TAB)
    If $Msg = 7 Then
    ConsoleWrite("Abbruch durch den Nutzer !" & @CRLF)
    Else
    _install()
    EndIf
    EndFunc ;==>_start

    Func _install()
    ;i MsgBox(0, "", "Installation ...") ;i zur Prüfung der Funktion, also ein Dummy
    _SoftwareInstall_7zip()
    _softwareInstall_moz4()
    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=Yes, No, and Cancel, Icon=None
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(3, "OsirisSoftwareInstaller", "Installation ist abgeschlossen" & @CRLF & "Wollen Sie neustarten?")
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    Shutdown(6)
    Case $iMsgBoxAnswer = 7 ;No
    Exit
    Case $iMsgBoxAnswer = 2 ;Cancel

    EndSelect
    #EndRegion --- CodeWizard generated code Start ---
    EndFunc ;==>_install


    Func _SoftwareInstall_7zip()
    If BitAND(GUICtrlRead($aCkbColumn1[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    Local $7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "Path"), _
    $version7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "DisplayName")

    If Not FileExists($7zip & "\7zFM.exe") Then RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    If FileExists($7zip & "\7zFM.exe") Then
    Local $Message = MsgBox(3, "Installation", "7-Zip " & $version7zip & " ist bereits installiert !" _
    & @TAB & @CRLF & @CRLF & "Soll das Programm deinstalliert werden ?" & @TAB)
    Switch $Message
    Case 6 ;ja
    RunWait($7zip & "\Uninstall.exe /S ")
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    Case 7 ;nein
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    Case 2
    EndSwitch
    EndIf
    EndIf
    Sleep(1000)
    EndFunc ;==>_SoftwareInstall_7zip
    Func _SoftwareInstall_moz4()
    If BitAND(GUICtrlRead($aCkbColumn1[2]), $GUI_CHECKED) = $GUI_CHECKED Then
    Local $moz4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox\4.0.1 (de)\Main", "Install Directory"), _
    $versionmoz4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox", "CurrentVersion")
    If Not FileExists($moz4 & "\firefox.exe") Then RunWait(@ScriptDir & "\Software\firefox4\MozillaFirefox4.0.exe")
    If FileExists($moz4 & "\firefox.exe") Then
    Local $Message = MsgBox(3, "Installation", "Firefox 4 " & $versionmoz4 & " ist bereits installiert !" _
    & @TAB & @CRLF & @CRLF & "Soll das Programm deinstalliert werden ?" & @TAB)
    Switch $Message
    Case 6
    RunWait($moz4 & "\Uninstall.exe")
    RunWait(@ScriptDir & "\Software\firefox4\MozillaFirefox4.0.exe")
    Case 7
    RunWait(@ScriptDir & "\Software\firefox4\MozillaFirefox4.0.exe")
    Case 2

    EndSwitch
    EndIf
    EndIf
    Sleep(1000)
    EndFunc ;==>_SoftwareInstall_moz4


    Danke für den Tip

    Es ergibt sich nur 1 problem (denke durch dualcore)

    [autoit]

    Case 6 ;ja
    RunWait($7zip & "\Uninstall.exe /S ")
    RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")

    [/autoit]

    er öffnet zwar den uninstaller nur wartet er nicht bis dieser zuende ist sondern öffnet zugleich die installroutine
    wobei ich nicht umbedingt mit sleep arbeiten wollte


    habe es so bisher gelöst, bin mir nur nicht sicher ob es der beste weg ist bzw zu 100% richtig

    [autoit]

    Func _SoftwareInstall_7zip()
    If BitAND(GUICtrlRead($aCkbColumn1[1]), $GUI_CHECKED) = $GUI_CHECKED Then
    Local $7zip = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe", "Path")
    If Not FileExists($7zip & "\7zFM.exe") Then RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    If FileExists($7zip & "\7zFM.exe") Then
    $Sprungmarke = True
    $ZweiteSprungmarke = True
    While $Sprungmarke ; Sprungmarke initialisieren
    If MsgBox(4, "", "Uninstall? (Mit Ja wird 7-Zip deinstalliert)") = 6 Then RunWait($7zip & "\Uninstall.exe")
    While $ZweiteSprungmarke
    If MsgBox(4, "", "Installation von 7-Zip") = 6 Then RunWait(@ScriptDir & "\Software\7zip\7-Zip.exe")
    $ZweiteSprungmarke = False
    WEnd
    $Sprungmarke = False ; Endlosschleife verhindern (Danach muss direkt das Wend folgen)
    WEnd
    EndIf
    EndIf
    Sleep(1000)
    EndFunc ;==>_SoftwareInstall_7zip

    [/autoit]


    wobei ich 2 fehler bekommen :
    WARNING: $Sprungmarke possibly not declared/created yet
    $Sprungmarke = True
    ~~~~~~~~~~~~~~~~~~~^
    WARNING: $ZweiteSprungmarke possibly not declared/created yet
    $ZweiteSprungmarke = True
    ~~~~~~~~~~~~~~~~~~~~~~~~~^

    6 Mal editiert, zuletzt von Osiris (17. Mai 2011 um 18:36)