<?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 &#187; Application Best Practices</title>
	<atom:link href="http://spablog.ontrex.ch/category/tech/application-best-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://spablog.ontrex.ch</link>
	<description>Software Paketierung mit Ontrex Kung Fu</description>
	<lastBuildDate>Sun, 27 Jun 2010 14:03:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Plugin für verschiedene Office Versionen bereitstellen</title>
		<link>http://spablog.ontrex.ch/2010/06/27/plugin-fur-verschiedene-office-versionen-bereitstellen/</link>
		<comments>http://spablog.ontrex.ch/2010/06/27/plugin-fur-verschiedene-office-versionen-bereitstellen/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 14:03:03 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Application Best Practices]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=454</guid>
		<description><![CDATA[Wenn immer eine neue Version von Microsoft Office verfügbar ist, kommt es vermehrt zur Situation, dass eine Installation Office Plugins sowohl für die Vorgängerversion wie auch für die aktuellste Version bereitstellen muss. Für Administratoren die ein Office Plugin repaketieren, kommt erschwerend dazu, dass für jede Office Version die berücksichtigt werden muss, ein Snap-Shot von der Hersteller-Installation [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn immer eine neue Version von Microsoft Office verfügbar ist, kommt es vermehrt zur Situation, dass eine Installation Office Plugins sowohl für die Vorgängerversion wie auch für die aktuellste Version bereitstellen muss.</p>
<p>Für Administratoren die ein Office Plugin repaketieren, kommt erschwerend dazu, dass für jede Office Version die berücksichtigt werden muss, ein Snap-Shot von der Hersteller-Installation durchgeführt werden muss. Als wäre dies nicht schon genug, müssen Dateien die scheinbar die Gleichen sind auch noch Binär abgelichen werden, denn nicht selten kommt es vor, dass ein Plugin die gleiche Grösse und das gleiche Datum hat, jedoch Binär unterschiedlich sind.</p>
<p>Der folgende Weg beschreibt wie mann gleiche oder unterschiedliche Office Plugins mit einer Installation für verschiedene Office Versionen bereitstellt.</p>
<p>Sind die Dateien für die unterschiedlichen Office Versionen bekannt, dann wird für jede Office Version eine eigene Komponente erstellt. Das Verzeichnis steht nur als Beispiel, in der Praxis werden die Dateien in unterliegende Ordner wie STARTUP oder XLSTART installiert.</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/06/office12.png"><img class="alignnone size-medium wp-image-455" title="office12" src="http://spablog.ontrex.ch/wp-content/uploads/2010/06/office12-300x99.png" alt="" width="300" height="99" /></a><br />
Beispiel Komponente für Office 12 (2007), erkennbar an der Kondition</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/06/office14.png"><img class="alignnone size-medium wp-image-456" title="office14" src="http://spablog.ontrex.ch/wp-content/uploads/2010/06/office14-300x98.png" alt="" width="300" height="98" /></a><br />
Beispiel Komponente für Office 14 (2010), erkennbar an der Kondition</p>
<p>Der Haupteil der Installations-Logik, herauszufinden welche Office Version vorhanden ist, übernimmt eine CustomAction. Die CustomAction wird die auf dem Rechner vorhande Office Version anhand der Winword.exe Datei auslesen und den MajorRelease des Office Produktes in eine Public Property, in diesem Beispiel OFFICEVERSION, hinterlegen. Die OFFICEVERSION Property wird danach als Kondition weiter verwendet.</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/06/officeca.png"><img class="alignnone size-medium wp-image-457" title="officeca" src="http://spablog.ontrex.ch/wp-content/uploads/2010/06/officeca-300x281.png" alt="" width="300" height="281" /></a></p>
<p>Da die Custom Action von keiner anderen Aktion abhänigig ist, wird diese im frühen Immediate Bereich der Installation ausgeführt. Zum InstallValidate Zeitpunkt wird anhand der Konditionen entschieden, welche Komponenten installiert werden.</p>
<p>Auszug aus dem Verbose-Log der Installation:</p>
<p>MSI (s) (20:44) [11:24:05:495]: Doing action: ONTXGetOfficeVersion<br />
MSI (s) (20!44) [11:24:05:807]: PROPERTY CHANGE: Adding OFFICEVERSION property. Its value is &#8217;14&#8242;.<br />
(Die CustomAction erstellt die Public Property mit dem aktuellen Wert der Office Version)</p>
<p>MSI (s) (20:44) [11:24:07:885]: Doing action: InstallValidate<br />
MSI (s) (20:44) [11:24:07:885]: Component: Office_Makros.dot_12; Installed: Absent;   Request: Local;   Action: Null<br />
MSI (s) (20:44) [11:24:07:885]: Component: Office_Makros.dot_14; Installed: Absent;   Request: Local;   Action: Local<br />
(Die InstallValidate Aktion wird mit der Action Null oder Local den Komponenten Status festlegen)</p>
<p>Nicht zu vergessen, die Public Property muss in die SecureCustomProperty aufgenommen werden.</p>
<p>Mit diesem Vorgehen steht nichts mehr im Wege die nächsten Office Plugin Installationen zu paketieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/06/27/plugin-fur-verschiedene-office-versionen-bereitstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install Microsoft Office 2010 Language Packs</title>
		<link>http://spablog.ontrex.ch/2010/06/10/install-microsoft-office-2010-language-packs/</link>
		<comments>http://spablog.ontrex.ch/2010/06/10/install-microsoft-office-2010-language-packs/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 06:07:13 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Application Best Practices]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=445</guid>
		<description><![CDATA[Das Prinzip der Office 2010 Language Packs Installation wurde von der Vorgänger Version 2007 übernommen. Wer zum Ersten Mal eine  Office 2007 oder 2010 MUL Installation automatisieren muss, dem sei mit einem Microsoft Technical Diagramm geholfen. Wohl reicht ein Ausdruck auf A3 nicht aus um alles darzustellen, jedoch gibt&#8217;s noch eine Zoom Funktion oder ein Drucker, [...]]]></description>
			<content:encoded><![CDATA[<p>Das Prinzip der Office 2010 Language Packs Installation wurde von der Vorgänger Version 2007 übernommen.</p>
<p>Wer zum Ersten Mal eine  Office 2007 oder 2010 MUL Installation automatisieren muss, dem sei mit einem Microsoft Technical Diagramm geholfen. Wohl reicht ein Ausdruck auf A3 nicht aus um alles darzustellen, jedoch gibt&#8217;s noch eine Zoom Funktion oder ein Drucker, der auf A1 oder A0 ausdrucken kann.</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/06/dmpfmo2010.gif"><img class="alignnone size-full wp-image-446" title="dmpfmo2010" src="http://spablog.ontrex.ch/wp-content/uploads/2010/06/dmpfmo2010.gif" alt="" width="175" height="225" /></a></p>
<p>Mit dem &#8216;Deploy Language Packs for Microsoft Office 2010&#8242; Diagramm erhält man auf einen Blick (oder auch zwei) eine Übersicht der Microsoft Office 2010 Sprachpaket-Integration.</p>
<p><a href="http://technet.microsoft.com/en-us/library/ee942200.aspx" target="_blank">Das Diagram zum Herunterladen</a></p>
<p>Weitere <a href="http://technet.microsoft.com/en-us/library/ee683866.aspx" target="_blank">Tech-Diagramme </a>von Microsoft die von Interesse sein können.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/06/10/install-microsoft-office-2010-language-packs/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 [...]]]></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>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 [...]]]></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>
	</channel>
</rss>
