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
#include<Array.au3>
#include <File.au3>
$openflag=-1
$wrapperflag=-1
$filename = @ProgramFilesDir & "\MyaddIn\RegKey.reg"
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
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
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
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
Danke für eure Hilfe!
Surfy