<?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>HP&#039;s Blog</title>
	<atom:link href="http://blog.schelian.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.schelian.de</link>
	<description>Hans-Peter Schelian&#039;s Weblog</description>
	<lastBuildDate>Thu, 26 Jan 2012 12:18:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SQL Server Management Studio &#8211; Saving changes is not permitted</title>
		<link>http://blog.schelian.de/2012/01/sql-server-management-studio-saving-changes-is-not-permitted/</link>
		<comments>http://blog.schelian.de/2012/01/sql-server-management-studio-saving-changes-is-not-permitted/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 12:15:27 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[SQL Server Management Studio]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1913</guid>
		<description><![CDATA[Heute bin ich wieder mal (jedes mal wenn ich das Management Studio neu installiere) über ein bereits seit langem bekanntes Problem gestolpert. Nachdem ich einer vorhandenen Tabelle  einige Felder über den Table Designer hinzugefügt habe und diese Änderungen speichern wollte, &#8230; <a href="http://blog.schelian.de/2012/01/sql-server-management-studio-saving-changes-is-not-permitted/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute bin ich wieder mal (jedes mal wenn ich das Management Studio neu installiere) über ein bereits seit langem bekanntes Problem gestolpert.</p>
<p>Nachdem ich einer vorhandenen Tabelle  einige Felder über den Table Designer hinzugefügt habe und diese Änderungen speichern wollte, habe ich folgende Meldung erhalten:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2012/01/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Saving changes is not permitted. The changes you have made require the&lt;br /&gt;<br />
following tables to be dropped and re-created, You have either made changes&lt;br /&gt;<br />
to a table that can’t be re-created or enabled the option Prevent saving&lt;br /&gt;<br />
changes that require the table to be re-created," src="http://blog.schelian.de/wp-content/uploads/2012/01/image_thumb.png" alt="Saving changes is not permitted. The changes you have made require the&lt;br /&gt;<br />
following tables to be dropped and re-created, You have either made changes&lt;br /&gt;<br />
to a table that can’t be re-created or enabled the option Prevent saving&lt;br /&gt;<br />
changes that require the table to be re-created," width="520" height="100" border="0" /></a></p>
<blockquote><p>Verzeihung liebes Management Studio, <strong>Nein</strong> ich möchte nicht dass du die Tabelle löschst und sie mit der neuen Struktur Neu erstellst.</p></blockquote>
<p>Da mir aber zu diesem Zeitpunkt wieder mal entfallen war, dass ich dieses Problem früher schon hatte, habe ich mich kurzerhand an meine Timeline in Twitter gewandt.</p>
<p>Dort habe ich prompt, wie fast immer,  die richtige Antwort erhalten.</p>
<p>Danke dafür an <a href="http://twitter.com/#!/Cayas_Software" target="_blank">Sebastian</a> und <a href="http://twitter.com/#!/norberteder" target="_blank">Norbert</a>, bei den beiden Funktioniert das Gedächtnis wohl noch besser als bei mir.</p>
<p>Und damit ich in Zukunft selbst daran denke, und auch <a href="http://twitter.com/#!/ufwe" target="_blank">Uwe</a> nachschauen kann wie man das Problem lösen kann, habe ich diesen Beitrag geschrieben.</p>
<p><span style="text-decoration: underline;">Und hier nun die Lösung des Problems:</span></p>
<p>Man kann in den Optionen einstellen, ob das Management Studio diese Vorgehensweise “Warnung ausgeben und das Drop/Create Szenario” anstelle einer “Änderung der Tabellenstruktur”, verwenden soll (Siehe nachfolgende Abbildung).</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2012/01/SNAGHTML15e0776.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML15e0776" src="http://blog.schelian.de/wp-content/uploads/2012/01/SNAGHTML15e0776_thumb.png" alt="SNAGHTML15e0776" width="644" height="433" border="0" /></a></p>
<p>Vielleicht hilft das hier nicht nur <a href="http://twitter.com/#!/schelianhp" target="_blank">mir</a> und <a href="http://twitter.com/#!/ufwe" target="_blank">Uwe</a></p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2012/01/sql-server-management-studio-saving-changes-is-not-permitted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SugarSync &#8211; Windows 7 64 BIT Explorer friert ein und st&#252;rzt ab</title>
		<link>http://blog.schelian.de/2011/12/sugarsync-windows-7-64-bit-explorer-friert-ein-und-stuerzt-ab/</link>
		<comments>http://blog.schelian.de/2011/12/sugarsync-windows-7-64-bit-explorer-friert-ein-und-stuerzt-ab/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 08:14:18 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[SugarSync]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Win7]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1903</guid>
		<description><![CDATA[Bevor ich zum eigentlichen Problem mit SugarSync und dem Explorer Absturz komme möchte ich kurz Beschreiben wie und warum ich zu SugarSync gekommen bin. Meine Geschichte zu SugarSync Vor einigen Wochen, eigentlich sind es schon Monate her, bin ich auf &#8230; <a href="http://blog.schelian.de/2011/12/sugarsync-windows-7-64-bit-explorer-friert-ein-und-stuerzt-ab/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bevor ich zum eigentlichen Problem mit SugarSync und dem Explorer Absturz komme möchte ich kurz Beschreiben wie und warum ich zu SugarSync gekommen bin.</p>
<h4>Meine Geschichte zu SugarSync</h4>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image36.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb12.png" alt="image" width="189" height="69" align="left" border="0" /></a>Vor einigen Wochen, eigentlich sind es schon Monate her, bin ich auf das Synchronisations Tool <a href="https://www.sugarsync.com/" target="_blank">SugarSync</a> aufmerksam geworden.</p>
<p>Dieses Tool stellt ähnliche Funktionalitäten wie die <a href="http://www.dropbox.com/" target="_blank">Dropbox</a> oder <a href="http://explore.live.com/windows-live-mesh" target="_blank">Live Mesh</a> zur Verfügung.</p>
<p>Da ich sowohl Dropbox als auch Live Mesh einsetze, und das nicht weil ich gerne mehrere Tools für ein und denselben Zweck einsetze, sondern weil jedes der Tools ein Alleinstellungsmerkmal hat, dass ich benötige musste ich beide verwenden.</p>
<h5>Alleinstellungsmerkmal Dropbox (gegenüber Live Mesh)</h5>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image37.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb13.png" alt="image" width="189" height="57" align="left" border="0" /></a>Bei der Dropbox war das Alleinstellungsmerkmal die Möglichkeit “Public Links” erstellen zu können, die man einfach weiter geben kann, damit ein anderer sich die mit dem “Public Link” verknüpfte Datei herunterladen kann.</p>
<h5>Alleinstellungsmerkmal Live Mesh (gegenüber Dropbox)</h5>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image38.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb14.png" alt="image" width="89" height="85" align="left" border="0" /></a>Bei Live Mesh, ist es die Möglichkeit beliebige Ordner aus dem Dateisystem in die Synchronisation aufzunehmen und mit beliebigen Ordner auf anderen Geräten synchronisieren zu können.</p>
<h5>SugarSync Alleinstellungsmerkmal (gegenüber Live Mesh und Dropbox)</h5>
<p>SugarSync, kann sowohl “Public Links” erstellen, als auch beliebige Ordner des Dateisystems synchronisieren. Damit würden meine beiden speziellen Anforderungen von einem Tool erfüllt werden und ich müsste nicht auf mehrere Tools zurückgreifen.</p>
<h4>Nach der Installation &#8211; der erste Start</h4>
<p>Nachdem ich also überzeugt war, dass ich durch SugarSync die beiden Produkte Live Mesh und Dropbox ersetzen zu können, habe ich SugarSync auf 4 Geräten installiert.</p>
<ul>
<li>2 Geräte mit Windows 7 64 Bit</li>
<li>1 Gerät mit Windows 7 32 Bit</li>
<li>1 Gerät mit Windows XP 32 Bit</li>
</ul>
<p>Auf 3 der 4 Geräte funktionierte alles wie erwartet, auf dem 4ten Gerät, das leider mein aktueller Entwicklungsrechner (Windows 7 64 Bit) war, trat das folgende Problem auf:</p>
<p>Der Versuch, nachdem der Rechner neu gestartet wurde, ein Windows Explorer Fenster zu öffnen führte dazu, dass dieses einfriert und nach einigen Sekunden abstürzt.</p>
<p>Neben dem Absturz des Explorer Fenster wurden auch einige Programme aus der Symbolleiste beendet:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://blog.schelian.de/wp-content/uploads/2011/12/clip_image002.gif" alt="clip_image002" width="479" height="98" border="0" /></p>
<p>Da ich mir nicht erklären konnte warum dieses Problem auftritt, ich aber sicher war, dass ich nicht der einzige sein kann, der dieses Problem hat, habe ich eine Mail an den Support geschrieben, und gehofft, der würde mir eine Antwort geben können.</p>
<h4><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image39.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb15.png" alt="image" width="211" height="66" align="right" border="0" /></a>Die Support Odyssee</h4>
<p>Am 26.10.2011 habe ich dann eine ausführliche Beschreibung meines Problems per E-Mail an den Support gesendet.<br />
Da SugarSync (sowohl das Produkt als auch die Webseite) auch auf Deutsch verfügbar ist, hatte ich ohne groß darüber nachzudenken, dass E-Mai in Deutsch geschrieben.</p>
<p>Am 01.11.2011 habe ich dann eine Nachricht vom Support erhalten (in Englisch), dass Sie das Ticket geschlossen haben, da ich mich nicht weiter gemeldet habe. <img class="wlEmoticon wlEmoticon-surprisedsmile" style="border-style: none;" src="http://blog.schelian.de/wp-content/uploads/2011/12/wlEmoticon-surprisedsmile.png" alt="Erstauntes Smiley" /></p>
<p>Am 02.11.2011 erhalte ich dann aber ein Mail vom Support, indem Sie mir erklären, dass ich doch bitte mein Problem in Englisch an sie senden soll, da der Support nur in English gegeben werden könnte.</p>
<p>Ich hatte in den folgenden Tagen wenig Zeit und habe mich daher erst wieder am 23.11.2011, nun in Englisch, an den Support gewendet und mein Problem in einer ausführlichen Mail beschrieben und darum gebeten mir mitzuteilen, wie man ein Error Logging einschalten könnte, damit ich mehr Informationen zu dem Problem liefern könnte.</p>
<p>Immerhin habe ich nun am gleichen Tag eine (automatisierte) Antwort bekommen, dass meine Mail angekommen sei und sich “ASAP” jemand um mein Problem kümmern würde.</p>
<p>Am 01.12.2011 (ist das ASAP) erhalte ich dann eine Mail, dass sie sich überhaupt nicht vorstellen können wie das Problem auftreten könnte, sie aber gerne mal Remote auf meinen Computer schauen würden um das Problem zu analysieren.</p>
<p>Ich habe dann kurz geantwortet, dass ich davon keinen Gebrauch machen möchte. Damit war klar ich werde das Problem selbst angehen, sobald ich etwas Zeit dafür habe.</p>
<h4>Die Zeit war Reif für eine Analyse</h4>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image40.png"><img style="background-image: none; margin: 0px 8px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb16.png" alt="image" width="182" height="97" align="left" border="0" /></a>Da ich SugarSync auf verschiedenen Rechnern installiert und das Problem in dieser Art nur auf einem Rechner aufgetreten ist, habe ich zuerst versucht die Besonderheit dieses Rechners zu ermitteln.</p>
<p>Hierbei habe ich festgestellt, dass ich einen Rechner mit exakt den gleichen installierten Programmen habe, auf dem das Problem nicht auftritt. Der einzige Unterschied, der Rechner auf dem es läuft ist ein 32 Bit Windows.</p>
<p>Also tritt das Problem vermutlich nur auf einem 64 Bit System auf.</p>
<p>Einer der installierten Rechner auf dem es läuft ist ein Windows 7 64 Bit Rechner. Dann vergleiche ich doch mal die darauf installierten Programme.</p>
<p>Bei Durchsicht der installierten Programme bekomme ich relativ schnell eine Ahnung woran das Problem liegen kann.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image41.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb17.png" alt="image" width="100" height="58" align="right" border="0" /></a>Auf dem Rechner mit dem Problem ist neben SugarSync auch TortoiseHg installiert, das ist auf dem anderen Windows 7 64 Bit Rechner nicht (mehr) installiert.</p>
<p>Ich möchte kurz erklären warum meine Vermutung relativ schnell in diese Richtung ging:</p>
<blockquote><p>Das Stichwort lautet: Overlay Icons.</p></blockquote>
<p>Sowohl TortoiseHg als auch SugarSync verwenden Overlay Icons um den Dateistatus im Windows Explorer darstellen zu können.</p>
<p>Wie sich nachfolgend herausstellen sollte, liegt tatsächlich das Problem an der Verwendung dieser Overlay Icons.</p>
<h4>Die Lösung (vorübergehend auf jeden Fall)</h4>
<p>Sowohl TortoiseHg als auch SugarSync bieten die Möglichkeit die Darstellung der Overlay Icons ein und ausschalten zu können.</p>
<p>Man kann eine der beiden Overlay Icon Anzeigen deaktivieren, und das Problem tritt nicht mehr auf. (Ich werde natürlich dieses Problem nun an SugarSync melden, damit sie das Problem aktiv angehen können, mal schauen ob und wann das dann geschieht)</p>
<p>Hier die Einstellungen die man ändern muss damit die beiden Produkte nebeneinander auf dem gleichen Rechner funktionieren.</p>
<p>Entweder dieses Option ausschalten (SugarSync):</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/SNAGHTML6d562c.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML6d562c" src="http://blog.schelian.de/wp-content/uploads/2011/12/SNAGHTML6d562c_thumb.png" alt="SNAGHTML6d562c" width="509" height="484" border="0" /></a></p>
<p>Oder diese hier (TortoiseHg) ausschalten:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/SNAGHTML6e7984.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML6e7984" src="http://blog.schelian.de/wp-content/uploads/2011/12/SNAGHTML6e7984_thumb.png" alt="SNAGHTML6e7984" width="644" height="477" border="0" /></a></p>
<p>Und nun mal schauen ob der “Live Test” mit SugarSync meine Bedürfnisse ganz befriedigen kann und ich dann in naher Zukunft die beiden anderen Produkte ganz von meinen Rechnern entfernen kann.</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/12/sugarsync-windows-7-64-bit-explorer-friert-ein-und-stuerzt-ab/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP Debugging für .NET Dummies (IIS &#8211; WordPress &#8211; PhpStorm &#8211; Xdebug)</title>
		<link>http://blog.schelian.de/2011/12/php-debugging-fuer-net-dummies-iis-wordpress-phpstorm-xdebug/</link>
		<comments>http://blog.schelian.de/2011/12/php-debugging-fuer-net-dummies-iis-wordpress-phpstorm-xdebug/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 09:55:26 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[Wissenswert]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PhpStorm]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1859</guid>
		<description><![CDATA[Vor einigen Tagen stand ich vor der Aufgabe im Zuge eines kleinen Projektes eine Verbindung zwischen der .NET und der PHP Welt herstellen zu müssen. Als .NET Entwickler bin ich es eigentlich gewohnt mit Visual Studio zu arbeiten. Auch wenn &#8230; <a href="http://blog.schelian.de/2011/12/php-debugging-fuer-net-dummies-iis-wordpress-phpstorm-xdebug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Tagen stand ich vor der Aufgabe im Zuge eines kleinen Projektes eine Verbindung zwischen der .NET und der PHP Welt herstellen zu müssen.</p>
<p><img style="margin: 0px 6px 0px 0px; display: inline; float: left;" src="http://t0.gstatic.com/images?q=tbn:ANd9GcSmGYVmL0CakR5uzlVIyEqB-OpDzBfyHvSUDs5jqgpXz-dkC76s" alt="" align="left" />Als .NET Entwickler bin ich es eigentlich gewohnt mit Visual Studio zu arbeiten. Auch wenn man nicht immer mit VS super zufrieden ist, kann man damit aber doch ganz ordentlich Entwickeln. daher war es mir  wichtig auch für diesen PHP Ausflug zuerst einmal eine “gescheite” Entwicklungsumgebung für dieses Projekt aufzubauen.</p>
<p>Da ich neben ReSharper (Visual Studio Plugin) bereits WebStorm (beides Erstklassige Produkte von JetBrains) einsetze war für mich sehr schnell klar, dass als PHP IDE PhpStorm vom gleichen Hersteller zum Einsatz kommen soll.</p>
<p>Unter einer “gescheiten” Entwicklungsumgebung verstehe ich ab er als minimale Anforderung:</p>
<ul>
<li>Einen guten Editor (IDE) (Am besten Syntax highlighting)</li>
<li>Einen ordentlichen Debugger (Am besten in der IDE integriert)</li>
</ul>
<p>Mit PhpStorm habe ich die “gute”  IDE bereits ausgewählt.</p>
<p>Das Problem des integrierten Debugger kann ich aber weder mir PhpStorm noch mit einer anderen mir bekannten Entwicklungsumgebung für PHP direkt und einfach lösen.</p>
<p>Um PHP zu debuggen gibt es eine Extension mit der Bezeichnung “Xdebug”,  die direkt zusammen mit PHP arbeitet und in der PHP.INI konfiguriert werden muss.</p>
<p><img style="display: inline; float: left;" src="http://t3.gstatic.com/images?q=tbn:ANd9GcRzAOouKPYj-hUV0gP2kTpQMVNdDBITpkVvtDNqPtzUsXg0R6BG" alt="" width="112" height="112" align="left" />Und genau diese Konfiguration und Einrichtung ist mir als .NET Entwickler irgendwie nicht wirklich einfach von der Hand gegangen.</p>
<p>Die Konfiguration von Xdebug in PHP war noch recht einfach und auch ganz ordentlich dokumentiert. Wie man jedoch aus der IDE (PhpStorm) Breakpoints setzen und den Debugger nutzen kann, dass blieb zuerst ein Buch mit vielen Siegeln.</p>
<p>Über die Konfiguration von PHP und Xdebug auf einem IIS unter Verwendung von PhpStorm, gab es eigentlich keine oder nur unvollständige Anleitungen (oder ich habe sie einfach nicht gefunden).</p>
<p>Nun aber genug der Vorreden, ab hier geht es nun um die Beschreibung (Schritt für Schritt Anleitung) wie man auf einem Windows Rechner eine komplette Entwicklungsumgebung für PHP einrichten kann, mit der sogar ein .NET Entwickler etwas anfangen kann <img src='http://blog.schelian.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
<p><strong>Systemumgebung, Programme, Voraussetzungen:</strong></p>
<ul>
<li>Windows 2008 R2 Server (Windows 7 mit installiertem IIS würde auch funktionieren)</li>
<li>WordPress (Oder jede andere PHP Anwendung wie z.B. Joomla)</li>
<li><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb.png" alt="image" width="146" height="84" align="right" border="0" /></a>PhpStorm 3.X</li>
<li>Xdebug (Debugger Tool für PHP)</li>
</ul>
<h3>Installation / Überprüfung IIS</h3>
<p>Benötigt wird ein IIS 7 oder 7.5 (kein IIS Express).</p>
<p>Unter dem W2K8 geht das einfach indem man die Serverrolle Webserver (IIS) auswählt und installiert.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image1.png" alt="image" width="644" height="475" border="0" /></p>
<p>Es werden keine speziellen Rollendienste benötigt, also einfach nur auf Weiter und Installieren klicken bis die Installation abgeschlossen ist.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image2.png" alt="image" width="644" height="474" border="0" /></p>
<h3>WordPress (und alle benötigten Komponenten installieren)</h3>
<p>Der einfachste Weg um ein Produkt wie WordPress auf einem Windows Rechner zu installieren ist sicherlich die Verwendung des Web Plattform Installer (Der übrigens auch in WebMatrix integriert ist).</p>
<p>Der Web Plattform Installer stellt selbst fest welche Komponenten auf dem Rechner vorhanden sind und welche installiert werden müssen um das ausgewählte Produkt verwenden zu können.</p>
<p><a href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank">Hier kann man dem Web Plattform Installer herunterladen</a></p>
<p>Also Web Plattform Installer herunterladen und aufrufen (installieren).</p>
<p>Nach der Initialisierung geben wir im Suchfeld “WordPress” ein und bestätigen die Eingabe mit der Enter Taste.</p>
<p>Nun wählen wir WordPress in der gewünschten Sprache aus und betätigen den Button hinzufügen.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image3.png" alt="image" width="644" height="449" border="0" /></p>
<p>Wenn man nun auf Installieren klickt werden die folgenden Tools und Produkte installiert.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image4.png" alt="image" width="644" height="583" border="0" /></p>
<p>Während der Installation müssen wir noch folgende Angaben machen:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image5.png" alt="image" width="644" height="445" border="0" /></p>
<p>Da ich eine Entwicklungsumgebung aufbauen möchte, werde ich MySQL auf dem lokalen Rechner installieren lassen. (Weiter klicken)</p>
<p>Nun bekommt man noch mal alle zu installierenden Produkte angezeigt und wird aufgefordert den Lizenzbedingungen zuzustimmen.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb1.png" alt="image" width="125" height="35" border="0" /></a></p>
<p>Jetzt muss noch ein root Passwort für die MySQL Installation angeben werden:</p>
<p>Beim Weiter Klicken, geht die Installation schon los.</p>
<p>Die Installation kann je nach Internet Geschwindigkeit unterschiedlich lange dauern, da während der Installation die aktuellen Pakete heruntergeladen und installiert werden.</p>
<p>Bei DSL 16000 und einem Rechner mit I7 Prozessor dauert die Gesamte Installation 3 &#8211; 5 Minuten.</p>
<h4>Nächster Stop Webseite für WP konfigurieren:</h4>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image7.png" alt="image" width="644" height="444" border="0" /></p>
<p>Da ich WordPress nur in der Entwicklungsumgebung aufrufen und nicht von extern zugänglich machen möchte, lasse ich die Einstellungen wie vorgegeben. Das führt nach der Installation dazu, dass die Seite unter localhost/wordpress erreichbar sein wird.</p>
<h4>Noch ein Stop Datenbank erstellen</h4>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image8.png" alt="image" width="644" height="443" border="0" /></p>
<h4>Datenbank auswählen / erstellen und Root Passwort</h4>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image9.png" alt="image" width="644" height="319" border="0" /></p>
<p>Da wir MySQL gerade erst installiert haben, müssen wir natürlich eine Neue Datenbank erstellen.</p>
<p>Im Eingabefeld (roter Pfeil(, müssen wir das Root Passwort eingeben, dass wir während der Installation von MySQL vergeben haben.</p>
<p>Datenbankbenutzer / Passwort eingeben</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image10.png" alt="image" width="644" height="522" border="0" /></p>
<p>Die Einträge mit den grünen Pfeilen müssen wir nicht anpassen.</p>
<p>In den Feldern mit den roten Pfeilen muss nun noch ein Kennwort für den Datenbank Benutzer eingegeben werden. Das muss nicht, kann aber das gleiche wie das Root Passwort sein (aber bitte nur auf lokalen Entwicklungssystemen, sonst sollten die Datenbank Passwort nicht dem Root Passwort entsprechen)</p>
<p>In allen weiteren Felder müssen keine Eingaben gemacht werden.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image11.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb2.png" alt="image" width="126" height="33" border="0" /></a></p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image12.png" alt="image" width="644" height="442" border="0" /></p>
<p>Damit sind nun WordPress und alle benötigten Tools und Programme installiert.</p>
<p>WordPress sollte nun schon funktionieren, also testen wir es mal.</p>
<p>Browser öffnen und localhost/wordpress eingeben.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image13.png" alt="image" width="644" height="487" border="0" /></p>
<p>Am besten geben wir gleich die notwendigen Daten für WP ein, so dass wir später direkt auf die Homepage von WordPress und nicht mehr auf die Admin Setup Seite geleitetet werden.</p>
<p>Beim nächsten Aufruf sollte das so aussehen:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image14.png" alt="image" width="644" height="482" border="0" /></p>
<h3>Xdebug installieren</h3>
<p>Nun müssen wir die <a href="http://xdebug.org/index.php" target="_blank">Xdebug Extension</a> installieren.</p>
<p>Wie wir weiter oben sehen wurde PHP in der Version 5.2 installiert, also müssen wir nun auch die Xdebug Version für PHP 5.2 herunterladen und installieren.</p>
<blockquote><p><strong>Aber Achtung es gibt 2 verschiedene Varianten:</strong></p></blockquote>
<p>Eine Thread sichere und eine Nicht Thread Sichere (nts), für die Installtion auf dem IIS muss die nts Variante verwendet werden.</p>
<p><a href="http://xdebug.org/files/php_xdebug-2.1.2-5.2-vc6-nts.dll" target="_blank">Hier geht es direkt zum Download xdebug version 2.1.2 für PHP 5.2 Not Thread Safe</a></p>
<p>Die Extension besteht lediglich aus einer DLL Datei mit dem Namen:</p>
<p><strong>php_xdebug-2.1.2-5.2-vc6-nts.dll</strong></p>
<p>Nachdem man die Datei heruntergeladen hat muss diese in das Ext Verzeichnis von PHP kopiert werden.</p>
<p>Bei einer Standardinstallation auf einem W2K8 Server (64 BIT) findet man das Ext Verzeichnis unter folgendem Pfad:</p>
<p><strong>C:\Program Files (x86)\PHP\v5.2\ext</strong></p>
<p>Als nächstes muss die PHP.INI angepasst werden um die Debugger Extension verwenden zu können</p>
<p>Die PHP.INI befindet sich im Verzeichnis:</p>
<p><strong>C:\Program Files (x86)\PHP\v5.2</strong></p>
<p>Also öffnen wir die PHP.INI mit einem Texteditor und fügen folgende Einträge hinzu:</p>
<pre class="brush: plain; title: ; notranslate">
[xdebug]
zend_extension = &quot;C:\Program Files (x86)\PHP\v5.2\ext\php_xdebug-2.1.2-5.2-vc6-nts.dll&quot;
xdebug.remote_enable = On
xdebug.remote_host = &quot;localhost&quot;
xdebug.remote_port = 9000
xdebug.remote_handler = &quot;dbgp&quot;
</pre>
<p>Eigentlich ist es gleich an welcher Stelle diese Einträge hinzugefügt werden, aber wer sich gerne strikt an Vorgaben hält, kann die Einträge direkt unter dem folgenden Eintrag einfügen, dann funktioniert es auf jeden Fall.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image15.png" alt="image" width="644" height="153" border="0" /></p>
<p>Nun speichern wird die PHP.INI und müssen noch den IIS Neu starten:</p>
<p>Entweder über die Konsole “Internetinformationsdienste (IIS)-Manager</p>
<p>oder über die Kommandozeile:</p>
<blockquote><p>net stop WAS (zum stoppen des IIS)</p></blockquote>
<p>und dann</p>
<blockquote><p>net start W3SVC (um den IIS wieder zu starten.)</p></blockquote>
<p>Später (nachdem wir PhpStorm installiert haben und damit auch einen brauchbaren Editor  zur Verfügung haben)  prüfen wir auch noch ob die Extension richtig eingerichtet wurde.</p>
<h3>PhpStorm installieren</h3>
<p>PhpStorm gibt es in einer 30 Tage Trial Version, wer also keine Lizenz besitzt kann sich  erst einmal 30 Tage lang anschauen ob im PhpStorm das Geld, was es kostet, wert ist (Ich denke dass ist es auf jeden Fall, ein tolles Produkt wie eigentlich alle Produkte von JetBrains. Nein ich bekomme keine Prozente <img src='http://blog.schelian.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  )</p>
<p>Den Download gibt es hier: <a href="http://www.jetbrains.com/phpstorm/download/">http://www.jetbrains.com/phpstorm/download/</a></p>
<p>Nachdem herunterladen installieren wir PhpStorm einfach mit allen Standardeinstellungen.</p>
<h3>WordPress Projekt in PhpStorm einrichten</h3>
<p>Nun öffnen wir PhpStorm und wählen die nachfolgende Option aus:</p>
<p>Create New Project from Existing Files</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image16.png" alt="image" width="644" height="568" border="0" /></p>
<p>Das Szenario: Lokaler Web Server und Source Code unterhalb des Web Root passt genau für unser vorhaben.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image17.png" alt="image" width="644" height="515" border="0" /></p>
<p>Nun wählen wir das Root Verzeichnis (<strong>Nicht das WordPress Verzeichnis auswählen</strong>) des Default WEB unseres localhost aus.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image18.png" alt="image" width="644" height="569" border="0" /></p>
<p>Jetzt geben wir dem Projekt Server noch einen Namen (z.B. MyLocalServer)</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image19.png" alt="image" width="644" height="569" border="0" /></p>
<p>In nächsten Schritt (Siehe Abbildung oben) geben wir nun die Projekt URL unserer WordPress Installation an.</p>
<p>Und haben damit das Projekt eingerichtet (Wie man auch in der folgenden Abbildung sehen kann).</p>
<p>Xdebug überprüfen</p>
<p>Wir öffnen die Datei index.php aus dem Root Verzeichnis unserer WordPress Installation im PhpStorm Editor.</p>
<p>Dort fügen wir die Funktion phpInfo() direkt nach dem Kommentar ein und speichern die Datei ab.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image20.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb3.png" alt="image" width="644" height="484" border="0" /></a></p>
<p>Nun öffnen wir den Browser und geben localhost/wordpress ein. Wenn anstelle der normalen WordPress Startseite diese PHP Info Seite angezeigt wird, haben wir bis hierhin schon mal alles richtig gemacht.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image21.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb4.png" alt="image" width="644" height="484" border="0" /></a></p>
<p>Um die Prüfung von Xdebug durchführen zu können, benötigen wir den Source Code der im Browse dargestellten phpinfo Seite.</p>
<p>Dazu lassen wir uns den Quelltext der Seite anzeigen, markieren den gesammten Quelltext, kopieren diesen in die Zwischenablage, und öffnen anschließend folgende Webseite:</p>
<p><a href="http://xdebug.org/find-binary.php">http://xdebug.org/find-binary.php</a></p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image22.png" alt="image" width="644" height="739" border="0" /></p>
<p>Dort wo der rote Pfeil hinzeigt fügen wir dann den in der Zwischenablage befindlichen Quelltext ein und betätigen anschließend den “Analyse my phpinfo() output” Button.</p>
<p>Wenn Xdebug richtig installiert ist, sollte das Ergebnis wie folgt aussehen:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image23.png" alt="image" width="644" height="568" border="0" /></p>
<p>Wenn Xdebug nicht richtig installier ist, sollte man überprüfen, ob die Pfadangabe und der Dateiname der Xebug DLL in der PHP.INI richtig angegeben sind.</p>
<h3>PhpStorm für das Debugging konfigurieren</h3>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image24.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb5.png" alt="image" width="298" height="484" border="0" /></a></p>
<p>Wir öffnen den Dialog “Edit Configurations”</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image25.png" alt="image" width="644" height="513" border="0" /></p>
<p>Nun fügen wir eine neue Konfiguration hinzu:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image26.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb6.png" alt="image" width="382" height="484" border="0" /></a></p>
<p>Eine PHP Web Application Konfiguration</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image27.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb7.png" alt="image" width="611" height="484" border="0" /></a></p>
<p>Im Feld unnamed geben wir unserer Konfiguration einen Namen. Zum Beispiel IIS.</p>
<p>Dann müssen wir einen Server auswählen (da wir aber noch keinen Konfiguriert haben, müssen wir zuerst einmal einen neu anlegen).</p>
<p>Hier Dialog zum einrichten eines neuen Server öffnen:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image28.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb8.png" alt="image" width="644" height="175" border="0" /></a></p>
<p>Dann im Dialog auf das + um einen neuen Server anzulegen:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image29.png" alt="image" width="644" height="529" border="0" /></p>
<p>Hier der bereits ausgefüllte Dialog:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image30.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb9.png" alt="image" width="644" height="528" border="0" /></a></p>
<p>Eingabe bestätigen und anschließend folgende Eingaben noch ergänzen, siehe Beschreibung unterhalb der Abbildung.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image31.png" alt="image" width="644" height="510" border="0" /></p>
<p>Der Konfiguration einen Namen geben (z.B. LocalIISWordPress)</p>
<p>Und die StartUrl um WordPress ergänzen, so dass der korrekte Link (http://localhost/wordpress) unter der Start URL angezeigt wird.</p>
<p>Das sollte dann so aussehen:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image32.png" alt="image" width="644" height="512" border="0" /></p>
<p>Dann bestätigen wir auch diesen Dialog</p>
<p>Und wenn wir nun auf den RUN Button drücken ….</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image33.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb10.png" alt="image" width="644" height="121" border="0" /></a></p>
<p>Sollte sich der Default Browser mit der WordPress Seite automatisch öffnen.</p>
<p>Eigentlich sollte das setzen von Breakpoint nun auch schon funktionieren, probieren wir das doch mal indem wir einen Breakpoint auf die Zeile phpinfo() setzen die wir in der index.php eingefügt haben.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image34.png" alt="image" width="644" height="484" border="0" /></p>
<p>Einen Breakpoint kann man übrigens ganz einfach dadurch setzen, indem man mit der Maus an die Stelle klickt auf die der Rote Pfeil zeigt.</p>
<p>Und wenn wir nun anstelle des RUN Button, den DEBUG Button drücken …..</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/12/image35.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/12/image_thumb11.png" alt="image" width="644" height="117" border="0" /></a></p>
<p>Richtig, der Programmablauf bleibt am Breakpoint stehen und wartet darauf das wir den Programmablauf fortsetzen.</p>
<p>So und nun viel Spaß beim PHP Debugging.</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/12/php-debugging-fuer-net-dummies-iis-wordpress-phpstorm-xdebug/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Alles WiX oder was &#8211; Windows Installer XML toolset für Dummies</title>
		<link>http://blog.schelian.de/2011/11/alles-wix-oder-was-windows-installer-xml-toolset-fuer-dummies/</link>
		<comments>http://blog.schelian.de/2011/11/alles-wix-oder-was-windows-installer-xml-toolset-fuer-dummies/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 16:25:21 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[VS2010]]></category>
		<category><![CDATA[WiX]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1786</guid>
		<description><![CDATA[Im Zuge der Zukunftssicherung (Heute nennt man das Refactoring) eines meiner älteren aber immer noch aktiven Projekte, einem Windows Forms Projekt sollte es dieses mal nicht nur dem eigentlichen Code sondern dem gesamten Build und Deployment Prozess an den Kragen &#8230; <a href="http://blog.schelian.de/2011/11/alles-wix-oder-was-windows-installer-xml-toolset-fuer-dummies/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Im Zuge der Zukunftssicherung (Heute nennt man das Refactoring) eines meiner älteren aber immer noch aktiven Projekte, einem Windows Forms Projekt sollte es dieses mal nicht nur dem eigentlichen Code sondern dem gesamten Build und Deployment Prozess an den Kragen gehen.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/11/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/11/image_thumb.png" alt="image" width="117" height="88" align="left" border="0" /></a>Mit den, bis zur Visual Studio 2010 enthaltenen, und Stand Heute mit der nächsten Visual Studio Version nicht mehr unterstützen, “Visual Studio Setup Projekte”, war ich eigentlich noch nie wirklich zufrieden. Also muss etwas neues her, mit dem ich dieses ungeliebte Setup Projekt ersetzen kann und mein Projekt auch noch mit der nächsten Visual Studio Version weiter entwickeln und distribuieren kann.</p>
<p>Nach ein wenig Recherche und ein wenig Gezwitscher auf Twitter stand fest, dass <a href="http://wix.sourceforge.net/" target="_blank">WiX</a> wohl die beste Lösung sei um das Deployment der Anwendung durchzuführen.</p>
<p><a href="http://wix.sourceforge.net/" target="_blank">WiX</a> ist ein von Microsoft initiiertes Open Source Projekt dass unter anderem von Microsoft selbst für die  Distribution von Microsoft Office verwendet wird.</p>
<p>Nachdem klar war, das <a href="http://wix.sourceforge.net/" target="_blank">WiX</a> in Zukunft bei mir für die Installation meines Projektes zuständig sein soll, habe ich über Twitter von <a href="http://www.cayas.de/" target="_blank">Sebastian Seidel</a> einen Link auf einen <a href="http://www.aspnetzone.de/blogs/juergengutsch/archive/2011/03/08/vom-visual-studio-zum-wix-setup-in-5-einfachen-schritten.aspx" target="_blank">Beitrag</a> erhalten in welchem beschrieben wird wie man in 5 einfachen Schritten aus einem Visual Studio Setup ein <a href="http://wix.sourceforge.net/" target="_blank">WiX</a> Setup Projekt machen kann.</p>
<p>Ich bin dann dieser Anleitung gefolgt und habe die Konvertierung und Änderungen laut dem oben genannten Beitrag durchgeführt.</p>
<p>Wobei ich sagen muss, dass diese Konvertierung zwar ganz schön ist, aber leider nicht so ohne weiteres direkt zum Erfolg führt.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/11/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2011/11/image_thumb1.png" alt="image" width="210" height="83" align="right" border="0" /></a>Ich habe dann mit ein wenig Hilfe von Sebastian, Danke noch mal dafür, relativ schnell, erst einmal ein generell funktionierendes Setup mit WiX zum laufen bekommen. Leider noch ohne wirklich zu wissen wie WiX tatsächlich funktioniert und wie umfangreich WiX in Wirklichkeit ist.</p>
<p>Da ich aber nicht so leicht zufrieden zu stellen bin und mir das WiX Setup,  welches aus dem decompilierten alten Setup erstellt wurde, nicht gefallen hat (da waren zu viele statische Angaben enthalten und es hatte keine echte nachvollziehbare Struktur) habe ich mich mit WiX näher beschäftigt.</p>
<p>Nachdem ich ein paar Tage mit WiX gearbeitet habe, würde ich sagen, dass es sich nicht lohnt ein Setup Projekt zu decompilieren um dieses dann manuell nachzuarbeiten.</p>
<p>Meiner Meinung nach ist es einfacher ein Basistemplate mit den wichtigsten Funktionalitäten, gepaart mit ein wenig Grundwissen über WiX zu nehmen und sich das benötigte Setup Projekt manuell zu erstellen.</p>
<p>Und genau ein solches Basistemplate möchte ich hier zusammen mit dem notwendigen Basiswissen zu WiX vorstellen und vermitteln.</p>
<p>Wer WiX noch nicht auf seinem Rechner installiert hat, sollte das nun aber spätestens nachholen.</p>
<p><a href="http://wix.codeplex.com/releases/view/60102" target="_blank">Hier der Link zum Download von WiX</a></p>
<p>Nachdem man WiX installiert hat und Visual Studio startet, findet man dort neue Projektvorlagen:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/11/SNAGHTMLb687d8.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="SNAGHTMLb687d8" src="http://blog.schelian.de/wp-content/uploads/2011/11/SNAGHTMLb687d8_thumb.png" alt="SNAGHTMLb687d8" width="244" height="170" border="0" /></a></p>
<p>In diesem Beitrag dreht sich alles nur um das eigentliche Setup Projekt die anderen Projekt Vorlagen sind dann eher für die Fortgeschrittenen.</p>
<p>Um die Funktionsweise von WiX direkt selbst ausprobieren zu können, habe ich ein Testprojekt erstellt dass sowohl eine Windows Forms Anwendung, wie eine Class Library und das zugehörige Wix Setup Projekt in einer Solution enthält.</p>
<p>Also einfach die Solution (VS2010) herunterladen, entpacken, BS starten und loslegen.</p>
<p>Der Einfachheit halber habe ich alle Erklärungen direkt als Kommentar in das WiX Skript aufgenommen.</p>
<p>So hier das WiX Script zum anschauen. Im Anschluss folgt dann auch noch der Link zum herunterladen der gesamten Test Solution.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Wix xmlns=&quot;http://schemas.microsoft.com/wix/2006/wi&quot;&gt;
  &lt;!--  &lt;?define Manufactor = &quot;Hans-Peter Schelian&quot;?&gt;
        Anstelle den Manufactor an mehreren Stellen anzugeben weise ich hier lieber einer Variablen den Wert zu
        und verwende im weiteren Verlauf einfach die Variable
  --&gt;
  &lt;!--  &lt;?define UpgradeGuid = &quot;{3B563A68-99BC-4528-9356-295ADB67909A}&quot;?&gt;
        Ganz Wichtig, die Guid für den UpgradeCode darf nach der ersten Installation nicht mehr geändert werden
        aus diesem Grund weise ich diese Guid einer Variablen zu die ich dann im weiteren Verlauf im Bereich
        &lt;Product UpgradeCode=&quot;$(var.UpgradeGuid)&quot; /&gt; und  im Bereich &lt;Upgrade Id=&quot;$(var.UpgradeGuid)&quot; anstelle
        der Eingabe der eigentlichen Guid verwenden kann.
  --&gt;

  &lt;!-- Hier nun alle Defines die durch den Präprozessor aufgelöst werden --&gt;
  &lt;?define Manufactor = &quot;Hans-Peter Schelian&quot;?&gt;
  &lt;?define UpgradeGuid = &quot;{3B563A68-99BC-4528-9356-295ADB67909A}&quot;?&gt;

  &lt;!--  Erklärungen zum Bereich &lt;Product&gt; Siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_product.htm

        Id=&quot;*&quot; Mit dem + wird erreicht, dass bei jedem erzeugen des Setup eine neue Guid erstellt wird.
          Man könnte natürlich auch alternativ eine feste Guid vergeben, dass würde dann so ausssehen:
          Id=&quot;{2BE1FDE8-FAEE-48B5-AA08-FD2FE26D7FB2}&quot;

        Name=&quot;WiXDemoProjekt&quot; Name des Projektes wie es in &quot;Programme und Funktionen&quot; angezeigt wird

        Version=&quot;!(bind.FileVersion.MyApplicationFile)&quot; - Das ist die Programmversion des Produktes,
          entweder man muss die Version manuell angeben: Version=&quot;1.0.1.1&quot; oder man kann wie ich es hier
          demonstriere, Binder Variablen des WiX Linker verwenden um Dynamisch die Vesionsnummer aus
          einer beliebiegen Datei des Projektes zu ermitteln.
          Im Beispiel verwende ich die Möglichkeit die Version welche mit [assembly: AssemblyFileVersion(&quot;1.0.0.0&quot;)]
          in der AssemblyInfo gesetzt wurde aus der Datei auszulesen.

        Manufacturer=&quot;$(var.Manufactor)&quot; Zuweisung des in der Präprozessor Variablen gespeicherten Herstellers,
          alternativ kann man natürlich auch eine manuelle Zuweiung Manufacturer=&quot;Hans-Peter Schelian&quot; vornehmen

        UpgradeCode=&quot;$(var.UpgradeGuid)&quot;&gt; Zuweisung der in der Präprozessor Variablen gespeicherten Guid,
          alternativ kann man die Zuweisung UpgradeCode=&quot;{2BE1FDE8-FAEE-48B5-AA08-FD2FE26D7FB2}&quot;&gt; auch manuell
          durchführen.
  --&gt;
  &lt;Product
  Id=&quot;*&quot;
  Name=&quot;WiXDemoProjekt&quot;
  Language=&quot;1033&quot;
  Version=&quot;!(bind.FileVersion.MyApplicationFile)&quot;
  Manufacturer=&quot;$(var.Manufactor)&quot;
  UpgradeCode=&quot;$(var.UpgradeGuid)&quot;&gt;

    &lt;!-- Erklärungen zum Bereich &lt;Package&gt; http://wix.sourceforge.net/manual-wix3/wix_xsd_package.htm
      InstallerVersion=&quot;200&quot; Ab Windows Installer 2.0
      Compressed=&quot;yes&quot; - So werden die Dateien im MSI File komprimiert
      Description=&quot;Installiert das WiXDemoProjekt&quot; - Eine Beschreibung für das Installer Package
      Manufacturer=&quot;Hans-Peter Schelian&quot; - Und wieder der Hersteller siehe auch &lt;Procuct Manufacturer=&quot;&quot; /&gt;
      Comments=&quot;Ich wünsche allen viel Spaß mit diesem Beispiel&quot; - Das was es bedeutet ein Kommentar
    --&gt;
    &lt;Package
    InstallerVersion=&quot;200&quot;
    Compressed=&quot;yes&quot;
    Description=&quot;Installiert das WiXDemoProjekt&quot;
    Manufacturer=&quot;$(var.Manufactor)&quot;
    Comments=&quot;Ich wünsche allen viel Spaß mit diesem Beispiel&quot;
  /&gt;

    &lt;!-- Erklärungen zum Bereich &lt;Media&gt; Siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_media.htm
    --&gt;
    &lt;Media
    Id=&quot;1&quot;
    Cabinet=&quot;media1.cab&quot;
    EmbedCab=&quot;yes&quot;
  /&gt;

    &lt;!-- ARP Support Oder wie konfiguriert man Add/Remove Programs mit dem Windows Installer
        Siehe auch http://msdn.microsoft.com/en-us/library/aa368032.aspx
    --&gt;
    &lt;Property Id=&quot;ARPHELPTELEPHONE&quot; Value=&quot;XXXXX/XXXXXXX&quot; /&gt;
    &lt;Property Id=&quot;ARPHELPLINK&quot; Value=&quot;http://blog.schelian.de&quot; /&gt;
    &lt;Property Id=&quot;ARPCONTACT&quot; Value=&quot;Schelian IT Beratung&quot; /&gt;
    &lt;Property Id=&quot;ARPCOMMENTS&quot; Value=&quot;Alles WiX oder was&quot; /&gt;
    &lt;Property Id=&quot;ARPURLINFOABOUT&quot; Value=&quot;http://www.schelian.de&quot; /&gt;

    &lt;!-- Erklärungen zum Bereich &lt;Upgrade&gt;
        Upgrade Id=&quot;$(var.UpgradeGuid)&quot;&gt; hier Zuweisung durch Präprozessor Variable, siehe auch Hinweise
          zu define UpgradeGuid

        &lt;UpgradeVersion Minimum=&quot;!(bind.FileVersion.MyApplicationFile)&quot; - Hier wird festgestellt ob
          bereits ein neueres Produkt (Neuere Version) installiert ist.

        &lt;UpgradeVersion Minimum=&quot;0.1.0.0&quot; - Prüfung ob bereits eine frühere Version installiert ist

        &lt;UpgradeVersion Minimum=&quot;1.0.0.0&quot; Maximum=&quot;99.0.0.0&quot; - Ist das Prpdukt in welcher Versio auch immer
            bereits auf dem Rechner installiert, dann setzt die internet Variable PREVIOUSVERSIONSINSTALLED,
            dadurch wird verhindert, dass selbst dann wenn man eine Version die nicht als Upgrade gilt
            (nur im vierten Bereich) der Versionsnummer geändert ist, nicht dazu führt, dass es zu doppelten
            Einträgen im Add/Remove Programms kommt.
    --&gt;
    &lt;Upgrade Id=&quot;$(var.UpgradeGuid)&quot;&gt;
      &lt;UpgradeVersion Minimum=&quot;!(bind.FileVersion.MyApplicationFile)&quot;
                      IncludeMinimum=&quot;no&quot;
                      OnlyDetect=&quot;yes&quot;
                      Language=&quot;1033&quot;
                      Property=&quot;NEWPRODUCTFOUND&quot; /&gt;
      &lt;UpgradeVersion Minimum=&quot;0.1.0.0&quot;
                      IncludeMinimum=&quot;yes&quot;
                      Maximum=&quot;!(bind.FileVersion.MyApplicationFile)&quot;
                      IncludeMaximum=&quot;no&quot;
                      Language=&quot;1033&quot;
                      Property=&quot;UPGRADEFOUND&quot; /&gt;
      &lt;UpgradeVersion Minimum=&quot;1.0.0.0&quot; Maximum=&quot;99.0.0.0&quot;
         Property=&quot;PREVIOUSVERSIONSINSTALLED&quot;
         IncludeMinimum=&quot;yes&quot; IncludeMaximum=&quot;no&quot; /&gt;
    &lt;/Upgrade&gt;

    &lt;!-- So nun wird die Verzeichnis Struktur für die Installation aufgebaut
      &lt;Directory Id=&quot;TARGETDIR&quot; Name=&quot;SourceDir&quot;&gt; Diese Zeile setzt das Root Verzeichnis der Installation
        &quot;\&quot;
      &lt;Directory Id=&quot;ProgramFilesFolder&quot;&gt; verwendet eine durch den Windows Installer vordefinierte Id zur
        Verwendung der Standard Programmpfads.
        &quot;C:\Program Files&quot;
      &lt;Directory Id=&quot;CompanyFolder&quot; Name=&quot;Schelian IT Beratung&quot;&gt;
        &quot;C:\Program Files\Schelian IT Beratung\&quot;

      &lt;Directory Id=&quot;INSTALLLOCATION&quot; Name=&quot;WiXDemoProjekt&quot;&gt;
        &quot;C:\Program Files\Schelian IT Beratung\WiXDemoProjekt\&quot;
    --&gt;
    &lt;Directory Id=&quot;TARGETDIR&quot; Name=&quot;SourceDir&quot;&gt;
      &lt;Directory Id=&quot;ProgramFilesFolder&quot;&gt;
        &lt;Directory Id=&quot;CompanyFolder&quot; Name=&quot;Schelian IT Beratung&quot;&gt;
          &lt;Directory Id=&quot;INSTALLLOCATION&quot; Name=&quot;WiXDemoProjekt&quot;&gt;
            &lt;!-- Und dahinein packen wir eine Component, in diesem Fall Unser Ausführbares Programm
                Jede Component muss eine eindeutige Id bestzen, diese wird weiter unter verwendet um die Component
                einem Feature zuzuordnen.
                Eine Component sollte eine Guid besitzten, damit es später Möglich ist anhand dieser Guid die Datei
                eindeutig zu identifizieren, damit man mit dem MS Installer, eine Reparatur einer vorhandenen Installation
                durchführen kann.
            --&gt;
            &lt;Component Id=&quot;ProductComponent&quot; Guid=&quot;{4A5619DF-5841-48EC-8D7C-D368718C6D1A}&quot;&gt;
              &lt;!-- Innerhalb der Komponente bestimmen wir dann die zu installierende Datei
                  Jedes File muss einen eindeutige Id besitzen, der Name ist der Dateiname am Zielort und
                  mit Source wird die Quelle der Datei angegeben.

                  Name=&quot;$(var.WixDemoProjekt.TargetFileName)&quot; nutzt die Möglichkeit den Zielnamen aus dem
                  Visual Studio Projekt zu übernehmen, dass hat den Vorteil, dass man sich keine Gedanken
                  darüber machen muss das Setup anfassen zu müssen, wennm man den Ausgabe Namen im VS Projekt
                  ändert.

                  Source=&quot;$(var.WixDemoProjekt.TargetPath)&quot; nutzt ebenfalls die Möglicheit der Visual Studio
                  Project References und Variablen.
                  Siehe auch http://wix.sourceforge.net/manual-wix3/votive_project_references.htm
                  Man miuss übrigens um diese References nutzen zu können im WiX Setup Projekt eine Reference auf das
                  Visual Studio Projekt setzen.

                  KeyPath=&quot;yes&quot; Für nähere Informatinonen siehe http://wix.sourceforge.net/manual-wix3/wix_xsd_file.htm
              --&gt;
              &lt;File Id=&quot;MyApplicationFile&quot; Name=&quot;$(var.WixDemoProjekt.TargetFileName)&quot; Source=&quot;$(var.WixDemoProjekt.TargetPath)&quot; KeyPath=&quot;yes&quot;&gt;
                &lt;!-- Dann legen wir doch gleich noch einen Desktop Shortcut für das Projekt an. --&gt;
                &lt;Shortcut Advertise=&quot;yes&quot; Id=&quot;DesktopShortCut&quot; Name=&quot;WiXDemoProjekt&quot; Directory=&quot;DesktopFolder&quot; WorkingDirectory=&quot;INSTALLLOCATION&quot; Description=&quot;WiXDemoProjekt Programm ausführen&quot; Icon=&quot;Icon.exe&quot;&gt;
                  &lt;!-- Und dieses Icon soll für den Shortcut verwendet werden --&gt;
                  &lt;Icon Id=&quot;Icon.exe&quot; SourceFile=&quot;$(var.WixDemoProjekt.TargetPath)&quot; /&gt;
                &lt;/Shortcut&gt;
              &lt;/File&gt;
            &lt;/Component&gt;
            &lt;!-- Nun muss für jedes weitere File dass installiert werden soll, eine Component erstellt werden
                Es wäre auch möglich mehrere Files in einer Component zusammenzufassen, allerdings würde ich das
                nur empfehlen, wenn man tgatsächlich einzeln zu installierende Feature implementiert, die je
                Component aus mehereren Dateien bestehen.
            --&gt;
            &lt;Component Id=&quot;WiXDemoLib&quot; Guid=&quot;{777028E8-DA56-400E-9C71-844AE328E8BF}&quot;&gt;
              &lt;!-- Hier nun die zu installierende Datei der Component hinzufügen --&gt;
              &lt;File Id=&quot;WiXDemoLib&quot; Name=&quot;WiXDemoLib.dll&quot; Source=&quot;$(var.WixDemoProjekt.TargetDir)WiXDemoLib.dll&quot; KeyPath=&quot;yes&quot; /&gt;
            &lt;/Component&gt;
            &lt;!-- Beispiel wie man eine App.Config in das Setup aufnehmen und während der Setup Erstellung umbenennen kann
                Hier wird aus der app.config die WixDemoProjekt.Exe.Config
            --&gt;
            &lt;Component Id=&quot;app.config&quot; Guid=&quot;{EE4CA09D-2C10-48E4-946A-D8B9242F557E}&quot;&gt;
              &lt;File Id=&quot;app.config&quot; Name=&quot;WixDemoProjekt.Exe.Config&quot; Source=&quot;$(var.WixDemoProjekt.ProjectDir)app.config&quot; KeyPath=&quot;yes&quot; /&gt;
            &lt;/Component&gt;
            &lt;!-- Und hier ein Beispiel wie man Datei in Unterverzeichnis am Zielort kopieren kann--&gt;
            &lt;Directory Id=&quot;IMAGEFOLDER&quot; Name=&quot;Images&quot;&gt;
              &lt;Component Id=&quot;WiX.image&quot; Guid=&quot;{ACD0322F-8170-4C67-84BC-161FCEE6274A}&quot;&gt;
                &lt;File Id=&quot;WiX.image&quot; Name=&quot;wixlogo.png&quot; Source=&quot;$(var.WixDemoProjekt.TargetDir)images\wixlogo.png&quot; KeyPath=&quot;yes&quot; /&gt;
              &lt;/Component&gt;
            &lt;/Directory&gt;
          &lt;/Directory&gt;
        &lt;/Directory&gt;
      &lt;/Directory&gt;

      &lt;!-- Verknüpfungen im Startmenü setzen
          Siehe auch http://wix.sourceforge.net/manual-wix3/create_start_menu_shortcut.htm
      --&gt;
      &lt;Directory Id=&quot;ProgramMenuFolder&quot;&gt;
        &lt;Directory Id=&quot;MyShortCutsDir&quot; Name=&quot;WiXDemoProjekt&quot;&gt;
          &lt;Component Id=&quot;ShortCutComponent&quot; Guid=&quot;{B51BC276-F509-4F25-9738-EE176445D073}&quot;&gt;
            &lt;Shortcut Id=&quot;ProgShortCut&quot; Name=&quot;WiXDemoProjekt&quot; Description=&quot;WiXDemoProjekt Programm Verkmüpfung&quot; Target=&quot;[INSTALLLOCATION]WixDemoProjekt.Exe&quot;&gt;&lt;/Shortcut&gt;
            &lt;Shortcut Id=&quot;UninstallShortCut&quot; Name=&quot;Uninstall WiXDemoProjekt&quot; Target=&quot;[System64Folder]msiexec.exe&quot; Arguments=&quot;/x [ProductCode]&quot;/&gt;
            &lt;RemoveFolder Id=&quot;RemoveMyShortCuts&quot; On=&quot;uninstall&quot;/&gt;
            &lt;RegistryValue Root=&quot;HKCU&quot; Key=&quot;Software\Schelian IT Beratung\WiXDemoProjekt&quot; Name=&quot;installed&quot; Type=&quot;integer&quot; Value=&quot;1&quot; KeyPath=&quot;yes&quot;/&gt;
          &lt;/Component&gt;
        &lt;/Directory&gt;
      &lt;/Directory&gt;
      &lt;!-- Wird benötigt um den Desktop Shortcut anlegen zu können --&gt;
      &lt;Directory Id=&quot;DesktopFolder&quot; Name=&quot;Desktop&quot; /&gt;
    &lt;/Directory&gt;

    &lt;!-- Feature Bereich hier als Basistemplate nur ein Feature (Alles installieren)
        Siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_feature.htm
    --&gt;
    &lt;Feature Id=&quot;ProductFeature&quot; Title=&quot;WiXDemoProjekt&quot; Level=&quot;1&quot;&gt;
      &lt;ComponentRef Id=&quot;ProductComponent&quot; /&gt;
      &lt;ComponentRef Id=&quot;WiXDemoLib&quot; /&gt;
      &lt;ComponentRef Id=&quot;app.config&quot; /&gt;
      &lt;ComponentRef Id=&quot;WiX.image&quot; /&gt;
      &lt;ComponentRef Id=&quot;ShortCutComponent&quot; /&gt;
    &lt;/Feature&gt;

    &lt;!-- Das was nun folgt ist schon ein wenig Finetuning CustomActions
        siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_customaction.htm
    --&gt;
    &lt;!-- Keinen Downgrade zulassen --&gt;
    &lt;CustomAction Id=&quot;PreventDowngrading&quot;
                  Error=&quot;Es ist bereits eine neuere Version instlliert.&quot; /&gt;

    &lt;!-- Nun noch die auszuführende Reihenfolg angeben
        siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_installexecutesequence.htm
    --&gt;
    &lt;InstallExecuteSequence&gt;
      &lt;Custom Action=&quot;PreventDowngrading&quot;
              After=&quot;FindRelatedProducts&quot;&gt;NEWPRODUCTFOUND&lt;/Custom&gt;
      &lt;RemoveExistingProducts After=&quot;InstallFinalize&quot; /&gt;
    &lt;/InstallExecuteSequence&gt;

    &lt;!-- Wenn ein neueres Produkt gerunden wurde, soll das auch in der UI ausgegeben werden
        siehe auch http://wix.sourceforge.net/manual-wix3/wix_xsd_installuisequence.htm
    --&gt;
    &lt;InstallUISequence&gt;
      &lt;Custom Action=&quot;PreventDowngrading&quot;
              After=&quot;FindRelatedProducts&quot;&gt;NEWPRODUCTFOUND&lt;/Custom&gt;
    &lt;/InstallUISequence&gt;

    &lt;!-- So kann man eine eigene Lizenzmeldung ausgeben --&gt;
    &lt;WixVariable Id='WixUILicenseRtf' Overridable='yes' Value='$(var.WixDemoProjekt.ProjectDir)Lizenzbestimmungen.rtf'/&gt;

    &lt;!-- UI Definition für Minimales Setup
    Um diese UI Definition vornehmen zu können,
    muss im WiX Projekt die WixUIExtension.dll als Reference hinzugefügt werden
    --&gt;
    &lt;UIRef Id=&quot;WixUI_Minimal&quot; /&gt;
    &lt;UIRef Id=&quot;WixUI_ErrorProgressText&quot; /&gt;
  &lt;/Product&gt;
&lt;/Wix&gt;
</pre>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/11/WixDemoProjekt.zip">WixDemoProjekt (VS2010 Solution)</a></p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/11/alles-wix-oder-was-windows-installer-xml-toolset-fuer-dummies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nomen est Omen &#8211; 1. Treffen des .NET Rheinhessen Stammtisch im Restaurant Zw&#246;lf Apostel in Alzey</title>
		<link>http://blog.schelian.de/2011/10/nomen-est-omen-1-treffen-des-net-rheinhessen-stammtisch-im-restaurant-zwlf-apostel-in-alzey/</link>
		<comments>http://blog.schelian.de/2011/10/nomen-est-omen-1-treffen-des-net-rheinhessen-stammtisch-im-restaurant-zwlf-apostel-in-alzey/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 12:58:48 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/2011/10/nomen-est-omen-1-treffen-des-net-rheinhessen-stammtisch-im-restaurant-zwlf-apostel-in-alzey/</guid>
		<description><![CDATA[Nicht mal mehr eine Woche, dann findet das 1. Treffen des .NET Rheinhessen Stammtischs statt. Einzelheiten dazu findet Ihr in meinem ersten Post dazu. Um diesem Treffen einen angemessenen Rahmen zu geben, haben wir (das sind noch immer Sascha Dittmann &#8230; <a href="http://blog.schelian.de/2011/10/nomen-est-omen-1-treffen-des-net-rheinhessen-stammtisch-im-restaurant-zwlf-apostel-in-alzey/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nicht mal mehr eine Woche, dann findet das 1. Treffen des .NET Rheinhessen Stammtischs statt.</p>
<p><a href="http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/" target="_blank">Einzelheiten dazu findet Ihr in meinem ersten Post dazu.</a></p>
<p>Um diesem Treffen einen angemessenen Rahmen zu geben, haben wir (das sind noch immer <a href="http://www.xing.com/profile/Sascha_Dittmann" target="_blank">Sascha Dittmann</a> und <a href="http://www.xing.com/profile/HansPeter_Schelian" target="_blank">ich</a>&nbsp;<img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://blog.schelian.de/wp-content/uploads/2011/10/wlEmoticon-smile.png">) bei der Auswahl der Lokation selbstverständlich darauf geachtet eine Lokation mit einem würdigen Namen zu finden.</p>
<blockquote><p>Ich denke dass ist uns gelungen.</p>
</blockquote>
<p>Das Treffen findet im Restaurant <strong>“Zwölf Apostel” </strong>in Alzey statt.</p>
<p>Das Restaurant befindet sich inmitten der Innenstadt, direkt am <a href="http://www.gerry-jansen-theater.de/" target="_blank">Gerry Jansen Theater</a>. Parklätze sind <strong>nicht direkt</strong> vor dem Restaurant vorhanden. </p>
<p>Es gibt jedoch mehrere Parkplätze in der Nähe, siehe nachfolgende Abbildung.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/10/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/10/image_thumb.png" width="459" height="430"></a></p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/10/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://blog.schelian.de/wp-content/uploads/2011/10/image_thumb1.png" width="24" height="24"></a> Restaurant Zwölf Apostel</p>
<p><font color="#ff0000"><strong>A</strong></font>) Parkplatz am Obermarkt (3 Gehminuten)<br /><font color="#ff0000"><strong>B</strong></font>) Parkplatz Ostdeutsche Straße (5 Gehminuten)<br /><font color="#ff0000"><strong>C</strong></font>) Parkplätze am Straßenrand Sankt-Georgen-Straße (2 Gehminuten)</p>
<p><u><strong>Hinweise zu den Parkmöglichkeiten</strong></u>:<br />In der Sankt-Georgen-Straße sind nur 5 Parkplätze und meisten belegt, doch auf dem Obermarkt sollten eigentlich genügend Parkplätze vorhanden sein. <br />Sollte am Obermarkt wirklich alles belegt sein, gibt es auf der Ostdeutschen Straße&nbsp; Ecke Raugrafenstraße einen großen Parkplatz auf dem Abends immer genügend Platz vorhanden ist.</p>
<p><u><strong>So nun noch einmal alle Fakten im Überblick:</strong></u></p>
<p><a href="http://www.xing.com/net/dotnetrheinhessen" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title=".NET Rheinhessen Stammtisch - XING Gruppe" border="0" alt=".NET Rheinhessen Stammtisch - XING Gruppe" src="http://blog.schelian.de/wp-content/uploads/2011/10/UGRheinhessen-Gruppenlogo.jpg" width="237" height="73"></a></p>
<p><strong>Mittwoch 19.10.2011 um 18:30 Uhr</strong></p>
<p><strong>Zwölf Apostel<br />Hellgasse 7<br />55232 Alzey</strong></p>
<p><strong><a href="http://maps.google.de/maps?hl=de&amp;newwindow=1&amp;rlz=1C1CHFX_deDE442DE442&amp;nord=1&amp;gs_upl=&amp;bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&amp;ion=1&amp;biw=942&amp;bih=912&amp;um=1&amp;ie=UTF-8&amp;cid=0,0,8538593804977845446&amp;fb=1&amp;hq=gerry+jansen+alzey+theater&amp;gl=de&amp;daddr=Hellgasse+7,+55232+Alzey&amp;geocode=0,49.745240,8.113950&amp;ei=AteWTuv3LY_04QTMm-y7BA&amp;sa=X&amp;oi=local_result&amp;ct=directions-to&amp;resnum=1&amp;ved=0CDsQngIwAA" target="_blank">Routenplaner</a></strong></p>
<p>Bis Mittwoch !!</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/10/nomen-est-omen-1-treffen-des-net-rheinhessen-stammtisch-im-restaurant-zwlf-apostel-in-alzey/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google + &#8211; Anwendungsfall Logbuch</title>
		<link>http://blog.schelian.de/2011/09/google-anwendungsfall-logbuch/</link>
		<comments>http://blog.schelian.de/2011/09/google-anwendungsfall-logbuch/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 09:14:49 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/2011/09/google-anwendungsfall-logbuch/</guid>
		<description><![CDATA[Ich möchte Heute darüber schreiben wie man Google + “sinnvoll als Logbuch” und nicht nur ausschließlich dafür nutzen kann, um Informationen mit bestimmten Kreisen oder der Öffentlichkeit zu teilen. Seit einigen Woche kann man auch Es gibt zwar keine #HashTags &#8230; <a href="http://blog.schelian.de/2011/09/google-anwendungsfall-logbuch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich möchte Heute darüber schreiben wie man Google + “sinnvoll als Logbuch” und nicht nur ausschließlich dafür nutzen kann, um Informationen mit bestimmten Kreisen oder der Öffentlichkeit zu teilen.</p>
<p>Seit einigen Woche kann man auch </p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="In Google+ suchen" border="0" alt="In Google+ suchen" src="http://blog.schelian.de/wp-content/uploads/2011/09/image6.png" width="392" height="42"></p>
<p>Es gibt zwar keine #HashTags aber eigentlich sind diese auch gar nicht unbedingt notwendig, es geht auch ohne, wie wir gleich sehen werden.</p>
<p>Ich möchte bestimmte Ereignisse auf Google+ hinterlegen, diese je nach Art des Ereignisses, entweder mit bestimmten Leuten oder der Öffentlichkeit teilen, oder einfach nur für mich zur späteren Erinnerung festhalten.</p>
<p>Natürlich gehe ich an dieser Stelle davon aus, dass Google meine Daten nur denjenigen Zugängig macht, denen ich es erlaube (Circles), und auch sonst nichts mit meinen Daten anstellt, was ich nicht möchte (Die Hoffnung stirbt ja bekanntlich zuletzt <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://blog.schelian.de/wp-content/uploads/2011/09/wlEmoticon-smile.png"> ). </p>
<p>Aber das ist ein anderes Thema, dass ich hier nicht weiter vertiefen möchte. Wer also gar kein Vertrauen oder einfach nur zu viel misstrauen hat, soll halt keine Daten G+ anvertrauen. Und besser gar nichts im Internet haben, vor allem nicht auf Facebook, aber dass ist auch ein anderes Thema.</p>
<p>So nun aber zur Auflösung wie ich G+ als Logbuch verwende:</p>
<p>Als erstes muss ich mir ein Kürzel für mein Logbuch ausdenken, und zwar eines, dass vermutlich nicht sehr häufig in meinen anderen Beiträgen vorkommt. Das kann auch der Begriff “Logbuch” sein, wenn man nicht in allen Beiträgen über Logbücher schreibt.</p>
<p>Dann erstellt ich die Beiträge die in meinem Logbuch erscheinen sollen im Format:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb5.png" width="567" height="225"></a></p>
<p>Nun kann ich den Beitrag für beliebige Kreise freigeben und ihn teilen.</p>
<p>Wie kann ich nun aber Logbuch Einträge erstellen, die nur für mich (und Google <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://blog.schelian.de/wp-content/uploads/2011/09/wlEmoticon-smile.png"> ) sind?</p>
<p>Ich erstelle mir einen Kreis, zum Beispiel den Kreis “Privat”&nbsp; und füge <strong>keine</strong> Personen in diesem Kreis hinzu.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb6.png" width="169" height="163"></a></p>
<p>Somit habe ich einen Kreis den ich zum Teilen von Nachrichten verwenden kann, dessen Nachrichten aber nur ich lesen kann.</p>
<p>Nun sind alle Vorbereitungen getroffen um Logbuch Einträge erstellen zu können die entweder nur von mir oder auch von bestimmten Kreisen gelesen werden können.</p>
<p>Aber was wäre ein Logbuch wenn man die Einträge eines Logbuchs nicht auch Chronologisch anzeigen lassen könnte, und nur meine Logbuch Einträge.</p>
<p>Dazu kommt nun die Google+ Suche ins Spiel.</p>
<p>In das Suchfeld gebe ich das Logbuch Kürzel zusammen mit meinem G+ Profilnamen bzw. meinem Nachnamen ein, also für mein Logbuch sieht das so aus:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb7.png" width="392" height="40"></a></p>
<p>Nachdem man die Suche das erste mal ausgeführt hat, bietet G+ einem an, dass man diese Suche speichern kann.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb8.png" width="579" height="70"></a></p>
<p>Und das machen wir auch.</p>
<p>Wenn man eine Suche speichert wird einem zum Wideraufruf der Suche ein Link auf der linken Seite unterhalb der Stream Auswahl angezeigt, diesen kann man dann jederzeit verwenden um sich sein Logbuch anzeigen zu lassen.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image11.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb9.png" width="125" height="244"></a></p>
<p>So und nun viel Spaß mit dem G+ Logbuch</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/09/google-anwendungsfall-logbuch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Der wei&#223;e Fleck muss weg &#8211; .NET Stammtisch Rheinhessen</title>
		<link>http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/</link>
		<comments>http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 11:24:13 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[.NET Stammtisch Rheinhessen]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[WIN8]]></category>
		<category><![CDATA[XING]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/</guid>
		<description><![CDATA[Wenn wir uns anschauen welche Usergroups und Stammtische es in Rheinhessen für Entwickler und Berater rund um das Thema .NET Entwicklung von Windows und Web Anwendungen gibt, sieht man nur eines; Einen weißen Fleck !! Und dieser Fleck muss weg &#8230; <a href="http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wenn wir uns <a href="http://www.microsoft.com/germany/community/kompass/default.mspx" target="_blank">anschauen</a> welche Usergroups und Stammtische es in Rheinhessen für Entwickler und Berater rund um das Thema .NET Entwicklung von Windows und Web Anwendungen gibt, sieht man nur eines;</p>
<p><strong>Einen weißen Fleck !!</strong></p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb3.png" width="218" height="244"></a></p>
<p><strong>Und dieser Fleck muss weg !!</strong>&nbsp;</p>
<p>Genau das haben wir (wir, das sind <a href="http://www.xing.com/profile/Sascha_Dittmann" target="_blank">Sascha Dittmann</a> und <a href="http://www.xing.com/profile/HansPeter_Schelian" target="_blank">Ich</a>) uns auch gedacht und haben kurzerhand den <a href="http://www.xing.com/net/dotnetrheinhessen" target="_blank">.NET Stammtisch Rheinhessen</a> gegründet.</p>
<p><a href="http://www.xing.com/net/dotnetrheinhessen" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="UGRheinhessen Top-Logo" border="0" alt="UGRheinhessen Top-Logo" src="http://blog.schelian.de/wp-content/uploads/2011/09/UGRheinhessen-Top-Logo.jpg" width="644" height="52"></a></p>
<p>Und für wen ist dieser Stammtisch:</p>
<p>Alle, die Interesse an Gesprächen und Erfahrungsaustausch über Themen rund um die Entwicklung im Windows Umfeld (WPF, WCF, REST, WinForms, NT-Services, MVC, Web Apps, HTML5, JavaScript, METRO Apps, Azure, Cloud Computing und alles andere was man sich sonst noch in der Entwicklung vorstellen oder auch nicht vorstellen kann) haben, aus dem Raum Rheinhessen und Umgebung kommen, sind herzlich eingeladen sich unserem Stammtisch anzuschließen.</p>
<p>Wer einen XING Account hat, kann direkt der <a href="http://www.xing.com/net/dotnetrheinhessen" target="_blank">XING Gruppe</a> beitreten.</p>
<p>Aber natürlich ist es nicht zwingend erforderlich einen XING Account zu besitzen um am Stammtisch teilnehmen zu können.</p>
<p>Anmeldungen zum Stammtisch können auch per Mail an:</p>
<blockquote><p>info at dotnet-stammtisch-rheinhessen.de</p>
</blockquote>
<p>gerichtet werden.</p>
<p>Das erste Treffen, sozusagen, das <strong><em>“Come Together”</em></strong> findet am <strong><em>19.10.2011 in Alzey</em></strong> statt. Den genauen Ort des Stammtisches werden wir noch rechtzeitig bekannt geben.</p>
<p>Neben dem reinen “Come Together” werden wir, soweit es von Interesse ist über die ersten Erfahrungen mit Windows 8 (sowie das für und wieder der Metro Oberfläche), Visual Studio 11, dem .NET Framework 4.5 also auch über die neuen Sprachfeature von C#5 sprechen. </p>
<p>Aber wie das bei einem Stammtisch ist, da ist nichts in Fels gehauen und wenn an dem Abend andere Themen mit wesentlich mehr Aktualität und Interesse von Seiten der Teilnehmen besteht, dann wird eben darüber gesprochen.</p>
<p>Also auf geht’s zum ersten Treffen des .NET Stammtisch Rheinhessen nach Alzey.</p>
<p>Ich freue mich auf euer Kommen. </p>
<p>Und damit wäre auch der Weiße Fleck weg !!</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.schelian.de/wp-content/uploads/2011/09/image_thumb4.png" width="218" height="244"></a></p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/09/der-weie-fleck-muss-weg-net-stammtisch-rheinhessen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows 8 &#8211; Irrweg oder einfach ein Irrer Weg</title>
		<link>http://blog.schelian.de/2011/09/windows-8-irrweg-oder-einfach-ein-irrer-weg/</link>
		<comments>http://blog.schelian.de/2011/09/windows-8-irrweg-oder-einfach-ein-irrer-weg/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 10:20:41 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Betriebssysteme]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C# 5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WIN8]]></category>
		<category><![CDATA[WinRT]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/2011/09/windows-8-irrweg-oder-einfach-ein-irrer-weg/</guid>
		<description><![CDATA[Es ist nun eine Woche her (13.09.2011), das Microsoft in Anaheim / Florida auf der “BUILD Windows” das Geheimnis um Windows 8 gelüftet hat. Nun liegen die Fakten um Windows 8 auf dem Tisch! Doch stehen die Fakten mit der &#8230; <a href="http://blog.schelian.de/2011/09/windows-8-irrweg-oder-einfach-ein-irrer-weg/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es ist nun eine Woche her (<a href="http://channel9.msdn.com/events/BUILD/BUILD2011/KEY-0001" target="_blank">13.09.2011</a>), das Microsoft in Anaheim / Florida auf der “BUILD <sub>Windows</sub>” das Geheimnis um Windows 8 gelüftet hat.</p>
<p>Nun liegen die Fakten um Windows 8 auf dem Tisch!</p>
<ul>
<li>Doch stehen die Fakten mit der Präsentation von Windows 8 wirklich fest?</li>
<li>Was wurde uns eigentlich als Windows 8 verkauft?</li>
<li>Worüber freuen wir uns?</li>
<li>Worüber ist die eine oder andere Gruppe betrübt?</li>
</ul>
<p>Um diese Fragen und die <span style="text-decoration: line-through;">meine</span> Wahrheit um Windows 8 zu klären,  müssen wir aber auch die jüngere Vergangenheit vor der Öffentlichen Präsentation von Windows mit einbeziehen.</p>
<p>Denn die eigentliche Geschichte um Windows 8 beginnt bereits einige Wochen vor der BUILD in Anaheim.</p>
<p>Was ist in den letzten Wochen wirklich geschehen:</p>
<p>In den Tagen und Wochen vor der BUILD wurde viel Spekuliert.<br />
Teilweise wurden echte Schreckensszenarien vermittelt.<br />
Leider wurde auch von, sonst sachlich und nüchtern berichtenden Kollegen, mit Meldungen wie den folgenden Schlagzeilen gemacht:</p>
<ul>
<li>HMTL 5 und JavaScript werden zur Standard Sprache zur Entwicklung von Desktop Anwendungen</li>
<li>Silverlight wird als Technologie nicht mehr unterstützt</li>
<li>Die Zukunft um WPF ist ungewiss</li>
<li>.NET wird es nicht mehr geben oder aussterben und damit wird auch C# und VB verschwinden</li>
<li>HTML 5 und vor allem JS sind die “must be” Sprachen für jeden Entwickler, sonst ist für Ihn/Sie der Zug abgefahren.</li>
<li>…. und ganz vieles Mehr.</li>
</ul>
<p>Unabhängig davon, ob und wie viel davon tatsächlich irgendeiner Wahrheit nahe kommt, haben all diese Überlegungen und Gerüchte darauf basiert, dass davon ausgegangen wurde,  dass mit Windows 8 direkt von einem Nachfolger des Windows 7 wie wir es Heute kennen, einem reinen Desktopbetriebssystem,  gesprochen wird.</p>
<p>Doch was haben wir auf der BUILD wirklich vorgestellt bekommen?</p>
<ul>
<li>Eine zu groß geratene Ausgabe von Windows Phone WP7</li>
<li>Ein neues Tablet Betriebssystem</li>
<li>Der Nachfolger des Windows 7 Desktop Betriebssystems</li>
</ul>
<blockquote><p><strong>Ein wenig von allem!</strong></p></blockquote>
<p>Präsentiert hat uns Microsoft natürlich “das Neue”, das was man direkt sieht, das was vollkommen anders ist wie bisher, das was dem aktuellen Trend entspricht, das was Hype verspricht, das was ….</p>
<p>Das was präsentiert wurde, war die <strong><em>“Metro Style Oberfläche”</em></strong></p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/win8-metro.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="win8 - metro" src="http://blog.schelian.de/wp-content/uploads/2011/09/win8-metro_thumb.jpg" alt="win8 - metro" width="244" height="139" border="0" /></a></p>
<p>Und dieses neue, ist doch genau das, was uns entweder empört oder begeistert hat.</p>
<p>Je nachdem welcher Zielgruppe man angehört, findet man diese Neuerung als <strong>“vollkommen abgefahren”</strong>, <strong>“Super Innovativ”</strong>,  <strong>“vollkommen daneben” </strong>oder als <strong>“Weltuntergang”</strong>.</p>
<p>Und ich glaube es gibt mehr Zielgruppen als wir uns das momentan überhaupt vorstellen können.</p>
<p>Allerdings sind die Zielgruppen, die sich bisher mit Windows 8 beschäftigt haben und sich öffentlich darüber geäußert haben, doch eher die aus dem Umfeld derer, welche sich mit der Entwicklung von Software beschäftigen, und für all diese, oder besser gesagt für die meisten von diesen, bedeutet Neuerung und Veränderung natürlich erst einmal die Angst vor Verlust.</p>
<p>Angst vor Verlust, Angst davor dass Wissen das man sich Jahrelang angeeignet hat, nicht weiter verwenden zu können.</p>
<p>Und wenn ich mir das anschaue, was Microsoft uns auf der BUILD als WIN 8 präsentiert hat, dann habe ich als Entwickler von Business Anwendungen (Egal ob als Web Anwendung, Desktopanwendung oder im Backend als Server Anwendung) im ersten Moment auch diese Angst (ganz kurz) verspürt.</p>
<p>Doch als analytischer Mensch lässt man sich natürlich nicht von einem Schauer der einem über den Rücken läuft lähmen und man beginnt die Sache, in diesem Fall Windows 8, mit dem notwendigen Abstand und der notwendigen Sorgfalt von den verschiedensten Seiten zu betrachten.</p>
<p>Ich habe die letzte Woche genutzt um mir Windows 8 genauer anzuschauen und mir Gedanken über die Auswirkungen von Windows 8 auf meinen Job als Entwickler zu machen.</p>
<p>Nachfolgend hierzu meine Gedanken und Thesen.</p>
<p><strong><span style="text-decoration: underline;"><em>Metro Style Apps</em></span></strong></p>
<p>Metro Style Apps sind <strong>nur</strong> auf Geräten <strong>mit Touch Bedienung</strong> sinnvoll einzusetzen.</p>
<p>Microsoft hat als Vision, dass es in Zukunft nur noch Geräte mit Touch Interface geben wird, und daher auf jedem Gerät Metro Style Apps sinnvoll eingesetzt werden können. Dem möchte ich auch nicht wiedersprechen, doch denke ich nicht, dass wir diese Zukunft noch dieses Jahrzehnt erleben werden.</p>
<p>Metro Style Apps werden für mich, meinen Job und meine Kunden mit oder ohne Windows 8 (damit meine ich die nächsten 2 – 3 Jahre) noch nicht wirklich eine entscheidende Rolle spielen.</p>
<p>Metro Style Apps werden weder Heute noch Morgen (mal schauen was übermorgen geschieht und ob dann noch jemand von Metro Style Apps spricht) als Ersatz für Rich Client Desktop Anwendungen im Büro und Produktionsstätten geeignet sein.</p>
<p>Wenn solche Art von Apps überhaupt für Rich Client Anwendungen eingesetzt werden sollten, wird das sicherlich noch bis Ende des Jahrzehnts und darüber hinaus dauern.</p>
<p>Um es nicht später zu vergessen:</p>
<p>Einen Wunsch an Microsoft bezüglich Windows 8 und der Metro Style Oberfläche hätte ich aber schon:</p>
<blockquote><p><strong>Hallo Microsoft, lasst bei der Installation von Windows 8 per Option entscheiden, welchen Desktop man als Standard verwenden möchte, den Metro Style oder den Standard Desktop  (WIN 7 Like)</strong></p></blockquote>
<p>Und eines noch Microsoft, solltet Ihr auf die Idee kommen, die in der Windows 8 Preview vorhandenen Möglichkeit, durch Änderung eines Registry Eintrags ein “Windows 7 Like” Startmenü zu bekommen, aus dem Final Release von WIN 8 gänzlich zu entfernen, sage ich euch mit WIN 8 ein zweites VISTA voraus (auf  jeden Fall auf Desktop PCs)</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/09/win8-api.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="win8 - api" src="http://blog.schelian.de/wp-content/uploads/2011/09/win8-api_thumb.png" alt="win8 - api" width="244" height="139" border="0" /></a></p>
<p><span style="text-decoration: underline;"><strong>WinRT</strong></span></p>
<p>Mit der WinRT stellt Microsoft den zentralen Baustein für die neue Metro Style Oberfläche zur Verfügung.</p>
<p>WinRT wird <strong>nicht</strong> als zusätzlicher Framework sondern als <strong>integraler Bestandteil</strong> des Betriebssystems betrachtet.</p>
<p>Ob WinRT wirklich eine Lösung oder mehr ein Problem ist, wird sich im Laufe der Zeit zeigen.<br />
Ich finde es, Stand Heute sehr gewagt mit WinRT auf eine Technik wie COM (auch wenn es ein objektorientierter modernerer Ansatz ist) zurückzugreifen, die man vor fast 10 Jahren, aus guten Gründen, durch die .NET Technologie abgelöst hatte.<br />
Einzig die Tatsache dass es in WinRT außer den WinRT eigenen DLLs keine gemeinsamen Bibliotheken gibt lässt mich hoffen, dass es kein zweite DLL Hölle geben wird.</p>
<p>Wer in Manage Code C# oder VB Metro Style Apps schreiben will muss sich im klaren sein, dass man dabei starken Beschränkungen unterliegt, da die WinRT nur eine Teilmenge der .NET Klassen zur Verfügung stellt.</p>
<p>Dinge wie direkte Dateizugriffe, Zugriffe aufs Dateisystem oder auch zugriffe auf eine Datenbank wie SQL oder andere sind nicht direkt möglich.</p>
<p>Um Beispielsweise auf eine Datenbank zugreifen zu können muss man sich zuerst einen Web Service erstellen, den man dann über die WinRT aufrufen kann.</p>
<p>Damit die Metro Style Apps immer den Eindruck hervorrufen dass Sie auf Benutzereingaben sofort reagieren, wurde in der WinRT darauf geachtet, dass alle Aufrufe die im allgemeinen länger als 50 ms dauern Asynchron aufgerufen werden.</p>
<p><strong><span style="text-decoration: underline;">.NET (C# 5 und VB)</span></strong></p>
<p>.NET ist also <span style="text-decoration: line-through;">noch</span> nicht tot.</p>
<p>Neben Metro Style und dem damit zusammenhängenden WinRT wurde auch am .NET Framework gearbeitet.</p>
<p>Das <a href="http://www.it-visions.de/lex/6250.aspx" target="_blank">.NET Framework 4.5</a> wird zusammen mit Windows 8 ausgeliefert (gibt es aber auch für Windows 7).</p>
<p>Zusammen mit dem Framework gehen auch die Managed Code Sprachen C# und VB in die nächste Versionsrunde.</p>
<ul>
<li>C# 5.0</li>
<li>Visual Basic 11.0</li>
</ul>
<p>Die umfangreichste Erweiterung der Sprachen besteht wohl in der Implementierung der await und async Schlüsselwörter und der damit einhergehenden Vereinfachung der Asynchronen Programmierung.</p>
<p>Die Zukunft von .NET dürfte wohl für die nächsten Jahre zumindest für “echte” Desktop Anwendungen” sowie natürlich für Web und Backend Anwendungen, gesichert sein.</p>
<p><strong><span style="text-decoration: underline;">HMTL 5 und JavaScript</span></strong></p>
<p>Weder HMTL 5 noch JavaScript, und auch nicht die Kombination der beiden Sprachen, sind eine Erfindung von Windows 8.</p>
<p>Jedoch wird diese Kombination sicherlich nicht nur für die Web Entwicklung immer interessanter und wer sich bis Heute nicht damit beschäftigt hat, ist sicherlich gut beraten sich mit diesem Thema in näherer Zukunft auch ein wenig auseinanderzusetzen.</p>
<p>Ganz sicher dann, wenn man nicht nur Backend Programmierung betreibt.</p>
<p><strong><span style="text-decoration: underline;">Silverlight</span></strong></p>
<p>Meiner ganz persönlichen Meinung nach, sieht die Zukunft von Silverlight nicht so rosig aus. Ich denke dass Silverlight mittelfristig zu den Klassischen Verlierern zählen wird und weder weiter entwickelt noch auf ewig weiter unterstützt werden wird.</p>
<p>Rich Web Applikationen können mit anderen Technologien wie HTML 5 zusammen mit JS auf der Client Seite erstellt und zusätzlich noch durch MVC oder ähnliche Technologien (evtl. auch mal durch node.JS) Serverseitig unterstützt werden.</p>
<p>Wenn man sieht, dass der IE10 in der Metro Style Variante keine Add Ins und somit kein Silverlight und kein Flash mehr unterstützt, muss man nur 1 und 1 addieren um sich über die Zukunft on SL seine Gedanken machen zu können.</p>
<blockquote><p>Mein Tipp: Wenn du merkst, dass du ein totes Pferd reitest, steig ab!</p></blockquote>
<p><strong><span style="text-decoration: underline;">Resümee und Weisheiten</span></strong></p>
<p>Die Suppe wird nie so heiß gegessen wie Sie gekocht wird.<br />
.NET lebt auch nach Windows 8 weiter, wir müssen nicht alle sofort nur noch HTML 5 und JS Programme schreiben</p>
<p>Der Markt und die Akzeptanz regelt im allgemeinen ganz viel alleine (Siehe VISTA), also wenn Windows 8 letztendlich wirklich nur per Touch ordentlich zu bedienen sein wird, dann wird es vermutlich ein Tablet OS aber kein Nachfolger für Windows 7</p>
<p>Warten wir mal ab wie Windows 8 in der Final Release dann wirklich auf den Markt kommt.</p>
<p>Eines habe ich übrigens vergessen, und das ist der bisher positivste Aspekt des neuen Windows:</p>
<blockquote><p>Windows 8 startet um ein vielfaches schneller als jede andere Windows Version die es bisher gab.</p></blockquote>
<p>Abschließen möchte ich, auch wenn dies kein Bericht über ein Fußballspiel war, mit den Worten eines großen Deutschen Fußballers:</p>
<blockquote><p>Nach dem Spiel ist vor dem Spiel!</p></blockquote>
<p>Freuen wir uns schon mal auf die Gerüchte und Aufregung um Windows 9.</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/09/windows-8-irrweg-oder-einfach-ein-irrer-weg/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>BlogEngine Update 2.5.0.X auf 2.5.011 &#8211; Datenbank Update notwendig</title>
		<link>http://blog.schelian.de/2011/09/blogengine-update-2-5-0-x-auf-2-5-011-datenbank-update-notwendig/</link>
		<comments>http://blog.schelian.de/2011/09/blogengine-update-2-5-0-x-auf-2-5-011-datenbank-update-notwendig/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 07:24:32 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[BlogEngine.NET]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1701</guid>
		<description><![CDATA[Heute Morgen wollte ich &#8220;schnell&#8221; meinen BlogEngine betriebenen Blog auf http://blog.schelian.com mit der neuen Version 2.5.0.11 aktualisieren. Diese Version ist die erste, welche eine komplette Gallery Integration (Installation, Update und löschen) von Paketen enthält. Da ich einige persönliche Änderungen der &#8230; <a href="http://blog.schelian.de/2011/09/blogengine-update-2-5-0-x-auf-2-5-011-datenbank-update-notwendig/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute Morgen wollte ich &#8220;schnell&#8221; meinen BlogEngine betriebenen Blog auf <a href="http://blog.schelian.com" target="_blank">http://blog.schelian.com</a> mit der neuen Version 2.5.0.11 aktualisieren.</p>
<p>Diese Version ist die erste, welche eine komplette Gallery Integration (Installation, Update und löschen) von Paketen enthält.</p>
<p><a href="http://www.dotnetblogengine.de/" target="_blank"><img class="alignleft size-full wp-image-1508" title="blogengine-logo-de" src="http://blog.schelian.de/wp-content/uploads/2011/06/blogengine-logo-de.gif" alt="" width="266" height="120" /></a>Da ich einige persönliche Änderungen der BlogEngine vorgenommen habe, musste ich zuerst eine Verschmelzung (Merge) der Original Version 2.5.0.11 mit meiner lokale geänderten Version, die aber schon auf dem Code Version 2.5.0.10 basiert, vornehmen.</p>
<p>Der Merge konnte ohne manuelle Nacharbeiten einfach so durchgeführt werden.</p>
<p>Nach der Aktualisierung meins lokalen Quellcodes habe ich in Visual Studio 2010 einen kurzen Testlauf durchgeführt (mit XML Provider) und konnte keinen Fehler feststellen.</p>
<p>Nun habe ich mein NANT Skript aufgerufen, was mir aus der lokalen Version ein Package zur Aktualisierung meines Servers erstellt.</p>
<p>Das dabei erstellt ZIP File mit der Version 2.5.0.11 (in meiner angepassten Version) dann auf den Server hochgeladen und im Root Verzeichnis der BlogEngine entpackt (natürlich nicht ohne vorher eine Datensicherung durchgeführt zu haben).</p>
<p>Nun den Blog aufgerufen und&#8230;..</p>
<p>&#8230;. auf den ersten Blick war alles in Ordnung, nur auf den zweiten Blick leider nicht.</p>
<p>Beim Aufruf der Seite Plugins gab es eine Fehlermeldung die sich in weitestem Sinne um folgenden Aufruf gedreht hat.</p>
<blockquote><p>BlogEngine.Core.Packaging.PackageRepository.GetPackage</p></blockquote>
<p>Eine kurze Recherche hat das gezeigt, dass das Problem dadurch entsteht, dass diese Methode versucht auf eine Tabelle im SQL Server zuzugreifen, die es &#8220;noch&#8221; gar nicht gibt.</p>
<p>Da auf der <a href="http://blogengine.codeplex.com/SourceControl/list/changesets" target="_blank">Codeplex</a> Seite keine Hinweis auf ein erweitertes Datenbankschema zu finden war, hatte ich auch nicht nach einem Skript zur Aktualisierung der Datenbank gesucht.</p>
<p>Es gibt aber tatsächlich ein Script, allerdings mit dem merkwürdigen Zukunftsweisenden Namen &#8220;MSSQLUpgradeFrom<strong>2.5to2.6</strong>&#8220;, also einer Aktualisierung die erst beim Update der BE von 2.5 auf 2.6 notwendig sein soll.</p>
<p>Aber gut, es ist nun mal so, dass folgendes Script schon bei einem Update einer Version 2.5.0.X auf 2.5.0.11 notwendig ist:</p>
<pre class="brush: sql; title: ; notranslate">
SET CONCAT_NULL_YIELDS_NULL, ANSI_NULLS, ANSI_PADDING, QUOTED_IDENTIFIER, ANSI_WARNINGS, ARITHABORT ON
SET NUMERIC_ROUNDABORT, IMPLICIT_TRANSACTIONS, XACT_ABORT OFF
GO

--
-- Create table &quot;dbo.be_Packages&quot;
--
CREATE TABLE dbo.be_Packages (
  [PackageId] nvarchar(128) NOT NULL,
  [Version] nvarchar(128) NOT NULL
)
GO

--
-- Create table &quot;dbo.be_PackageFiles&quot;
--
CREATE TABLE dbo.be_PackageFiles (
  [PackageId] nvarchar(128) NOT NULL,
  [FileOrder] int NOT NULL,
  [FilePath] nvarchar(255) NOT NULL,
  [IsDirectory] bit NOT NULL
)
GO
</pre>
<p>Nachdem ich diese Skript auf der Datenbank ausgeführt habe, war der Fehler behoben und das Update auf Version 2.5.0.11 erfolgreich abegschlossen.</p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/09/blogengine-update-2-5-0-x-auf-2-5-011-datenbank-update-notwendig/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Office365 &#8211; Primäre Mail Adresse ändern (für den Administrator Account) &#8211; Powershell</title>
		<link>http://blog.schelian.de/2011/08/office365-primare-mail-adresse-andern-fur-den-administrator-account-powershell/</link>
		<comments>http://blog.schelian.de/2011/08/office365-primare-mail-adresse-andern-fur-den-administrator-account-powershell/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 10:47:22 +0000</pubDate>
		<dc:creator>Hans-Peter Schelian</dc:creator>
				<category><![CDATA[Tips und Tricks]]></category>
		<category><![CDATA[Wissenswert]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Office365]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://blog.schelian.de/?p=1685</guid>
		<description><![CDATA[Nachdem ich im ersten Teil über die Einrichtung eigener Domains für die Nutzung unter Office365,  und im zweiten Teil über Einrichtung von E-Mail Adressen von eigenen Domains,  berichtet habe, geht es nun darum, die primäre Absenderadresse des Exchange Postfachs ändern zu können. &#8230; <a href="http://blog.schelian.de/2011/08/office365-primare-mail-adresse-andern-fur-den-administrator-account-powershell/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich im ersten Teil über die <a href="http://blog.schelian.de/2011/08/office365-eigene-domain-nutzen-ohne-die-microsoft-dns-server-zu-verwenden/" target="_blank">Einrichtung eigener Domains für die Nutzung unter Office365</a>,  und im zweiten Teil über <a title="Permalink zu Office365 – Einrichtung Mail Adressen bei Verwendung eigener Domain" href="http://blog.schelian.de/2011/08/office365-einrichtung-mail-adressen-bei-verwendung-eigener-domain/" rel="bookmark">Einrichtung von E-Mail Adressen von eigenen Domains</a>,  berichtet habe, geht es nun darum, die primäre Absenderadresse des <a href="http://blog.schelian.de/wp-content/uploads/2011/08/Office365.jpg"><br />
</a>Exchange Postfachs ändern zu können.</p>
<p><img class="alignleft size-full wp-image-1656" style="border-style: initial; border-color: initial;" title="Office365" src="http://blog.schelian.de/wp-content/uploads/2011/08/Office365.jpg" alt="" width="151" height="96" /></p>
<p>Und zwar unter den Umständen, dass man nur einen Office365 Account hat und für diesen natürlich auch gleichzeitig der Administrator dieses Accounts ist.</p>
<p>Mit den Bordmitteln von Office365 und der Administrationswebseite ist dies nämlich nicht möglich.</p>
<p>Da sich der Exchange Server aber durch die <a href="http://de.wikipedia.org/wiki/Windows_PowerShell" target="_blank">Windows Powershell</a> steuern lässt, können wir über diesen Weg all die Dinge tun, die uns die Webseite zur Administration nicht im Dialog zur Verfügung stellt.</p>
<p>Ich versuche diese Beschreibung so zu gestalten (Schritt für Schritt). dass auch Leser, die sich mit der Powershell nicht auskennen, die Einstellungen vornehmen können. Ich hoffe das gelingt mir.</p>
<p>Die Windows Powershell ruft man wie folgt auf:</p>
<p>Start Menü &#8211;&gt; Programme&#8211;&gt; Zubehör &#8211;&gt; Windows Powershell &#8211;&gt;</p>
<p>Dort dann mit der rechten Maus auf Powershell klicken und &#8220;Als Administrator ausführen&#8221;</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-1.png"><img class="alignnone size-medium wp-image-1686" title="20110830 - Powershell-1" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-1-201x300.png" alt="" width="201" height="300" /></a></p>
<p>Als erstes müssen wir prüfen, ob die Berechtigungen für die Powershell so eingerichtet sind, dass sie ausreichen um eine Remote Verbindung zum Office365 (Remote Exchange Server) herstellen zu können. Im Standard dürften die Berechtigungen nicht ausreichen und wir müssen diese Berechtigung dann entsprechend anpassen.</p>
<p>Aber eins nach dem anderen.</p>
<p><em><strong>Prüfen der aktuellen Powershell Berechtigung</strong>:</em></p>
<p>In die Powershell geben wir den nachfolgenden Befehl in die Kommandozeile ein und betätigen dann die Eingabetaste.</p>
<pre class="brush: plain; title: ; notranslate">
Get-ExecutionPolicy
</pre>
<p>Unbedingt darauf achten, hier ist <strong>kein Leerzeichen</strong> im Befehl enthalten, es handelt sich im ein Wort.</p>
<p>Wenn vorher noch keine Änderungen an den Berechtigungen der Powershell vorgenommen wurden, sollte folgende Systemantwort zurückgegeben werden &#8220;Restricted&#8221;:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-2.png"><img class="alignnone size-full wp-image-1689" title="20110830 - Powershell-2" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-2.png" alt="" width="585" height="164" /></a></p>
<p>Wenn anstelle &#8220;Restricted&#8221;, &#8220;RemoteSigned&#8221; oder &#8220;Unrestricted&#8221; zurückgegeben wird, sind die Berechtigungen bereits ausreichend und man kann den nächsten Schritt überspringen.</p>
<p><em><strong>Setzen der Powershell Berechtigung</strong></em> (nur wenn notwendig)</p>
<p>Der nachfolgende Befehl wird in die Powershell eingegeben und mit der Eingabetaste bestätigt.</p>
<pre class="brush: plain; title: ; notranslate">
Set-ExecutionPolicy RemoteSigned -Force
</pre>
<p>Eigentlich sollte der Befehl ohne Probleme ausgeführt werden, und es sollte keine Fehlermeldung ausgegeben werden. Zur Sicherheit prüfen wir das noch einmal mit dem Befehl: &#8220;<strong>Get-ExecutionPolicy</strong>&#8221;</p>
<p>Nun sollte der Rückgabewert wie folgt aussehen:</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-3.png"><img class="alignnone size-full wp-image-1690" title="20110830 - Powershell-3" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-3.png" alt="" width="642" height="160" /></a></p>
<p><em><strong>Powershell Remote an Office356 anmelden</strong></em></p>
<p>Nachdem wir nun die Berechtigungen geprüft bzw. gesetzt haben, müssen wir nun die Powershell Remote an Office365 anmelden.</p>
<p>Hierzu geben wir den nachfolgenden Befehl in die Powershell ein und bestätigen wie immer mit der Eingabetaste:</p>
<pre class="brush: plain; title: ; notranslate">
$LiveCred = Get-Credential
</pre>
<p>Nun sollte sich ein Anmeldebildschirm wie nachfolgend öffnen.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-4.png"><img class="alignnone size-full wp-image-1691" title="20110830 - Powershell-4" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-4.png" alt="" width="391" height="327" /></a></p>
<p>In den Dialog muss man nun die Anmeldeinformationen für seinen Office365 Account eingeben und mit OK bestätigen.</p>
<p><em><strong>Powershell Session mit Office365 (Exchange Server) herstellen</strong></em></p>
<p>Als nächstes müssen wir eine Powershell Session mit dem Exchange Server von Office365 herstellen. Hierzu muss man den nachfolgenden Befehl in die Powershell eingeben:</p>
<pre class="brush: plain; title: ; notranslate">
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
</pre>
<p>Wie immer mit der Eingabetaste bestätigen. Dann sollte eine Meldung wie die nachfolgende in der Powershell zurückgegeben werden.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-5.png"><img class="alignnone size-large wp-image-1692" title="20110830 - Powershell-5" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-5-1024x168.png" alt="" width="640" height="105" /></a></p>
<p><em><strong>Powershell Commands importieren</strong></em> (Damit die Powershell Exchangich sprechen kann)</p>
<p>Um in der Powershell die Exchange Kommandos verwenden zu können ist es notwendig die Befehle zu importieren.</p>
<p>Das geht mit der Eingabe des nachfolgenden Befehls in die Powershell:</p>
<pre class="brush: plain; title: ; notranslate">
Import-PSSession $Session –AllowClobber
</pre>
<p>Nachdem man diesen Befehl wie immer mit der Eingabetaste bestätigt hat, sollte eine, der folgenden Abbildung entsprechenden Rückmeldung, ausgegeben werden.</p>
<p><a href="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-6.png"><img class="alignnone size-large wp-image-1693" title="20110830 - Powershell-6" src="http://blog.schelian.de/wp-content/uploads/2011/08/20110830-Powershell-6-1024x186.png" alt="" width="640" height="116" /></a></p>
<p>Damit sind nun die Vorbereitungen abgeschlossen und wir können endlich an die eigentliche Aufgabe gehen:</p>
<p>Wie war die noch mal ? <img src='http://blog.schelian.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ach ja richtig wir wollten die Primäre E-Mail Adresse des Exchange Postfachs ändern.</p>
<p><em><strong>Ändern der primären E-Mail Adresse</strong></em></p>
<p>Um die Primäre E-Mail Adresse zu ändern, müssen wir folgenden Befehl in die Powershell eingeben:</p>
<pre class="brush: plain; title: ; notranslate">
Set-Mailbox [Office365Benutzernamen] -EmailAddresses SMTP:[myPrimary@mail.de], [meineAktuelleMail@onmicrosoft.com]
</pre>
<p><span class="Apple-style-span" style="color: #444444; font-family: Georgia, 'Bitstream Charter', serif; line-height: 24px; white-space: normal; font-size: small;"><strong>Hier die Syntax dieses Befehls:</strong></span></p>
<ul>
<li><strong>[Office365Benutzernamen]</strong> steht hier als Platzhalter für den Office365 Benutzeraccount (der wird und kann nicht geändert werden, ist also der Benutzername)</li>
<li><strong>[myPrimary@mail.de]</strong> steht als Platzhalter für die E-Mail Adresse die nun die primäre E-Mail Adresse sein soll.</li>
<li><strong>[meineAktuelleMail@onmicrosoft.com]</strong> steht als Platzhalter für die aktuelle primäre E-Mail Adresse (bei der ersten Änderung ist das gleich mit dem Benutzernamen)</li>
</ul>
<p>Und hier auch noch ein Beispiel:</p>
<pre class="brush: plain; title: ; notranslate">
Set-Mailbox max@musterman.onmicrosoft.com -EmailAddresses SMTP:max@musterman.de, max@musterman.onmicrosoft.com
</pre>
<p><em><strong>Session schließen</strong></em></p>
<p>Und ganz zum Ende müssen wir dafür sorgen, dass die Powershell Session wieder geschlossen wird.</p>
<p>Dies geht mit der Eingabe des folgenden Befehls in die Powershell:</p>
<pre class="brush: plain; title: ; notranslate">
Remove-PSSession $Session
</pre>
<p>Das sollte unbedingt gemacht werden, da es sonst bei mehrfachem herstellen einer Session und nicht korrektem Schließen dazu kommen kann, dass keine neue Session mehr geöffnet werden kann, Max Session überschritten.</p>
<p>(Ich glaube der Wert liegt zwischen 3 und max 5 Session)</p>
<p>So und nun viel Spaß mit Office365 und der eigenen E-Mail als primären E-Mail Adresse.</p>
<p>Welche Mail Adresse die Primäre ist, kann man übrigens in den E-Mail Optionen des Exchange Servers kontrollieren.</p>
<p>Wie das geht kann man in dem bereits oben erwähnte Beitrag nachlesen</p>
<p><a href="http://blog.schelian.de/2011/08/office365-einrichtung-mail-adressen-bei-verwendung-eigener-domain/">http://blog.schelian.de/2011/08/office365-einrichtung-mail-adressen-bei-verwendung-eigener-domain/</a></p>
<div align="right"><a href="http://twitter.com/SchelianHP" target="_blank"><img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.schelian.de/2011/08/office365-primare-mail-adresse-andern-fur-den-administrator-account-powershell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

