<?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 if+abfragen - Workplace Management Blog</title>
	<atom:link href="https://www.wpm-blog.de/search/if%2Babfragen/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>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>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>Setup.inf Abarbeitung</title>
		<link>https://www.wpm-blog.de/setup-inf-abarbeitung/</link>
					<comments>https://www.wpm-blog.de/setup-inf-abarbeitung/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Mon, 03 Dec 2012 22:43:57 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Empirum]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=518</guid>

					<description><![CDATA[<p>Wie an anderer Stelle bereits erläutert geht es mir darum, dass man keine &#8222;Angst&#8220; davor hat Software-Pakete zu erstellen und nach und nach durch mehr Erfahrung oder Anspruch die Software-Pakete zu verbessern. Im ersten Schritt &#8230; <a href="https://www.wpm-blog.de/setup-inf-abarbeitung/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/setup-inf-abarbeitung/">Setup.inf Abarbeitung</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wie an anderer Stelle bereits erläutert geht es mir darum, dass man keine &#8222;Angst&#8220; davor hat Software-Pakete zu erstellen und nach und nach durch mehr Erfahrung oder Anspruch die Software-Pakete zu verbessern. Im ersten Schritt ist man glücklich, dass die Installation ohne Eingriff durch den Benutzer funktioniert. Wie man ein einfaches Software-Paket auf der Grundlage einer MSI Datei erstellt, erfahrt ihr in einem meiner ersten Video Tutorials.<span id="more-518"></span></p>
<p>Die Empirum Setup.inf Skriptsprache ermöglicht einem jedoch weitere Möglichkeiten.</p>
<ul>
<li>Vornehmen von benutzerspezifischen Einstellungen</li>
<li>Kopieren von Dateien pro Benutzer</li>
<li>Abfragen von Werten auf dem Zielcomputer und &#8222;reagieren&#8220; im Software-Paket, wie z.B. Prozessor-Architektur, Registrierungseinträge, Dateien, Dateiversionen, offene Prozesse, uvm.</li>
<li>Nutzen von Variablen aus der EMC und steuern der Installation</li>
<li>uvm.</li>
</ul>
<p>Um Veränderungen an den vorhandenen Software-Paketen vorzunehmen, muss man zuerst verstehen, an welcher Stelle man die Veränderung vornehmen kann und welche Befehle und somit Möglichkeiten einem zur Verfügung stehen.</p>
<h3>Gehen wir zuerst auf die Abfolge in der Setup.inf ein.</h3>
<p>Die meisten Software-Pakete bzw. Vorlagen enthalten die unten stehenden Zeilen (am Ende dieses Blogeintrages), die für die Erläuterung der Abfolge herangezogen werden. Für die Erläuterungen habe ich jedoch ein paar Befehle bereits in die Vorlage eingebaut, um die Funktionsweise besser zu verdeutlichen.</p>
<p>Das <strong>Semikolon (;)</strong> sagt aus, dass diese Zeile nicht verarbeitet wird und ein <strong>Kommentar</strong> darstellt.</p>
<p>Das <strong>Hash Zeichen (#)</strong> oder von manchem auch Lattenzaun genannt, ist gleichzusetzen mit einem <strong>GOSUB</strong> aus Basic oder einem Prozedur Aufruf aus anderen Sprachen. Das bedeutet die entsprechende Sektion wird aufgerufen und nach der Beendigung springt die Verarbeitung wieder zurück und geht eine Zeile weiter.</p>
<h3>Installationsabfolge</h3>
<p>Es wird die Sektion [Product] als &#8222;Hauptprogramm&#8220; ausgeführt und die dort angegebenen Sektionen der Reihe nach (von oben nach unten) angesprungen bzw. verarbeitet.</p>
<ol>
<li>Die erste Zeile ohne Kommentar ist der Aufruf der #Set:Product Zeile. Hiermit wird die [Set:Product] Sektion angesprungen.</li>
<li>Es wird &#8222;Es geht los&#8220; ausgegeben.</li>
<li>Die Datei Datei.exe wird in das Verzeichnis &#8222;%ProgramFiles%\Hersteller Software\&#8220; kopiert. Ist kein Ziel nach der Datei.exe angegeben, dann enspricht das Ziel dem Wert von ApplicationDir=.</li>
<li>Jetzt ist die Sektion [Set:Product] fertig und es wird die Zeile</li>
<li>#Reg:OnUninstallProduct, DELETE angesprungen. Diese wird jedoch nicht verarbeitet, da diese das Flag &#8222;DELETE&#8220; besitzt, was aussagt, dass die Sektion nur bei der Deinstallation ausgeführt wird.</li>
<li>Jetzt wird die Zeile #Reg:Product, DONTDELETE angesprungen. Diese wird ausgeführt, und das nur bei der Installation, da die Sektion das Flag &#8222;DONTDELETE&#8220; besitzt.</li>
<li>Es wird der Registry Eintrag Version = 2 unter HKLM\Software\Hersteller\Software vom Typ REG_SZ gesetzt.</li>
<li>Anschließend wird die Sektion [INI:Product] und danach</li>
<li>[Security:Product] angesprungen. In beiden Fällen gibt es nichts zu tun.</li>
<li>Als letztes, obwohl es nicht unter [Product] aufgeführt ist, wird die Sektion [Shell:Product] ausgeführt.</li>
</ol>
<p>Die Installation ist fertig, es gibt eine Verknüpfung auf dem Desktop, dass das Programm &#8222;Datei.exe&#8220; startet.</p>
<h3>Deinstallationsabfolge</h3>
<p>Die Deinstallation wird in umgekehrter Reihenfolge verarbeitet und startet somit von unten in der [Product] Sektion.</p>
<ol>
<li>Ähnlich wie die Ausnahme, dass [Shell:Product] beim Installieren als letztes aufgerufen wird, wird diese Zeile beim Deinstallieren zuerst ausgeführt. Die Verknüpfung wird entfernt.</li>
<li>Nun werden die Sektionen in der Reihenfolge von unten nach oben angesprungen, und dann ausgeführt wenn die Sektion kein FLAG (nach einem Komma) besitzen, oder das Flag &#8222;DELETE&#8220; gesetzt haben.</li>
<li>So wird bei der Deinstallation der Registry Eintrag Version = 1 unter HKLM\Software\Hersteller\Software vom Typ REG_SZ gesetzt, da die Sektion [Reg:OnUninstallProduct] verarbeitet wird.</li>
<li>Nun wird als letztes die Sektion [Set:Product] verarbeitet.</li>
<li>Hier wird nun der Kopiervorgang &#8222;1:&#8230;&#8220; rückgängig gemacht und die Datei gelöscht. Bestimmten Befehlen muss ein &#8222;-&#8220; vorangestellt werden, damit diese bei der Deinstallation ausgeführt werden.</li>
</ol>
<p>Die Deinstallation ist nun abgeschlossen.</p>
<p>Wenn man sich das selbst einmal anschauen möchte, so kann man den Empirum Package Editor starten, in die &#8222;Erweiterte Ansicht&#8220; wechseln und die Setup.inf im Einzelschrittmodus durchlaufen.</p>
<h3>Auszug aus einer Setup.inf</h3>
<pre>...
[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv &lt;Variable&gt;
#Set:Product
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product

[Set:Product]
ECHO "Es geht los"
1:Datei.exe,%ProgramFiles%\Hersteller Software\, NORMAL, 12345

[Reg:OnUninstallProduct]
HKLM,"Software\Hersteller\Software","Version",0x00000000,1

[Reg:Product]
HKLM,"Software\Hersteller\Software","Version",0x00000000,2

[Ini:Product]

[Security:Product]
;Hier könnten Veränderungen an den Berechtigungen im Dateisystem, der Registry, etc. stattfinden

[Shell:Product]
%Desktop%\Dateiaufruf, Datei.exe</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/setup-inf-abarbeitung/">Setup.inf Abarbeitung</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/setup-inf-abarbeitung/feed/</wfw:commentRss>
			<slash:comments>6</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 using Disk (Request-wide modification query)

Served from: www.wpm-blog.de @ 2026-02-04 14:03:30 by W3 Total Cache
-->