<?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 uninstall - Workplace Management Blog</title>
	<atom:link href="https://www.wpm-blog.de/search/uninstall/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>Sun, 24 Nov 2024 17:00:52 +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>Empirum Setup.inf &#8211; Variablen</title>
		<link>https://www.wpm-blog.de/empirum-setup-inf-variablen/</link>
					<comments>https://www.wpm-blog.de/empirum-setup-inf-variablen/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Tue, 07 Nov 2023 16:22:05 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2888</guid>

					<description><![CDATA[<p>In der Empirum Setup.inf sollte man vorrangig Variablen anstatt absoluter Werte nutzen. Dies hilft, um auf verschiedene Betriebssystem-Versionen und Sprachen passend zu reagieren. Somit kann das erstellte Paket, im besten Falle, viele Jahre problemlos genutzt &#8230; <a href="https://www.wpm-blog.de/empirum-setup-inf-variablen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-variablen/">Empirum Setup.inf &#8211; Variablen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In der Empirum Setup.inf sollte man vorrangig Variablen anstatt absoluter Werte nutzen. Dies hilft, um auf verschiedene Betriebssystem-Versionen und Sprachen passend zu reagieren. Somit kann das erstellte Paket, im besten Falle, viele Jahre problemlos genutzt werden bzw. relativ problemlos eine Nachfolgeversion paketiert werden. Die Empirum Hilfe bietet eine große <a href="https://helpfiles.matrix42-web.de/2023_DE/M42_WebDocu.htm#WM/UEM/SWM/SETUP/Referenz/Sections/SETUP_Section_12_Environment.htm#EnvironmentVariables?TocPath=Unified%2520Endpoint%2520Management%257CEmpirum%257C-%2520Client%2520Software%2520-%257CSETUP%257CTechnische%2520Referenz%257CTabellen%257C_____7" target="_blank" rel="noopener">Tabelle</a> an Variablen, aber am Ende nutzt man zumeist immer wieder die Gleichen. Neben den Variablen, die Empirum in der Setup.inf bietet kann man jederzeit auch auf die <a href="https://www.wpm-blog.de/umgebungsvariablen/" target="_blank" rel="noopener">Umgebungsvariablen</a> des Systems zurückgreifen.<span id="more-2888"></span></p>
<h3>Variablen</h3>
<p>Nachfolgend sollten die meistgenutzten Variablen aufgeführt sein. Falls ihr eine Variable häufig nutzt, die hier nicht aufgeführt ist, so lasst es mich wissen.</p>
<table>
<tbody>
<tr>
<td><strong>Variable</strong></td>
<td><strong>Erklärung / Beispiel</strong></td>
</tr>
<tr>
<td>%Developername%</td>
<td>Wert der in der [Application] Sektion angegeben ist (z.B.: Adobe)</td>
</tr>
<tr>
<td>%ProductName%</td>
<td>Wert der in der [Application] Sektion angegeben ist (z.B.: Reader)</td>
</tr>
<tr>
<td>%Version%</td>
<td>Wert der in der [Application] Sektion angegeben ist (z.B.: 23.0)</td>
</tr>
<tr>
<td>%Revision%</td>
<td>Wert der in der [Application] Sektion angegeben ist (z.B.: 0)</td>
</tr>
<tr>
<td>%Src%</td>
<td>Verzeichnis parallel zum Install Verzeichnis (SrcDir=.. ein Verzeichnis &#8222;zurück&#8220; von dem Ablageort der Setup.inf).</td>
</tr>
<tr>
<td>%App%</td>
<td>Das Verzeichnis, dass unter ApplicationDir= in der [Application] Sektion angegeben ist.</td>
</tr>
<tr>
<td>%ProgramFiles% oder %ProgramFilesDir%</td>
<td>Beispiel: C:\Program Files</td>
</tr>
<tr>
<td>%ProgrammFiles(x86)% oder%ProgramFilesDirx86%</td>
<td>Beispiel: C:\Program Files (x86)</td>
</tr>
<tr>
<td>%AppData%</td>
<td>Beispiel: C:\Users\&lt;Benutzername&gt;\AppData\Roaming</td>
</tr>
<tr>
<td>%LocalAppData%</td>
<td>Beispiel: C:\Users\&lt;Benutzername&gt;\AppData\Local</td>
</tr>
<tr>
<td>%WinDir%</td>
<td>C:\Windows</td>
</tr>
<tr>
<td>%CommonPrograms%</td>
<td>Verzeichnis, in dem die Startmenü\Programme Verknüpfungen aller Benutzer abgelegt sind.</td>
</tr>
<tr>
<td>%CommonDesktop%</td>
<td>Verzeichnis, in dem die Desktop Verknüpfungen aller Benutzer abgelegt sind.</td>
</tr>
<tr>
<td>%UserPrograms%</td>
<td>Verzeichnis, in dem die Startmenü\Programme Verknüpfungen des angemeldeten Benutzer abgelegt sind.</td>
</tr>
<tr>
<td>%UserDesktop%</td>
<td>Verzeichnis, in dem die Desktop Verknüpfungen des angemeldeten Benutzer abgelegt sind.</td>
</tr>
<tr>
<td>%Programdata% oder %AllUsersProfile%</td>
<td>Gemeinsames Programmverzeichnis, z.B.: C:\ProgramData</td>
</tr>
<tr>
<td>%WindowsUser%</td>
<td>der angemeldete Windows Benutzer, ähnlich der Variable %Username%</td>
</tr>
<tr>
<td>%Computername%</td>
<td>Name des Computers</td>
</tr>
<tr>
<td>%ComSpec%</td>
<td>cmd.exe</td>
</tr>
</tbody>
</table>
<h3>Beispiele</h3>
<pre>Del "%CommonDesktop%\WinSCP.lnk"

Del "%CommonPrograms%\TotalCommander Repair und Uninstall.lnk"

Deltree "%ProgramFiles%\WinSCP"

Callhidden %ComSpec% /C Echo %%date%% %%time%% [Set:Product] Install or repair &gt;&gt;"%App%\Debug.log"

Copy "%Src%\filezilla.xml" "%App%\FileZilla.xml"

Copy "%App%\filezilla.xml" "%AppData%\FileZilla\FileZilla.xml"

</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-variablen/">Empirum Setup.inf &#8211; Variablen</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-variablen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Software in der Systemsteuerung verstecken</title>
		<link>https://www.wpm-blog.de/software-in-der-systemsteuerung-verstecken/</link>
					<comments>https://www.wpm-blog.de/software-in-der-systemsteuerung-verstecken/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sun, 09 Jul 2023 18:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Setup.inf]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2879</guid>

					<description><![CDATA[<p>Installiert man eine Software, wird diese anschließend in der Systemsteuerung unter Programme oder neuerdings unter Einstellungen, Apps, Installiert Apps angezeigt. Dies dient normalerweise dazu, dass man ein installierte Software anpassen oder deinstallieren kann. In einer &#8230; <a href="https://www.wpm-blog.de/software-in-der-systemsteuerung-verstecken/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/software-in-der-systemsteuerung-verstecken/">Software in der Systemsteuerung verstecken</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Installiert man eine Software, wird diese anschließend in der Systemsteuerung unter Programme oder neuerdings unter Einstellungen, Apps, Installiert Apps angezeigt. Dies dient normalerweise dazu, dass man ein installierte Software anpassen oder deinstallieren kann. In einer verwalteten oder neudeutsch &#8222;gemanagten&#8220; Umgebung wollen wir dies zum einen nicht, zum anderen kommt es beim Einsatz von Matrix42 Empirum ggf. dazu, das eine Software doppelt angezeigt wird.<span id="more-2879"></span></p>
<h3>Hintergrund</h3>
<p>Damit man eine Software mit Matrix42 Empirum verteilen kann, benötigt man ein Software-Paket. Dies muss im Falle von Matrix42 Empirum ein gewisses Format haben und ist am Ende eine Steuerdatei bzw. ein Skript mit dem Namen Setup.inf. Diese Setup.inf wird auch vom Matrix42 Package Wizard ein Paket erstellt, wenn man sich für die Installation einer MSI oder EXE, die unattended installiert werden kann, entscheidet. Der Vorteil ist, dass die Setup.inf neben der Fehler- bzw. Erfolgsbehandlung auch weitere Aufgaben übernehmen kann, die für diese Software nötig ist. Beispiele: Löschen der Desktop-Verknüpfung, Installation einer VCRedist vorab, Kopieren einer Datei danach, uvm.</p>
<h3>Warum nun doppelte Einträge?</h3>
<p>Die eben genannte Setup.inf ist im Ursprung eine Installationsroutine für Programme, die sich eben nicht &#8222;unattended&#8220; bzw. &#8222;silent&#8220; installieren lassen. Wenn man nun innerhalb der Setup.inf eine MSI oder EXE installiert, die selbst eine Installationsroutine mitbringt, haben wir eben zwei Installationsroutinen. Beide Installationsroutinen tragen sich in der Registry ein, womit sie dann in den oben genannten Dialogen erscheinen.</p>
<h3>Bei MSI Paketen ist dies nicht der Fall!</h3>
<p>Erstellt man mit dem Matrix42 Package Wizard ein Paket auf der Grundlage von MSI Quellen passiert das zumeist nicht &#8211; warum? In der MSI.inf Vorlage wird dem MSI Aufruf standardmäßig der Parameter ARPSYSTEMCOMPONENT=1 angehängt. Dieser MSI Parameter sorgt dafür, das die zu installierende Software anschließend mit dem Flag SYSTEMCOMPONENT versehen wird, welches die Anzeige in der Systemsteuerung bzw. unter Einstellungen unterdrückt wird: <a href="https://learn.microsoft.com/en-us/windows/win32/msi/arpsystemcomponent" target="_blank" rel="noopener">https://learn.microsoft.com/en-us/windows/win32/msi/arpsystemcomponent</a></p>
<h3>Was passiert da?</h3>
<p>Die Software bzw. die Anzeige in der Systemsteuerung bzw. unter Einstellungen wird zumeist über die Registry sichergestellt. Dazu legen die Installationsroutinen Einträge in den folgenden Registry Zweigen ab &#8230;<br />
64bit Programme bzw. Installationsroutinen:<br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</p>
<p>32bit Programme bzw. Installationsroutinen:<br />
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall</p>
<p>Erstellt man nun in einem Zweig einer entsprechenden Software einen Eintrag: <strong>SYSTEMCOMPONENT</strong> vom Typ: <strong>REG_DWORD</strong> und setzt dessen Wert: <strong>1</strong>, so wird diese Software anschließend nicht mehr angezeigt.</p>
<h3>Empirum Inventory</h3>
<p>Dieses verstecken der Software bezieht sich nur auf die Anzeige direkt am Computer! Das Empirum Inventory erfasst trotz alledem beide Einträge, was man auch eher als Vorteil sehen sollte.</p>
<h3>Unatteded.inf Anpassung</h3>
<p>In der Setup.inf können wir diesen Wert nach der Installation durch Empirum auch selbsttätig setzen und löschen. Dazu sind die folgenden Anpassungen in der unattended.inf notwendig. Anpassen des Reg:Product Aufrufes unter [Product]. Der wahrscheinlich vorhandene Parameter ,DONTDELETE ist zu entfernen.</p>
<pre>[Product]
...
#Reg:Product
...</pre>
<p>Die Reg:Product Sektion ist entsprechend der Software anzupassen&#8230;</p>
<pre>[Reg:Product]
;32bit - oder [Setup] Platform Wert entsprechend setzen!
;HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\&lt;SoftwareName&gt;,SystemComponent,0x00010001,1
;64bit
HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\&lt;SoftwareName&gt;,SystemComponent,0x00010001,1</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/software-in-der-systemsteuerung-verstecken/">Software in der Systemsteuerung verstecken</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/software-in-der-systemsteuerung-verstecken/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>Empirum Paket &#8211; Deinstallation ohne Quellen</title>
		<link>https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/</link>
					<comments>https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 21 Oct 2020 19:38:33 +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=2656</guid>

					<description><![CDATA[<p>Die Deinstallation eines Empirum Paketes sollte komplett lokal, ohne weiteren Zugriff auf die Installationsquellen, möglich sein. Die Zuweisung und Installation einer höheren Version mit dem Setup.inf Standardwert AskUninstallOld=1 setzt das schon fast voraus. Von Haus &#8230; <a href="https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/">Empirum Paket &#8211; Deinstallation ohne Quellen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Die Deinstallation eines Empirum Paketes sollte komplett lokal, ohne weiteren Zugriff auf die Installationsquellen, möglich sein. Die Zuweisung und Installation einer höheren Version mit dem Setup.inf Standardwert AskUninstallOld=1 setzt das schon fast voraus. Von Haus aus bringen die meisten Installer bereits ihre Deinstallationsroutine, in Form einer uninstall.exe im jeweiligen Programmverzeichnis, mit. Warum jetzt dieser Beitrag?<span id="more-2656"></span></p>
<h3>Unattended Uninstallation Dialog</h3>
<p>Wenn Du beim Nutzen des Package Wizards zum Erstellen einer &#8222;Unattended&#8220; sprich &#8222;Silent&#8220; Installation einer EXE an den Dialog zur Deinstallation kommst, kannst Du das &#8222;Basis Verzeichnis&#8220; nicht anpassen. In das Eingabefeld für das Deinstallationsprogramm kannst Du den Aufruf &#8222;C:\Program Files (x86)\My Program\unins000.exe&#8220; eintragen und den Assistenten erfolgreich beenden.</p>
<h3>Deinstallation schlägt fehl</h3>
<p>Die Tests zur Deinstallation des Programms im Rahmen der Paketierung schlagen fehl. Warum?</p>
<h3>Fehlersuche / Behebung</h3>
<p>Um herauszufinden, warum der Fehler auftritt, müssen wir uns die Abfolge der Befehle zur Deinstallation der Software in unserem erstellten Paket ansehen. Ein Blick in die Sektion [Set:Deinstallation] der Setup.inf, die für die Deinstallation zuständig ist, bringt den Fehler schnell zum Vorschein. Hier wird versucht, den folgenden Befehl auszuführen:</p>
<pre>-Call "<strong>%Src%\C:</strong>\Program Files (x86)\My Program\unins000.exe" /S</pre>
<p>Der Teil &#8222;%SRC%\C:\&#8230;&#8220; sieht nicht nur seltsam aus, sondern kann auch nicht funktionieren. Angepasst, sollte der Aufruf wie folgt ausschauen:</p>
<pre>-Call "C:\Program Files (x86)\My Program\unins000.exe" /S</pre>
<p>oder besser noch</p>
<pre>-Call "%ProgramFilesDirx86%\My Program\unins000.exe" /S</pre>
<p>Mit diesen Anpassungen sollte die Deinstallation nun erfolgreich durchgeführt werden.</p>
<h3>Anpassen der Vorlage</h3>
<p>Damit die Anpassung nicht immer wieder im erstellten Paket vorgenommen werden muss, passt man die Vorlage &#8222;Unattended.inf&#8220; (Empirum\Configurator\Packages\Matrix42\Packaging Center\&lt;Version&gt;\Templates) an. Dazu entfernt man aus der nachfolgenden Zeile:</p>
<pre>-Call "%Src%\{UnattDeInst}" {UnattDeInstPar}</pre>
<p>das %SRC%\ und macht daraus:</p>
<pre>-Call "{UnattDeInst}" {UnattDeInstPar}</pre>
<p>&nbsp;</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-paket-deinstallation-ohne-quellen/">Empirum Paket &#8211; Deinstallation ohne Quellen</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-paket-deinstallation-ohne-quellen/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum WinPE &#8211; Windows Installation</title>
		<link>https://www.wpm-blog.de/empirum-winpe-windows-installation/</link>
					<comments>https://www.wpm-blog.de/empirum-winpe-windows-installation/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 06 Nov 2019 21:39:04 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[OS Installer]]></category>
		<category><![CDATA[WinPE]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=2426</guid>

					<description><![CDATA[<p>Die Zutatenliste für eine erfolgreiche Windows Installation mittels des Empirum WinPE PreBoot Support besteht aus: Empirum WinPE PXE-Image, ein importiertes Windows Betriebssystem, diversen sogenannten Empirum PreOS Paketen, gesetzten Variablen und einem Computer. Zutaten zusammenführen Die &#8230; <a href="https://www.wpm-blog.de/empirum-winpe-windows-installation/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-winpe-windows-installation/">Empirum WinPE &#8211; Windows Installation</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Die Zutatenliste für eine erfolgreiche Windows Installation mittels des Empirum WinPE PreBoot Support besteht aus: <a href="https://www.wpm-blog.de/empirum-winpe-pxe-image-erstellung/">Empirum WinPE PXE-Image</a>, <a href="https://www.wpm-blog.de/empirum-winpe-betriebssysteme-in-empirum-importieren/">ein importiertes Windows Betriebssystem</a>, diversen sogenannten <a href="https://www.wpm-blog.de/empirum-winpe-preos-packages/">Empirum PreOS Paketen</a>, gesetzten Variablen und einem Computer.<span id="more-2426"></span></p>
<h3>Zutaten zusammenführen</h3>
<p>Die Zutaten habt ihr bestenfalls mit Hilfe der zuvor getätigten Beschreibungen bereits vorbereitet. In diesem Blog-Eintrag geht es darum, die letzten Schritte vorzunehmen.<br />
Nun werden die Zutaten in der Management Console (EMC), von der rechten Seite zur Mitte, in einer Konfigurations- oder Zuweisungsgruppe zusammengeführt:</p>
<ul>
<li>PreOS Pakete bzw. die erstellte UND-Klasse zuweisen</li>
<li>WinPE PXE-Image zuweisen</li>
<li>Betriebssystem zuweisen</li>
<li>Agent-Template zuweisen</li>
<li>die Variablen auf die Gruppe setzen und übertragen</li>
</ul>
<p><a href="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_Zutaten.png?x39343"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2429" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_Zutaten.png?x39343" alt="" width="823" height="598" srcset="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_Zutaten.png 823w, https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_Zutaten-300x218.png 300w, https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_Zutaten-768x558.png 768w" sizes="(max-width: 823px) 100vw, 823px" /></a></p>
<h3>Variablen setzen</h3>
<p>Die Variablen übernehmen die Definition der kundenspezifischen Windows Installation. Die zu setzenden Variablen(gruppen) heißen identisch wie die genutzten PreOS Pakete.<br />
Am besten geht man die Liste der zugewiesenen Pakete namentlich durch und stellt die für sich passenden Werte ein. Viele Variablen sind bereits vorbelegt und können auf den vordefinierten Werten belassen werden.</p>
<p>Somit konzentriere ich mich hier auf die meines Erachtens wichtigen Werte für eine Windows Installation in deutscher Sprache inklusive Domain Join.</p>
<ul>
<li>DiskPartitioning\PreferFastDisk</li>
<li>WindowsInstallation\LocalUserName</li>
<li>WindowsInstallation\LocalUserPassword</li>
<li>WindowsInstallation\LocalUserDisplayName</li>
<li>WindowsInstallation\SetupUILanguage</li>
<li>WindowsInstallation\InputLocale</li>
<li>WindowsInstallation\SystemLocale</li>
<li>WindowsInstallation\UILanguage</li>
<li>WindowsInstallation\UserLocale</li>
<li>DomainJoin\DomainJoinCredentialsUser</li>
<li>DomainJoin\DomainJoinCredentialsPassword</li>
</ul>
<p>Zusätzlich sind die nachfolgenden Variablen, die nicht so lauten wie die zugewiesenen Pakete, wichtig anzusehen bzw. zu setzen:</p>
<ul>
<li>FQDN &#8211; WindowsInstallation, DomainJoin</li>
<li>ORGANIZATIONAL_UNIT (optional) &#8211; DomainJoin</li>
<li>TIMEZONE &#8211; WindowsInstallation</li>
<li>MX42_AGENT_PUSH_PACKAGE_FOLDER\Windows &#8211; EmpirumAgentSetup</li>
</ul>
<h3><a href="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen.png?x39343"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2427" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen.png?x39343" alt="" width="339" height="273" srcset="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen.png 339w, https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen-300x242.png 300w" sizes="(max-width: 339px) 100vw, 339px" /></a><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2428" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen2.png?x39343" alt="" width="713" height="365" srcset="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen2.png 713w, https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/WinPE_ComputerVariablen2-300x154.png 300w" sizes="(max-width: 713px) 100vw, 713px" /></h3>
<h3></h3>
<h3>Aktivieren</h3>
<p>Anschließend wird das Computerobjekt der Gruppe hinzugefügt und aktiviert. Beim Aktivieren für eine WinPE basierte Windows Installation braucht keine &#8222;Betriebssystemkonfiguration (OS.INI)&#8220; mehr erstellt werden. Diese Aufgabe übernehmen die PreOS Packages samt der gesetzten Variablen.</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2430" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/PC-SWOS-aktivieren-Step2-1.png?x39343" alt="" width="302" height="106" srcset="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/PC-SWOS-aktivieren-Step2-1.png 302w, https://www.wpm-blog.de/wpmblog/wp-content/uploads/2019/11/PC-SWOS-aktivieren-Step2-1-300x105.png 300w" sizes="(max-width: 302px) 100vw, 302px" /></p>
<h3>Et voilà</h3>
<p>Nun den Computer vom Netzwerk booten lassen und nach ca. 20 min ist das frisch installierte Windows fertig angerichtet!</p>
<h3>Besonderheiten</h3>
<p>Bis zu diesem Punkt wurde beschrieben, dass sich die PreOS Pakete wie herkömmliche Software Pakete verhalten. Es gibt (Stand Oktober 2019 &#8211; WinPE 1.6.6) jedoch ein paar Besonderheiten:</p>
<ul>
<li>es werden alle zugewiesenen Pakete ausgeführt, nicht nur die aktuellste/höhere Version</li>
<li>mittels einer Verteilungsoption &#8222;Uninstall&#8220; kann die Verarbeitung von Paketen nicht verhindert werden</li>
<li>PreOS Pakete, die vor dem DiskPartitioning Paket ausgeführt werden, werden aus dem SWDepot-Log gelöscht und der Status bleibt &#8222;undefiniert = gelb&#8220;</li>
</ul>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-winpe-windows-installation/">Empirum WinPE &#8211; Windows Installation</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-winpe-windows-installation/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum &#8211; Übernehmen von vorhandenen Installationen</title>
		<link>https://www.wpm-blog.de/empirum-uebernehmen-von-vorhandenen-installationen/</link>
					<comments>https://www.wpm-blog.de/empirum-uebernehmen-von-vorhandenen-installationen/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 16 Aug 2017 10:25:52 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1884</guid>

					<description><![CDATA[<p>Wenn man mit der Empirum Softwareverteilung nicht auf der &#8222;grünen Wiese&#8220; beginnt, jedoch trotzdem die Zuweisung der Software anhand der Konfigurationsgruppen vornehmen möchte, läuft man Gefahr das eine Installation einer bereits vorhandenen Software startet. Gerade bei &#8230; <a href="https://www.wpm-blog.de/empirum-uebernehmen-von-vorhandenen-installationen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-uebernehmen-von-vorhandenen-installationen/">Empirum &#8211; Übernehmen von vorhandenen Installationen</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 mit der Empirum Softwareverteilung nicht auf der &#8222;grünen Wiese&#8220; beginnt, jedoch trotzdem die Zuweisung der Software anhand der Konfigurationsgruppen vornehmen möchte, läuft man Gefahr das eine Installation einer bereits vorhandenen Software startet. Gerade bei größeren Software Installationen, wie einem Microsoft Office, SAP Client, Lotus Notes Client, o.ä. möchte man genau dies vermeiden. Auf der anderen Seite möchte man trotzdem die Konfigurationsgruppen und ihre Vorteile nutzen.<span id="more-1884"></span></p>
<h2>Szenario &#8211; Was ist zu beachten?</h2>
<p>Dieses Szenario kommt vor, wenn zuvor die Software &#8222;von Hand&#8220; oder einer zuvor eingesetzten Software-Management Lösung auf den Endgeräten installiert wurde und man sich nun für den Einsatz von Empirum entschieden hat. Jetzt kann man alle Geräte komplett neu installieren, oder eben die Endgeräte &#8222;wie sie sind&#8220; in Empirum mittels der Verteilung des Empirum Agenten und des Empirum Inventorys in Empirum aufnehmen. Letzteres Verfahren spart zumindest erst einmal Zeit, jedoch muss man bei der Erstellung und Verteilung der weiteren Software-Pakete beachten, dass man ggf. nicht die gleiche Installationsgrundlage antrifft. Dies bedeutet wiederum ausgiebigere Tests und eine größere, oder andere Pilotgruppe.</p>
<h2>Umsetzung in der Setup.inf</h2>
<p>Wie ergänzt man nun sein Software-Paket, dass Microsoft Office eben nicht noch einmal installiert wird, wenn es zuvor schon anderweitig auf einem Endgerät installiert wurde? Diese Abfrage kann wie folgt umgesetzt werden. Natürlich kann man die Mehrsprachigkeit über die Strings Sektionen noch schöner handhaben ;-).</p>
<pre>[Product]
#CheckAlreadyInstalled, DONTDELETE
;... eigentliche Installationsabfolge ...

[CheckAlreadyInstalled]
;*** Prüfen ob bereits Office 2010 manuell/anderweitig installiert wurde.
;*** Check existing Office 2010 Installation prior to Empirum Software-Distribution
IF DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90140000-0019-0407-0000-0000000FF1CE},InstallDate") == "1" &amp; DoesRegKeyExist ("HKLM,SOFTWARE\%MachineKeyName%\Setup,DisplayName") == "0" Then "AlreadyInstalled" EndIf

[AlreadyInstalled]
ErrorLogMsg %DeveloperName% %ProductName% %Version% ist bereits installiert ohne Empirum | is already installed without Empirum
Exit %DeveloperName% %ProductName% %Version% ist bereits installiert ohne Empirum | is already installed without Empirum</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-uebernehmen-von-vorhandenen-installationen/">Empirum &#8211; Übernehmen von vorhandenen 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-uebernehmen-von-vorhandenen-installationen/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum Setup.inf &#8211; SoftwareDepotDistributionFlags</title>
		<link>https://www.wpm-blog.de/empirum-setup-inf-softwaredepotdistributionflags/</link>
					<comments>https://www.wpm-blog.de/empirum-setup-inf-softwaredepotdistributionflags/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 05 Jul 2017 19:39:48 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Software Management]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1877</guid>

					<description><![CDATA[<p>Ich hatte die Tage die Aufgabe ein Paket so zu modifizieren, dass es sich bei der Reinstallation bzw. beim einmaligen Erzwingen anders verhält als im Standard. Dabei fiel mir gleich die Variable SoftwareDepotDistributionFlags ein, die &#8230; <a href="https://www.wpm-blog.de/empirum-setup-inf-softwaredepotdistributionflags/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-softwaredepotdistributionflags/">Empirum Setup.inf &#8211; SoftwareDepotDistributionFlags</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ich hatte die Tage die Aufgabe ein Paket so zu modifizieren, dass es sich bei der Reinstallation bzw. beim einmaligen Erzwingen anders verhält als im Standard. Dabei fiel mir gleich die Variable SoftwareDepotDistributionFlags ein, die ich jedoch bis dato nicht genutzt hatte. <span id="more-1877"></span>In der Matrix42 Online Hilfe fand ich Hinweise zur Nutzung und Auswertung der entsprechenden <a href="https://helpfiles.matrix42-web.de/2024_DE/M42_WebDocu.htm#WM/UEM/SWM/SETUP/Referenz/Sections/Options/SETUP_Section_26_IF_Abfrage_Requirements.htm#BitAnd_BitOr_BitXOr" target="_blank" rel="noopener">SoftwareDepotDistributionFlags</a> Variable. So &#8222;gestärkt&#8220; machte ich mich an das Werk. Doch nach kurzer Zeit stellte sich etwas Ernüchterung ein, da es nicht sofort so funktioniert hat wie ich es mir vorgestellt hatte.</p>
<p>Dann habe ich angefangen mir den Wert der SoftwareDepotDistributionFlags Variable durch Logging zu erarbeiten &#8230;</p>
<p>Nach dem Logging, der anschließenden Bestätigung durch den Support (Danke an Hr. Zinn) und weitere erfahrene Empirum Nutzer habe ich die nachfolgende Tabelle erstellt, die Euch bei der Nutzung hoffentlich schneller zum Ziel bringt als mich ursprünglich. In der Nachbetrachtung hat mich am meisten zum Stolpern gebracht, dass in der Hilfe vom bitweisen Vergleich mit Dezimal Werten gesprochen wird und dann die aufgeführte Tabelle Hex Werte enthält!</p>
<p>Anbei die von mir zusammengestellte Tabelle mit den Verteilbefehlen aus der DDC, den dazugehörigen Dezimal Werten für den bitweisen Vergleich sowie dem Verteilbefehl aus der deutschen Oberfläche.</p>
<table>
<tbody>
<tr>
<td><strong>Verteilbefehl DDC</strong></td>
<td><strong>SoftwareDistributionFlags<br />
(Dezimalwert)</strong></td>
<td><strong>Verteilbefehl<br />
aus der deutschen Oberfläche</strong></td>
</tr>
<tr>
<td>INSTALL</td>
<td>1</td>
<td>Installieren</td>
</tr>
<tr>
<td>UPDATE</td>
<td>2</td>
<td>Erneuern</td>
</tr>
<tr>
<td>FORCE</td>
<td>4</td>
<td>Immer Erzwingen</td>
</tr>
<tr>
<td>UNINSTALL</td>
<td>8</td>
<td>Deinstallieren</td>
</tr>
<tr>
<td>REVOKE</td>
<td>16</td>
<td>Ablehnen möglich</td>
</tr>
<tr>
<td>FORCEONCEMACHINE</td>
<td>32</td>
<td>Maschinenteil erzwingen</td>
</tr>
<tr>
<td>FORCEONCECLIENT</td>
<td>64</td>
<td>Benutzerteil erzwingen</td>
</tr>
<tr>
<td>AFTERFORCE</td>
<td>128</td>
<td>Erzwingen (Nach Ablauf des Zeitplaners)</td>
</tr>
<tr>
<td>AFTERREVERSE</td>
<td>256</td>
<td>Umkehren (Nach Ablauf des Zeitplaners)</td>
</tr>
<tr>
<td>HIDE</td>
<td>512</td>
<td>Nicht anzeigen</td>
</tr>
<tr>
<td>REINSTALL</td>
<td>1024</td>
<td>Reinstallation mit vorheriger Deinstallation</td>
</tr>
<tr>
<td>OFFLINE</td>
<td>2048</td>
<td>Lokal cachen</td>
</tr>
<tr>
<td>IGNOREMTF</td>
<td>8192</td>
<td>Installationszeitraum ignorieren (ist bei einem Push immer gesetzt!)</td>
</tr>
</tbody>
</table>
<h3>Arbeiten mit den Werten in der Setup.inf</h3>
<p>Setup.inf Beispiele:</p>
<pre>;---Abfragen eines gesamten Verteilbefehls (Reinstallation per Pull/Push ohne vorherige Deinstallation)
 If BitXor (%SoftwareDepotDistributionFlags%, 99) == "0" | BitXor (%SoftwareDepotDistributionFlags%, 8291) == "0" Then "ReInstall" Else "EverythingElse" EndIf

;---Abfragen einer einzelnen Verteiloption
 If BitAnd (%SoftwareDepotDistributionFlags%, 32) != "0" then "ForceOnceMachine_is_set" else "ForceOnceMachine_is_not_set" endif</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-setup-inf-softwaredepotdistributionflags/">Empirum Setup.inf &#8211; SoftwareDepotDistributionFlags</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-softwaredepotdistributionflags/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum und For &#8211; Next Schleife</title>
		<link>https://www.wpm-blog.de/empirum-und-for-next-schleife/</link>
					<comments>https://www.wpm-blog.de/empirum-und-for-next-schleife/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Thu, 17 Sep 2015 17:51:17 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1632</guid>

					<description><![CDATA[<p>Wenn man in einem Empirum Script bzw. Paket wiederholt die gleichen Befehle ausführen möchte, sollte man sich die For &#8230; Next Schleife näher ansehen. Mit dem For &#8230; Next Konstrukt kann man für eine definierte &#8230; <a href="https://www.wpm-blog.de/empirum-und-for-next-schleife/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-und-for-next-schleife/">Empirum und For &#8211; Next Schleife</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 in einem Empirum Script bzw. Paket wiederholt die gleichen Befehle ausführen möchte, sollte man sich die For &#8230; Next Schleife näher ansehen. Mit dem For &#8230; Next Konstrukt kann man für eine definierte Anzahl immer wieder die gleiche Setup.inf Sektion ausführen. In der aufgerufenen Sektion arbeitet man dann wiederum mit Variablen, die man im besten Falle mit dem Zähler verbindet.<span id="more-1632"></span></p>
<p>Es gibt jedoch Besonderheiten bei diesem Befehl. Die For &#8230; Next Schleife wird beim Install als auch beim Uninstall ausgeführt und benötigt kein &#8222;-&#8222;. Beim Uninstall zählt die For Schleife jedoch &#8222;umgekehrt&#8220;. Dies ist in der Hilfe so nicht näher erläutert. Anbei findet Ihr die Erläuterung aus der Matrix42 Hilfe, als auch ein Empirum Setup.inf Ausschnitt mit zwei Beispielen.</p>
<h3>Auszug aus der Online Hilfe</h3>
<p>For &lt;Var&gt;,&lt;LB&gt;,&lt;UB&gt;,&lt;Inc&gt;,&lt;Abschnitt&gt;</p>
<p>Führt eine FOR-Schleife aus. Die Zählvariable ist &lt;Var&gt; wird von der Untergrenze &lt;LB&gt; zur Obergrenze &lt;UB&gt; in &lt;Inc&gt; Schritten hoch gezählt. Jedes Mal wird der Abschnitt &lt;Abschnitt&gt; aufgerufen. Die Zahlen dürfen auch negativ sein sowie Ober- und Untergrenze vertauscht werden (Abwärtsschleife). Wird &lt;Inc&gt; leer gelassen, wird 1 bzw. -1 angenommen.</p>
<p>Beispiel: For Counter,1,3,,UpSection</p>
<h3>Setup.inf Beispiel</h3>
<pre>[Environment]
VALUE1=Hello
VALUE2=World
VALUE3=!

[Product]
#Set:Installation, DONTDELETE
#Set:Deinstallation, DELETE

[SET:Installation]
FOR counter,1,5,,ECHOCounter
FOR counter,1,3,,ECHOValues

[ECHOCounter]
ECHO Installation : %Counter%
-ECHO DeInstallation : %Counter%

[ECHOValues]
SET EchoVALUE=%%Value%Counter%%%
ReplaceEnv EchoValue
ECHO %EchoValue%

[SET:Deinstallation]
;--This counts from 5 to 1 during UNINSTALL!
FOR counter,1,5,,ECHOCounter
-ECHO FOR counter,1,5,,ECHOCounter

;--This counts from 1 to 5 during UNINSTALL!
FOR counter,5,1,-1,ECHOCounter
-ECHO FOR counter,5,1,-1,ECHOCounter</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-und-for-next-schleife/">Empirum und For &#8211; Next Schleife</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-und-for-next-schleife/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=1790781105" rel="nofollow" id="download-link-1505" data-redirect="false" >
	MSHotfix_Uninstall	(977 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>Softwarepakete: Updateverhalten, Verteilen von neuen Versionen</title>
		<link>https://www.wpm-blog.de/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/</link>
					<comments>https://www.wpm-blog.de/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 23 Oct 2013 19:32:42 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1110</guid>

					<description><![CDATA[<p>Nachdem die ersten Softwarepakete erstellt und verteilt wurden, kommen immer wieder die folgenden Fragen auf: Wie verteile ich neue Versionen von bestehender Software? Wie rolle ich diese Versionen aus? Was ist zu beachten? Wichtige Grundlagen zu &#8230; <a href="https://www.wpm-blog.de/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/">Softwarepakete: Updateverhalten, Verteilen von neuen Versionen</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/08/Software-Pakete.png?x39343"><img decoding="async" loading="lazy" class="alignleft size-full wp-image-222" title="Software Pakete" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2012/08/Software-Pakete.png?x39343" alt="" width="79" height="75" /></a>Nachdem die ersten Softwarepakete erstellt und verteilt wurden, kommen immer wieder die folgenden Fragen auf:</p>
<ul>
<li>Wie verteile ich neue Versionen von bestehender Software?</li>
<li>Wie rolle ich diese Versionen aus?</li>
<li>Was ist zu beachten?</li>
</ul>
<p><span id="more-1110"></span></p>
<p>Wichtige Grundlagen zu diesem Thema sind bereits in diesem Beitrag erläutert: <a title="Empirum Paket – Registry, SoftwareDepot, Version" href="https://www.wpm-blog.de/empirum-paket-registry-softwaredepot-version/">Empirum Paket &#8211; Registry, SoftwareDepot, Version</a>.</p>
<p>In Kurzform ist folgendes für die neue Version wichtig:</p>
<ul>
<li>Der Herstellername (DeveloperName) und Softwarename (ProductName) der Versionen sind identisch.</li>
<li>Es ist lediglich die Version unterschiedlich und in diesem Falle die neuere Version höher als die alte.</li>
<li>Die MachinekeyName Einträge (und somit im SoftwareDepot: Registrierung, Schlüssel) sind identisch.</li>
</ul>
<p>Sind diese Voraussetzungen erfüllt kann das neue Paket dem Computer, der die Vorgängerversion zugewiesen hat, zugewiesen werden. Dazu die neue Version dem Computer mit den Verteilungsoptionen &#8222;Installieren, Erneuern&#8220; zuweisen. Die alte Version aus der Zuweisung löschen. Bei der kommenden Abfrage: &#8222;Löschen&#8220; auswählen. Dies bedeutet, dass der Verteilbefehl gelöscht wird und somit nur noch der Verteilbefehl für die neuere Version aktiv ist.</p>
<p>Findet nun die Softwareverteilung auf dem Zielcomputer eine Altversion anhand der MachineKeyName Werte in der Registry vor, so wird eine Deinstallation mit der lokal vorgehaltenen Setup.inf durchgeführt (AskUninstallOld=1). Dazu ist es wichtig, dass die Deinstallationsbefehle oder Zugriffe alle lokal erfolgen können! Häufig sorgen Zugriffe, in den betroffenen Sektionen für die Deinstallation, auf %SRC% oder ähnlich für Fehler bei der Deinstallation der Altversion. Ist die Altversion erfolgreich deinstalliert, beginnt die Installation der neuen Version.</p>
<p>Gibt es beim Testen (Deinstallation der Altversion), wie zuvor beschrieben, Probleme &#8211; und diese Probleme tauchen zumeist erst auch dann auf, wenn man die Nachfolgeversion paketiert hat, hat man noch &#8222;Handlungsspielraum&#8220;. Entweder man setzt nun die Vorgängerversion auf &#8222;Deinstallieren&#8230;&#8220; anstatt &#8222;Löschen&#8220; oder man passt das &#8222;neue&#8220; Paket an (AskUninstallOld=0 und die Deinstallation auf Bedarf durchführen).</p>
<p>In einem anderen Beitrag werde ich der zumeist nachfolgenden Frage: &#8222;Wann passe ich die Version und wann die Revision an?&#8220; nachgehen.</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/">Softwarepakete: Updateverhalten, Verteilen von neuen Versionen</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/softwarepakete-updateverhalten-verteilen-von-neuen-versionen/feed/</wfw:commentRss>
			<slash:comments>8</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 5/70 queries in 0.027 seconds using Disk

Served from: www.wpm-blog.de @ 2026-09-30 16:11:45 by W3 Total Cache
-->