<?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; Best Practices</title>
	<atom:link href="http://spablog.ontrex.ch/category/tech/wise-package-studio/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>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>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>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>
