<?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; Wise Package Studio</title>
	<atom:link href="http://spablog.ontrex.ch/category/tech/wise-package-studio/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>Class IDs verification Test</title>
		<link>http://spablog.ontrex.ch/2010/03/16/class-ids-verification-test/</link>
		<comments>http://spablog.ontrex.ch/2010/03/16/class-ids-verification-test/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 11:28:15 +0000</pubDate>
		<dc:creator>Stefan Hotan</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=401</guid>
		<description><![CDATA[Dieser Post geht auf den Test Expert ein, welcher mit einer Wise Package Studio Quality Assurance Erweiterung oder mit der Wise Package Studio Suite Edition zur Verfügung steht. Im Wise Test Expert existiert unter &#8216;Application Verification Tests&#8217; ein Class IDs  Test Case.  Mit diesem Test Case lassen sich Klassen, also Registry Einträge unter HKCR\CLSID automatisch [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Post geht auf den Test Expert ein, welcher mit einer Wise Package Studio Quality Assurance Erweiterung oder mit der Wise Package Studio Suite Edition zur Verfügung steht.<br />
Im Wise Test Expert existiert unter &#8216;Application Verification Tests&#8217; ein Class IDs  Test Case.  Mit diesem Test Case lassen sich Klassen, also Registry Einträge unter HKCR\CLSID automatisch Testen, ohne die Applikation starten und alle Funktionen sowie Unterfunktionen testen zu müssen.</p>
<p>Dieser Test Case unterliegt  der ClassID Tabelle der ausgewählten Applikation und verwendet die CoCreateInstance Funktion um die Funktionalität der Klasse zu verifizieren. Natürlich erhofft man sich bei der Verwendung des Wise Test Expert ein Erfolgs-Resultat von 100%. Die Praxis zeigt uns jedoch, dass bei den Class IDs Tests ein Resultat von 20% schon eine voll funktionierende Applikation ausweissen kann.</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/03/ClassIDs.png"><img class="alignnone size-full wp-image-402" title="ClassIDs" src="http://spablog.ontrex.ch/wp-content/uploads/2010/03/ClassIDs.png" alt="" width="404" height="86" /></a></p>
<p>Der Grund für diesen Beitrag besteht darin offen zu legen, warum im Test Expert bei den Class IDs Test ein Resultat von 20% schon gut genug sein kann.</p>
<p>Ich habe über die Jahre alle möglichen Resulate aus dem Test Experten analysiert und eine Liste erstellt, worin zu ersehen ist, bei welchen &#8216;Error Numbers&#8217; eine Installation auf Fehler zu überprüfen ist und bei welchen Nummern die Klasse als funktionsfähig einzustufen ist.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="90" valign="top"><strong>Error Number</strong></td>
<td width="240" valign="top"><strong>Error Description</strong></td>
<td width="70" valign="top"><strong>Real Error</strong></td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80040154</td>
<td width="240" valign="top">Class not registered</td>
<td width="70" valign="top"><span style="color: #ff9900;">maybe</span></td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80004002</td>
<td width="240" valign="top">No such interface supported</td>
<td width="70" valign="top">no</td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80080005</td>
<td width="240" valign="top">Server execution failed</td>
<td width="70" valign="top">no</td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80004005</td>
<td width="240" valign="top">Unspecified error</td>
<td width="70" valign="top">no</td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80040111</td>
<td width="240" valign="top">cannot supply requested class</td>
<td width="70" valign="top">no</td>
</tr>
<tr>
<td width="90" valign="top">0x8007007E</td>
<td width="240" valign="top">The specified module could not be found</td>
<td width="70" valign="top"><span style="color: #ff9900;">yes</span></td>
</tr>
<tr>
<td width="90" valign="top">0x8000FFFF</td>
<td width="240" valign="top">Catastrophic failure</td>
<td width="70" valign="top">no</td>
</tr>
<tr>
<td width="90" valign="top">0&#215;80040112</td>
<td width="240" valign="top">Class is not licensed for use</td>
<td width="70" valign="top">no</td>
</tr>
</tbody>
</table>
<p>Die Liste zeigt auf, es gibt verschiedene Gründe, warum ein Klassen-Test fehlschlagen kann.</p>
<p>Bei folgenden Fehler-Nummern kann die betroffene Klasse korrigiert werden:</p>
<p><strong>Class not registered</strong>: Der Test kann nochmals durchgeführt werden, nach dem die betroffene Klassen-Datei (.DLL oder .OCX) mit dem Programm regsvr32.exe registriert wurde. Sollte nach einem erneuten Test die Klasse erfolgreich gestet werden können, so kann die fehlende Klasse in die Installation eingebaut werden.</p>
<p><strong>The specified module could not be found</strong>: Verwenden Sie den <a href="http://www.dependencywalker.com/" target="_blank">Dependency Walker</a> von Microsoft um die fehlende(n) Datei(en) in die Installation einzubauen.</p>
<p>Bei den restlichen Fehlermeldungen liegt fast sicher kein Problem vor, oder dieser lässt sich aus Sicht eines System-Administrator nur sehr selten verbessern.</p>
<p>Zusammenfassend muss ich festhalten, dass ein Klassen-Test mit der CoCreateInstance Funktion keine optimale Lösung ist, um eine verlässliche Aussage treffen zu können, ob eine Klasse wirklich funktioniert. Die Test-Resulate liefern viele Error Codes zurück, obwohl die Applikation funktionieren wird. Schlussendlich hat ein Software Hersteller verschiedene Möglichkeiten eine Klasse  für seine Applikation zu inizialisieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/03/16/class-ids-verification-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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 [...]]]></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>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 [...]]]></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>Exclusion Liste für Windows 7</title>
		<link>http://spablog.ontrex.ch/2009/11/19/exclusion-liste-fur-windows-7/</link>
		<comments>http://spablog.ontrex.ch/2009/11/19/exclusion-liste-fur-windows-7/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 08:38:06 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=243</guid>
		<description><![CDATA[Die Software Repaketierung unter Windows 7 baut grundsätzlich auf die gleichen Repackaging Best Practices wie bei Windows Vista auf. Aus unseren Erfahrungen, die wir bei Windows 7 Migrationprojekten gesammelt haben, empfehlen wir die Ausschlussliste-Liste mit folgenden Einträgen zu erweitern, um eine bessere Qualität des Deltas eines Snap-Shots unter Windows 7 zu erreichen. Verzeichnis C:\Boot excl. Sub-Directory Verzeichnis C:\Users\All [...]]]></description>
			<content:encoded><![CDATA[<p>Die Software Repaketierung unter Windows 7 baut grundsätzlich auf die gleichen Repackaging Best Practices wie bei Windows Vista auf.</p>
<p>Aus unseren Erfahrungen, die wir bei Windows 7 Migrationprojekten gesammelt haben, empfehlen wir die Ausschlussliste-Liste mit folgenden Einträgen zu erweitern, um eine bessere Qualität des Deltas eines Snap-Shots unter Windows 7 zu erreichen.</p>
<table border="0">
<tbody>
<tr>
<td>Verzeichnis</td>
<td>C:\Boot</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Users\All Users</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Users\AppData\Local\Temp</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Users\AppData\LocalLow\Microsoft\CryptnetUrlCache</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Users\All Users\Microsoft\RAC</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Users\All Users\Microsoft\Search</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\ProgramData\Microsoft\RAC</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\ProgramData\Microsoft\Search</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Windows\ServiceProfiles</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Windows\System32\LogFiles</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td>C:\Windows\System32\winevt\Logs</td>
<td>excl. Sub-Directory</td>
</tr>
<tr>
<td>Datei</td>
<td>ntuser.dat.LOG1</td>
<td>File/Wildcard</td>
</tr>
<tr>
<td>Datei</td>
<td>UsrClass.dat</td>
<td>File/Wildcard</td>
</tr>
<tr>
<td>Datei</td>
<td>UsrClass.dat.LOG1</td>
<td>File/Wildcard</td>
</tr>
<tr>
<td>Registry HKCU</td>
<td>Software\Classes\Local Settings\MuiCache</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKCU</td>
<td>Software\Classes\Local Settings\Software\Microsoft\Windows\Shell</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>SOFTWARE\Microsoft\Windows Search</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>SOFTWARE\Microsoft\Reliability Analysis\RAC</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>SYSTEM\CurrentControlSet\services\VSS</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>COMPONENTS</td>
<td>Ignore entire subtree</td>
</tr>
<tr>
<td>Registry HKLM</td>
<td>Schema</td>
<td>Ignore entire subtree</td>
</tr>
</tbody>
</table>
<p>Weitere Informationen, was bei einer Windows 7 Migration zu beachten ist, können Sie an unserem User Group Meeting erfahren.<br />
Nebst verschiedenen Keynotes zu aktuellen Themen erwarten Sie Technologie- und Produkte-News sowie Live Demos und Praxisberichte. Nutzen Sie die Gelegenheit sich effektiv zu informieren und mit Fachkollegen und Spezialisten zu diskutieren.</p>
<p><a href="http://www.ontrex.ch/08_events/01_ausblick.htm?id=28"><img class="alignnone size-full wp-image-246" title="usergroup" src="http://spablog.ontrex.ch/wp-content/uploads/2009/11/usergroup.png" alt="usergroup" width="332" height="87" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/11/19/exclusion-liste-fur-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internal Error 2709</title>
		<link>http://spablog.ontrex.ch/2009/11/11/internal-error-2709/</link>
		<comments>http://spablog.ontrex.ch/2009/11/11/internal-error-2709/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 15:30:15 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=236</guid>
		<description><![CDATA[Die Windows Installer 2709 Fehlermeldung ist eine Benachrichtigung, die bei einer Update Installation erscheinen kann. Wird eine betroffene Installation auf einer Clean Machine installiert, so sieht alles gut aus, keine Fehlermeldung erscheint. Sollte die gleiche Installation als Update Installation durchgeführt werden, so erscheint die 2709 Fehlermeldung. Interessant dabei ist, das der Test auf einer Clean Machine [...]]]></description>
			<content:encoded><![CDATA[<p>Die Windows Installer 2709 Fehlermeldung ist eine Benachrichtigung, die bei einer Update Installation erscheinen kann. Wird eine betroffene Installation auf einer Clean Machine installiert, so sieht alles gut aus, keine Fehlermeldung erscheint. Sollte die gleiche Installation als Update Installation durchgeführt werden, so erscheint die 2709 Fehlermeldung. Interessant dabei ist, das der Test auf einer Clean Machine eigentlich das gleiche Problem haben sollte, das Problem aber aus internen Abläufen der Windows Installer Session automatisch korrigiert wird.</p>
<p><img class="alignnone size-full wp-image-237" title="2709" src="http://spablog.ontrex.ch/wp-content/uploads/2009/11/2709.PNG" alt="2709" width="406" height="206" /></p>
<p>Das Problem kann unter anderem durch ein Setup-Capture mit Wise Package Studio entstehen, wenn Dateien mit Merge Modulen ersetzt werden. Wie in diesem Beispiel wurde die Datei comdlg32.ocx durch ein Merge Module von Microsoft ersetzt. Dieser Vorgang löscht jedoch nicht die Verweise der bereits erstellten Componenten in der FeatureComponents Tabelle.</p>
<p><img class="alignnone size-full wp-image-238" title="FeatureComponent" src="http://spablog.ontrex.ch/wp-content/uploads/2009/11/FeatureComponent.PNG" alt="FeatureComponent" width="243" height="120" /><br />
Komponenten die während einem Setup-Capture mit einem Merge-Module ersetzt wurden, bleiben in der FeatureComponents Tabelle zurück</p>
<p>Das etwas mit diesen Komponenten nicht stimmt, wird in der Tabellenansicht des Windows Installer Editors ersichtlich. Werden diese Einträge übersehen, so wird auf diesen Misstand während der Validierung darauf hingewiesen:<br />
Not a valid foreign key; Table: FeatureComponents, Column: Component_, Key(s): Complete.comdlg32.ocx ice03.html FeatureComponents Component_ Complete comdlg32.ocx<br />
Evaluation: ICE03</p>
<p>Diese Einträge sind aus der FeatureComponents Tabelle zu löschen. Es kann jedoch vorkommen, das die Validierung aus unbekannten Gründen bei dieser Überprüfung fehlschlägt und keine Probleme angezeigt werden. Bei einem anschliessenden Testdurchlauf der Installation wird keine Fehlermeldung erscheinen, da die Windows Installer Session diese fehlerhaften Einträge überspringt.</p>
<p>Doing action: InstallValidate<br />
Feature: Complete; Installed: Absent;   Request: Local;   Action: Local<br />
Component: CreateFolder; Installed: Absent;   Request: Local;   Action: Local<br />
Component: registry44; Installed: Absent;   Request: Local;   Action: Local<br />
Component: findmsm.exe; Installed: Absent;   Request: Local;   Action: Local</p>
<p>Während der InstallValidate Aktion werden die betroffenen Komponenten ausgewählt, die fehlerhaften Einträge werden einfach übergangen.</p>
<p>Soweit scheint alles zu funktionieren, bis zu dem Tag, an dem mit der gleichen Installation ein Update durchgeführt wird. Bei einer Update Installation wird zusätzlich die MigrateFeatureStates Aktion durchgeführt. Diese überprüft die Stati der bereits Installierten Features und vererbt die Feature States bei der Update Installation (Die Vererbung von Feature Stati kann mit der Upgrade Tabelle deaktiviert werden). Die Aktion  MigrateFeatureStates übergeht  die fehlerhaften Einträge in der FeatureComponents Tabelle jedoch nicht und wird mit der Fehlermeldung 2709 die Installation abbrechen.</p>
<p>DEBUG: Error 2709:  The specified Component name (&#8216;comdlg32.ocx&#8217;) not found in Component Table.</p>
<p>In diesem Fall sind in der Installation die fehlerhaften Einträge in der FeatureComponents Tabelle zu beheben. Wir empfehlen diese Überprüfung in die Best-Practices von Software-Paketierungs Guidelines aufzunehmen, um diesem Problem zuvor zukommen.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/11/11/internal-error-2709/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>%HOMEDRIVE%%HOMEPATH% &#8211; MSI Error 1324</title>
		<link>http://spablog.ontrex.ch/2009/08/06/homedrivehomepath-msi-error-1324/</link>
		<comments>http://spablog.ontrex.ch/2009/08/06/homedrivehomepath-msi-error-1324/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 15:25:12 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Best Practices]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=150</guid>
		<description><![CDATA[Es muss nicht gleich zum Windows Installer Error 1324 kommen, doch woher kommt bei einer Installation die %HOMEDRIVE%%HOMEPATH% Information? Diese Frage und deren Auswirkungen sind Imgrunde einfach zu verstehen. Ursache: Die System-Variablen im Shortcut werden vom Explorer aufgelöst und die Applikation, welche in der Regel Per-Machine installiert wurde und deren Shortcut sich ebenfalls im AllUsers Profil befindet, [...]]]></description>
			<content:encoded><![CDATA[<p>Es muss nicht gleich zum Windows Installer Error 1324 kommen, doch woher kommt bei einer Installation die %HOMEDRIVE%%HOMEPATH% Information?</p>
<p>Diese Frage und deren Auswirkungen sind Imgrunde einfach zu verstehen.</p>
<p>Ursache:<br />
Die System-Variablen im Shortcut werden vom Explorer aufgelöst und die Applikation, welche in der Regel Per-Machine installiert wurde und deren Shortcut sich ebenfalls im AllUsers Profil befindet, wird das aktuelles Arbeitsverzeichnis des Benuters genommen. Damit kann der Softwarehersteller ohne grosse Mühe eine Per-Machine Installation durchführen, ohne eigene Shortcuts für jeden Benutzer erstellen zu müssen.</p>
<p>Wirkung:<br />
Bei einer standard Installation von Windows wird dieses Verzeichnis direkt ins Root des aktuellen Benutzerprofils zeigen. Dieser Umstand ist nicht optimal, da keine Dateien ins Root des Benutzerprofiles geschrieben werden sollen. Eine Alternative in diesem Fall wäre %APPDATA%, sofern die Daten Roamen dürfen.</p>
<p>Je nach AD und GP Umgebung werden diese beiden System-Variablen auf ein Verzeichnis eines Datei-Servers umgebogen, dann sind diese Variablen durchaus gebrauchtbar.</p>
<p>Umsetzung nach einem Snap-Shot:<br />
Nach einem Snap-Shot mit Wise Package Studio befindet sich der Pfad in der Directory Tabelle.</p>
<p><img class="alignnone size-full wp-image-151" title="HomeDirectory" src="http://spablog.ontrex.ch/wp-content/uploads/2009/08/HomeDirectory.png" alt="HomeDirectory" width="536" height="24" /></p>
<p>Solange dieser nur als WorkingDir in der Shortcut Tabelle verwendet wird, besteht kein Anlas diesen zu änderen.</p>
<p>Wenn nun jedoch dieses Verzeichnis auch noch anderweitig in der Intallation verwendet wird, dann können grössere Probleme nicht ausgeschlossen werden. Ein bekanntes Problem zeichnet sich mit dem Windows Installer Error 1324 ab.</p>
<p>Bei diesem Fehler muss das Problem über die Directory Tabelle gesucht und gelöst werden. Die %HOMEDRIVE%%HOMEPATH% Variablen sind nichts anderes als der ProfilesFolder Eintrag in der Directory Tabelle, welcher seit Wise Package Studio SP3 auch dem Paketierer zur Verfügung steht.</p>
<p>Wer diese Variablen bei einem Shorcut aus der Diretory Tabelle bekommen möchte, kann folgender Weg einschlagen:</p>
<p>1. Den Eintrag in der Directory Tabelle löschen, sofern nur Abhängigkeiten zum WkDir in der MSI Datei besteht.</p>
<p>2. Das WkDir in der Shortcut Tabelle auf eine eigene (PublicProperty) Variable verweisen.<br />
<img class="alignnone size-full wp-image-152" title="HomeShortcut" src="http://spablog.ontrex.ch/wp-content/uploads/2009/08/HomeShortcut.png" alt="HomeShortcut" width="244" height="38" /></p>
<p>3. Diese Variable in der Property Tabelle einrichten.<br />
<img title="HomeProperty" src="http://spablog.ontrex.ch/wp-content/uploads/2009/08/HomeProperty.png" alt="HomeProperty" width="452" height="22" /></p>
<p>Das Endresultat ist wohl gleich, doch die Bereitstellung der Daten ist verfolgt einen schöneren Weg.</p>
<p>Stefan Hotan<br />
A member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/08/06/homedrivehomepath-msi-error-1324/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schöner Wise-Scripten</title>
		<link>http://spablog.ontrex.ch/2009/07/01/schoner-wise-scripten/</link>
		<comments>http://spablog.ontrex.ch/2009/07/01/schoner-wise-scripten/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 06:44:30 +0000</pubDate>
		<dc:creator>Tino John</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=116</guid>
		<description><![CDATA[Neben der Erstellung von MSI-Paketen bietet Wise Package Studio noch nützliche andere Funktionen. Ich greife heute die vergleichsweise einfache Implementierung von mächtigen Scripts mittels Wise Script heraus. Durch die Bedienung des Editors via Drag&#38;Drop sind syntaktische Fehler im Quellcode fast unmöglich, einfacher kann man beispielsweise Änderungen an INI-Dateien, Registry-Einträge oder Pfadvariablen automatisiert kaum vornehmen. Durch [...]]]></description>
			<content:encoded><![CDATA[<p>Neben der Erstellung von MSI-Paketen bietet Wise Package Studio noch nützliche andere Funktionen. Ich greife heute die vergleichsweise einfache Implementierung von mächtigen Scripts mittels Wise Script heraus.</p>
<p>Durch die Bedienung des Editors via Drag&amp;Drop sind syntaktische Fehler im Quellcode fast unmöglich, einfacher kann man beispielsweise Änderungen an INI-Dateien, Registry-Einträge oder Pfadvariablen automatisiert kaum vornehmen.</p>
<p>Durch Kompilieren des Scripts wird dann eine EXE-Datei erstellt, die ohne weitere Runtimes auf Windows-System lauffähig ist.<br />
Einen Schönheitsfehler hat ein kompiliertes Wise Script dennoch: Den blauen Hintergrund zur Laufzeit.</p>
<p><img class="alignnone size-full wp-image-117" title="Kompiliertes Wise Script mit blauem Hintergrund" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/1.jpg" alt="Kompiliertes Wise Script mit blauem Hintergrund" width="481" height="340" /></p>
<p>Dieses Problem lässt sich umgehen, indem man das WSE-Projekt in einem beliebigen Editor, beispielsweise Notepad, öffnet und folgendes Bit &#8220;kippt&#8221;:</p>
<p><img class="alignnone size-full wp-image-118" title="Wise Script in Notepad" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/2.jpg" alt="Wise Script in Notepad" width="492" height="332" /></p>
<p>Nachdem die vorletzte &#8220;0&#8243; in der Zeile &#8220;Windows Flags&#8221; in &#8220;1&#8243; geändert wurde, muss das WSE-Projekt gespeichert und erneut mit dem Wise Script Editor kompiliert werden.<br />
Nun läuft die EXE-Datei ohne störenden blauen Hintergrund ab.</p>
<p><img class="alignnone size-full wp-image-119" title="Wise Script ohne blauen Hintergrund" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/3.jpg" alt="Wise Script ohne blauen Hintergrund" width="270" height="235" /></p>
<p>Tino John<br />
Member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/07/01/schoner-wise-scripten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This Windows Installer file contains upgrade information</title>
		<link>http://spablog.ontrex.ch/2009/06/11/this-windows-installer-file-contains-upgrade-information/</link>
		<comments>http://spablog.ontrex.ch/2009/06/11/this-windows-installer-file-contains-upgrade-information/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 07:34:30 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Message Boxes]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=84</guid>
		<description><![CDATA[Im zweiten Blog über die Wise Nachrichtenfenster, möchte ich auf das &#8216;This Windows Installer file contains upgrade information. Do you want to search your datasource for the packages to use when creating components?&#8217; eingehen. Die Ursache: Dieses Fenster erscheint, wenn die Installation Einträge in der Upgrade Tabelle hat. Warum: Bei den Anfangszeiten der Windows Intaller Technologie stand [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">Im zweiten Blog über die Wise Nachrichtenfenster, möchte ich auf das &#8216;This Windows Installer file contains upgrade information. Do you want to search your datasource for the packages to use when creating components?&#8217; eingehen.</div>
<div class="mceTemp"><img class="alignnone size-full wp-image-85" title="upgradeinformation" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/upgradeinformation.png" alt="upgradeinformation" width="452" height="150" /></div>
<div class="mceTemp">Die Ursache:</div>
<div class="mceTemp">Dieses Fenster erscheint, wenn die Installation Einträge in der Upgrade Tabelle hat.</div>
<div class="mceTemp">Warum:</div>
<div class="mceTemp">Bei den Anfangszeiten der Windows Intaller Technologie stand die Performance einer Installation sowie deren weiteren Aktionen wie Repapartur, Deinstallation und Update im Vordergrund. Beim Update war das ursprüngliche Ziel, zuerst die neue Version einer Applikation zu installieren und erst danach die alte Version zu deinstallieren. Dies hat zwei Vorteile. Erstens würde bei einem Installationsproblem der neuen Version der Rollback die alte Version wieder herstellen, somit kann der Anwender noch mit der alten Version arbeiten. Zweitens würde bei der Deinstallation der alten Version Zeit gesparrt werden, da nicht alle Dateien deinstalliert werden müssen. Leider hat sich dieses Wunschdenken bis heute nicht durchgesetzt. Alte Installationen werden zuerst Deinstalliert und danach wird die neue Version einer Applikation installiert. Die vielen kleinen technischen Details verhindern oder verunmöglichen es den Applikationsentwickler nach Windows Installer Vorgabe den Update zu erstellen.</div>
<div class="mceTemp">Der Wise Windows Installer Editor geht von der ursprünglichen Art des Updates von Microsoft aus (neue Version installieren, alte Version deinstallieren), daher finden wir in den Grundeinstellungen die RemoveExistingProducts Aktion am Ende der InstallExecuteSequence Tabelle.</div>
<div class="mceTemp"><img class="alignnone size-full wp-image-86" title="removeexistingproducts" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/removeexistingproducts.png" alt="removeexistingproducts" width="365" height="40" /></div>
<div class="mceTemp">Die Nachrichten Box selber bedeutet, wenn bei einem Update eine Komponente erstellt wird, so wird der Windows Installer Editor versuchen in alten Installationen diese Komponente zu suchen und bei einem Treffer dessen KomponentenID zu übernehmen.</div>
<div class="mceTemp">Best Practices:</div>
<div class="mceTemp">Die Antwort zu dieser Frage können Sie mit der RemoveExistingProducts Aktion beantworten. Ist diese in der Installation am Ende der InstallExecuteSequence Tabelle dann können Sie die Frage mit &#8216;<strong>Ja</strong>&#8216; beantworten. Wenn Sie die RemoveExistingProducts Aktion zum Anfang der Installation verschoben haben, oder im Generellen alle alten Intallationen vor einem Update deinstallieren (dies ist die Best Practices), dann können Sie die Frage mit  &#8217;<strong>Nein</strong>&#8216; beantworten.</div>
<div class="mceTemp">Sollten Sie ausversehen auf &#8216;<strong>Ja</strong>&#8216; gedrückt haben, so passiert nicht besonders viel. Sie verlieren etwas Rechnerzeit, was sich jedoch bei heutigen Systemen nicht wirklich bemerkbar macht. </div>
<div class="mceTemp">Hide Message:</div>
<div class="mceTemp">Erstellen Sie folgenden Registry-Key bei der Installation von Wise Package Studio oder Wise Installation Studio, damit diese Meldung nicht erscheint:</div>
<div class="mceTemp" style="text-align: left;">HKCUSoftwareWise SolutionsWindows Installer EditorHideMessages</div>
<div class="mceTemp">Name: 405<br />
Type: REG_DWORD<br />
Value: 7</div>
<div class="mceTemp">Stefan Hotan<br />
Member of the Ontrex SPA Team</div>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/06/11/this-windows-installer-file-contains-upgrade-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einfacher Weg zum LocalLow Verzeichnis</title>
		<link>http://spablog.ontrex.ch/2009/05/07/einfacher-weg-zum-locallow-verzeichnis/</link>
		<comments>http://spablog.ontrex.ch/2009/05/07/einfacher-weg-zum-locallow-verzeichnis/#comments</comments>
		<pubDate>Thu, 07 May 2009 09:08:40 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Datei System]]></category>

		<guid isPermaLink="false">http://spaportal.ontrex.ch/spaportal/blog/?p=73</guid>
		<description><![CDATA[Mit der Einführung der Integrity Access Level (IL) Funktionalität unter Windows Vista und Windows 7, wurde ein neues Verzeichnis, das LocalLow Verzeichnis eingeführt. Das LocalLow Verzeichnis wir für Prozesse verwendet, die als Low-Level Prozess ausgeübt werden. In der Regel betrifft dies Prozesse, welche unter dem Internet Explorer Prozess gestartet werden, wie das Apple Quicktime Plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Mit der Einführung der Integrity Access Level (IL) Funktionalität unter Windows Vista und Windows 7, wurde ein neues Verzeichnis, das LocalLow Verzeichnis eingeführt.</p>
<p>Das LocalLow Verzeichnis wir für Prozesse verwendet, die als Low-Level Prozess ausgeübt werden. In der Regel betrifft dies Prozesse, welche unter dem Internet Explorer Prozess gestartet werden, wie das Apple Quicktime Plugin oder Sun Java Runtime Environment. Diese Prozesse können nur noch Dateien in diesem Ordner schreiben oder modifzieren.</p>
<p>Wird eine Applikation repaketiert, welche in diesem Ordner eine Datei erstellt, dann wird schnell klar, dass der Windows Installer Dienst dieses neue Verzeichnis nicht auflöst. Eigentlich gehört das LocalLow Verzeichnis wie die restlichen &#8216;Special-Folders&#8217; aufgelöst. Das neue Verzeichnis jedoch ist weder in MSI 4.0, 4.5 noch 5.0 Bestandteil der Directory Tabelle.</p>
<p>Es gibt hierzu eine einfache Lösung, wenn Wise Package Studio 7 SP3 oder höher eingesetzt wird. Ab dieser Version von Wise Package Studio wird mit der CustiomAction WiseSetProfilesFolder das Root-Verzeichnis des aktuellen Benutzers aufgelöst (ebenfalls eine Schwachstelle des Windows Installer Dienstes). Aufbauend auf diesem Verzeichnis (ProfileFolder) kann nun mit zwei Einträgen in die Directory Tabelle das LocalLow Verzeichnis dynamisch aufgelöst werden.</p>
<p> <img class="alignnone size-medium wp-image-74" title="Das LocalLow Verzeichnis" src="http://spablog.ontrex.ch/wp-content/uploads/2009/05/locallow-300x20.png" alt="Das LocalLow Verzeichnis" width="300" height="20" /></p>
<p>Stefan Hotan<br />
Member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/05/07/einfacher-weg-zum-locallow-verzeichnis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ALLUSERS Profile Auflösung</title>
		<link>http://spablog.ontrex.ch/2009/04/24/allusers-profile-auflosung/</link>
		<comments>http://spablog.ontrex.ch/2009/04/24/allusers-profile-auflosung/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 11:24:55 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://windows-installer.ch/spaportal/blog/?p=48</guid>
		<description><![CDATA[Das Wise Package Studio bzw. das SetupCapture Tool scheint Files/Ordner welche ins ALLUSERS Profile geschrieben werden nicht richtig aufzulösen (Eine Ausnahme bildet natürlich der CommonAppDataFolder Wert). Bei einer Installation der repaketierten Applikation werden ohne Änderungen diese ins aktuelle Benutzerprofil des installierenden Users kopiert. Um diesem Bug entgegen zu wirken baut man am besten folgende CustomAction [...]]]></description>
			<content:encoded><![CDATA[<p>Das Wise Package Studio bzw. das SetupCapture Tool scheint Files/Ordner welche ins ALLUSERS Profile geschrieben werden nicht richtig aufzulösen (Eine Ausnahme bildet natürlich der CommonAppDataFolder Wert).</p>
<p>Bei einer Installation der repaketierten Applikation werden ohne Änderungen diese ins aktuelle Benutzerprofil des installierenden Users kopiert.</p>
<p>Um diesem Bug entgegen zu wirken baut man am besten folgende CustomAction im Immediate Bereich vor der CostFinalize Aktion ein:</p>
<p><img class="alignnone size-medium wp-image-51" title="screenie1" src="http://spablog.ontrex.ch/wp-content/uploads/2009/03/screenie1-300x146.png" alt="screenie1" width="300" height="146" /></p>
<p>Diese „biegt“ den entsprechenden Directory-Table Eintrag auf die Envirenmontvariable %ALLUSERSPROFILE%, welches in den meisten Fällen ein zufriedenstellendes Resultat produziert.</p>
<p>Doch wieso existiert dieser Bug?</p>
<p>WPS scheint es gut zu meinen, und kreiert ein entsprechenden Eintrag in der Directory Table namens „ALL_USERS“, dieser basiert auf den Werten &#8220;ProfilesFolder&#8221; &amp; &#8220;All Users&#8221;.<br />
ProfilesFolder wird aber zur Laufzeit auf das Userprofiles des Benutzers aufgelöst, was natürlich nicht das gewünsche Resultat ist.</p>
<p>Fabio Di Lorenzo<br />
Member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/04/24/allusers-profile-auflosung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
