Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Deinstallation via Batch bei ca 2000 PCs

Frage Entwicklung Batch & Shell

Mitglied: rolandsc7

rolandsc7 (Level 1) - Jetzt verbinden

24.07.2014 um 14:00 Uhr, 1670 Aufrufe, 9 Kommentare, 2 Danke

Hallo liebe Administratorinnen und Administratoren,

seit etwa drei Tagen quäle ich mich mit einem Problem herum. Vielleicht gibt es ja jemand unter euch der eine gute Idee hat. Ich möchte via Batch und AutoIt ein Programm Deinstallieren und danach eines installieren. Die PCs sind Testgeräte und alle User haben Administratoren Recht. Das hat natürlich zu Folge dass die Betriebssysteme alle unterschiedlich sind und im AppWiz.cpl keine einheitliche Reihenfolge existiert. Die PCs sind in keiner Domäne und somit nicht über GP konfigurierbar. Das ist auch so gewollt, das es Testsysteme sind. Ein Liefersystem um Updates zu integrieren gibt es, kann durch entpacken und ausführen einer Batch Datei initiiert werden. Das Programm welches ich deinstallieren möchte, hat je nach Zeitpunkt der Installation eine unterschiedliche InstallGuid, somit auch einen unterschiedlichen Install Pfad. Ich weiß aber das die Deinstallationsroutine sich in einen Unterverzeichnis in C:\PROGRAMME\INSTALLSHIELD INSTALLATION INFORMATION\ befindet und die Setup.ini einen Eintrag mit Beispielsweise "AppName=Wurstbrot mit Käse" hat. In der Setup.ini steht auch die "InstallGuid={314EEA6D-6A78-11B4-932F-00A0D02289CC}" was dem Unterverzeichnis entspricht: "C:\Programme\InstallShield Installation Information\{314EEA6D-6A78-11B4-932F-00A0D02289CC}\" Durch die Integration >"C:\Programme\InstallShield Installation Information\{314EEA6D-6A78-11B4-932F-00A0D02289CC}\setup.exe" -runfromtemp -l0x0409 -removeonly< kann ich das Programm zusammen mit AutoIt dann auch problemlos deinstallieren. Ausprobiert habe ich folgendes: for /F "delims=" %%a in ('dir /b /s Setup.ini') do (find "AppName=Wurstbrot mit Käse" "%%~fa" && "%%~fa">> datei.txt) dadurch stoppt das Batch nach Auffinden von "AppName=Wurstbrot mit Käse" aber es wird die datei.txt leider ohne Inhalt erstellt. Mit for /F "delims=" %%a in ('dir /b /s Setup.ini') do (find "AppName=Wurstbrot mit Käse" "%%~fa" >> datei.txt) bleibt die Batch nicht stehen und die datei.txt enthält:
C:\PROGRAMME\INSTALLSHIELD INSTALLATION INFORMATION\{314EEA6D-6A78-11B4-932F-00A0D02289CC}\SETUP.INI
AppName=Wurstbrot mit Käse

C:\PROGRAMME\INSTALLSHIELD INSTALLATION INFORMATION\{95A57DD4-BF61-4A15-9A7B-A1FF015AA145}\SETUP.INI

C:\PROGRAMME\INSTALLSHIELD INSTALLATION INFORMATION\{BB6A4928-5574-4CBF-9AC9-FC57C22F9212}\SETUP.INI
Jetzt stellt sich mir die Frage wie extrahiere ich die Pfadinformation ohne die --- und was passiert wenn die Information an 2. oder 3. Stelle steht. Gibt es die Möglichkeit wenn "AppName=Wurstbrot mit Käse" gefunden wurde, den Pfad der Setup.ini in eine Variable (z.B.: %pfad%) zu füllen und dann mit ""%pfad%"\setup.exe" -runfromtemp -l0x0409 -removeonly die Deinstallationsroutine zu starten.
Um das noch mal zu verdeutlichen, aus:
""%pfad%"\setup.exe" -runfromtemp -l0x0409 -removeonly
soll sich dann prinzipiell folgendes ergeben:
"C:\Programme\InstallShield Installation Information\{314EEA6D-6A78-11B4-932F-00A0D02289CC}\setup.exe" -runfromtemp -l0x0409 -removeonly

Uff, was für ein Roman, hatte die Hoffnung dass vielleicht einer nen guten Tipp für mich hat. Vielen Dank erst mal fürs lesen.

Mitglied: Rudbert
24.07.2014 um 14:27 Uhr
Hallo,


schau mal in die Registry unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall". Du könntest z.B. ein Batch- oder AutoIT-Skript schreiben, welches deine Software anhand des Namens aus diesem Baum sucht, und den Eintrag "UninstallString" oder "QuietUninstallString" ausführt.

PS: Warum nimmst du die PCs nicht in eine Domäne auf? Die User können sich ja trotzdem an den lokalen Maschinen anmelden mit lokalen Admins? Würde solche Mammutaufgaben sehr erleichtern :D


Mit freundlichen Grüßen
Bitte warten ..
Mitglied: rolandsc7
24.07.2014 um 14:59 Uhr
Hallo Rudbert,

Ja, Du hast recht, steht in der Registry und daher habe ich auch den Befehl zur Deinstallation (UninstallString):
"C:\Programme\InstallShield Installation Information\{314EEA6D-6A78-11B4-932F-00A0D02289CC}\setup.exe" -runfromtemp -l0x0409 -removeonly
Trotzdem habe ich das Problem, dass an allen Maschinen das Verzeichnis unterschiedlich ist. Die nächste Maschine könnte:
"C:\Programme\InstallShield Installation Information\{95A57DD4-BF61-4A15-9A7B-A1FF015AA145}\setup.exe" -runfromtemp -l0x0409 -removeonly
haben

Glaub mir, ich hätte die auch gern in einer Domäne, vor allem wegen WSUS, aber das ist nicht gewollt.

Trotzdem Danke.
Bitte warten ..
Mitglied: Dani
24.07.2014 um 15:41 Uhr
Moin,
du liest mit der Batch/Powershell den Wert des Schlüssels (Uninstall) aus und nimmst diesem im zweiten Schritt, zum deinstallieren.
Soweit zur Theorie...


Gruß,
Dani
Bitte warten ..
Mitglied: Rudbert
24.07.2014 um 16:21 Uhr
Hi,

so wie @Dani das geschildert hat hatte ich das gemeint; damit holt er auf jedem PC den (ja auf jedem PC unterschiedlichen) korrekten Uninstall-Befehl.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: 0x32f1
24.07.2014 um 16:24 Uhr
Wie wäre es damit: alle "setup.ini" durchsuchen und dann den Uninstall-String basteln:

01.
@ECHO OFF 
02.
REM 0x32f1 
03.
SETLOCAL ENABLEDELAYEDEXPANSION 
04.
IF DEFINED ProgramFiles(x86) (CD /D "%PROGRAMFILES(x86)%\InstallShield Installation Information") ELSE (CD /D "%PROGRAMFILES%\InstallShield Installation Information") 
05.
FOR /F "delims=" %%i IN ('DIR /B /S setup.ini') DO ( 
06.
  FIND "AppName=MyAppName" "%%i" 
07.
  IF "!ERRORLEVEL!"=="0" ( 
08.
    SET tempStr=%%i 
09.
	ECHO "!tempStr:~0,-10!\setup.exe" -runfromtemp -l0x0409 -removeonly 
10.
11.
)
Bitte warten ..
Mitglied: Snowman25
24.07.2014, aktualisiert um 16:55 Uhr
Hallo rolandsc7,

ist die Software unter wmic registriert?
Führe von einer Commandline
wmic product
aus.
Sollte es in dieser Liste vorhanden sein kannst du es mit
wmic product where "name like '%<wurstbrot>%'" call uninstall
aus einer admin-shell heraus deinstallieren.
% Ist ein Wildcard-charakter. Wenn du dies innerhalb einer Batch ausführen möchtest, musst du die %-Zeichen jeweils verdoppeln.

Gruß,
Snowman25
Bitte warten ..
Mitglied: rolandsc7
24.07.2014, aktualisiert um 18:47 Uhr
Hallo 0x32f1,
vielen Dank für Deine exzellente Lösung, klappt wie meine Bürotür, habe angepasst auf:
01.
@ECHO OFF 
02.
REM 0x32f1 der Beste aller Admins 
03.
SETLOCAL ENABLEDELAYEDEXPANSION 
04.
IF DEFINED ProgramFiles(x86) (CD /D "%PROGRAMFILES(x86)%\InstallShield Installation Information") ELSE (CD /D "%PROGRAMFILES%\InstallShield Installation Information") 
05.
FOR /F "delims=" %%i IN ('DIR /B /S setup.ini') DO ( 
06.
  FIND "Product=Wurstbrot mit Käse" "%%i" 
07.
  IF "!ERRORLEVEL!"=="0" ( 
08.
    SET tempStr=%%i 
09.
	ECHO "!tempStr:~0,-10!\setup.exe" -runfromtemp -l0x0409 -removeonly 
10.
11.
12.
 
13.
"!tempStr:~0,-10!\setup.exe" -runfromtemp -l0x0409 -removeonly
Darf ich Dir noch eine Frage, wegen dem Verständnis stellen? Wie integriere ich die Variable %%i in einen Verzeichnispfad. (Beispiel mit anderem Ansatz: Registry) Selbst mit Notepad ++ und der farbigen Markierung krieg ich das trotz deinem Beispiels nicht gedrechselt. Manno bin ich doof!!!!
01.
@echo off &setlocal 
02.
 
03.
set "name=Wurstbrot Wurst Brot 20.10.05 (C:\\Programme\\Wurstbrot\\Wurstbrot Wurst 20.10.05)" 
04.
for /f "tokens=7 delims=\" %%i in ( 
05.
  'reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"^|findstr /riec:"\\Uninstall\\{[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}"' 
06.
) do ( 
07.
  for /f "tokens=2*" %%j in ( 
08.
    'reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%%i" /v "DisplayName" 2^>nul^|findstr /iec:"%name%"' 
09.
  ) do echo %%i  
10.
)
Weder mit :
"C:\Programme\InstallShield Installation Information\!%%i!\setup.exe" -runfromtemp -l0x0409 -removeonly
noch mit :
01.
  IF "!ERRORLEVEL!"=="0" ( 
02.
    SET pfad=%%i 
03.
	ECHO "!pfad:~0,-10!\setup.exe" -runfromtemp -l0x0409 -removeonly 
04.
05.
)
"C:\Programme\InstallShield Installation Information\!pfad:~0,-10!\setup.exe" -runfromtemp -l0x0409 -removeonly
bekomme ich die Variable integriert. Dein Setup.ini funktioniert ja, aber ich verstehe die Mechanik dahinter noch nicht.
Bitte warten ..
Mitglied: rolandsc7
24.07.2014 um 18:26 Uhr
Hallo Snowman25,

leider wird mit

wmic product list

das Programm nicht aufgelistet. Das wäre eine elegante (weil einfach nur eine Zeile) Lösung.

Trotzdem Danke euch allen, für die Geduld und Hilfe, schönen Feierabend.

Gruß,
Roland
Bitte warten ..
Mitglied: 0x32f1
25.07.2014 um 07:32 Uhr
Der Trick dabei ist die dritte Zeile:

01.
SETLOCAL ENABLEDELAYEDEXPANSION
Näheres siehe z.B. http://www.netikka.net/tsneti/info/tscmd158.htm

mit ":~0,-10" werden nur die letzten 10 Zeichen abgeschnitten, weil im tempStr ja der Pfad zur Setup.ini steht. 9 würden zwar auch reichen, aber so können wir - der Übersicht halber - den Backslash vor der setup.exe im neu zusammengebauten String selber setzen. Genauer betrachtet würde in deinem Fall auch reichen:

01.
SET tempStr=%%i  
02.
ECHO "!tempStr:~0,-3!exe" -runfromtemp -l0x0409 -removeonly 
um nur "ini" abschneiden und "exe" anhängen.

Wenn du jetzt beispielsweise nur die ID brauchst, kannst du den String natürlich von vorne auch noch abschneiden, etwa

01.
ECHO "!tempStr:~52,-3!exe" -runfromtemp -l0x0409 -removeonly 
bzw. dann direkt in deine REG QUERY einbauen

01.
'reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!tempStr:~52,-10! /v "DisplayName" 
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
gelöst PCs über eine Batch Datei nach 2 Tagen Laufzeit automatisch herunterfahren (12)

Frage von Karsten70154 zum Thema Windows 10 ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (2)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...