<?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 set:product - Workplace Management Blog</title>
	<atom:link href="https://www.wpm-blog.de/search/set:product/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 16:29:01 +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>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=1789732740" rel="nofollow" id="download-link-1505" data-redirect="false" >
	MSHotfix_Uninstall	(970 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>SSD Festplatten Erkennung im Script</title>
		<link>https://www.wpm-blog.de/ssd-festplatten-erkennung-im-script/</link>
					<comments>https://www.wpm-blog.de/ssd-festplatten-erkennung-im-script/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Wed, 29 Jan 2014 19:41:07 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1206</guid>

					<description><![CDATA[<p>Wenn man auf für Computer mit einer eingebauten SSD Festplatte in Abläufen wie einer Softwareverteilung etwas spezielles machen möchte, so ist es notwendig dies per Script (wie z.B. der Empirum Setup.inf, einer Batch Datei, etc.) &#8230; <a href="https://www.wpm-blog.de/ssd-festplatten-erkennung-im-script/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/ssd-festplatten-erkennung-im-script/">SSD Festplatten Erkennung im Script</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/2014/01/hard_disk1.png?x39343"><img decoding="async" loading="lazy" class="alignleft size-full wp-image-1212" title="Harddisc" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2014/01/hard_disk1.png?x39343" alt="" width="64" height="64" /></a>Wenn man auf für Computer mit einer eingebauten SSD Festplatte in Abläufen wie einer Softwareverteilung etwas spezielles machen möchte, so ist es notwendig dies per Script (wie z.B. der Empirum Setup.inf, einer Batch Datei, etc.) auszulesen bzw. zu überprüfen und dann die abhängigen Änderungen durchzuführen.<span id="more-1206"></span></p>
<h3>SSD Erkennung per Tool</h3>
<p>Dazu muss man das Rad nicht neu erfinden. Es gibt bereits fertige Tools wie dieses <a title="Detect an SSD Disk using a script" href="http://www.autoitconsulting.com/site/scripting/detect-an-ssd-disk-using-a-script/" target="_blank">hier</a>. An dieser Stelle ist auch beschrieben bzw. auf einen Microsoft Artikel verwiesen, welche Kriterien alles für eine SSD Erkennung herangezogen werden.</p>
<h3>Wie nutze ich das Tool?</h3>
<p>Der Aufruf geschieht wie folgt:<br />
IsSSD.exe &lt;Laufwerksbuchstabe&gt;, z.B.: IsSSD.exe C:</p>
<h3>Wie nutze ich es in der Empirum Setup.inf?</h3>
<p>Hier ein Beispiel:</p>
<pre>[Set:Product]
CALL "%SRC%\IsSSD.exe" C:
IF "%ErrorLevel%" == "1" THEN "IsSSD" Else "IsNoSSD" EndIf

[IsSSD]
Echo SSD installed!

[IsNoSSD]
Echo No SSD installed!</pre>
<h3>Wie nutze ich es in einer Batch Datei?</h3>
<p>Auch dazu ein kleines Beispiel:</p>
<pre>:Begin_SSD_Check
IsSSD.exe C:
IF "%ERRORLEVEL%" == "1" goto Hdd_is_SSD
Echo Hdd is not a SSD Drive!
Goto End_SSD_Check
:Hdd_is_SSD
Echo Hdd is a SSD Drive!
:End_SSD_Check</pre>
<p>Gutes gelingen und viel Spaß damit!</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/ssd-festplatten-erkennung-im-script/">SSD Festplatten Erkennung im Script</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/ssd-festplatten-erkennung-im-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Empirum Paket &#8211; Revisionserhöhung bei &#8222;großen&#8220; Installationen</title>
		<link>https://www.wpm-blog.de/empirum-paket-revisionserhoehung-bei-grossen-installationen/</link>
					<comments>https://www.wpm-blog.de/empirum-paket-revisionserhoehung-bei-grossen-installationen/#respond</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Fri, 01 Nov 2013 17:05:32 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<category><![CDATA[Softwareverteilung]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=1147</guid>

					<description><![CDATA[<p>Ein Software-Paket größeren Umfangs wurde bereits verteilt und es steht jetzt jedoch noch ein kleineres Update aus. Nun kann man entweder ein weiteres Fix Paket schnüren und zusätzlich verteilen, oder das ursprüngliche Paket anpassen und &#8230; <a href="https://www.wpm-blog.de/empirum-paket-revisionserhoehung-bei-grossen-installationen/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-paket-revisionserhoehung-bei-grossen-installationen/">Empirum Paket &#8211; Revisionserhöhung bei &#8222;großen&#8220; Installationen</a> erschien zuerst auf <a rel="nofollow" href="https://www.wpm-blog.de">Workplace Management Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ein Software-Paket größeren Umfangs wurde bereits verteilt und es steht jetzt jedoch noch ein kleineres Update aus. Nun kann man entweder ein weiteres Fix Paket schnüren und zusätzlich verteilen, oder das ursprüngliche Paket anpassen und mittels Revisionserhöhung nochmals verteilen. Für ersteres spricht, dass weniger Dateien nochmals über die &#8222;Leitung&#8220; gehen, für zweiteres, dass man auch für Neuinstallationen nur ein Paket zuweisen muss.<span id="more-1147"></span></p>
<p>Zweiteres kann man über die Logik der Revisionserhöhung realisieren. Möchte bei einem bereits verteilten Paket mit einer MSI oder Unattended Installation nun noch ein paar Dateien oder Registry Einträge austauschen/hinzufügen, so kann man den nachfolgend erläuterten Mechanismus nutzen. Dieser Mechanismus ermöglicht, dass bei bereits vorhandenen Installationen mit der Revision=0 nur minimale Änderungen durchgeführt werden und bei Neuinstallationen, die komplette Installation zuzüglich der nachträglichen Änderung.</p>
<pre>[Product]
#CheckRevisionChanges, DONTDELETE
...
;&lt;Installationslogik MSI / Unattended&gt;
;&lt;z.B.: Set:Product&gt;
;&lt;z.B.: Set:Installation&gt;
#DoMinorUpdate

[CheckRevisionChanges]
Set LocalRevision=%%HKLM,Software\%MachineKeyName%\Setup,Revision%%
ReplaceEnv LocalRevision
IF "%LocalRevision%" &lt; "%Revision%" &amp; "%LocalRevision%" &lt;&gt; "" THEN "OnlyDoRevisionUpdate" EndIf

[OnlyDoRevisionUpdate]
#DoMinorUpdate
Exit

[DoMinorUpdate]
;Examples / Beispiele
;#CopyAdditionalFiles
;#Reg:Changes</pre>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/empirum-paket-revisionserhoehung-bei-grossen-installationen/">Empirum Paket &#8211; Revisionserhöhung bei &#8222;großen&#8220; 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-paket-revisionserhoehung-bei-grossen-installationen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Setup.inf &#8211; Datei pro Benutzer kopieren</title>
		<link>https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/</link>
					<comments>https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/#comments</comments>
		
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Mon, 06 May 2013 17:19:44 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Paketierung]]></category>
		<category><![CDATA[Softwarepaket]]></category>
		<guid isPermaLink="false">https://www.wpm-blog.de/?p=909</guid>

					<description><![CDATA[<p>Häufig steht man vor der Aufgabe in einem Empirum Paket pro Benutzer eine Datei zu kopieren, um benutzerspezifische Einstellungen vorab vorzunehmen. Wie kann dies in der Setup.inf vorgenommen werden und worauf sollte man achten? Wenn &#8230; <a href="https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/">Weiterlesen</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/">Setup.inf &#8211; Datei pro Benutzer kopieren</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/2013/04/Copy-v2_100x100.jpg?x39343"><img decoding="async" loading="lazy" class="alignleft size-full wp-image-938" title="CopyPerUser_Medium" src="https://www.wpm-blog.de/wpmblog/wp-content/uploads/2013/04/Copy-v2_100x100.jpg?x39343" alt="Kopieren pro Benutzer" width="100" height="100" /></a>Häufig steht man vor der Aufgabe in einem Empirum Paket pro Benutzer eine Datei zu kopieren, um benutzerspezifische Einstellungen vorab vorzunehmen. Wie kann dies in der Setup.inf vorgenommen werden und worauf sollte man achten?</p>
<p><span id="more-909"></span></p>
<p>Wenn man nicht weiß, in welcher Datei sich die Einstellung niederschlägt bzw. in welcher Datei die Anpassung vorgenommen werden, kann man die Änderung mittels des PackageWizards und dem Differenzanalyseverfahren (Diff) festhalten.</p>
<h2>Variante 1 &#8211; Diff bzw. Differenzanalyseverfahren</h2>
<p>Das bedeutet, man startet den <strong>PackageWizard</strong> und wählt den Punkt <strong>&#8222;Systemanalyse vor und nach der Installation &#8230;&#8220;</strong> und führt den PreScan durch. Ist der <strong>PreScan</strong> <strong>abgeschlossen</strong>, führt man seine <strong>Änderung der Einstellung</strong> durch bzw. <strong>kopiert eine Datei manuell</strong> in das Benutzerverzeichnis. Anschließend führt man den PostScan durch. Ist der <strong>PostScan</strong> erfolgreich abgeschlossen, führt man den PackageWizard Assistenten bis zum Ende durch. Kopieren Sie die Datei nicht auf den EmpirumServer. Wenn man den Haken bei Datei mit dem PackageEditor öffnen wählt, kann man sich die kommenden Schritte sparen.</p>
<p>Nun kann man die gerade erzeugte Setup.inf Datei öffnen. Geben Sie dazu <strong>%TEMP%</strong> im Windows Explorer ein. Hiermit landet man direkt im temporären Verzeichnis. Hier sollte ein Verzeichnis mit der <strong>Herstellerbezeichnung</strong> (aus der Eingabe im PackageWizard) vorhanden sein. Darunter befindet sich ein Verzeichnis mit dem <strong>Softwarenamen</strong>, dann der <strong>Version</strong> und dann &#8222;<strong>Install</strong>&#8222;. Im &#8222;Install&#8220; Verzeichnis befindet sich die gerade erstellte <strong>Setup.inf</strong>.<br />
Jetzt können Sie den Kopierbefehl, als auch die dazugehörige Datei in Ihr ggf. bereits vorhandenes Paket einfügen bzw. übernehmen.</p>
<h2>Variante 2 &#8211; Empirum Kopierflag CLIENT (pro Benutzer):</h2>
<p>Ergänzen der Setup.inf wie folgt. Eintragen eines Sektionsaufrufes unterhalb von [Product] in der passenden Reihenfolge. Vorteilhaft ist es, wenn man den benutzerspezifischen Teil nach der eigentlichen Installation des Programmes ausführt, hier mit Set:Product symbolisiert. Zusätzlich muss die benutzerspezifische Datei (hier: Freecommander.ini) im Ordner (hier: APPDATA\Freecommander) des Programmes unter &#8222;Source&#8220; (hier: Packages\&lt;Hersteller&gt;\&lt;Softwarename&gt;\&lt;Version&gt;\) abgelegt werden.</p>
<div class="grey-box"><strong>Wichtig:</strong> Der Sektion &#8222;Benutzereinstellungen&#8220; nicht das Flag &#8222;CLIENT&#8220; hinzufügen, sonst wird die Datei nicht im Maschinenteil lokal kopiert!</div>
<h2>Kopierflags</h2>
<p>Die Datei wird in diesem Falle bei einer Deinstallation auch wieder vom Computer entfernt. Ist dies nicht gewünscht, da dann Einstellungen nicht zu einer neu installierten Version übernommen werden, so kann zu den vorhandenen Flags CLIENT ALWAYS auch noch das DONTDELETE hinzugefügt werden. Ein weiterer Blog Artikel zum Kopierbefehl kann <a title="Empirum Kopierbefehl und Kopierflags" href="https://www.wpm-blog.de/empirum-kopierbefehl-und-kopierflags/">hier</a> eingesehen werden, alle Kopierflags sind <a title="Kopierflags" href="https://helpfiles.matrix42-web.de/2024_DE/M42_WebDocu.htm#WM/UEM/SWM/SETUP/Referenz/Sections/Options/SETUP_Section_24_Options_Name.htm#CopyFlags" target="_blank" rel="noopener">hier</a> aufgeführt.</p>
<h2>ALWAYS</h2>
<p>Das Flag ALWAYS überschreibt eine gegebenenfalls existierende Datei. Bei benutzerspezifischen Einstellungen sollte man das Flag ALWAYS immer setzen, da die installierten Programme zumeist eine vordefinierte Einstellungsdatei einrichten und diese hat dann das Datum der Installation der Software und die eigene Einstellungsdatei hätte ggf. ein älteres Datum und würde im Standard nicht installiert/kopiert werden. Mit ALWAYS stellt man somit sicher, dass die eigene Datei mit Einstellungen eine gegebenenfalls vorhandene Datei überschreibt!</p>
<pre>[Product]
...
;---Beispiel für eine Installation, diese Zeile nicht übernehmen! 
#Set:Product 
...
#Benutzereinstellungen 
...

[Benutzereinstellungen]
1:APPDATA\Freecommander\Freecommander.ini, %APPDATA%, CLIENT ALWAYS, 0</pre>
<h2>Variante 3 &#8211; Empirum Kopierbefehl copy</h2>
<p>Ergänzen der Setup.inf wie folgt. Eintragen zweier Sektionsaufrufe unterhalb von [Product] in der passenden Reihenfolge. Vorteilhaft ist es, wenn man den benutzerspezifischen Teil nach der eigentlichen Installation des Programmes ausführt, hier mit Set:Product symbolisiert. Die Sektion &#8222;BenutzereinstellungenMachine&#8220; kopiert die Einstellungsdatei (hier wurde eine config.xml Datei angenommen) auf den Computer zur lokalen Ablage. Die Sektion &#8222;BenutzereinstellungenClient&#8220; kopiert die Datei dann pro Benutzer in das angegebene Verzeichnis. Zusätzlich muss die benutzerspezifische Datei im Ordner des Programmes unter &#8222;Source&#8220; (hier: Packages\&lt;Hersteller&gt;\&lt;Softwarename&gt;\&lt;Version&gt;) abgelegt werden.</p>
<pre>[Product]
...
;---Beispiel für eine Installation, diese Zeile nicht übernehmen!
#Set:Product 
...
 #BenutzereinstellungenMachine, MACHINE 
#BenutzereinstellungenClient, CLIENT 
...

[BenutzereinstellungenMachine]
;---kopiert die Einstellungsdatei im Maschinenteil auf den Computer 
-DEL "%APP%\Config.xml"
Copy "%SRC%\Config.xml" "%APP%\Config.xml"

;---Alternative für einen anderen lokalen Ablageort der Konfigurationsdatei 
;-DEL "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml" 
;Copy "%SRC%\Config.xml" "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml"

[BenutzereinstellungenClient] 
;---kopiert die Einstellungsdatei im Benutzerteil von der lokalen Ablage in das benutzerspezifische Verzeichnis 
Copy "%APP%\Config.xml" "%AppData%\&lt;Hersteller&gt;\Config.xml"

;---Bei einem alternativen lokalen Ablageort der Konfigurationsdatei 
;Copy "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml" "%AppData%\&lt;Hersteller&gt;\Config.xml"

;---Falls bei einer Deinstallation auch die Einstellungen wieder entfernt werden sollen. 
;---Achtung, somit werden Einstellungen nicht in eine neue Version übernommen, da die Config.xml beim Deinstallieren gelöscht wird. 
-DEL "%AppData%\Config.xml"</pre>
<h2><span style="font-weight: bold;">Setup.exe Aufruf</span></h2>
<p>Als letztes ist es wichtig, dass dem Paket beim Einbinden in das SoftwareDepot auch mitgeteilt wird, das ein Benutzertzeil ausgeführt werden muss. Dies wird auf dem Reiter &#8222;Prüfung&#8220; im Feld &#8222;Befehl&#8220; vorgenommen. Weitere Informationen dazu sind in <a title="Einbinden eines Software-Paketes in Empirum (Basis)" href="https://www.wpm-blog.de/einbinden-eines-software-paketes-in-empirum-basi/">diesem</a> Artikel vermerkt.</p>
<p>Der Beitrag <a rel="nofollow" href="https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/">Setup.inf &#8211; Datei pro Benutzer kopieren</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-datei-pro-benutzer-kopieren/feed/</wfw:commentRss>
			<slash:comments>5</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>
		<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

Served from: www.wpm-blog.de @ 2026-09-18 12:59:00 by W3 Total Cache
-->