<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>You searched for Abort - Workplace Management Blog</title>
	<atom:link href="https://www.wpm-blog.de/search/Abort/feed/rss2/" rel="self" type="application/rss+xml" />
	<link>https://www.wpm-blog.de/</link>
	<description>... ideas and solutions making workplace management easier</description>
	<lastBuildDate>Wed, 19 Nov 2025 13:36:38 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.7</generator>
	<item>
		<title>Dialog zum Schließen von Programmen</title>
		<link>https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/</link>
					<comments>https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sun, 16 Jul 2023 18:00:35 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Prozesse]]></category>
		<category><![CDATA[Setup.inf]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2881</guid>

					<description><![CDATA[<p>Es gibt Anwendungen, diese können nicht ordnungsgemäß aktualisiert oder entfernt werden, wenn diese noch geöffnet sind. So gibt es Installationsroutinen die fordern den Benutzer bei einer interaktiven Installation oder Deinstallation auf, die Anwendung zu schließen. &#8230; <a href="https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/">Dialog zum Schließen von Programmen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Es gibt Anwendungen, diese können nicht ordnungsgemäß aktualisiert oder entfernt werden, wenn diese noch geöffnet sind. So gibt es Installationsroutinen die fordern den Benutzer bei einer interaktiven Installation oder Deinstallation auf, die Anwendung zu schließen. Bei der Softwareverteilung und somit der &#8222;silent&#8220; Installation bzw. Deinstallation, schlagen diese dann fehl oder führen nur eine teilweise Deinstallation oder Aktualisierung aus. Die noch im Zugriff befindlichen Dateien werden dann nicht aktualisiert bzw. entfernt.<span id="more-2881"></span></p>
<p>Wie können wir darauf in der Softwareverteilung bzw. der Paketierung darauf reagieren?<br />
Wie kann ich das in der Matrix42 Empirum Setup.inf handhaben?</p>
<h3>Die harte Methode</h3>
<p>Wenn also ein geöffnetes Programm stört, dann beenden wir es halt vor der Installation. Nehmen wir für die nächsten Beispiele an, es geht um Microsoft Visio. Man kann das in Windows enthaltene Tool TaskKill.exe nutzen und damit den Prozess beenden. In der Empirum Setup.inf würde der Befehl grob wie folgt ausschauen:<br />
Callhidden TaskKill.exe /IM visio.exe /F<br />
Es gibt jedoch auch einen Setup.inf eigenen Befehl:<br />
Killprocess visio.exe<br />
Beide haben gemeinsam, sie beenden sofort den laufenden Prozess und gehen in der Installationsabfolge weiter. Was aber, wenn der Benutzer gerade die letzten Minuten oder Stunden Änderungen in seinem Visio-Diagramm vorgenommen hat? Diese Änderungen &#8222;darf&#8220; der Benutzer höchstwahrscheinlich mit der neuen Visio Version erneut durchführen.</p>
<h3>Sanftere Methoden</h3>
<p>Die sanftere Methode ist, mit dem Benutzer zu interagieren. Dies geht in der Empirum Setup.inf über den Befehl AsKillProcesses und der dazugehörigen [Processes] Sektion. In der [Processes] Sektion wird konfiguriert, bei welchem Prozess, welcher Name in der GUI angezeigt wird und wie nach dem Ablauf des Timeouts (des AskKillProcesses  Befehls) verfahren werden soll. Während des TimeOut&#8217;s hat der Benutzer die Möglichkeit die Anwendung selbsttätig zu schließen. Die Installation wird direkt nach dem Schließen durch den Anwender fortgesetzt. Reagiert der Benutzer während der Timeout Zeit nicht auf den angezeigten Dialog zum Schließen der Anwendung, bestimmt der Parameter CONTINUE oder ABORT, ob das Paket &#8222;Abgebrochen&#8220; wird, oder die Installation fortgesetzt wird. Bei einem Abbruch wird dies auch mit der entsprechenden Meldung in der Management Console signalisiert.</p>
<pre>[Processes]
;---beenden des Processes visio.exe nach dem Timeout (hier 300) und mit der Installation voranschreiten
VisioProc=visio.exe, Microsoft Visio, KILLPROCESS CONTINUE
;---Alternativ: KEIN beenden des Processes visio.exe nach dem Timeout (hier 300) und Abbrechen der Installation
;VisioProc=visio.exe, Microsoft Visio, KILLPROCESS ABORT

[CheckOpenProcesses]
AskKillProcesses 300, VisioProc
-AskKillProcesses 300, VisioProc

[Product]
#CheckOpenProcesses, DONTDELETE
...
#CheckOpenProcesses, DELETE</pre>
<div class="grey-box"> <strong>Hinweise:</strong> Man sollte eine entsprechende Zeit zum Interagieren als Timeout nutzen. Das Wort VisioProc wurde hier explizit gewählt, um zu zeigen, dass dies der Verbinder zwischen dem AskKillProcesses Befehl und der [Processes] Sektion ist. Der Name kann auch nichts mit der Anwendung zu tun haben! AskKillProcesses ist sehr &#8222;freundlich&#8220; für den Anwender. Dies hilft ihm jedoch nicht, wenn er die Anwendung gar nicht kennt oder mit dieser keine Berührungspunkte hat, wie z.B. eine Anwendung, die vorwiegend im TaskTray &#8222;schlummert&#8220;. </div>
<h3>Weitere Hilfe</h3>
<p>Man kann auch auf einen Fenstertitel reagieren und anschließend das entsprechende Fenster schließen, etc. Dies ist in der <a href="https://helpfiles.matrix42-web.de/2025_DE/M42_WebDocu.htm#WM/UEM/SWM/SETUP/Referenz/Sections/SETUP_Section_16_Processes.htm" target="_blank" rel="noopener">Empirum Online Hilfe</a> ausgiebig erläutert.</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/">Dialog zum Schließen von Programmen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/dialog-zum-schliessen-von-programmen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum Setup.inf &#8211; Reparatur Unattended Setup</title>
		<link>https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/</link>
					<comments>https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sun, 02 Jul 2023 17:46:31 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Setup.inf]]></category>
		<category><![CDATA[Unattended]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2877</guid>

					<description><![CDATA[<p>Vor einiger Zeit hatte ich eine Serie begonnen, die unattended.inf Paketvorlage zu verbessern. Dazu hatte ich bereits zwei Blog Beiträge geschrieben. Leider hatte mich die mangelnde Zeit etwas vom Pfad abgebracht, diese Serie weiter zu &#8230; <a href="https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/">Empirum Setup.inf &#8211; Reparatur Unattended Setup</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vor einiger Zeit hatte ich eine Serie begonnen, die unattended.inf Paketvorlage zu verbessern. Dazu hatte ich bereits zwei Blog Beiträge geschrieben. Leider hatte mich die mangelnde Zeit etwas vom Pfad abgebracht, diese Serie weiter zu vervollständigen. Diesem will ich nun nachkommen. <span id="more-2877"></span>Wer diese Beiträge noch nicht gelesen hatte, dem stelle ich diese Beiträge hier nochmals vor:</p>
<ul>
<li>https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/</li>
<li>https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/</li>
</ul>
<h3>Reparatur Logik</h3>
<p>Das Resultat wird, je nach Betrachtung, nicht das Optimum darstellen. Meines Erachtens ist dies jedoch schon ein gutes Stück weiter als das Original. Wir betreiben also etwas Tuning :). In diesem Beitrag soll es um die Reparatur gehen.<br />
Das Reparatur-Handling hilft uns &#8230;</p>
<ul>
<li>für die Reparatur einer Software durch Deinstallation und Neuinstallation</li>
<li>falls die Software zuvor anderweitig ggf. manuell installiert wurde, damit diese zuvor deinstalliert wird</li>
<li>falls die Software durch das Matrix42 Patch-Management vielleicht schon auf eine andere Version angehoben wurde</li>
</ul>
<h3>Grober Ablauf</h3>
<p>Die Reparatur setzt grob auf folgenden Ablauf:<br />
1) Erkennung, ob diese Software ggf. auch in einer anderen Version bereits installiert ist.<br />
2) Falls ja, entfernen dieser Installation.<br />
3) Anschließend wird mit dem &#8222;normalen Installationsablauf&#8220; fortgefahren.</p>
<h3>Anpassungen</h3>
<p>Der nachfolgende Code-Schnipsel kann in die unattended.inf übernommen werden, oder ihr wartet noch die nächsten zwei Artikel ab und übernehmt dann eine gesamte unattended.inf. Was wird noch folgen? Erkennung und Abfangen von geöffneten Programmen, sowie &#8222;verstecken&#8220; der originären Installation in der Systemsteuerung unter &#8222;Programme&#8220;.</p>
<p>Falls ihr diesen Schnipsel nutzt &#8230;</p>
<p>In der [Product] Sektion muss vor die Installation die<br />
#CheckExistingInstallation, DONTDELETE<br />
eingebaut werden.</p>
<p>Die Erkennung bzw. das Deinstallationsprogramm hinter der Variablen &#8222;VM_UnInstCMD&#8220; muss angepasst werden.</p>
<h3>Code-Schnipsel</h3>
<pre>[CheckExistingInstallation]
;---setzen der Variable mit dem Deinstallationsprogramm
Set VM_UnInstCMD=%ProgramFilesDirx86%\My Program\unins000.exe
;---falls das Deinstallationsprogramm vorhanden ist, dann springe in die Sektion zu Deinstallation
If DoesFileExist ("%VM_UnInstCMD%") == "1" Then "DoUninstallBeforeInstall" EndIf

[DoUninstallBeforeInstall]
;---führe die Deinstallation durch und warte zur Sicherheit 3 Sekunden
-Call "%VM_UnInstCMD%" /S
Sleep 3000
;---Wurde die Deinstallation erfolgreich durchgeführt und ist die Deinstallationsroutine entfernt worden? Falls nicht, melde einen Fehler.
If DoesFileExist ("%VM_UnInstCMD%") == "1" Then "ErrorOnUninstallBeforeInstall" EndIf

[ErrorOnUninstallBeforeInstall]
ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText% %VM_UnInstCMD%
Abort</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/">Empirum Setup.inf &#8211; Reparatur Unattended Setup</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/empirum-setup-inf-reparatur-unattended-setup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ErrorLevel Abfrage bei Unattended Installationen</title>
		<link>https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/</link>
					<comments>https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Mon, 19 Oct 2020 19:33:23 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2652</guid>

					<description><![CDATA[<p>Matrix42 liefert eine Setup.inf Vorlage mit, die für &#8222;Silent&#8220; Installationen von EXE Dateien genutzt werden kann. Diese Vorlage ist jedoch meines Erachtens sehr &#8222;rudimentär&#8220; und an einer Stelle sogar gefährlich bis falsch. In den kommenden &#8230; <a href="https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/">ErrorLevel Abfrage bei Unattended Installationen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Matrix42 liefert eine Setup.inf Vorlage mit, die für &#8222;Silent&#8220; Installationen von EXE Dateien genutzt werden kann. Diese Vorlage ist jedoch meines Erachtens sehr &#8222;rudimentär&#8220; und an einer Stelle sogar gefährlich bis falsch. In den kommenden Tagen möchte ich mit Euch diese Vorlage Stück für Stück verändern. Wahrscheinlich gibt es am Ende immer noch &#8222;Luft&#8220; nach oben, da jeder noch ein paar andere Vorstellungen, Vorlieben, etc. hat. Doch halten wir es Mal wie mit einer Fahrt in den Urlaub &#8211; &#8222;der Weg ist das Ziel&#8220;.<span id="more-2652"></span></p>
<h3>Welche Datei meine ich denn nun genau?</h3>
<p>Es geht um die Unattended.inf im Empirum\Configurator\Packages\Matrix42\Packaging Center\&lt;Version&gt;\Templates Ordner. Diese wird bei der Auswahl &#8222;Unattended&#8220; im Verlaufe des &#8222;Package Wizards&#8220; herangezogen.</p>
<h3>Erfolgsüberprüfung</h3>
<p>Nach dem &#8222;silent&#8220; Aufruf einer EXE Datei, wird eine, wie ich sie nenne, &#8222;Erfolgsüberprüfung&#8220; durchgeführt. Denn jede Setup.inf, die nicht mit einem &#8222;Abort&#8220; beendet wird, wird per se als Erfolg gewertet. Sprich, wir sollten nach dem Aufruf eines externen Programms (Setup.exe, Installer, etc.) überprüfen, ob eingetroffen ist, was wir erwarten würden. Andernfalls, kann ein Paket ein &#8222;Success&#8220; zurückmelden und die Software ist nicht installiert.</p>
<h3>ErrorLevel Abfrage in der Vorlage</h3>
<p>Die oben angesprochene Setup.inf Vorlage prüft deswegen nach einem Aufruf einer Installation den ErrorLevel ab. Weit verbreitet ist ein ErrorLevel mit dem Wert 0 ein Erfolg. Deswegen enthält die Vorlage auch die nachfolgende Zeile:</p>
<pre>If "%ErrorLevel%" &lt;&gt; "0" Then "SET:InstallationError" EndIf</pre>
<p>Doch was passiert, wenn die Installation z.B. einen Wert von 3010 zurückliefert? Ist dann ein Fehler aufgetreten? Nein. Der Wert 3010 bedeutet beispielsweise, die Installation war erfolgreich, doch es wird zusätzlich ein Neustart benötigt. Microsoft hat es mit den MSI Installern begonnen und einige haben diese Werte übernommen oder rufen in ihrer EXE Datei eine MSI Installation auf und geben den ErrorLevel der MSI Installation zurück.</p>
<h3>Anpassung</h3>
<p>Diese Anpassung setzt automatisch eine Neustart-Anforderung für dieses Paket und wertet den Rückgabewert von 3010 nicht als Fehler.</p>
<pre>If "%ErrorLevel%" == "3010" Then "RebootRequired" EndIf
If "%ErrorLevel%" &lt;&gt; "0" &amp; "%ErrorLevel%" &lt;&gt; "3010" Then "SET:InstallationError" EndIf

[RebootRequired]
SetReboot 1
-SetReboot 1</pre>
<p>Wer noch weiter gehen möchte, für z.B. VCRedist Installationen oder Updates, der kann zusätzlich noch den Wert 1638 (Another version of this product is already installed) überprüfen.</p>
<h3>ErrorLevel oder gibt es auch andere Methoden</h3>
<p>Der ErrorLevel ist nicht die einzig wahre Methode. Natürlich kannst Du auch überprüfen, ob es einen bestimmten Registry Wert nach der Installation gibt, den es zuvor nicht gibt. Eine Überprüfung, ob die Software in Form ihrer ausführbaren Date vorhanden ist, kann genauso gut sein. Zu diesen Abfragen kommen wir dann bei den nächsten Tipps. Falls Du bereits Neugierig bist, so kannst Du in der Hilfe nach DoesRegKeyExist oder DoesFileExists suchen. Die DoesRegKeyExist Abfrage ist auch in der MSI.inf (Vorlage für MSI Installationen) enthalten ;-).</p>
<p>&nbsp;</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/">ErrorLevel Abfrage bei Unattended Installationen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/empirum-errorlevel-abfrage-bei-unattended-installationen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>UAC Meldungen bei der Reinstallation von MSI Paketen</title>
		<link>https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/</link>
					<comments>https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Tue, 09 Dec 2014 19:14:27 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Software Management]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1444</guid>

					<description><![CDATA[<p>Seit geraumer Zeit kann es zu UAC Meldungen bei der Reinstallation von MSI Paketen kommen. Ich habe auch schon die Meldung bekommen das es auch bei Installationen passiert ist. Was ist der Hintergrund und wie &#8230; <a href="https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/">UAC Meldungen bei der Reinstallation von MSI Paketen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Seit geraumer Zeit kann es zu UAC Meldungen bei der Reinstallation von MSI Paketen kommen. Ich habe auch schon die Meldung bekommen das es auch bei Installationen passiert ist. Was ist der Hintergrund und wie kann sich behelfen.<span id="more-1444"></span></p>
<h3>MS14-049</h3>
<p>Microsoft hat im Oktober 2014 einen Patch unter der Bulletin ID <a title="MS14-049" href="https://technet.microsoft.com/en-US/en-En/library/security/ms14-049.aspx" target="_blank">MS14-049</a> veröffentlicht. Dieser Patch schließt eine Lücke im Windows Installer Dienst: &#8222;Vulnerability in Windows Installer Service Could Allow Elevation of Privilege&#8220;. Damit einhergehend werden für MSI Installationen neue Hash Werte ermittelt bzw. erstellt. Dies führt bei einer Reinstallation einer bereits installierten MSI Installation zu Problemen.</p>
<h2>Mögliche Abhilfen</h2>
<h3>Whitelisting der Installation</h3>
<p>Microsoft hat direkt Methoden zur Erstellung von Whitelist Einträgen, pro getätigter MSI Installation die repariert werden soll, angeboten. Bei dem Einsatz einer Softwareverteilung und einer Fülle an getätigter Software Installationen bereitet das keinen Spaß.<br />
Die Informationen dazu wurden <a title="KB2918614" href="http://support.microsoft.com/kb/2918614/de" target="_blank">hier</a> veröffentlicht.</p>
<h3>Patch zur Behebung des UAC Problems</h3>
<p>Im November wiederum wurde dann ein Hotfix veröffentlicht, der mit Hilfe eines Registry Keys generell die UAC Meldungen bei einem nicht vorhandenen MSI Hash Wert unterbinden soll.<br />
Dieser Hotfix samt Vorgehensweise ist <a title="KB3008627" href="http://support2.microsoft.com/kb/3008627" target="_blank">hier</a> veröffentlicht.</p>
<p>Die Vorgehensweise mit dem nachgelagerten Hotfix scheint eine sinnvolle Behebung bzw. Umgehung der Problematik zu sein. Doch auch diese Umgehung scheint nach Rückmeldungen nicht zu 100% zu funktionieren.</p>
<h3>Deinstallation des MS14-049</h3>
<p>Letztendlich bleibt einem bei allen oben getroffenen Maßnahmen und keinem Erfolg (UAC Meldung erscheint trotz aller Maßnahmen) nur noch die Deinstallation des Patches.<br />
Dies wiederum kann auch per Empirum geschehen. Dazu habe ich unten eine beispielhafte Deinstallationsroutine angehängt.</p>
<p>Ich drücke Euch die Daumen!</p>
<pre>[Product]
#CheckWUSA, DONTDELETE
#Set:Product, DONTDELETE

[CheckWUSA]
Set VM_WUSA=%HKLM,"SYSTEM\CurrentControlSet\Services\wuauserv","Start"%
If "%VM_WUSA%" == "4" Then "EnableWUSA" EndIf

[EnableWUSA]
CallHidden sc config "wuauserv" start= demand error= ignore

[Set:Product]
SET QFE=2918614
Addmeter -1
DEL "%TEMP%\qfe.txt"
Callhidden %comspec% /C ECHO %sysdate% %systime% - Searching for installed hotfix: %qfe% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"
Callhidden %comspec% /C wmic.exe qfe &gt;"%TEMP%\qfe.txt"
If DoesTextInFileExist ("%QFE%", "%TEMP%\qfe.txt") == "1" Then "UninstallQFE" ELSE "QFEnotExist" EndIf

[UninstallQFE]
Callhidden %comspec% /C ECHO %sysdate% %systime% - Installed hotfix found: %qfe% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"
Callhidden %comspec% /C ECHO %sysdate% %systime% - Uninstall hotfix: %qfe% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"
CallHidden sc config "wuauserv" start= demand error= ignore
Callhidden wusa /uninstall /kb:%QFE% /quiet /norestart
Set WusaError=%ErrorLevel%
IF %wusaError% == "3010" Then "RebootRequired" EndIf
Callhidden %comspec% /C ECHO %sysdate% %systime% - ErrorLevel: %WusaError% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"
Callhidden %comspec% /C wmic.exe qfe &gt;"%TEMP%\qfe.txt"
If DoesTextInFileExist ("%QFE%", "%TEMP%\qfe.txt") == "1" Then "SET:InstallationError" EndIf
Callhidden %comspec% /C ECHO %sysdate% %systime% - Successfully uninstalled hotfix: %qfe% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"
DEL "%TEMP%\qfe.txt"

[QFEnotExist]
Callhidden %comspec% /C ECHO %sysdate% %systime% - The following hotfix is not installed: %qfe% &gt;&gt;"%WINDIR%\TEMP\qfe_uninstall.log"

[RebootRequired]
SetReboot 1

[SET:InstallationError]
Callhidden %comspec% /C ECHO %sysdate% %systime% - Failed uninstall hotfix: %qfe% &gt;&gt;"%WINDIR%\TEM\qfe_uninstall.log"
ErrorLogMsg %ErrorText% %WusaError% %CallingText% wusa /uninstall /kb:%QFE% /quiet
Abort</pre>
<p>Setup.inf Beispiel zur Hotfix Deinstallation als Datei: <a  data-e-Disable-Page-Transition="true" class="download-link" title="Version 1.0" href="https://www.wpm-blog.de/download/1505/?tmstv=1784852017" rel="nofollow" id="download-link-1505" data-redirect="false" >
	MSHotfix_Uninstall	(955 Downloads	)
</a>
</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/">UAC Meldungen bei der Reinstallation von MSI Paketen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/uac-meldungen-bei-msi-paketen/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum: Einfacherer Zugriff auf detaillierte Fehler-Protokolle</title>
		<link>https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/</link>
					<comments>https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sun, 26 Oct 2014 14:54:09 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<category><![CDATA[Workplace Management]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1379</guid>

					<description><![CDATA[<p>Schlägt eine Installation eines Empirum Paketes fehl, so wird dies in der Management Console mit dem Status &#8222;Failed&#8220; im SWDepotLog und im Status versehen. Im erweiterten ErrorLog kann man ggf. noch den Fehlercode oder einen &#8230; <a href="https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/">Empirum: Einfacherer Zugriff auf detaillierte Fehler-Protokolle</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Schlägt eine Installation eines Empirum Paketes fehl, so wird dies in der Management Console mit dem Status &#8222;Failed&#8220; im SWDepotLog und im Status versehen. Im erweiterten ErrorLog kann man ggf. noch den Fehlercode oder einen kleinen Hinweis auf den möglichen Fehler bekommen. Doch häufig benötigt man den Zugriff auf die komplette Log Datei der Installation. Diese wiederum liegt lokal auf dem Computer. Warum?<span id="more-1379"></span></p>
<h3>Hintergrund</h3>
<p>Im Standard der Empirum Paket Vorlagen werden diese detaillierten Log Dateien von extern aufgerufenen Setup Routinen wie MSI und Unattended im %WINDIR%\Temp Ordner abgelegt. Schlägt eine Installation fehl, werden diese Log Dateien mit den Fehlern vorgehalten (nicht gelöscht) damit das Problem näher erörtert werden kann. Wenn nun Computer ausgeschaltet sind oder der Zugriff auf den Computer nicht sichergestellt ist (Notebook Benutzer, Firewall, etc.) kann derzeit jedoch keine weiterführende bzw. zeitnahe Analyse bezüglich des Problems stattfinden.</p>
<h3>Idee</h3>
<p>Ich habe mir dazu ausgedacht, dass im Fehlerfalle diese Log Dateien zusätzlich in das Log Verzeichnis des Agenten kopiert werden und dieser überträgt die Dateien auf den zentralen EmpirumServer. Dieser ist immer erreichbar und der Zugriff kann zentral gesteuert werden. Die Synchronisierung der Log Dateien wird über den EmpirumAgenten sichergestellt, da diese in einem Unterverzeichnis von C:\EmpirumAgent\Log abgelegt werden.</p>
<div class="grey-box"><strong>Hinweis:</strong> Es werden nur *.log Dateien vom EmpirumAgenten automatisch übertragen.</div>
<h3>Umsetzung</h3>
<p>Die nachfolgenden Beispiele sind ggf. auf die eigene Umgebung und das Agenten-Verzeichnis anzupassen.</p>
<h3><strong>Notwendige Setup.inf Anpassung</strong></h3>
<p>Dazu wurde folgende Änderung bzw. zusätzlichen Zeilen in der Setup.inf erstellt:</p>
<pre>[Environment]
MSILogFileName=MSI_%ProductName%.%Version%.%Revision%.log
MSILogFile=%Temp%\%MSILogFileName%
ErrorMsgSyncDir=C:\EmpirumAgent\Log\InstallErrors.CU\%Computername%

[AbortMSIInst]
CALLHIDDEN %COMSPEC% /C MD "%ErrorMsgSyncDir%"
COPY "%MSILogFile%" "%ErrorMsgSyncDir%\%MSILogFileName%"
ErrorLogMsg %ErrorLogMessage% ErrorLevel: %ErrorLevel%
Abort

[AbortMSIUnInst]
-Abort
-ErrorLogMsg %ErrorLogMessage% ErrorLevel: %ErrorLevel%
-COPY "%MSILogFile%" "%ErrorMsgSyncDir%\%MSILogFileName%"
-CALLHIDDEN %COMSPEC% /C MD "%ErrorMsgSyncDir%"</pre>
<h3><strong>Anpassung in der Management Console</strong></h3>
<p>Der Zugriff auf das zentrale Log Verzeichnis eines Computers kann über einen „Rechtsklick“ auf den Computer geschehen<strong>. </strong>Die Konfiguration wird über die Management Console, Extras, Eigenschaften unter „Externe Programme“ vorgenommen.</p>
<ul>
<li><span style="line-height: 1.8;">Zentrales Log Verzeichnis</span></li>
<li><span style="line-height: 1.8;">explorer \\%EmpirumServer%\configurator$\Log\InstallErrors.CU\%Computername%</span></li>
</ul>
<p>Das gezeigte Beispiel nutzt die EmpirumServer Variable. Hier muss ggf. der zentrale EmpirumServer eingetragen werden und das Support-Personal zum Lesen berechtigt werden.</p>
<h3>Bereinigung</h3>
<p>Die zyklische Bereinigung des zentralen Log Verzeichnisses muss derzeit von Hand durchgeführt werden.</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/">Empirum: Einfacherer Zugriff auf detaillierte Fehler-Protokolle</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/einfacherer-zugriff-auf-detaillierte-fehlerprotokolle/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum Setup.inf Skript vorzeitig verlassen</title>
		<link>https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/</link>
					<comments>https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Fri, 03 Jan 2014 17:59:33 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1174</guid>

					<description><![CDATA[<p>Wenn man die Empirum Setup-Routine (Setup.inf) vorzeitig verlassen möchte stehen einem derzeit vier Befehle mit unterschiedlicher Wirkung zur Verfügung. Nachfolgend sind die Möglichkeiten und ihre Besonderheiten mit Beispielen aufgeführt, damit man sicher zum &#8222;richtigen&#8220; Befehl &#8230; <a href="https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/">Empirum Setup.inf Skript vorzeitig verlassen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wenn man die Empirum Setup-Routine (Setup.inf) vorzeitig verlassen möchte stehen einem derzeit vier Befehle mit unterschiedlicher Wirkung zur Verfügung. Nachfolgend sind die Möglichkeiten und ihre Besonderheiten mit Beispielen aufgeführt, damit man sicher zum &#8222;richtigen&#8220; Befehl greift.<span id="more-1174"></span></p>
<ul>
<li><strong>EXIT</strong> &#8211; das Skript wird vorzeitig verlassen und die Installation wird als Erfolg gewertet. Reboot Anforderungen werden verarbeitet.</li>
<li><strong>ABORT</strong> &#8211; das Skript wird vorzeitig verlassen und die Installation wird als Fehler gewertet. In der Management-Console ist der Status &#8222;FAILURE&#8220; (Fehler aufgetreten). Das bedeutet, dass das Paket am Client immer wieder ausgeführt wird. Das wiederholte Ausführen wird ggf. durch die maximale Fehleranzahl, die der Agent (ab Empirum v15) zulässt, eingegrenzt. Wird ein Paket mit einem ABORT verlassen, werden Reboot (Reboot= bzw. SetReboot) Anforderungen des Skriptes an den Agenten verworfen!</li>
<li><strong>ABORTSILENT</strong> &#8211; das Skript wird vorzeitig verlassen und die Installation wird auf dem Client als Fehler gewertet. In der Management-Console ist der Status wiederum &#8222;SUCCESS&#8220; (erfolgreich). Das bedeutet, dass das Paket am Client immer wieder ausgeführt wird. Das wiederholte Ausführen wird ggf. durch die maximale Fehleranzahl, die der Agent (ab Empirum v15) zulässt, eingegrenzt. Wird ein Paket mit einem ABORTSILENT verlassen, werden Reboot (Reboot= bzw. SetReboot) Anforderungen des Skriptes an den Agenten verworfen!</li>
<li><strong>ABORTREBOOT</strong> &#8211; das Skript wird vorzeitig verlassen und die Installation wird auf dem Client als Fehler gewertet. In der Management-Console ist der Status &#8222;Reboot Pending&#8220; (Neustart ausstehend). Die Installation des Paketes wird nach dem durchgeführten Neustart erneut gestartet. Die Reboot Anweisungen werden somit nicht verworfen!</li>
</ul>
<p>Welchen Befehl nutzt man nun wann?<br />
Der <strong>Abort</strong> wird gerne genutzt, wenn die Überprüfung einer extern aufgerufenen Installation (MSI, Unatteded) überprüft wird und die Überprüfung auf den erwarteten Erfolg nicht erfüllt ist.<br />
Dies kann man sich in den Paketvorlagen MSI.inf und Unattended.inf ansehen.</p>
<p>Den <strong>EXIT</strong> Befehl kann man zum Beispiel nutzen, wenn man ein Paket vorzeitig beendet möchte, weil die Installation der Software ggf. bereits außerhalb von Empirum erfolgt ist.</p>
<p>Der <strong>AbortSilent</strong> wird genutzt, wenn ein Paket ggf. mehrmals aufgerufen werden muss, damit die eigentliche Installation der Software erfolgreich ist. Ein anderer Anwendungsfall ist zum Beispiel einen Benutzerteil o.ä. vorzeitig zu verlassen, weil die Voraussetzung (Programm noch nicht gestartet, &#8230;) noch nicht vorhanden ist.</p>
<p>Der <strong>AbortReboot</strong> wird ähnlich wie der AbortSilent eingesetzt, lässt jedoch auch zu das eine Reboot Anforderung nicht verworfen wird. Wenn zum Beispiel eine erfolgreiche Installation zuerst eine weitere Software Installation/Deinstallation und einen Neustart erfordert, muss man das Paket zwischenzeitlich mit einem AbortReboot verlassen. Nach dem Neustart wird dann das Paket nochmals ausgeführt und die ggf. zuvor fehlenden Voraussetzungen für eine erfolgreiche Installation sind nun erfüllt.</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/">Empirum Setup.inf Skript vorzeitig verlassen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/empirum-setup-inf-skript-vorzeitig-verlassen/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>HowTo: Akku oder Netzbetrieb unterscheiden</title>
		<link>https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/</link>
					<comments>https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Mon, 15 Apr 2013 17:37:57 +0000</pubDate>
				<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=949</guid>

					<description><![CDATA[<p>Bei einigen Installationen oder Änderungen am Computer, wie z.B. einem BIOS Update ist es wichtig, dass der Computer an der Steckdose (am Strom) angeschlossen ist und nicht nur vom eingebauten Akku betrieben wird. Die Installation, &#8230; <a href="https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/">HowTo: Akku oder Netzbetrieb unterscheiden</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2012/10/Information_48x48.png?x39343"><img decoding="async" loading="lazy" class="alignleft size-full wp-image-330" title="Information" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2012/10/Information_48x48.png?x39343" alt="" width="48" height="48" /></a>Bei einigen Installationen oder Änderungen am Computer, wie z.B. einem BIOS Update ist es wichtig, dass der Computer an der Steckdose (am Strom) angeschlossen ist und nicht nur vom eingebauten Akku betrieben wird. Die Installation, wie ein Windows Service Pack oder die BIOS Update Routine, fragen diesen Zustand ab,<span id="more-949"></span> doch dann kann es ggf. schon zu spät sein bzw. die Installation ist schon &#8222;mitten drin&#8220;. Für diesen Fall hatte ich bereits vor einiger Zeit bereits dieses kleine Tool geschrieben, was unter Windows XP wunderbar funktionierte. Vor kurzem wurde ich gefragt, ob ich diesbezüglich etwas hätte, aber es sollte unter Windows 7 x64 funktionieren. So holte ich das &#8222;alte&#8220; Tool raus und es funktionierte zu meiner Freude weiterhin. Ich habe die &#8222;GetPowerState.exe&#8220; jedoch dahingehend verändert, dass der Zustand &#8222;Netzbetrieb&#8220; oder &#8222;Batteriebetrieb&#8220; nun auch in dem 64bit Teil der Windows Registry gespeichert wird.</p>
<h2>Aufruf und Ergebnis</h2>
<p>Wie nutzt man nun das Tool während der Softwareverteilung? Dazu ruft man die GetPowerState.exe auf und prüft anschließend die Registry. Die GetPowerState.exe speichert das Ergebnis unter &#8222;HKLM\SOFTWARE\matrix42\ClientInfo\PowerState&#8220;. Hier werden die Eigenschaften &#8222;PowerState&#8220; und &#8222;BatteryState&#8220; gespeichert.</p>
<ul>
<li>PowerState kann die Werte &#8222;Battery&#8220; (Batteriebetrieb) oder &#8222;AC&#8220; (Netzbetrieb) annehmen.</li>
<li>BatteryState enthält den prozentualen Ladezustand der Batterie.</li>
</ul>
<p>Im Empirum Paket kann dies in der Setup.inf wie folgt abgeprüft werden:</p>
<pre>CALLHIDDEN "%SRC%\GetPowerState.exe"
IF %HKLM,Software\Matrix42\ClientInfo\PowerState,PowerState% &lt;&gt; "AC" THEN "ErrorHandling" EndIf

[ErrorHandling]
ErrorLogMsg "Computer is on battery. Exiting Script! | Computer ist nicht am Stromnetz angeschlossen. Script wird beendet!" 
AbortSilent</pre>
<p>GetPowerState.exe gibt es hier zum Download:<br />
<a  data-e-Disable-Page-Transition="true" class="download-link" title="" href="https://www.wpm-blog.de/download/1495/?tmstv=1784852017" rel="nofollow" id="download-link-1495" data-redirect="false" >
	GetPowerState	(1124 Downloads	)
</a>
<br />
MD5 Hash der Downloaddatei: D74C4B71639872DABA45C844584F609D38CE427C</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/">HowTo: Akku oder Netzbetrieb unterscheiden</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/howto-akku-oder-netzbetrieb-unterscheiden/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Fehler und ErrorLevel aus der Setup.inf</title>
		<link>https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/</link>
					<comments>https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 27 Mar 2013 08:58:18 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=891</guid>

					<description><![CDATA[<p>Niemand und nahezu nichts ist komplett fehlerfrei &#8211; doch man kann sich Stück für Stück verbessern! Bei der Erstellung von Software-Paketen, beim Verteilen von Software-Paketen oder Patches mit dem Patch-Management treten schon auch mal Fehler &#8230; <a href="https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/">Fehler und ErrorLevel aus der Setup.inf</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Niemand und nahezu nichts ist komplett fehlerfrei &#8211; doch man kann sich Stück für Stück verbessern! Bei der Erstellung von Software-Paketen, beim Verteilen von Software-Paketen oder Patches mit dem Patch-Management treten schon auch mal Fehler auf. Diese sollten natürlich in der Test und Pilotphase festgestellt und behoben werden. Die angezeigten Fehlermeldungen bzw. der ERRORLEVEL im SWDepot-Log der Management Console kann erste Aufschlüsse über den Fehler geben, und wie er behoben werden kann. Manche angezeigten &#8222;Fehler&#8220; sind auch gar keine. Wie ist damit umzugehen?<span id="more-891"></span></p>
<p>Die angezeigten ERRORLEVEL haben ihren Ursprung zumeist im Kommando Interpreter oder in den Installern. Unten angefügt habe ich zwei Tabellen mit den häufigsten Fehlermeldung. Diese Tabellen erheben jedoch keinen Anspruch auf Vollständigkeit.</p>
<h2>Was sind die gängigen Fehler und wie lassen sie sich beseitigen?</h2>
<p>Die ERRORLEVEL Meldungen rühren aus der Setup.inf des fehlerhaften Empirum Paketes.</p>
<p><strong>Fehler 2 oder 3</strong><br />
In diesem Fall ist zumeist ein Befehl falsch geschrieben, die Setup.exe ist zu alt für den genutzten Befehl, ein aufzurufendes Programm wurde versucht als Befehl zu interpretieren.</p>
<p><strong>Fehler 5</strong><br />
Kein Zugriff möglich oder auch Zugriff verweigert bedeutet zumeist, dass der Befehl aufgrund von nicht vorhandenen Berechtigungen fehlschlägt. In Empirum ist das zumeist, wenn in der Registry Änderungen durchgeführt werden sollen, zu der der Benutzer nicht berechtigt ist. Das können Änderungen im Bereich HKLM\SYSTEM, als auch HKCU\Software\Microsoft\Policies sein. Der Benutzer hat zwar Berechtigungen auf den HKCU Zweig, jedoch nicht im Bereich der Policies, denn diese soll er ja auch nicht &#8222;manipulieren&#8220; können.</p>
<p><strong>Fehler 1602</strong><br />
Dieser Fehler rührt vom Windows Installer und bedeutet, dass der Benutzer die &#8222;Abbrechen&#8220; Schaltfläche des MSIEXEC Dialoges betätigt hat. Diese Schaltfläche kann mit dem &#8222;!&#8220; entfernt werden, wie z.B. /qb-! oder /qr!. Nutzt man direkt /qn &#8211; so wird nichts angezeigt, auch nicht die &#8222;Abbrechen&#8220; Schaltfläche.</p>
<p><strong>Fehler 1603</strong><br />
Der &#8222;1603&#8220; ist der beliebteste Fehler unter den Software-Paketieren, denn er bedeutet soviel wie &#8222;Es ist ein schwerwiegender Fehler aufgetreten&#8230;&#8220;. Das heißt soviel wie alles und nichts! Hier kann man dem Fehler nur durch Analyse des MSI Logs näher kommen. Das Log wird im Standard in den %TEMP% Ordner des jeweiligen Computers geschrieben und beginnt mit MSI_. Wenn die Installation mit dem Empirum Advanced Agent durchgeführt wird, so ist die Datei im Ordner %WinDir%\TEMP wiederzufinden. Häufig wird der Fehler am Ende des Logs angezeigt, das man sehr einfach mit STRG+ENDE anspringen kann.</p>
<p><strong>Fehler 0</strong><br />
Warum ist der ERRORLEVEL 0 ein Fehler? Wieso wird das Paket als fehlerhaft in der Console angezeigt bzw. läuft immer wieder, obwohl alles &#8222;gut&#8220; aussieht und das Programm auch funktioniert? Dies liegt häufig damit zusammen, dass in Empirum Software-Paketen in denen externe Installer (Hersteller-Setups) aufgerufen werden, auch anschließend eine &#8222;Erfolgsüberprüfung&#8220; stattfindet. Da man nicht weiß, ob die Hersteller-Setuproutine das gemacht hat was man von ihr erwartet, prüft man im Anschluß den Erfolg durch die Überprüfung auf das Vorhandensein von Registry Einträgen, Dateien oder Texte in Dateien. Können die zu erwartenden Prüfpunkte nicht erfolgreich geprüft werden, so verzweigt die Installationsabfolge in der Setup.inf in eine Sektion, in der die Empirum Installation mit &#8222;Abort&#8220; abgebrochen wird. Der Fehler 0 tritt sehr gerne in MSI Paketen auf.</p>
<p>Folgendes ist zu prüfen bzw. anzupassen:</p>
<ul>
<li>Ist der UninstallString in der Registry unterhalb der GUID vorhanden? (Änderung auf InstallDate hilft häufig.)</li>
<li>Ist es überhaupt die richtige GUID die abgeprüft wird?</li>
<li>Wird die ReInstSuccessMessageXXXX in dem MSILogFile richtig geprüft? Die aktuellen MSI Vorlagen prüfen 4 ReInstSuccessMessages, da sich die Meldungen mit der Aktualisierung der MSIExec Version geändert haben. Dieser Fehler tritt auch gerne beim Testen der Windows XP Pakete unter Windows 7 auf. Abhilfe schafft hier die Übernahme der 4 ReInstSuccessMessages und das Anpassen der Überprüfung (IF &#8230;) in der RepairMSI Sektion. Die Vorlage liefert die aktuelle MSI.inf.</li>
</ul>
<h2><strong>Liste von Fehlermeldungen bzw. ERRORLEVEL Werten</strong></h2>
<p><strong>Fehler &#8211; Beschreibung</strong><br />
0 &#8211; Fehlerfrei<br />
2 &#8211; Datei nicht vorhanden<br />
3 &#8211; Pfad nicht gefunden<br />
5 &#8211; Kein Zugriff möglich<br />
6 &#8211; Ungültiger Zugriff/ungültiges Handle<br />
8 &#8211; Zu wenig Speicher<br />
10 &#8211; Ungültiger Bereich/ungültige Environment Variablen<br />
11 &#8211; Ungültiges (Befehls-)Format</p>
<p><strong>MsiExec.exe und InstMsi.exe Fehlermeldungen<br />
</strong><a title="MsiExec.exe and InstMsi.exe Error Messages (Windows)" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa376931(v=vs.85).aspx" target="_blank">Hier </a>geht es zur Microsoft Seite mit der vollständigen Liste der &#8222;MsiExec.exe and InstMsi.exe Error Messages (Windows)&#8220;</p>
<p><strong>Wert &#8211; Fehler-Code &#8211; Beschreibung</strong><br />
0 &#8211; ERROR_SUCCESS &#8211; Die Installation war erfolgreich.<br />
1602 &#8211; ERROR_INSTALL_USEREXIT &#8211; Der Benutzer hat die Installation abgebrochen.<br />
1603 &#8211; ERROR_INSTALL_FAILURE &#8211; Es ist ein schwerwiegender Fehler während der Installation aufgetreten.<br />
1642 &#8211; ERROR_PATCH_TARGET_NOT_FOUND Der Patch kann nicht installiert werden, weil die zu aktualisierende Software nicht installiert ist.<br />
3010 &#8211; ERROR_SUCCESS_REBOOT_REQUIRED Die Installation war erfolgreich, benötigt jedoch einen Neustart!</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/">Fehler und ErrorLevel aus der Setup.inf</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/fehler-und-errorlevel-aus-der-setup-inf/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title>Suchen und Ersetzen in der Registry</title>
		<link>https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/</link>
					<comments>https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Tue, 05 Mar 2013 17:39:09 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Paketierung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=847</guid>

					<description><![CDATA[<p>Für Änderungen in der Registry gibt es seitens Empirum und dem Betriebssystem einige Möglichkeiten. Diese habe ich hier bereits erläutert. Die Sektion &#8222;REG:&#8220; lässt nahezu keine Wünsche offen. Durch Einführung des ReplaceRegValue Befehls ist es &#8230; <a href="https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/">Suchen und Ersetzen in der Registry</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Für Änderungen in der Registry gibt es seitens Empirum und dem Betriebssystem einige Möglichkeiten. Diese habe ich <a title="Empirum Paket – Registry ändern" href="https://www.wpm-blog.de/empirum-paket-registry-aendern/">hier</a> bereits erläutert. Die Sektion &#8222;REG:&#8220; lässt nahezu keine Wünsche offen. <span id="more-847"></span>Durch Einführung des ReplaceRegValue Befehls ist es auch möglich Änderungen vorzunehmen, ohne den gesamten Registry Eintrag zu kennen. Will man nun jedoch einen Wert ändern, ohne genau zu wissen, wo er in der Registry steht hilft eigentlich nur noch ein &#8222;Suchen und Ersetzen&#8220;. Mit einem älteren Windows Resource Kit gab es einmal ein &#8222;regfind&#8220; Befehl, der neben dem Suchen auch das Setzen ermöglichte. Doch dieser Befehl arbeitet in den heutigen Umgebungen nicht zuverlässig genug. Die nachfolgende Möglichkeit arbeitet bereits sehr global, hat jedoch meines Erachtens den einzigen Nachteil, des es keine Einträge vom Typ REG_BINARY auffinden und ersetzen kann.</p>
<p>Die hier beschriebene Methode kann natürlich auch im Maschinenteil zur Anpassung von HKEY_LOCAL_MACHINE Einträgen genutzt werden. Dazu müssen jedoch Anpassungen vorgenommen werden.</p>
<pre>[Set:Product]
#Set:User, CLIENT

[Set:User]
Set HKCURegTree = HKEY_CURRENT_USER\Software\Hersteller
Set HKCURegFile = "%TEMP%\hkcu.reg"
Set SearchString = "Alt"
Set ReplaceString = "Neu"
CALLHIDDEN regedit.exe /E %HKCURegFile% %HKCURegTree%
ReplaceTextFile (%HKCURegFile%, %SearchString%, %ReplaceString%, 0)
CALLHIDDEN regedit.exe /S %HKCURegFile%
If %ErrorLevel%&lt;&gt;0 Then Set:CUError EndIf
Del %HKCURegFile%</pre>
<pre>[Set:CUError]
ErrorLogMsg Error: %ErrorLevel% : Error changing Registry
Abort</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/">Suchen und Ersetzen in der Registry</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.wpm-blog.de/suchen-und-ersetzen-in-der-registry/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Page Caching using Disk: Enhanced 
Minified using Disk
Database Caching 50/78 queries in 0.019 seconds using Disk

Served from: www.wpm-blog.de @ 2026-07-24 01:13:37 by W3 Total Cache
-->