DeInstall.au3 erstellen ohne Uninstall.exe

  • Mahlzeit zusammen!

    Im Zuge einer Add-In Installation für Office 2007 soll noch eine DeInstall.cmd bzw. remove.cmd erstellt werden, die ich halt über autoit scripten soll...
    Zur Verfügung steht mir aber nur die install.exe des Add-Ins. Das Install-Script ist daher kein Problem.
    Frage ist jetzt, wie kann ich die remove.au3 jetzt füllen, bzw. muss ich ja (wenn ich's manuell machen würde) über die Systemsteuerung das Add-In entfernen.
    Hoffe ich konnts einigermaßen verständlich erklären, was ich meine :D

    Danke schonmal im voraus ;)
    mfg shiggy

    Einmal editiert, zuletzt von shiggy169 (23. April 2010 um 13:02)

  • ja das ist es nämlich :D genau da is bei mir der knackpunkt..

    bin ja noch neuling auf dem gebiet.. wie schreib ich denn ins script, dass der über die systemsteuerung -> software die applikation dann entfernt?^^

  • Wenn du es per Systemsteuerung deinstallieren kannst, gibt es in der Registry einen Schlüssel, der das Kommando für die deinstallation speichert. Diesen musst du finden und aufrufen. Das ist irgend ein Unterschlüssel von

    Code
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    • Offizieller Beitrag

    Kannst ja hier mal suchen :)

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    Local $re
    _ComputerGetSoftware($re)
    _ArrayDisplay($re, 'Software', -1, 0, '', '', 'Number|Name|Version|Publisher|Uninstall String')

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

    ;===============================================================================
    ; Description: Returns the Software information in an array.
    ; Parameter(s): $aSoftwareInfo - By Reference - Software Information array.
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns array of Software Information.
    ; $aSoftwareInfo[0][0] = Number of Software Installed
    ; $aSoftwareInfo[$i][0] = Name ($i starts at 1)
    ; $aSoftwareInfo[$i][1] = Version
    ; $aSoftwareInfo[$i][2] = Publisher
    ; $aSoftwareInfo[$i][3] = Uninstall String
    ; On Failure - @error = 1 and Returns 0
    ; @extended = 1 - Array contains no information
    ; Author(s): Jarvis Stubblefield (support "at" vortexrevolutions "dot" com)
    ; Note(s):
    ;===============================================================================
    Func _ComputerGetSoftware(ByRef $aSoftwareInfo)
    Local Const $UnInstKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Local $i = 1
    Dim $aSoftwareInfo[1][4]

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

    While 1
    $AppKey = RegEnumKey($UnInstKey, $i)
    If @error <> 0 Then ExitLoop
    ReDim $aSoftwareInfo[UBound($aSoftwareInfo) + 1][4]
    $aSoftwareInfo[$i][0] = StringStripWS(StringReplace(RegRead($UnInstKey & "\" & $AppKey, "DisplayName"), " (remove only)", ""), 3)
    If $aSoftwareInfo[$i][0] = "" Then $aSoftwareInfo[$i][0] = $AppKey
    $aSoftwareInfo[$i][1] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "DisplayVersion"), 3)
    $aSoftwareInfo[$i][2] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "Publisher"), 3)
    $aSoftwareInfo[$i][3] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "UninstallString"), 3)
    $i += 1
    WEnd

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

    $aSoftwareInfo[0][0] = UBound($aSoftwareInfo, 1) - 1
    If $aSoftwareInfo[0][0] < 1 Then
    SetError(1, 1, 0)
    EndIf
    EndFunc

    [/autoit]
  • OK, die ganze Sache hat sich grad erledigt. ^^

    Da es sich um ein Office 2007 Plug-In handelt, wirds etwas schwer, nur das Plug-In zu entfernen ;)

    Von daher wirds wohl darauf hinauslaufen, dass komplett Office deinstalliert werden muss.