<?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>Ontrex Software Package Atelier Teamblog</title>
	<atom:link href="http://spablog.ontrex.ch/feed/" rel="self" type="application/rss+xml" />
	<link>http://spablog.ontrex.ch</link>
	<description>Software Paketierung mit Ontrex Kung Fu</description>
	<lastBuildDate>Mon, 08 Mar 2010 10:11:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wise Package Studio 8: Network Client Update umgehen.</title>
		<link>http://spablog.ontrex.ch/2010/03/08/wise-package-studio-8-network-client-update-umgehen/</link>
		<comments>http://spablog.ontrex.ch/2010/03/08/wise-package-studio-8-network-client-update-umgehen/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 10:11:36 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[TECH]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=340</guid>
		<description><![CDATA[Nach der Migration des Wise Package Studio Servers auf die Version 8.0 ist es leider auch nötig die Netzwerk Client Installationen zu aktualisieren.
Je nach Packaging Umgebung kann dies jedoch enormen Aufwand bedeuten.
Mit folgendem Trick kann man sich diesen Aufwand allerdings sparen:
- Installiere den Network Client der 8.0 Version auf einer sauberen VM/Client
- Exportiere danach den [...]]]></description>
			<content:encoded><![CDATA[<p>Nach der Migration des Wise Package Studio Servers auf die Version 8.0 ist es leider auch nötig die Netzwerk Client Installationen zu aktualisieren.</p>
<p>Je nach Packaging Umgebung kann dies jedoch enormen Aufwand bedeuten.</p>
<p>Mit folgendem Trick kann man sich diesen Aufwand allerdings sparen:</p>
<p>- Installiere den Network Client der 8.0 Version auf einer sauberen VM/Client</p>
<p>- Exportiere danach den &#8220;Wise Solutions&#8221; Registry key. In diesem Key sind die neuen Lizenzinformation drin. Ohne diese lässt sich WPS 8.0 nicht starten.</p>
<p>- Erstelle ein neues WiseScript und füge mittels &#8220;Edit Registry&#8221; Aktion diese Keys hinzu</p>
<p>- Als 2 Aktion füge eine &#8220;Run Executable&#8221; Aktion hinzu, und zeige dort auf die  &#8220;PackageStudio8.exe&#8221; Executable auf dem Wise Package Studio Share.</p>
<p>- Kompiliere ein neues Executable und lege dies im Wise Package Studio Programmverzeichnis als &#8220;PackageStudio7.exe&#8221; ab</p>
<p>Nun wird bei alten Netzwerk Client Installationen die PackageStudio7.exe gestartet, welche die benötigten Registrierungsschlüssel für das Wise Package Studio 8 ins Benutzerprofil schreibt und danach die aktuelle PackageStudio8.exe startet.</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/03/08/wise-package-studio-8-network-client-update-umgehen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft APP-V 4.6 Verfügbar</title>
		<link>http://spablog.ontrex.ch/2010/03/01/microsoft-app-v-4-6-verfugbar/</link>
		<comments>http://spablog.ontrex.ch/2010/03/01/microsoft-app-v-4-6-verfugbar/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 15:04:41 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=375</guid>
		<description><![CDATA[Seit kurzem ist die Version 4.6 der Microsoft Software-Virtualisierungstechnologie (APP-V) verfügbar.
Mit der Version 4.6 findet nun auch native x64 Technologie Einzug in die Virtualisierungslösung von Microsoft.
Herunterladen lässt sich die neuste APP-V Version über die gängigen Seiten/Zugriffsmöglichkeiten:

Technet
MSDN
MVLS

Die Ontrex AG bietet umfangreiche Consulting und Paketierungs-Diensleistungen für diese Technologie an.
Weitere Informationen über unsere Dienstleistungen finden Sie auf unserer Homepage.
]]></description>
			<content:encoded><![CDATA[<p>Seit kurzem ist die Version 4.6 der Microsoft Software-Virtualisierungstechnologie (APP-V) verfügbar.</p>
<p>Mit der Version 4.6 findet nun auch native x64 Technologie Einzug in die Virtualisierungslösung von Microsoft.</p>
<p>Herunterladen lässt sich die neuste APP-V Version über die gängigen Seiten/Zugriffsmöglichkeiten:</p>
<ul>
<li>Technet</li>
<li>MSDN</li>
<li>MVLS</li>
</ul>
<p style="text-align: left;">Die Ontrex AG bietet <strong>umfangreiche Consulting und Paketierungs-Diensleistungen</strong> für diese Technologie an.<br />
Weitere Informationen über unsere Dienstleistungen finden Sie auf unserer <a href="http://www.ontrex.ch/de/50_SPA/10_SPAOverview/spaoverview.htm" target="_blank">Homepage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/03/01/microsoft-app-v-4-6-verfugbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REMOVE Kondition &#8211; Die Wahrheit</title>
		<link>http://spablog.ontrex.ch/2010/02/25/remove-kondition-die-wahrheit/</link>
		<comments>http://spablog.ontrex.ch/2010/02/25/remove-kondition-die-wahrheit/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 14:20:07 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[TECH]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=359</guid>
		<description><![CDATA[Als ich kürzlich den Artikel Test your conditions von Heath Stewart gelesen habe, wusste ich sogleich, dass es nun an der Zeit ist die letzten technischen Details über die REMOVE Kondition preis zu geben.
Wie die REMOVE Kondition optimal eingesetzt wird entscheidet die Feature Struktur eines Produktes. Eine einfache Aussage wie REMOVE~=&#8221;ALL&#8221; zu verwenden, ist keine gute Idee, da [...]]]></description>
			<content:encoded><![CDATA[<p>Als ich kürzlich den Artikel <a href="http://blogs.msdn.com/heaths/archive/2010/02/15/test-your-conditions.aspx" target="_blank">Test your conditions</a> von Heath Stewart gelesen habe, wusste ich sogleich, dass es nun an der Zeit ist die letzten technischen Details über die REMOVE Kondition preis zu geben.</p>
<p>Wie die REMOVE Kondition optimal eingesetzt wird entscheidet die Feature Struktur eines Produktes. Eine einfache Aussage wie REMOVE~=&#8221;ALL&#8221; zu verwenden, ist keine gute Idee, da es Situationen gibt, wo diese Kondition nicht greift.</p>
<p>Fact ist, dass die REMOVE Kondition im Falle einer Deinstallation verwendet werden kann.<br />
Fact ist, dass bei einer repaketierten Applikation, im Generellen die Kondition REMOVE verwendet werden kann.</p>
<p>Der Ausdruck REMOVE~=&#8221;ALL&#8221; hat sich über ein Jahrzehnt stark verbreitet. Der Wert ALL bedeutet, dass alle Features eines Produktes deinstalliert werden, sprich die Installation wird komplett deinstalliert. Dies ist die allgemeine Annahme in der Software Paketierung.</p>
<p>REMOVE~=&#8221;ALL&#8221; wird jedoch nicht in allen Situationen funktionieren, wie es Heath Stewart schon angedeutet hat. Es gibt eine Situation, den Wartungsmodus um es genau zu benennen, wo diese Kondition nicht greift. Betroffen davon sind besonders Software-Entwickler, da dessen Deinstallationen öfters mit dem Wartungsmodus durchgeführt werden und von diesem Problem betroffen sind.</p>
<p>Ein Produkt  kann über folgende vier Wege deinstalliert werden.</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/REMOVE2.png"><img class="alignnone size-full wp-image-362" title="REMOVE" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/REMOVE2.png" alt="" width="493" height="171" /></a><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/REMOVE1.png"></a></p>
<p>Deinstallation mittels Befehlszeile (msiexec.exe -x &lt;product code&gt; /qb) wie gewöhnlich ein Produkt automatisch deinstalliert wird:<small><br />
MSI (s) (28:5C): Command Line: REMOVE=ALL<br />
Property(S): REMOVE = ALL<br />
</small><br />
Deinstallation über Control Panel &gt; Add or Remove Programs, wie es ein Endanwender eine Deinstallation durchführen wird:<small><br />
MSI (s) (28:F8): Command Line: REMOVE=ALL<br />
Property(S): REMOVE = ALL<br />
</small><br />
Deinstallation über den Wartungsmodus einer MSI Installation (Modify, Repair oder Remove Option im Setup Wizard)<small><br />
MSI (s) (28:5C): Command Line:<br />
MSI (c) (28:1C): Switching to server: REMOVE=Complete<br />
MSI (s) (28:10): PROPERTY CHANGE: Adding REMOVE property. Its value is &#8216;Complete&#8217;.<br />
MSI (s) (28:10): PROPERTY CHANGE: Modifying REMOVE property. Its current value is &#8216;Complete&#8217;. Its new value: &#8216;ALL&#8217;.<br />
Property(S): REMOVE = ALL<br />
</small></p>
<p>Deinstallation über die Windows Installer API<small><br />
MSI (s) (28:EC): Command Line: REMOVE=ALL<br />
Property(S): REMOVE = ALL<br />
</small><br />
Es wird nun ersichtlich, das eine Deinstallation über den Wartungsmodus anders abläuft als die restlichen Deinstallationswege. Beim Wartungsmodus steht es von beginn an nicht fest, welche Windows Installer Aktion der Anwender ausüben wird. Daher kann die REMOVE Property nicht  von Beginn an definiert werden.<small><br />
MSI (s) (28:5C): Command Line:<br />
</small></p>
<p>In der REMOVE Property stehen alle Feature Namen des aktuell installierten Produktes (Features werden mit ; getrennt falls mehrere installiert sein sollten).<small><br />
MSI (c) (28:1C): Switching to server: REMOVE=Complete<br />
MSI (s) (28:10): PROPERTY CHANGE: Adding REMOVE property. Its value is &#8216;Complete&#8217;.<br />
</small><br />
Anhand der Windows Installer SDK steht fest, das der Remove Control Event das Argument ALL  dem REMOVE Property der Installations-Session weiter geben muss, damit das gesamte Produkt deinstalliert wird.<small><br />
MSI (s) (28:10): PROPERTY CHANGE: Modifying REMOVE property. Its current value is &#8216;Complete&#8217;. Its new value: &#8216;ALL&#8217;.<br />
Property(S): REMOVE = ALL<br />
</small><br />
Entscheidend ist, die Action<strong> InstallValidate</strong> erkennt den Remove Control Event Eingriff  und ändert den Wert in der REMOVE Property auf ALL.</p>
<blockquote><p><strong>Dies bedeutet: Wird ein Produkt über den Wartungsmodus deinstalliert, so werden Konditionen mit dem Argument REMOVE~=&#8221;ALL&#8221; erst nach der InstallValidate Aktion funktionieren.</strong></p></blockquote>
<p>Sollte früher eine Aktion diese Kondition verwenden, so wird diese nicht ausgeführt.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/02/25/remove-kondition-die-wahrheit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Failed to set the archive file&#8217;s unique identifier&#8221; Fehler in Virtual Package Editor</title>
		<link>http://spablog.ontrex.ch/2010/02/24/failed-to-set-the-archive-files-unique-identifier-fehler-in-virtual-package-editor/</link>
		<comments>http://spablog.ontrex.ch/2010/02/24/failed-to-set-the-archive-files-unique-identifier-fehler-in-virtual-package-editor/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 14:21:01 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=342</guid>
		<description><![CDATA[Problem:
Sie erhalten in  Wise Package Studio beim kompilieren von virtuellen Projekten (WVP) im &#8220;Virtual Package Editor&#8221; nachfolgende Fehlermeldung:

Das erstellte VSA Paket an sich funktioniert, allerdings wird die Package GUID nicht korrekt gesetzt.
Lösung:
Das Problem taucht nur auf wenn der Wise Package Studio Server auf einem x64 OS installiert wurde.
Die &#8220;VPE_SVSZip.dll&#8221; Komponente, welche die Datei SVSZip.dll beinhaltet,  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>Sie erhalten in  Wise Package Studio beim kompilieren von virtuellen Projekten (WVP) im &#8220;Virtual Package Editor&#8221; nachfolgende Fehlermeldung:</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/failedtoset.jpg"><img class="alignnone size-full wp-image-353" title="failedtoset" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/failedtoset.jpg" alt="" width="417" height="256" /></a></p>
<p>Das erstellte VSA Paket an sich funktioniert, allerdings wird die Package GUID nicht korrekt gesetzt.</p>
<p><strong>Lösung:</strong></p>
<p>Das Problem taucht nur auf wenn der Wise Package Studio Server auf einem x64 OS installiert wurde.</p>
<p>Die &#8220;VPE_SVSZip.dll&#8221; Komponente, welche die Datei SVSZip.dll beinhaltet,  wird nur auf 32-Bit  Systemen installiert da diese mit &#8220;NOT VersionNT64&#8243; konditioniert ist.</p>
<p>32-Bit Network Clients, welche nahezu sämtliche Programme vom Server aus abrufen, benötigen aber diese DLL um das VSA korrekt abschliessen zu können.</p>
<p>Am einfachsten installieren Sie einen Testserver auf ein 32-Bit OS und kopieren danach die &#8220;SVSzip.dll&#8221; ins &#8220;Virtual Package Editor&#8221; Verzeichnis.</p>
<p><strong><br />
</strong></p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/02/24/failed-to-set-the-archive-files-unique-identifier-fehler-in-virtual-package-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Runtime Silent Repair</title>
		<link>http://spablog.ontrex.ch/2010/02/18/java-runtime-silent-repair/</link>
		<comments>http://spablog.ontrex.ch/2010/02/18/java-runtime-silent-repair/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 16:33:18 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Application Best Practices]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=324</guid>
		<description><![CDATA[Nicht überall wo MSI draufsteht, ist auch MSI drin. Ein Paketierer-Sprichwort, was sich bei der Sun Java Runtime bewahrheitet.
Ein aktuelles Problem der Java Runtime besteht bei einer unbeaufsichtigten Reparatur (Silent Repair), denn die Java Installation unterstützt keine Reparatur. Dies wird ersichtlich in der Systemsteuerung, es besteht nur die Möglichkeit das Produkt zu deinstallieren. Auch bei [...]]]></description>
			<content:encoded><![CDATA[<p>Nicht überall wo MSI draufsteht, ist auch MSI drin. Ein Paketierer-Sprichwort, was sich bei der Sun Java Runtime bewahrheitet.<br />
Ein aktuelles Problem der Java Runtime besteht bei einer unbeaufsichtigten Reparatur (Silent Repair), denn die Java Installation unterstützt keine Reparatur. Dies wird ersichtlich in der Systemsteuerung, es besteht nur die Möglichkeit das Produkt zu deinstallieren. Auch bei einer erneuten Installation bekommt der Endanwender über die Installationsdialoge eine Mitteilung:</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/javaman1.png"><img class="alignnone size-medium wp-image-327" title="javaman" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/javaman1-300x121.png" alt="" width="300" height="121" /></a><br />
Ein &#8216;Reinstall&#8217; wird jedoch nicht durchgeführt. Das Java Setup wird die bestehende Installation deinstallieren und die gleiche Intallationsrutine erneut aufstarten.</p>
<p>Der Grund dieses Vorgehens liegt im Design der Installation. Es handelt sich bei der Java Installation um keine echte Windows Installer Rutine, sondern die MSI Technologie wird verwendet um Basis Dateien zu installieren, welche durch Benutzerdefinierte Aktionen (Custom Actions) die Hauptinstallation durchführen.</p>
<p>Ein fataler Nebeneffekt besteht nun, wenn eine Repartur oder die Installation ein zweites mal im unbeaufsichtigten Modus  durchgeführt wird.<br />
Anstelle einer Reparatur, wird eine fehlerhafte Neuinstallation durchgeführt.</p>
<p>Ein Blick hinter die Kulissen zeigt, das nicht alle Benutzerdefinierten Aktionen ausgeführt werden.<br />
<a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/Javadiff.png"><img class="alignnone size-medium wp-image-328" title="Javadiff" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/Javadiff-300x142.png" alt="" width="300" height="142" /></a></p>
<p>Fatal: Basis-Dateien wie java.exe werden aus dem System32 Verzeichnis gelöscht und die Java Runtime ist nicht mehr funktionsfähig.<br />
<a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/JavaCMD2.png"><img class="alignnone size-medium wp-image-336" title="JavaCMD" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/JavaCMD2-300x25.png" alt="" width="300" height="25" /></a></p>
<p>Wir empfehlen daher, die Intallation mittels Transformationsdatei anzupassen, damit dieser unerwünschte Vorgang unterbunden wird.</p>
<p>Folgende Eintäge in der Custom Action Tabelle sind nötig:<br />
<a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/CustomAction.jpg"><img class="alignnone size-medium wp-image-330" title="CustomAction" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/CustomAction-300x37.jpg" alt="" width="300" height="37" /></a></p>
<p> Die InstallExecuteSequence Tabelle mit der Kondition:<br />
<a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/InstallExecuteSequece2.jpg"><img class="alignnone size-medium wp-image-337" title="InstallExecuteSequece" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/InstallExecuteSequece2-300x23.jpg" alt="" width="300" height="23" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/02/18/java-runtime-silent-repair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WisePathReplacement</title>
		<link>http://spablog.ontrex.ch/2010/02/03/wisepathreplacement/</link>
		<comments>http://spablog.ontrex.ch/2010/02/03/wisepathreplacement/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 09:52:47 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[TECH]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=303</guid>
		<description><![CDATA[Jedem der sich schon länger mit Wise Package Studio befasst wird sicher schon die WisePathReplacement Tabelle aufgefallen sein.
Was genau steckt hinter dieser nützlichen &#8220;Custom&#8221; Wise Tabelle?
Dank Ihr gibt es die Möglichkeit in der Registry Werte zu verändern, die der Windows Installer nicht direkt als Variablen unterstützt. Davon betroffen in der Repaketierung sind Verzeichnisse, die ohne Backslash enden [...]]]></description>
			<content:encoded><![CDATA[<p>Jedem der sich schon länger mit Wise Package Studio befasst wird sicher schon die WisePathReplacement Tabelle aufgefallen sein.</p>
<p>Was genau steckt hinter dieser nützlichen &#8220;Custom&#8221; Wise Tabelle?</p>
<p>Dank Ihr gibt es die Möglichkeit in der Registry Werte zu verändern, die der Windows Installer nicht direkt als Variablen unterstützt. Davon betroffen in der Repaketierung sind Verzeichnisse, die ohne Backslash enden und Pfade im 8.3 Format. Viele ersetzen diese einfach mit Windows Installer Verzeichnis-Variablen bzw. File-Keys, dies kann aber zu Problemen bei div. Applikationen führen. Dank der WisePathReplacement Tabelle und den dazugehörigen Custom Actions werden solche Information in der Registry Tabelle erkannt und mit dynamischen Werten modifiziert.</p>
<p>Die Erkennung der Werte in der Registry Tabelle geschieht nur während eines Setup-Capture Prozesses. Wenn Werte nachträglich ersetzt werden müssen, dann können Sie die WisePathReplacement Tabelle verwenden, müssen jedoch sicherstellen dass die benötigten Einträge in der CustomAction und InstallExecuteSequence Tabelle vorhanden sind.</p>
<p>Folgende Werte können Sie mit Hilfe der WisePathReplacement Tabelle modifizieren:</p>
<p>- Directory Properties ohne abschliessenden Backslash.<br />
- Dynamische 8.3 Pfade</p>
<p>Die Konfiguration gestaltet sich sehr einfach (automatisch beim Setup-Capture):</p>
<p>In der WisePathReplacement Tabelle trägt man die Primär-Key‘s des gewünschten Registry Wertes ein und legt die gewünschte Funktion fest:</p>
<p>1 = Kein Backslash am Ende.<br />
2 = Pfad in 8.3 Format konvertieren.<br />
3 = Beide Funktionen vereint (1+2).</p>
<p>Das ganze führen wir natürlich mit einem praktischen Beispiel vor.</p>
<p>Wir haben ein Paket mit folgenden Registry Key‘s:</p>
<p><img class="alignnone size-full wp-image-305" title="wpr_registry" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/wpr_registry.png" alt="wpr_registry" width="573" height="95" /></p>
<p>Die Registry-Key Namen sollten jeweils selbsterklärend sein. Um den gewünschten Effekt zu erzeugen ergänzen wir die WisePathReplacement Tabelle:</p>
<p><img class="alignnone size-full wp-image-306" title="wpr_wpr" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/wpr_wpr.png" alt="wpr_wpr" width="220" height="88" /></p>
<p>Das Resultat nach der Installation ist wie folgt:</p>
<p><img class="alignnone size-full wp-image-307" title="wpr_results" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/wpr_results.png" alt="wpr_results" width="366" height="94" /></p>
<p>Während einem Setup Capture Prozess werden  die benötigten Custom Actions automatisch eingebaut. Bei einer manuellen Anpassung müssen die benötigten Custom Action nachgetragen werden:</p>
<ol>
<li>Wechseln Sie im &#8220;Installation Expert&#8221; auf die &#8220;Resources Ansicht&#8221;</li>
<li>Klicken Sie auf &#8220;Add&#8221; um eine neue Resource hinzuzufügen.<br />
Die benötigte DLL für die Custom Actions befindet sich im Wise Package Studio Programmverzeichnis unter folgendem Pfad:<br />
[WisePath]\Stub\WiseApi.dll</li>
<li>Der Resource gibt man den Namen &#8220;Callwiseapi&#8221;.</li>
<li>Im &#8220;Setup Editor&#8221; wechselt man nun auf die Tabellen Ansicht und springt zur CustomAction Tabelle.<br />
Erfassen Sie die folgenden Custom Actions wie ersichtlich:<br />
<img class="alignnone size-full wp-image-309" title="wpr_customaction" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/wpr_customaction.png" alt="wpr_customaction" width="471" height="62" /></li>
<li>Zum Schluss müssen noch die neu erfassten Custom Actions in der InstallExecuteSequence eingebaut werden. Fügen Sie folgende neue Zeilen hinzu:<br />
<img class="alignnone size-full wp-image-310" title="wpr_ies" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/wpr_ies.png" alt="wpr_ies" width="337" height="68" /></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/02/03/wisepathreplacement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Plugins Repaketieren</title>
		<link>http://spablog.ontrex.ch/2010/01/29/firefox-plugins-repaketieren/</link>
		<comments>http://spablog.ontrex.ch/2010/01/29/firefox-plugins-repaketieren/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 16:13:13 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Application Best Practices]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=293</guid>
		<description><![CDATA[Die Plugins von Firefox zu repaketieren ist im Grunde einfach. Wissenswert ist, dass es zwei verschiedene Möglichkeiten gibt, um Plugins bereitzustellen.

In diesem Beispiel sind die Plugins für den RealPlayer und Quicktime auf einem Rechner installiert.
Diese Plugins werden auf unterschiedliche Wege eingelesen. Das RealPlayer Plugin wird über die Registry eingelesen, dessen Weg viele Software Hersteller verwenden.

Die [...]]]></description>
			<content:encoded><![CDATA[<p>Die Plugins von Firefox zu repaketieren ist im Grunde einfach. Wissenswert ist, dass es zwei verschiedene Möglichkeiten gibt, um Plugins bereitzustellen.</p>
<p><img class="alignnone size-full wp-image-294" title="Firefox Plugins" src="http://spablog.ontrex.ch/wp-content/uploads/2010/01/plugins1.PNG" alt="Firefox Plugins" width="357" height="285" /></p>
<p>In diesem Beispiel sind die Plugins für den RealPlayer und Quicktime auf einem Rechner installiert.</p>
<p>Diese Plugins werden auf unterschiedliche Wege eingelesen. Das RealPlayer Plugin wird über die Registry eingelesen, dessen Weg viele Software Hersteller verwenden.</p>
<p><img class="alignnone size-full wp-image-295" title="plugins2" src="http://spablog.ontrex.ch/wp-content/uploads/2010/01/plugins2.PNG" alt="plugins2" width="317" height="128" /></p>
<p>Die Registry-Einträge für ein Firefox Plugin können über Local Machine Keys bereit gestellt werden.</p>
<p>Das Quicktime Plugin wird über Dateien bereitgestellt. Diese werden in die von Firefox vorgesehenen Ordner (Components und Plugins) abgelegt. Dieser Weg der Plugin Bereitstellung ist seltener anzutreffen.</p>
<p><img class="alignnone size-full wp-image-296" title="plugins4" src="http://spablog.ontrex.ch/wp-content/uploads/2010/01/plugins4.PNG" alt="plugins4" width="365" height="272" /></p>
<p>Im Ordner Components wird die XPT (XPCOM Type Library) Datei Abgelegt, im Ordner plugins werden die Plugins selber abgelegt.</p>
<p>Fazit:<br />
Firefox Plugins sind einfach zu Installieren, da diese Per-Machine Ressourcen sind. Wenn Firefox Plugins repaketiert werden sollen, dann ist Firefox vor einem Snap-Shot zu installieren, da nicht alle Applikationsentwickler die Plugins ohne Firefox installieren.</p>
<p>Mehr über XPCOM kann in Wikipedia nachgeschlagen werden.<br />
<a href="http://en.wikipedia.org/wiki/XPCOM">http://en.wikipedia.org/wiki/XPCOM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/01/29/firefox-plugins-repaketieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Komponenten Attribute in Wise Package Studio 8.0</title>
		<link>http://spablog.ontrex.ch/2010/01/26/neue-komponenten-attribute-in-wise-package-studio-8-0/</link>
		<comments>http://spablog.ontrex.ch/2010/01/26/neue-komponenten-attribute-in-wise-package-studio-8-0/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 12:38:33 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=270</guid>
		<description><![CDATA[Mit Wise Package Studio 8 wurden 3 Komponenten Attribute der neueren Windows Installer Versionen hinzugefügt, welche wir in diesem Artikel genauer unter die Lupe nehmen:
 

msidbComponentAttributesDisableRegistryReflection  (Disable registry reflection)
(Betrifft nur x64 Betriebssysteme)
Dieses Komponenten Attribut deaktiviert die Registry Reflection für alle Registrey Keys der betroffenen Komponente.
Vereinfacht erklärt:
Auf 64-Bit Windows Systemen gibt es 2 Registry Ansichten, eine für 32-Bit [...]]]></description>
			<content:encoded><![CDATA[<p>Mit Wise Package Studio 8 wurden 3 Komponenten Attribute der neueren Windows Installer Versionen hinzugefügt, welche wir in diesem Artikel genauer unter die Lupe nehmen:</p>
<p> </p>
<p><strong><img class="alignnone size-full wp-image-287" title="componenteAttribute" src="http://spablog.ontrex.ch/wp-content/uploads/2009/12/componenteAttribute2.PNG" alt="componenteAttribute" width="422" height="207" /></strong></p>
<p><strong>msidbComponentAttributesDisableRegistryReflection  (Disable registry reflection)</strong></p>
<p>(Betrifft nur x64 Betriebssysteme)<br />
Dieses Komponenten Attribut deaktiviert die <strong>Registry Reflection</strong> für alle Registrey Keys der betroffenen Komponente.</p>
<p>Vereinfacht erklärt:</p>
<p>Auf 64-Bit Windows Systemen gibt es 2 Registry Ansichten, eine für 32-Bit und eine für 64-Bit Applikationen.</p>
<p>Dabei unterscheidet man zwischen folgenden 3 Redirection Typen:</p>
<ul>
<li>Shared
<ul>
<li>Gemeinsam verwendeter Registry Key.</li>
</ul>
</li>
<li>Redirected
<ul>
<li>32-Bit / 64-Bit Registry Schlüssel sind separat.</li>
</ul>
</li>
<li>Reflection
<ul>
<li>Aus Interoperabilitätsgründen synchronisiert das Betriebssystem gewisse Keys zwischen den Ansichten.</li>
</ul>
</li>
</ul>
<p>Letztere Methode kann man mit diesem Attribut deaktiviert werden, da dieses Verhalten nicht immer erwünscht sein muss.</p>
<p>Ab Windows 7 / 2008 R2 wurde das Registry Reflection Feature entfernt. Damit wird diese Option für diese Betriebsysteme überflüssig.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/aa384235%28VS.85%29.aspx">Weiterführende Information zum Thema Registry Reflection im Microsoft Developer Network</a></p>
<p><strong>msidbComponentAttributesUninstallOnSupersedence (Uninstall on supercedence)</strong></p>
<p>Dieses Attribut ist lediglich für  die „Small Patch“ Thematik relevant.</p>
<p>Wir erläutern das ganze einfachheitshalber mit einem praktischen Beispiel:</p>
<blockquote><p>Wir installieren das <strong>Produkt A</strong> welches die <strong>Komponente Y</strong> beinhaltet.</p>
<p>Wir installieren den <strong>Patch 1 für das Produkt A</strong>, welches als Neuerung eine neue Komponente namens <strong>Komponente Z</strong> mitliefert. Das <strong>Produkt A</strong> besteht nun aus <strong>Komponente Y &amp; Z</strong></p>
<p>Nun kommen wir zu <strong>Patch 2</strong>, welcher <strong>Patch 1</strong> „superseded“ also ersetzt bzw. überflüssig macht.<br />
<strong>Komponente Y</strong> wurde in dieser Version aktualisiert und machte dadurch <strong>Komponente Z</strong> welche in <strong>Patch 1</strong> hinzugefügt wurde überflüssig.</p>
<p>Installiert man <strong>Patch 2</strong> über das Produkt mit <strong>Patch 1</strong> ergibt sich folgendes Resultat:</p>
<p>Aktualisierte <strong>Komponente Y</strong>.<br />
<strong>Komponente Z ist physisch (Files) immer noch vorhanden.</strong></p>
<p>Installiert man hingegen <strong>Patch 2</strong> direkt über das Produkt ohne vorher <strong>Patch 1</strong> zu installieren ergibt sich folgendes Resultat:</p>
<p>Aktualisierte <strong>Komponente Y</strong>.<br />
<strong>Komponente Z wurde NIE installiert.</strong></p></blockquote>
<p>Aktiviert man nun bei einer Komponente das „Uninstall on supercedence“ Attribut, überprüft Windows Installer jeweils ob dieser noch notwendig ist &amp; entfernt ihn gegebenen falls.</p>
<p>Bei unserem Beispiel würde das wie folgt aussehen:</p>
<blockquote><p>In Patch 1 ist für <strong>Komponente Z</strong> das Attribut gesetzt.</p>
<p>Nun Installieren wir wieder <strong>Patch 2</strong>, allerdings schaut des Resultat nun anders aus:</p>
<p>Aktualisierte <strong>Komponente Y</strong><br />
<strong>Komponente Z wurde entfernt</strong></p></blockquote>
<p>Um das ganze besser veranschaulichen zu können haben wir ein Test-Set mit MSI &amp; Patches realisiert, damit man das Attribut auch in Aktion erleben kann.</p>
<p><a href="http://spablog.ontrex.ch/downloads/supersedence.zip" target="_blank">Download supersedence.zip</a></p>
<p><strong>msidbComponentAttributesShared (Shared)</strong></p>
<p>Dieses Komponenten Attribut stellt sicher, dass jeweils die aktuellste Version der Komponente zur Verfügung steht.<br />
Wir erläutern das ganze einfachheitshalber mit einem praktischen Beispiel:</p>
<blockquote><p>Zuerst wird <strong>Produkt A</strong> installiert, welches den gemeinsam verwendeten <strong>Komponenten Z</strong> in der Version 1.0 installiert.</p>
<p>Als nächstes Installieren wir Produkt B mit dem gemeinsam verwendeten <strong>Komponenten Z</strong> in der Version 1.1.</p>
<p>Nun Installieren wir für <strong>Produkt A</strong> den <strong>Patch X</strong> welches den gemeinsam verwendeten <strong>Komponenten Z</strong> auf die Version 1.2 hebt.</p>
<p>Aufgrund diverser Probleme entscheidet man sich <strong>Patch X </strong>für <strong>Produkt A</strong> wieder zu deinstallieren: Während diesem Vorgang wird wieder die alte Version von <strong>Komponent Z</strong> in der Version 1.0 wiederhergestellt.</p>
<p>Da <strong>Produkt B</strong> aber explizit auf die Version 1.1 setzt funktioniert dieses nun nicht mehr.</p></blockquote>
<p>Sobald dieses Attribut bei einer Komponente aktiv ist, stellt Windows Installer jeweils sicher, dass die aktuellste Version eines gemeinsam verwendeten Komponenten auf dem System bleibt.</p>
<p>Wir empfehlen deshalb den Einsatz dieses Attributes für gemeinsam verwendete Komponenten, neben den üblichen &#8220;Always Increment shared .DLL Count&#8221; &amp; &#8220;Leave installed on uninstall&#8221; Attributen.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/01/26/neue-komponenten-attribute-in-wise-package-studio-8-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Companion Files</title>
		<link>http://spablog.ontrex.ch/2009/12/23/companion-files/</link>
		<comments>http://spablog.ontrex.ch/2009/12/23/companion-files/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 10:52:01 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=276</guid>
		<description><![CDATA[Oft begegnet man in der Software Paketierung dem Problem, dass man eine unversionierte Datei ersetzen will, dies aber nicht immer auf Anhieb gelingt.
Der Grund ist meist schnell gefunden, die Datei wurde mittlerweile modifiziert oder aus anderen Gründen stimmt das Create/Modified Datum nicht mehr überein. Deshalb verhindern auch die Default File Versioning Rules das erfolgreiche Ersetzen [...]]]></description>
			<content:encoded><![CDATA[<p>Oft begegnet man in der Software Paketierung dem Problem, dass man eine unversionierte Datei ersetzen will, dies aber nicht immer auf Anhieb gelingt.</p>
<p>Der Grund ist meist schnell gefunden, die Datei wurde mittlerweile modifiziert oder aus anderen Gründen stimmt das Create/Modified Datum nicht mehr überein. Deshalb verhindern auch die Default File Versioning Rules das erfolgreiche Ersetzen der Datei.</p>
<p>Die Windows Installer Technologie bietet aber hierfür eine elegante Lösungsmöglichkeit an, welche leider oft in Vergessenheit gerät.</p>
<p><strong>Companion Files</strong>, zu Deutsch: Begleit-Dateien, bezeichnet man Dateien in der Installation, bei denen man eine andere Datei als &#8220;Entscheidungsträger&#8221; definiert.</p>
<p>Beispiel:</p>
<blockquote><p>Für userdata.usr (unversioniert) konfiguriert man &#8220;MyVersioned.dll&#8221; (versioniert) als &#8220;Entscheidungsträger&#8221;. Sofern MyVersioned.dll installiert wird (Beispiel: Höhere Version als bestehende MyVersioned.dll), wird auch userdata.usr installiert.</p></blockquote>
<p>Wise Package Studio kann dies wie folgt realisiert werden:</p>
<ol>
<li>Man wechselt auf folgende Ansicht:<br />
&#8220;Setup Editor -&gt; Tables -&gt; File&#8221;</li>
<li>Als nächster Schritt sucht man sich die unversionierte Datei heraus.</li>
<li>Sobald man diese gefunden hat, öffnet man das DropDown Menu bei der Spalte &#8220;Version&#8221;.<br />
<img class="alignnone size-full wp-image-277" title="companion_files" src="http://spablog.ontrex.ch/wp-content/uploads/2009/12/companion_files.png" alt="companion_files" width="508" height="112" /></li>
<li>Bei der Spalte trägt man nun die gewünschte &#8220;Entscheidungsträger&#8221; Datei ein, diese sollte natürlich optimaler weise eine versionierte Datei sein.</li>
</ol>
<p>Den Mechanismus in Aktion sieht man entsprechend in der Logfile:</p>
<blockquote><p>File: C:\Program Files\MyProject\userdata.usr;    Overwrite;    Won&#8217;t patch;    Existing file is of an equal version    (Checked using version of companion: C:\Program Files\MyProject\MyVersioned.dll)</p></blockquote>
<p>Weiterführende Information gibt es natürlich wie immer im Windows Installer SDK:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/aa367997%28VS.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa367997%28VS.85%29.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/12/23/companion-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aktualisierte Visual C++ 2005 SP1 Merge Module</title>
		<link>http://spablog.ontrex.ch/2009/12/07/aktualisierte-visual-c-2005-sp1-merge-module/</link>
		<comments>http://spablog.ontrex.ch/2009/12/07/aktualisierte-visual-c-2005-sp1-merge-module/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 15:55:07 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=259</guid>
		<description><![CDATA[Bei der Repaketierung von Applikationen welche die Visual C++ 2005 SP1  Runtimes benötigen sollte ein Augenmerk darauf gelegt werden, welche Version exakt benötigt wird.
Denn seit dem 28. Juli existiert eine aktualisierte Variante der &#8220;Visual C++ 2005 Sp1 Redistributable&#8221; (8.0.50727.4053) unter folgendem Link zum Download:
http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&#38;displaylang=en
Die aktuellste Version von Quicktime (7.6.5) verlangt beispielsweise explizit diese Runtime-Version.
Im Repaketierungsprozess [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Repaketierung von Applikationen welche die Visual C++ 2005 SP1  Runtimes benötigen sollte ein Augenmerk darauf gelegt werden, welche Version exakt benötigt wird.</p>
<p>Denn seit dem 28. Juli existiert eine aktualisierte Variante der &#8220;Visual C++ 2005 Sp1 Redistributable&#8221; (8.0.50727.4053) unter folgendem Link zum Download:</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en" target="_blank">http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&amp;displaylang=en</a></p>
<p>Die aktuellste Version von Quicktime (7.6.5) verlangt beispielsweise explizit diese Runtime-Version.<br />
Im Repaketierungsprozess darf man deshalb diese nicht einfach durch die normalen SP1 Merge Module (8.0.50727.762) ersetzen.</p>
<p>Die neuen Merge Module erhält man durch aktualisieren der Visual C++ 2005 Entwicklungsumgebung. Bei diesem Prozess werden die Merge Module im Verzeichnis&#8221; %CommonProgramFiles%\Merge Modules&#8221; auf den neusten Stand gebracht.<br />
Diese können dann ins repaketierte Projekt hinzugefügt werden und somit entfällt das Redistributable MSI als Installations-Voraussetzung.</p>
<p>Den Patch für die Visual Studio 2005 SP1 Entwicklungsumgebung steht hier zum herunterladen bereit:</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=de&amp;FamilyID=7c8729dc-06a2-4538-a90d-ff9464dc0197" target="_blank">http://www.microsoft.com/downloads/details.aspx?displaylang=de&amp;FamilyID=7c8729dc-06a2-4538-a90d-ff9464dc0197</a></p>
<p>Mehr Hintergrundinformationen zur aktualisierten Version gibt es unter folgendem Link:</p>
<p><a href="http://www.microsoft.com/technet/security/bulletin/MS09-035.mspx" target="_blank">http://www.microsoft.com/technet/security/bulletin/MS09-035.mspx</a></p>
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;">TcRTime    TcRTime    128        1    TCRtime.sys<br />
TcIo    TcIo    128        1    TcIo.sys<br />
TcPlc    TcPlc    128        1    TcPlc.sys<br />
TcCam    TcCam    128        1    TCCam.sys<br />
TcRouter    TcRouter    128        1    TCRouter.sys<br />
TcIoPNet    TcIoPNet    128        1    TcIoPNet.sys<br />
TcIoEth    TcIoEth    128        1    TcIoEth.sys<br />
TcIoECat    TcIoECat    128        1    TcIoECat.sys</div>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/12/07/aktualisierte-visual-c-2005-sp1-merge-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
