<?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; Operating System</title>
	<atom:link href="http://spablog.ontrex.ch/category/tech/operating-system/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>.NET Installation Repaketieren</title>
		<link>http://spablog.ontrex.ch/2010/04/27/net-installation-repaketieren/</link>
		<comments>http://spablog.ontrex.ch/2010/04/27/net-installation-repaketieren/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 08:20:41 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[.NET Framework]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=433</guid>
		<description><![CDATA[Seit vielen Jahren gibt es Programme, welche auf das Microsoft .NET Framework aufbauen. Deren Anzahl wächst täglich und sind dabei die klassischen 32Bit Com Objekt orientieren Applikationen zu verdrängen. Dementsprechend kommt es häufiger vor, dass eine .NET Framework Applikation repaketiert wird. Je nach Applikation kann das interpretieren der Ressourcen sehr komplex ausfallen. Speziell dann, wenn [...]]]></description>
			<content:encoded><![CDATA[<p>Seit vielen Jahren gibt es Programme, welche auf das Microsoft .NET Framework aufbauen. Deren Anzahl wächst täglich und sind dabei die klassischen 32Bit Com Objekt orientieren Applikationen zu verdrängen. Dementsprechend kommt es häufiger vor, dass eine .NET Framework Applikation repaketiert wird.</p>
<p>Je nach Applikation kann das interpretieren der Ressourcen sehr komplex ausfallen. Speziell dann, wenn Assemblies ins Global Assembly Cache installiert, Interop Registrationen durchgeführt, Native Images erstellt, VC++ Runtimes bereitgestellt und vielleicht noch an den .NET Securities gedreht wird.</p>
<p>Wer .NET Applikationen repaketiert muss die Welt deren Ressourcen verstehen lernen. Eine einfache .NET Applikation aus Sicht der .NET Ressourcen ist einfach zu repaketieren, kommen jedoch weitere .NET Ressourcengebiete dazu, dann ist ohne Grundwissen ein Überblick schwer zu erhalten.</p>
<p>Die .NET Ressourcen können im Grossen und Ganzen in fünf Segmente unterteilt werden:<br />
<a href="http://spablog.ontrex.ch/wp-content/uploads/2010/04/NETRessourcen.png"><img class="alignnone size-full wp-image-434" title="NETRessourcen" src="http://spablog.ontrex.ch/wp-content/uploads/2010/04/NETRessourcen.png" alt="" width="534" height="307" /></a></p>
<p>Nicht jede .NET Applikation benötigt zwangsweise eine komplexe Integration. Im besten Falle besteht die Applikation aus privaten Assemblies und benötigt keine der dargestellten .NET Ressourcen.</p>
<p>Die Herausforderung in der Repaketierung besteht darin, die Ressourcen anhand des Deltas dem richtigen Ressourcen-Typ zuzuordnen und die optimale Installationsmethode zu verwenden. Wir haben uns diesem Problem angenommen und diesen Teil in den <a href="http://www.ontrex.ch/de/60_schulung/schulung.htm?id=11" target="_blank">&#8216;Wise &#8211; MSI Blackbelt III&#8217; </a>Kurs eingebunden. Diesen Eintageskurs führen wir 1-2 mal pro Jahr durch. Neben dem Thema .NET werden weitere interessante Themen für Fachkräfte im Bereich der Software Paketierung besprochen.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/04/27/net-installation-repaketieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zusätzliche Special Folders</title>
		<link>http://spablog.ontrex.ch/2010/03/11/zusatzliche-special-folders/</link>
		<comments>http://spablog.ontrex.ch/2010/03/11/zusatzliche-special-folders/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:38:34 +0000</pubDate>
		<dc:creator>Fabio Di Lorenzo</dc:creator>
				<category><![CDATA[Datei System]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[TECH]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=301</guid>
		<description><![CDATA[Die Windows Installer Technologie bietet bereits von Haus aus diverse Directory Properties um auf  &#8220;Special Folders&#8221; Werte zugreifen zu können. Leider gibt es jedoch immer wieder der Fall, dass man auf zusätzliche, nicht durch den Windows Installer bereits zu Verfügung gestellte Werte zugreifen muss. Mit folgendem VBScript kann man sich diese Werte allerdings schaffen. In [...]]]></description>
			<content:encoded><![CDATA[<p>Die Windows Installer Technologie bietet bereits von Haus aus diverse Directory Properties um auf  &#8220;Special Folders&#8221; Werte zugreifen zu können.</p>
<p>Leider gibt es jedoch immer wieder der Fall, dass man auf zusätzliche, nicht durch den Windows Installer bereits zu Verfügung gestellte Werte zugreifen muss.</p>
<p>Mit folgendem VBScript kann man sich diese Werte allerdings schaffen. In unserem folgenden Beispiel ermitteln wir den &#8220;Common Documents&#8221; Folder.</p>
<p>Folgendes Skript fügen wir als &#8220;CALL VBScript From Embedded Code&#8221;  Aktion im Immediate Bereich ein:</p>
<blockquote><p>Const CSIDL_COMMON_DOCUMENTS = &amp;h2e<br />
Set objShell = CreateObject(&#8220;Shell.Application&#8221;)<br />
Session.Property(&#8220;ONTX_COMMON_DOCUMENTS&#8221;) = objShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path<br />
Set objShell = nothing</p></blockquote>
<p>Zu beachten ist, das wir diese Aktion vor &#8220;CostFinalize&#8221; durchführen müssen.</p>
<p>Um den Wert auch für Komponenten verwenden zu können, sollte man noch einen Eintrag in der Directory Tabelle erfassen:</p>
<p><a href="http://spablog.ontrex.ch/wp-content/uploads/2010/02/csidl.png"><img class="alignnone size-full wp-image-387" title="csidl" src="http://spablog.ontrex.ch/wp-content/uploads/2010/02/csidl.png" alt="" width="506" height="59" /></a></p>
<p>Danach kann man das Property/Directory  wie üblich verwenden.</p>
<p>Eine Liste aller Special Folders befindet sich im Anhang dieses Artikels.</p>
<p><span id="more-301"></span></p>
<p><strong>Anhang: Liste aller Special Folders<br />
</strong></p>
<table style="height: 4838px;" border="0" cellspacing="0" cellpadding="0" width="486">
<colgroup span="1">
<col span="1" width="349"></col>
<col span="1" width="141"></col>
<col span="1" width="327"></col>
</colgroup>
<tbody>
<tr height="20">
<td width="349" height="20"><strong>CSLID</strong></td>
<td width="141"><strong>Hex Value</strong></td>
<td width="327"><strong>Description</strong></td>
</tr>
<tr height="20">
<td height="20">CSIDL_ADMINTOOLS</td>
<td>0&#215;0030</td>
<td>The file system directory that is used to store administrative tools for an individual user. The Microsoft Management Console (MMC) will save customized consoles to this directory, and it will roam with the user.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_ALTSTARTUP</td>
<td>0x001d</td>
<td>The file system directory that corresponds to the user&#8217;s nonlocalized Startup program group. This value is recognized in Windows Vista for backward compatibility, but the folder itself no longer exists.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_APPDATA</td>
<td>0x001a</td>
<td>The file system directory that serves as a common repository for application-specific data. A typical path is C:\Documents and Settings\<span>username</span><span>\Application Data. This CSIDL is supported by the redistributable Shfolder.dll for systems that do not have the Microsoft Internet Explorer 4.0 integrated Shell installed.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_BITBUCKET</td>
<td>0x000a</td>
<td>The virtual folder that contains the objects in the user&#8217;s <span>Recycle Bin</span><span>.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_CDBURN_AREA</td>
<td>0x003b</td>
<td>The file system directory that acts as a staging area for files waiting to be written to a CD. A typical path is C:\Documents and Settings\<span>username</span><span>\Local Settings\Application Data\Microsoft\CD Burning.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_ADMINTOOLS</td>
<td>0x002f</td>
<td>The file system directory that contains administrative tools for all users of the computer.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_ALTSTARTUP</td>
<td>0x001e</td>
<td>The file system directory that corresponds to the nonlocalized Startup program group for all users. Valid only for Microsoft Windows NT systems. This value is recognized in Windows Vista for backward compatibility, but the folder itself no longer exists.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_APPDATA</td>
<td>0&#215;0023</td>
<td>The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_DESKTOPDIRECTORY</td>
<td>0&#215;0019</td>
<td>The file system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Documents and Settings\All Users\Desktop. Valid only for Windows NT systems.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_DOCUMENTS</td>
<td>0x002e</td>
<td>The file system directory that contains documents that are common to all users. A typical paths is C:\Documents and Settings\All Users\Documents. Valid for Windows NT systems and Windows 95 and Windows 98 systems with Shfolder.dll installed.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_FAVORITES</td>
<td>0x001f</td>
<td>The file system directory that serves as a common repository for favorite items common to all users. Valid only for Windows NT systems.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_MUSIC</td>
<td>0&#215;0035</td>
<td>The file system directory that serves as a repository for music files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Music.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_OEM_LINKS</td>
<td>0x003a</td>
<td>This value is recognized in Windows Vista for backward compatibility, but the folder itself is no longer used.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_PICTURES</td>
<td>0&#215;0036</td>
<td>The file system directory that serves as a repository for image files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Pictures.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_PROGRAMS</td>
<td>0&#215;0017</td>
<td>The file system directory that contains the directories for the common program groups that appear on the <span>Start</span><span> menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs. Valid only for Windows NT systems.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_STARTMENU</td>
<td>0&#215;0016</td>
<td>The file system directory that contains the programs and folders that appear on the <span>Start</span><span> menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu. Valid only for Windows NT systems.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_STARTUP</td>
<td>0&#215;0018</td>
<td>The file system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs\Startup. Valid only for Windows NT systems.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_TEMPLATES</td>
<td>0x002d</td>
<td>The file system directory that contains the templates that are available to all users. A typical path is C:\Documents and Settings\All Users\Templates. Valid only for Windows NT systems.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMMON_VIDEO</td>
<td>0&#215;0037</td>
<td>The file system directory that serves as a repository for video files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Videos.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COMPUTERSNEARME</td>
<td>0x003d</td>
<td>The folder that represents other computers in your workgroup.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_CONNECTIONS</td>
<td>0&#215;0031</td>
<td>The virtual folder that represents Network Connections, that contains network and dial-up connections.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_CONTROLS</td>
<td>0&#215;0003</td>
<td>The virtual folder that contains icons for the Control Panel applications.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_COOKIES</td>
<td>0&#215;0021</td>
<td>The file system directory that serves as a common repository for Internet cookies. A typical path is C:\Documents and Settings\<span>username</span><span>\Cookies.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_DESKTOP</td>
<td>0&#215;0000</td>
<td>The virtual folder that represents the Windows desktop, the root of the namespace.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_DESKTOPDIRECTORY</td>
<td>0&#215;0010</td>
<td>The file system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A typical path is C:\Documents and Settings\<span>username</span><span>\Desktop.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_DRIVES</td>
<td>0&#215;0011</td>
<td>The virtual folder that represents My Computer, containing everything on the local computer: storage devices, printers, and Control Panel. The folder can also contain mapped network drives.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_FAVORITES</td>
<td>0&#215;0006</td>
<td>The file system directory that serves as a common repository for the user&#8217;s favorite items. A typical path is C:\Documents and Settings\<span>username</span><span>\Favorites.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_FONTS</td>
<td>0&#215;0014</td>
<td>A virtual folder that contains fonts. A typical path is C:\Windows\Fonts.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_HISTORY</td>
<td>0&#215;0022</td>
<td>The file system directory that serves as a common repository for Internet history items.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_INTERNET</td>
<td>0&#215;0001</td>
<td>A virtual folder for Internet Explorer.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_INTERNET_CACHE</td>
<td>0&#215;0020</td>
<td>The file system directory that serves as a common repository for temporary Internet files. A typical path is C:\Documents and Settings\<span>username</span><span>\Local Settings\Temporary Internet Files.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_LOCAL_APPDATA</td>
<td>0x001c</td>
<td>The file system directory that serves as a data repository for local (nonroaming) applications. A typical path is C:\Documents and Settings\<span>username</span><span>\Local Settings\Application Data.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_MYDOCUMENTS</td>
<td>Use CSIDL_PERSONAL</td>
<td>The virtual folder that represents the My Documents desktop item. This value is equivalent to CSIDL_PERSONAL.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_MYMUSIC</td>
<td>0x000d</td>
<td>The file system directory that serves as a common repository for music files. A typical path is C:\Documents and Settings\User\My Documents\My Music.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_MYPICTURES</td>
<td>0&#215;0027</td>
<td>The file system directory that serves as a common repository for image files. A typical path is C:\Documents and Settings\<span>username</span><span>\My Documents\My Pictures.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_MYVIDEO</td>
<td>0x000e</td>
<td>The file system directory that serves as a common repository for video files. A typical path is C:\Documents and Settings\<span>username</span><span>\My Documents\My Videos.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_NETHOOD</td>
<td>0&#215;0013</td>
<td>A file system directory that contains the link objects that may exist in the My Network Places virtual folder. It is not the same as CSIDL_NETWORK, which represents the network namespace root. A typical path is C:\Documents and Settings\username\NetHood.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_NETWORK</td>
<td>0&#215;0012</td>
<td>A virtual folder that represents Network Neighborhood, the root of the network namespace hierarchy.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_PERSONAL</td>
<td>0&#215;0005</td>
<td>The virtual folder that represents the My Documents desktop item. This is equivalent to CSIDL_MYDOCUMENTS.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_PRINTERS</td>
<td>0&#215;0004</td>
<td>The virtual folder that contains installed printers.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_PRINTHOOD</td>
<td>0x001b</td>
<td>The file system directory that contains the link objects that can exist in the <span>Printers</span><span> virtual folder. A typical path is C:\Documents and Settings\</span><span>username</span><span>\PrintHood.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROFILE</td>
<td>0&#215;0028</td>
<td>The user&#8217;s profile folder. A typical path is C:\Users\<span>username</span><span>. Applications should not create files or folders at this level; they should put their data under the locations referred to by CSIDL_APPDATA or CSIDL_LOCAL_APPDATA. However, if you are creating a new Known Folder the profile root refered to by CSIDL_PROFILE is appropriate.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROGRAM_FILES</td>
<td>0&#215;0026</td>
<td>The Program Files folder. A typical path is C:\Program Files.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROGRAM_FILES_COMMON</td>
<td>0x002b</td>
<td>A folder for components that are shared across applications. A typical path is C:\Program Files\Common. Valid only for Windows NT, Windows 2000, and Windows XP systems. Not valid for Windows Millennium Edition (Windows Me).</td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROGRAM_FILES_COMMONX86</td>
<td>0x002c</td>
<td> </td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROGRAM_FILESX86</td>
<td>0x002a</td>
<td> </td>
</tr>
<tr height="20">
<td height="20">CSIDL_PROGRAMS</td>
<td>0&#215;0002</td>
<td>The file system directory that contains the user&#8217;s program groups (which are themselves file system directories). A typical path is C:\Documents and Settings\<span>username</span><span>\Start Menu\Programs.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_RECENT</td>
<td>0&#215;0008</td>
<td>The file system directory that contains shortcuts to the user&#8217;s most recently used documents. A typical path is C:\Documents and Settings\username\My Recent Documents. To create a shortcut in this folder, use SHAddToRecentDocs. In addition to creating the shortcut, this function updates the Shell&#8217;s list of recent documents and adds the shortcut to the My Recent Documents submenu of the Start menu.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_RESOURCES</td>
<td>0&#215;0038</td>
<td>Windows Vista. The file system directory that contains resource data. A typical path is C:\Windows\Resources.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_RESOURCES_LOCALIZED</td>
<td>0&#215;0039</td>
<td> </td>
</tr>
<tr height="20">
<td height="20">CSIDL_SENDTO</td>
<td>0&#215;0009</td>
<td>The file system directory that contains <span>Send To</span><span> menu items. A typical path is C:\Documents and Settings\</span><span>username</span><span>\SendTo.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_STARTMENU</td>
<td>0x000b</td>
<td>The file system directory that contains <span>Start</span><span> menu items. A typical path is C:\Documents and Settings\</span><span>username</span><span>\Start Menu.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_STARTUP</td>
<td>0&#215;0007</td>
<td>The file system directory that corresponds to the user&#8217;s Startup program group. The system starts these programs whenever any user logs onto Windows NT or starts Windows 95. A typical path is C:\Documents and Settings\<span>username</span><span>\Start Menu\Programs\Startup.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_SYSTEM</td>
<td>0&#215;0025</td>
<td>The Windows System folder. A typical path is C:\Windows\System32.</td>
</tr>
<tr height="20">
<td height="20">CSIDL_SYSTEMX86</td>
<td>0&#215;0029</td>
<td> </td>
</tr>
<tr height="20">
<td height="20">CSIDL_TEMPLATES</td>
<td>0&#215;0015</td>
<td>The file system directory that serves as a common repository for document templates. A typical path is C:\Documents and Settings\<span>username</span><span>\Templates.</span></td>
</tr>
<tr height="20">
<td height="20">CSIDL_WINDOWS</td>
<td>0&#215;0024</td>
<td>The Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A typical path is C:\Windows.</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2010/03/11/zusatzliche-special-folders/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Side-by-side configuration is incorrect</title>
		<link>http://spablog.ontrex.ch/2009/07/30/side-by-side-configuration-is-incorrect/</link>
		<comments>http://spablog.ontrex.ch/2009/07/30/side-by-side-configuration-is-incorrect/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 13:05:02 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=147</guid>
		<description><![CDATA[In letzter Zeit ist die Meldung &#8216;The application has failed to start because its side-by-side configuration is incorrect&#8217; anzutreffen. Dies bei Windows Vista ohne SP2. Wer versucht das Problem über die Ereignisanzeige zu lösen, wird sich in den Tiefen von .Net wohl verirren. Ich möchte hier nicht wirklich tiefgründig werden, da dieses Problem mit SP2 oder [...]]]></description>
			<content:encoded><![CDATA[<p>In letzter Zeit ist die Meldung &#8216;The application has failed to start because its side-by-side configuration is incorrect&#8217; anzutreffen. Dies bei Windows Vista ohne SP2.</p>
<p><img class="alignnone size-full wp-image-148" title="VistaError" src="http://spablog.ontrex.ch/wp-content/uploads/2009/07/VistaError.png" alt="VistaError" width="572" height="182" /></p>
<p>Wer versucht das Problem über die Ereignisanzeige zu lösen, wird sich in den Tiefen von .Net wohl verirren.</p>
<p>Ich möchte hier nicht wirklich tiefgründig werden, da dieses Problem mit SP2 oder Windows 7 behoben wurde, braucht man lediglich unter Windows Vista SP1 die folgenden zwei Hotfixes zu installieren:<br />
<a href="http://support.microsoft.com/kb/958481/en-us">Windows6.0-KB958481-x86</a><br />
<a href="http://support.microsoft.com/kb/958483/en-us">Windows6.0-KB958483-x86</a></p>
<p>Nach der Einspielung dieser Hotfixes wird die Applikation funktionieren.</p>
<p>Stefan Hotan<br />
A member of the Ontrex SPA</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/07/30/side-by-side-configuration-is-incorrect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegSvr32 failed &#8211; Invalid access to memory location</title>
		<link>http://spablog.ontrex.ch/2009/07/20/regsvr32-failed-invalid-access-to-memory-location/</link>
		<comments>http://spablog.ontrex.ch/2009/07/20/regsvr32-failed-invalid-access-to-memory-location/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:41:59 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=127</guid>
		<description><![CDATA[Und auf einmal war sie da &#8211; Die Meldung &#8216;LoadLibrary .dll failed&#8217; die nie zuvor gesehen war. Das Analysieren mit dem Dependency Walker jedoch zeigt keinerlei Probleme mit dieser Datei, denn es handelt sich um eine Sicherheitserweiterung des Betriebssystemes. Die Data Execution Prevention (DEP) ist für diesen Umstand verantwortlich. DEP wurde gegen Viren und andere [...]]]></description>
			<content:encoded><![CDATA[<p>Und auf einmal war sie da &#8211; Die Meldung &#8216;LoadLibrary .dll failed&#8217; die nie zuvor gesehen war.</p>
<p><img class="alignnone size-full wp-image-128" title="regsvr32" src="http://spablog.ontrex.ch/wp-content/uploads/2009/07/regsvr32.png" alt="regsvr32" width="518" height="119" /></p>
<p>Das Analysieren mit dem Dependency Walker jedoch zeigt keinerlei Probleme mit dieser Datei, denn es handelt sich um eine Sicherheitserweiterung des Betriebssystemes. Die Data Execution Prevention (DEP) ist für diesen Umstand verantwortlich. DEP wurde gegen Viren und andere sicherheitsrelevanten Funktionen entwickelt. Unter anderem wird DEP die Registration von 16-bit COM Objekten verhindern.</p>
<p>In der Repaketierung kann dieses Problem behoben werden, indem die Self-Registration über die Registry-Tabelle durchgeführt wird.<br />
Um die DLL oder OCX Datei wieder registrieren zu können, muss DEP konfiguriert werden. Die Konfiguration zu DEP findet man unter &#8216;System Properties&#8217; &#8211; &#8216;Performance&#8217;.<br />
Unter &#8216;Data Execution Prevention&#8217; ist die Option &#8216;Turn on DEP for all programs and services except those I select:&#8217; anzuwählen und die RegSvr32.exe im System32 Ordner zu wählen.</p>
<p><img title="DataExecution Prevention" src="http://spablog.ontrex.ch/wp-content/uploads/2009/07/DataExecution-Prevention.png" alt="DataExecution Prevention" width="367" height="528" /></p>
<p>Mit dieser Einstellung kann nun die Self-Register Information ausgelesen werden und die entsprechende Registration über die Windows Installer Tabellen erfolgen. Auf diese Weise muss bei den Endanwendern keine DEP Konfiguration durchgeführt werden.</p>
<p>Stefan Hotan<br />
A member of the Ontrex SPA</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/07/20/regsvr32-failed-invalid-access-to-memory-location/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verzögerter Start eines Dienstes dank MsiServiceConfig Tabelle</title>
		<link>http://spablog.ontrex.ch/2009/06/25/verzogerter-start-eines-dienstes-dank-msiserviceconfig-tabelle/</link>
		<comments>http://spablog.ontrex.ch/2009/06/25/verzogerter-start-eines-dienstes-dank-msiserviceconfig-tabelle/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 13:04:41 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Dienste]]></category>
		<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://spablog.ontrex.ch/?p=110</guid>
		<description><![CDATA[Ab Microsoft Windows Installer 5.0 kann die MsiServiceConfig Tabelle verwendet werden, um einen Dienst verzögert zu starten. Der Service Control Manager (SCM) wurde mit dieser Option in Windows Vista erweitert. Mit der MsiServiceConfig Tabelle können diese neuen Funktionalitäten des SCM für einen Dienst konfiguriert werden. Einen Dienst verzögert zu starten soll helfen die Zeitspanne eines Systemstartes zu optimieren. Wenn ein Dienst nicht unmittelbar [...]]]></description>
			<content:encoded><![CDATA[<p>Ab Microsoft Windows Installer 5.0 kann die MsiServiceConfig Tabelle verwendet werden, um einen Dienst verzögert zu starten.<br />
Der Service Control Manager (SCM) wurde mit dieser Option in Windows Vista erweitert.<br />
Mit der MsiServiceConfig Tabelle können diese neuen Funktionalitäten des SCM für einen Dienst konfiguriert werden.</p>
<p>Einen Dienst verzögert zu starten soll helfen die Zeitspanne eines Systemstartes zu optimieren. Wenn ein Dienst nicht unmittelbar zum Zeitpunkt des System Start benötigt wird, so kann dieser zu einem späteren Zeitpunkt  gestartet werden. Ein Dienst der verzögert gestartet wird, wird innerhalb von 2 Minuten nach dem System Start gestartet. Ein Setup Autor kann nun bei einem Dienst entscheiden, ob dieser sofort zur Verfügung stehen muss, oder ob es sich um einen Dienst einer Anwendung handelt, welcher auch zu einem späteren Zeitpunkt gestartet werden kann.</p>
<p>Der Dienst selber wird wie gewohnt über die ServiceInstall Tabelle installiert und über die ServiceControl Tabelle gestartet, ggf. gestoppt oder gelöscht.</p>
<p>Sollte die MsiServiceConfig Tabelle nicht im Schema der Installation sein, so kann die Tabelle mit Orca 5.0 oder einem Setup Authoring Tool (welches die Windows Installer 5.0 Technologie unterstützt) erstellt werden.</p>
<p><img class="alignnone size-full wp-image-111" title="MsiServiceConfig" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/MsiServiceConfig.png" alt="MsiServiceConfig" width="755" height="89" /></p>
<p>Die Felder sind für einen verzögerten Start wie folgt auszufüllen:</p>
<p>ServiceConfigure: ist ein Identifier<br />
Name: Name des Dienstes der in der ServiceInstall Tabelle steht, oder der Name eines bereits installierten Dienstes.<br />
Event: 1<br />
ConfigType: 3<br />
Argument: 1<br />
Component_: Name einer Komponente aus der Installation</p>
<p>Der nächste und auch der letzte Punkt ist dem Windows Installer mit der MsiConfigureServices Aktion mitzuteilen, dass ein Service mit den neuen Optionen zu konfigurieren ist.</p>
<p><img class="alignnone size-full wp-image-112" title="MsiConfigureServices" src="http://spablog.ontrex.ch/wp-content/uploads/2009/06/MsiConfigureServices.png" alt="MsiConfigureServices" width="351" height="65" /></p>
<p>Die MsiConfigureServices Aktion wird zwischen der InstallServices und der StartServices gestellt.</p>
<p>Weitere Informationen zu den neuen SCM Funktionen:<br />
<a href="http://msdn.microsoft.com/en-us/library/bb203962(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb203962(VS.85).aspx</a></p>
<p>Stefan Hotan<br />
Member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/06/25/verzogerter-start-eines-dienstes-dank-msiserviceconfig-tabelle/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>Type 1 Fonts Registration mit Windows Installer</title>
		<link>http://spablog.ontrex.ch/2009/02/27/type-1-fonts-registration-mit-windows-installer/</link>
		<comments>http://spablog.ontrex.ch/2009/02/27/type-1-fonts-registration-mit-windows-installer/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 15:41:07 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[Fonts]]></category>
		<category><![CDATA[Wise Package Studio]]></category>

		<guid isPermaLink="false">http://windows-installer.ch/spaportal/blog/?p=39</guid>
		<description><![CDATA[Die Windows Installer (MSI) Datei hält eine Font Tabelle für die Installation von Schriften bereit. Diese ermöglicht den manuellen Registrationsprozess für eine Schrift zu automatisieren. Der manuelle Weg ist bestens bekannt, einfach mit drag-and-drop die Schriften-Dateien ins Fonts Verzeichnis verschieben und gut ist. Wenn man das gleiche mit einer Postscript Schrift (PFM und PFB Datei) [...]]]></description>
			<content:encoded><![CDATA[<p>Die Windows Installer (MSI) Datei hält eine Font Tabelle für die Installation von Schriften bereit. Diese ermöglicht den manuellen Registrationsprozess für eine Schrift zu automatisieren. Der manuelle Weg ist bestens bekannt, einfach mit drag-and-drop die Schriften-Dateien ins Fonts Verzeichnis verschieben und gut ist.</p>
<p>Wenn man das gleiche mit einer Postscript Schrift (PFM und PFB Datei) durchführt,  so ist dies bei einer manuellen Registration kein Problem. Will man diesen Vorgang jedoch repaketieren, also über das Snap-Shot Verfahren aufzeichnen, so wird die Schriftart erst nach einem Neustart des Rechners ansprechbar.</p>
<p>Der Grund für dieses Verhalten liegt in der Tatsache, dass die Font Tabelle nur für TrueType Schriften (.TTF Dateien) gedacht ist. Diese Tabelle ist nicht mit Postscript Schriften kompatibel.</p>
<p>Der Snap-Shot der Registration wird pro Schriftart einen Registry-Key erstellen:<br />
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionType 1 InstallerType 1 Fonts<br />
Name der Schrift, T[~]&lt;Datei&gt;.PFM[~]&lt;Datei&gt;.PFB<br />
Dieser Eintrag in der Registry ist soweit in Ordnung, nach der Installation ist die Schrift registriert, jedoch nicht aktiviert. Ein Reboot wäre in diesem Fall nötig.</p>
<p>Was aber, wenn man nach der Installation direkt auf die neue Schriftart ohne Reboot zugreiffen will?<br />
Dies ist technisch möglich, benötigt jedoch einen API-Call auf die Datei atmlib.dll, sprich eine Custom Action muss her.</p>
<p>Eine Möglichkeit diesen API-Call durchzuführen ist die verwendung des Wise Script Editors.<br />
Folgender Print-Screen zeigt die benötigte &#8216;Call DLL function&#8217;:</p>
<p> </p>
<p><img class="alignnone size-medium wp-image-64" title="wisescript3" src="http://spablog.ontrex.ch/wp-content/uploads/2009/02/wisescript3-244x300.png" alt="wisescript3" width="244" height="300" /></p>
<p>Das erste Argument übergibt den Schriften-Namen, der zweite definiert den Schrift-Typ, der dritte und vierter die Schrift. Die benötigten Informationen kann man beim Snap-Shot aus der Registry entnehmen.<br />
Die kompilierte .EXE Datei ist danach im Deferred Context der Installation durchzuführen. Nach der Installation steht die Postscript Schriftart sofort dem Endanwender zur Verfügung.</p>
<p>Die Dateierweiterung PFM steht für Postscript Font Metrich und die PFB Datei steht für Postscript Font Binary. Beide Dateien müssen ins Fonts Verzeichnis kopiert werden, bevor der API-Call durchgeführt wird. Bei Postscript Schriften können auch noch AFM (Adobe Font Metric) und INF (Type I LaserJet font information) beiliegen, welche nicht benötigt, oder einfach mit ins Fonts Verzeichnis kopiert werden können.</p>
<p>Stefan Hotan<br />
Member of the Ontrex SPA Team</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/02/27/type-1-fonts-registration-mit-windows-installer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applikation startet nicht nach .NET Installation</title>
		<link>http://spablog.ontrex.ch/2009/02/17/applikation-startet-nicht-mehr-nach-net-installation/</link>
		<comments>http://spablog.ontrex.ch/2009/02/17/applikation-startet-nicht-mehr-nach-net-installation/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 17:03:58 +0000</pubDate>
		<dc:creator>Stefan Hotan</dc:creator>
				<category><![CDATA[.NET Framework]]></category>

		<guid isPermaLink="false">http://ontxsrv11/spaportal/blog/?p=7</guid>
		<description><![CDATA[Seit im Jahr 2006 das Microsoft .NET Framework 2.0 installierbar ist, können ältere Programme, die mit dem .NET Framework 1.0 oder 1.1 entwickelt wurden, nach der .NET Framework 2.0 installation, auf einmal nicht mehr starten. Der Grund liegt in der Programmierung selber. Da das .NET Framwork die Side-by-Side Technologie unterstütz, werden Programme in der .NET [...]]]></description>
			<content:encoded><![CDATA[<p>Seit im Jahr 2006 das Microsoft .NET Framework 2.0 installierbar ist, können ältere Programme, die mit dem .NET Framework 1.0 oder 1.1 entwickelt wurden, nach der .NET Framework 2.0 installation, auf einmal nicht mehr starten.</p>
<p>Der Grund liegt in der Programmierung selber. Da das .NET Framwork die Side-by-Side Technologie unterstütz, werden Programme in der .NET Version ausgeführt, worin diese entwickelt worden sind. Nach Microsoft Richtlinien, ist der Applikation anzugeben, mit welchem .NET Framework diese ausgeführt werden kann. Leider gibt es fehlbare Applikationen, die diese Information nicht beinhalten (sogenannte Unmanaged Applications) und diese Applikationen bekommen Probleme, sobald eine neuere Version von einem .NET Framework auf den PC installiert wird.</p>
<p>Um dieses Problem zu lösen, empfiehlt es sich, eine aktuelle Version der Applikation zu verwenden. Dieses Problem tritt vorallem bei Applikationen die vor der Veröffentlichung des .NET Framework 2.0 herausgegeben wurden.</p>
<p>Ist keine neuere Version erhältlich, so kann eine .Config Datei erstellt werden, welche dem Betriebsystem angibt, mit welchen .NET Framework die Applikation zu laufen hat.</p>
<p>Beispiel LiveLink 9.5:</p>
<p>Dateiname: alviewer.exe.config<br />
Inhalt der Textdatei:</p>
<p>&lt;configuration&gt;<br />
&lt;startup&gt;<br />
   &lt;supportedRuntime version=&#8221;v1.1.4322&#8243; /&gt;<br />
   &lt;supportedRuntime version=&#8221;v1.0.3705&#8243; /&gt;<br />
&lt;/startup&gt;<br />
&lt;/configuration&gt;</p>
<p>Mit diesem einfachen Trick, lassen sich ältere Unmanaged .NET Applikationen in einer Multi .NET Framework Umgebung betreiben.</p>
]]></content:encoded>
			<wfw:commentRss>http://spablog.ontrex.ch/2009/02/17/applikation-startet-nicht-mehr-nach-net-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
