Regkey (Excel Addin) bei Remove wieder entfernen

  • Hallo zusammen

    Mit eurer Hilfe entstand ja der Script, der die Registry ausliest, und je nach zustand die entsprechenden Einträge schreibt:

    Bitte nicht zu doll den kopf schütteln, bin ja ein relativer Neueinsteiger ;(

    Einziger Wermutstropfen dabei: Hat ein User das Excel noch nie gestartet, überschreibt Excel beim ersten start dann das erste open= aber kann kann nicht alles haben ;)

    [autoit]

    #include<Array.au3>
    #include <File.au3>
    $openflag=-1
    $wrapperflag=-1
    $filename = @ProgramFilesDir & "\MyaddIn\RegKey.reg"

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

    For $i = 1 To 100
    $var = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options\", $i)
    If @error <> 0 Then ExitLoop
    If StringInStr(RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options", $var), "ExcelWrapper") <> 0 Then
    $wrapperflag=1
    ; MsgBox(4096, "Schon installiert #" & $i & " mit dem genannten Port", $var)
    RunWait(@COMSPEC & " /c eventcreate /t information /so Custominstaller /id 100 /l application /d ""Addin schon vorhanden""")
    EndIf
    Next
    For $i = 0 to 100 ;alle einträge prüfen
    If $i=0 then $i=""
    If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options", "OPEN"&$i)="" then
    if $openflag=-1 then $openflag=$i ;die erste "Fundstelle" merken
    endif
    next

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

    if $wrapperflag=-1 then ;kei Wrapper vorhanden, dann Addin installieren an die erste gefundene "Lücke"
    ; msgbox(0,"Installiere Addin nach:","OPEN"&$openflag)
    $find = "Zkey1"
    $replace = "OPEN" & $openflag
    $retval = _ReplaceStringInFile($filename,$find,$replace)
    $find = "Zkey2"
    $plus1=1
    $replace = "OPEN" & $openflag + $plus1
    $retval = _ReplaceStringInFile($filename,$find,$replace)
    RunWait(@COMSPEC & " /c eventcreate /t information /so Custominstaller /id 100 /l application /d ""Add-in installation, Regkey modifiziert""")
    RunWait(@COMSPEC & " /c regedit /s " & Chr (34) & "C:\Program Files\Volmaster\RegKey.reg" & Chr (34))
    RunWait(@COMSPEC & " /c eventcreate /t information /so Custominstaller /id 100 /l application /d ""Add-in installation, Regkey geladen""")
    Else
    endif

    [/autoit]

    Jetzt müsste ich bei der deinstallation wieder alles löschen, was ExcelWrapper enthält.

    Leider bin ich da mal wieder planlos, wie ich das aufschlüsseln kann, das ganze var kann ich ja nicht löschen ?(

    [autoit]

    For $i = 1 To 100
    $var = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options\", $i)
    If @error <> 0 Then ExitLoop
    If StringInStr(RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options", $var), "ExcelWrapper") <> 0 Then
    $wrapperflag=1
    RegDelete
    EndIf
    Next

    [/autoit]

    Danke für eure Hilfe!

    Surfy

    • Offizieller Beitrag

    Hallo

    Ohne Gewähr:

    Spoiler anzeigen
    [autoit]

    $i = 0
    While 1
    $i += 1
    $var = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options\", $i)
    If @error Then ExitLoop
    If StringInStr(RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options", $var), "ExcelWrapper") Then
    $wrapperflag = 1
    RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options", $var)
    EndIf
    WEnd

    [/autoit]

    GRuß
    Spider