Avatar billede scoredyr Nybegynder
06. marts 2009 - 07:40 Der er 9 kommentarer og
1 løsning

Uninstall script

hejsa
Jeg håber der er er nogle kodekarle det kan hjælpe..
jeg skal bruge et script der kan afinstallere en stak programmer, men jeg har kun "display name" fra regdbasen at arbejde med.
og jeg har et problem for det script jeg har klippet og kopieret i har en const variabel ´jeg bare ikke aftter at få fjernet.
det drejer sig on 25 programmer der skal afinstalleres på 100 maskiner og det er ikke alle maskiner der har alle programmerne installeret... jeg har lavet en paste af det script jeg egentlig havde i tankerne. men man kan ikke bare kopiere / paste igen og igen i det samme scrpit pga den const variabel.. kan i hjælpe...

On Error Resume Next

'**********************************************************************
const AppName = "Det er jo så her hvor der er flere applikationer der skal afinstalleres"
'**********************************************************************

const HKEY_LOCAL_MACHINE = &H80000002

Set WshShell = WScript.CreateObject("WScript.Shell")

'First, find the GUID
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_
    strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
    InstalledAppName = ""
    InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")

    If InStr(InstalledAppName, AppName) > 0 then
    RawGUID = ""
    GUID = ""
        RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString")
        GUID = Mid(RawGUID, instr(RawGUID, "{"), 38)
    If GUID<>"" then
        ' Found matching GUID, removing...
                WshShell.Run "msiexec /x " & GUID & " /q"
        Exit For
    End If
    End If
Next




Håber lidt at der ern nogen der kan hjælpe :) rimeligt hurtigt :)
Avatar billede Slettet bruger
06. marts 2009 - 08:25 #1
hvad med at ændre Const til Dim ?
Avatar billede scoredyr Nybegynder
06. marts 2009 - 08:32 #2
Gør jeg det er det som om den ikke vil afvikle scriptet...
Avatar billede Slettet bruger
06. marts 2009 - 08:53 #3
næ, du skal vel tildele en ny værdi efter hvert gennemløb i løkken. Det kan jeg ikke se at du gør.
Avatar billede scoredyr Nybegynder
06. marts 2009 - 09:19 #4
jeps...
men jeg har ikke fået scriptet til at fungere...

den skal f.eks fjerne

adobe AIR
Adobe acrobat 8.1.3 Professional
Adobe registry key rights

Disse navne bliver jo som sagt fundet i regdatabasen. dette bliver vi nød til da der er så forbandet mange forskellige programmer, og de har selvfølgelig forskellige GUID. For at finde display name bruger jeg en liste som er blevet udarbejdet over mange maskiners add / remove programs..


så hvis man "bare" kunne få den til at ændre const hver gang den har kontrolleret om programmet findes når den leder regdbasen igennem så vil det være fedt... men jeg har forsøgt med at lave en set istedet for const men så laver den ikke en afinstallation...
Avatar billede Slettet bruger
06. marts 2009 - 10:07 #5
Hvorfor virker det ikke med Dim AppName ? Mister den værdien eller er det bare skummelt?
Man kan jo ikke ændre en værdi af typen Const

Hvad med array?

Public myArray(3)
AppName = Array("Q1", "Q2", "Q3", "Q4")

For Each Q in AppName
    wscript.echo Q
Next
Avatar billede scoredyr Nybegynder
09. marts 2009 - 09:11 #6
det vil sige noget som dette ?? For det syntes jeg nemlig ikke at kunne få til at fungere..


On Error Resume Next

const HKEY_LOCAL_MACHINE = &H80000002
Public myArray(3)
AppName = Array("program 1", "program 2", "", "Og så videre")

For Each AppName in AppName

Set WshShell = WScript.CreateObject("WScript.Shell")

'First, find the GUID
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_
    strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
    InstalledAppName = ""
    InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")

    If InStr(InstalledAppName, AppName) > 0 then
    RawGUID = ""
    GUID = ""
        RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString")
        GUID = Mid(RawGUID, instr(RawGUID, "{"), 38)
    If GUID<>"" then
        ' Found matching GUID, removing...
                WshShell.Run "msiexec /x " & GUID & " /q"
        Exit For
    End If
    End If
Next
Avatar billede morten_leth Nybegynder
16. marts 2009 - 18:07 #7
On Error Resume Next

'**********************************************************************
'const AppName = "Program"
ArrAppName = Array("Program 1", "Program 2")
'**********************************************************************

const HKEY_LOCAL_MACHINE = &H80000002

Set WshShell = WScript.CreateObject("WScript.Shell")

'First, find the GUID
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each appname In ArrAppName
    For Each subkey In arrSubKeys
        InstalledAppName = ""
        InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
       
        If InStr(InstalledAppName, AppName) > 0 Then
            'WScript.Echo InstalledAppName
            RawGUID = ""
            GUID = ""
            RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString")
            GUID = Mid(RawGUID, instr(RawGUID, "{"), 38)
            if GUID<>"" Then
                ' Found matching GUID, removing...
                WshShell.Run "msiexec /x " & GUID & " /q"
                  Exit For
            End If
        End If
    Next
Next

Hvad med denne her?
Fungere den for dig?

Du laver i det eksempel du kommer med der, et opslag i et array hvor du vil have udputtet af arrayet ind i samme variabel, det kan jeg godt forestille mig kollidere. :D

On error resume Next er god at bruge bare ikke når man vil finde ud af hvad det egentlig er der fejler i et script.

Jeg har lige testet det her hos mig og der fungere det.

En anden ting er du skriver du ikke kan fjerne din const, en const er egentlig blot en variabel som er konstant, det er derfor den hedder const det fordi det er meningen den skal være ens igennem hele scriptet, og der man bruger consts er som du selv gør i starten for at give eks. HKEY_LOCAL_MACHINE et navn som er til at skrive og huske, hvis du havde skrevet den hex værdi, kan det godt være du lige i det øjeblik du skriver den ved hvad det betyder men det jo ikke sikkert du ved det om et halvt år.

Sig til om det virker.
Avatar billede scoredyr Nybegynder
17. marts 2009 - 14:04 #8
Det virker, tilsyneladende godt nok. Super, men en ting jeg havde glæmt det er ikke alle der kan afinstalleres, på den måde da det jo ikke er alle de rer installeret gennem windows inatalleren :) men hvad det her fungerer indtil videre :) Så hermed er spørgsmålet lukket takker mange gange.
Avatar billede morten_leth Nybegynder
17. marts 2009 - 14:23 #9
Ingen problem.. :D Du kunne jo evt. gøre det du kryptere dit vbscript og laver en runas i installationen... alt efter hvor meget du vil gøre ud af det kan du evt. lave en GPO der giver din runas bruger lokal admin.. derefter bruge encrypt fra microsoft til at kryptere dit script så ikke lige alle og enhver kan decryptere det... (det ikke 100% sikker løsning da alle kan decryptere med microsoft's tools meeen det gør da at menigmand ikke kan finde ud af det..)

http://www.microsoft.com/downloads/details.aspx?familyid=E7877F67-C447-4873-B1B0-21F0626A6329&displaylang=en
Avatar billede scoredyr Nybegynder
17. marts 2009 - 14:49 #10
Jeg takker igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester