F*ck you, Microsoft

Ich würde gerne ein Visual-Studio-Projekt aus dem letzten Jahr öffnen. Genauer gesagt: Eine Windows Phone 8 App. Also zum Windows Phone Dev Center, das mich empfängt mit den Worten

The Windows Phone development tools include everything you need to develop apps and games for Windows Phone.

Man könnte verwirrt sein durch die lage Liste an Tools:

  • Windows Phone 8.1 Development Tools RC
  • Windows Phone 8.1 Emulators
  • SDK 8.0
  • Windows Phone SDK 8.0 Update 3 Emulators
  • SDK 8.0 Update for Windows Phone 8.0.10322
  • SDK Update for Windows Phone 7.8
  • SDK 7.1
  • SDK 7.1.1 Update
  • “Other downloads” (oh-oh…)

, aber die werden das schon machen. “Windows Phone development tools include everything you need”. Ich lade also die angepriesenen Development Tools, starte mein Windows 8, öffne das geladene Setup, und lese:

This version of Visual Studio requires a computer with a newer version of Windows.

Seriöslich, Microsoft!? Ihr schafft es nicht mal, von Windows 8 zu Windows 8.1 abwärtskompatibel zu bleiben!?! Also lade ich stattdessen das im verlinkten Post empfohlene “Visual Studio Express 2013 für Windows Desktop“. Mir leuchtet zwar nicht ein, was jetzt der Unterschied zu “Development Tools” sein soll, aber das ist ja auch nicht mein Fachgebiet. Und “Visual Studio Express” klingt vertraut, das hatte ich IMHO damals auch. Ich installiere geschlagene 5.x GB, öffne mein Projekt – doch was muss ich lesen?

Mein Projekt ist nicht kompatibel mit dieser Version von Visual Studio. Offenbar ist die nur für “Store Applications for Windows 8.1”. Wieder mal rächt sich, dass “Windows (Store) Apps” und “Windows Phone (Store?) Apps” ähnlich aussehen, aber was anderes sind. Bei einer Road Show wurde uns mal gesagt, dass es codetechnisch komplett unterschiedlichen Abteilungen entwickelte Packages von sind – die so ähnlich heißen und ähnliche Methoden bieten, aber eben nur so ähnlich. Warum sollte das bei der Benamung der IDE anders sein^^ Klar, sind ja auch nur 5GB+, warum sollte man auch beides damit kompilieren können. Immerhin gut zu wissen, dass auch diese Version nicht abwärtskompatibel ist (da ich sie in obigem Post gefunden habe) m(

Ich habe diesen Mist so schnell deinstalliert, dass ich nicht mal Zeit für einen Screenshot hatte. Aber ich bleibe gutgläubig. Da muss doch noch was zu machen sein. Ich doppelklicke die Projektdatei, und bekomme den altbekannten Dialog angezeigt, der mich fragt, womit ich die Datei öffnen möchte. Ich wähle die Suche im App Store, und dort bekomme ich “Visual Studio Express 2012 für Windows Phone 8” angeboten. OK, das klingt älter (vielversprechend im Hinblick auf Kompatibilität), es ist wieder ein “Visual Studio Express”, es ist für Windows Phone 8 (was ich öffnen will), und ES KOMMT BEI DOPPELKLICK AUF MEINE PROJEKTDATEI.

Aber ihr könnt euch den Rest denken. Weitere 2.x GB später:

Fuck you, Microsoft. Wenn ihr keine Entwickler für eure Plattform wollt, dann fuck you halt. Ernsthaft.

UPDATE

Zwei Tage später: Ich gebe mich geschlagen, und update auf Windows 8.1. Dauert auch nur zwei Stunden oder so, denn der App Store startet nicht. Microsoft hat einen eigenen “Windows Store Apps TroubleShooter” für dieses Problem m( Der und (oder?) ein Neustart hilft schliesslich.

Dann installiere ich eine weitere halbe Stunde erneut die Developer Tools – was jetzt geht. Sie starten sogar. Allerdings war das “everything” in “Windows Phone development tools include everything you need” vielleicht ein wenig… gelogen: Es gibt keinen Emulator, den muss man extra installieren.

Leider geht das nicht.

Das Windows Update hat die 32 Bit Version installiert.

Fuck you, Microsoft.

Öfter mal was Neues: BlackBerry

(zu Folge 3)

Ich konnte mich, knapp ein Jahr nach dessen Launch, endlich dazu durchringen, mein Windows Phone gegen ein BlackBerry Q10 einzutauschen. Die Entscheidung ist mir gleichermaßen leicht und schwer gefallen, deshalb: Was waren die Faktoren, was die Alternativen, was der Grund?

Vorweg dazu: Das perfekte Smartphone gibt es nicht. Das eine Killerargument für oder gegen eine Plattform ebensowenig. Deshalbe verzichte ich auf eine Rangliste der “Für und Wider”s, und stelle meine Beweggründe nach Plattform sortiert vor:

Der Grund

Bisher hatte ich, wie gesagt, ein Windows Phone (WP). Genauer gesagt: Ein LG E900 mit Windows Phone 7.8. Dazu bin ich eher zufällig gekommen, ich habe es zum Launch von WP gewonnen 🙂 ‘Geschenktem Gaul schaut man nicht in’s Maul, und WP sah echt vielversprechend aus, deshalb habe ich gewechselt. Obwohl ich mit meinem vorherigen Handy ziemlich zufrieden war, dazu später mehr.

Leider sieht WP immer noch “nur” vielversprechend aus, zumindest unter v7.x hat sich wenig getan über die Jahre. Das ist beim Nachfolger WP8 ein Stück weit anders, aber Microsoft hat viele Besitzer eines WP7 mit der Entscheidung verprellt, das Update für die “alte” Plattform nicht anzubieten, und viele Features auch nicht nachzureichen – darunter Grundlegendes wie CalDAV-Support, Rotation-Lock, lernende Autokorrektur (ich meine nicht neue Wörter, sondern Häufigkeit der Nutzung von Wörtern), oder auch nur custom Klingeltöne. Richtig gelesen: Was bei anderen Systemen seit x Jahren zur Grundausstattung gehört, verweigert M$ ausgerechnet seinen Early Adopters. Das war der primäre Grund für meinen Plattformwechsel.

Der konkrete Anlass allerdings war, dass mein WP langsam den Geist aufgibt. Es geht oft aus, manchmal im Minutentakt. Schade, denn sogar der Akku hält noch länger durch als bei manchem neuen Smartphone – was sicherlich dem “langsamen” Prozessor und der “geringen” Pixeldichte auf “kleinem” Display geschuldet ist.

Also, who’s next?

iPhone?

Das iPhone ist der Platzhirsch, keine Frage. Und dabei so angenehm handlich – aber auch abstrus teuer. Es ist mir absolut schleierhaft, wie jemand so einen Haufen Geld für ein Handy ausgegeben kann. Noch dazu für eins, das so schnell und oft kaputt geht. Raus.

Die Entscheidung war leicht.

Android?

Ähnlich attraktives Ökosystem, dabei deutlich günstiger. Leider auch (oft) deutlich größer und unhandlicher, außerdem ist ein Google-Account Pflicht. Und Google kommt mir nicht auf’s Handy. Wenn wir eins aus der NSA-Affäre gelernt haben, dann, dass Datensparsamkeit, Verschlüsselung und Dezentralisierung wichtig sind. Mindestens Punkt 1 und 3 steht Google direkt entgegen. Raus.

Die Entscheidung war leicht.

Jolla?

Kurz habe ich über das Jolla nachgedacht: Ein unabhängiges, Open-Source-Betriebssystem, aus Europa, auf Unix-basis, stylisches UI, konsequent auf Gestensteuerung ausgerichtet. Leider auch nicht billig, zumindest für die Hardware und das begrenzte Angebot an Apps. OK, man kann Android-Apps installieren, trotzdem fehlen mir konkrete Erfahrungsberichte und ein Hands-on im örtlichen Saturn (oder irgendwo). Bis auf Weiteres raus, wird aber beobachtet.

Die Entscheidung war nach einer Woche oder so auch leicht 😉

Windows Phone 8?

Ich mag WP immer noch total gerne, ein WP8-Handy war bis zum Schluss die direkte Alternative zum BlackBerry. Das UI-Konzept funktioniert super, und ist insofern sogar stylisch, als dass es klug minimalisiert wurde. Klug, weil ergonomisch. Es funktioniert super – bis es in die Apps geht. Da nervt sie sehr schnell; wer mal eine App geschlossen hat, weil nie ganz klar ist, wohin der (eine) “Zurück”-Button nun navigiert, weiß, was ich meine.

Viele App-Entwickler kommen offensichtlich auch nicht damit zurecht, den Content in den Mittelpunkt der Anwendung zu stellen, bzw. scheitern daran, dass ein 1:1 Klon von anderen Plattformen nicht “funktioniert”. Vielleicht kommt hier ja noch mehr, wenn die Plattform sich (noch?) weiter verbreitet.

Bis es so weit ist, habe ich aber keine Lust mehr zu warten, nach 3 ½ Jahren ist meine Geduld dann mal erschöpft. Die Entscheidung war aber nicht leicht, zumal die Geräte vergleichsweise günstig sind.

BlackBerry?

Man muss erst mal wissen, dass ich vor dem WP ein Nokia E71 hatte, mit dem ich sehr zufrieden war. Das hatte eine Tastatur, und die war super. Auf dem WP vertippe ich mich, seitdem ich es habe und bis heute. Leider nimmt so eine Tastatur auch Platz weg, sonst wäre ich schon lange umgestiegen. Das Verhältnis von physischer Tastatur zu Bildschirm bleibt also zu testen.

dilbert

Das BB ist dafür gemacht, alles schnell und effizient erledigen zu können, nicht dazu, bsplw. Einsteigerhandy zu sein. Vieles bedient sich am Besten über Gestenund/oder Kurzbefehle und/oder Tastenkürzel – ja, Tastenkürzel. Wo die schon mal da sind!? 🙂 Aber für meine Frau wäre es ob der Kürzel und Gesten nichts.

Bei der Effizienz hilft, dass man alles customizen kann. Auch das wäre nichts für meine Frau, aber ich mag es, wenn ich Quick Settings ein- und ausblenden kann, ihre Reihenfolge ändere, … oder dass ich Quick Settings habe, schönen Gruß, Microsoft!

Auf dem BlackBerry OS v10 kann man ebenfalls Android-Apps installieren, damit dürfte das Angebot größer sein als bei WP8. Es gibt CalDav- und CardDav-Support. Die Sprachqualität ist super, wegen der zusätzlichen Mikrofone, die Umgebungsgeräusche rausfiltern. Man kommt ohne Probleme per USB auf’s Dateisystem, und zwar in beide Richtungen: Ich kann vom Handy aus meinen Rechner browsen, was bsplw. bei der Installation von Android-Apps hilft. OK, die hauseigene Maps-App ist Mist (kein ÖPNV!?), aber es gibt gute Ersatz-Apps. Das Gerät ist sauschnell und hatte zum Start mit die höchste Pixeldichte – bei inzwischen “nur” noch knapp über 300 €.

Damit war die Entscheidung gefallen, aber sie war schwer – nun muss BB sich beweisen!

Windows Phone Apps: Auf Knopfdruck URL aufrufen

Ein schöner fetter “Buzzer”-Button:

, der auf “Click” folgende Funktion aufruft:

PS: Wie man sieht, wird kein Browser geöffnet oder so. Es geht um Kommunikation mit dem Server, nicht um das Öffnen von Webseiten.

Windows Phone 8 Apps: Controls-Toolkit

Naiv, wie ich nun einmal bin, war ich davon ausgegangen, dass das Windows Phone SDK einen gewissen Satz an Standard-Komponenten mitbringt. Zum Beispiel einen DatePicker (wie man ihn im Kalender findet) oder einen TimePicker (wie im Wecker). So Sachen halt.

Falsch gedacht.

Dafür muss man das “Windows Phone Toolkit” von http://phone.codeplex.com/ installieren (Achtung: Die URL http://silverlight.codeplex.com/ ist für Windows Phone veraltet!). Anmerkung: Obwohl das sehr nach Silverlight klingt, kann man es auch mit C#-Anwendungen nutzen. Für mich war das nicht selbstverständlich.

Offenbar gibt es verschiedene Möglichkeiten für die Installation; ich habe NuGet verwendet. Das zuerst installieren, (s)eine Solution öffnen, dann unter Tools -> Libarary Package Manager -> Package Manager Console -> “Install-Package WPtoolkit” eingeben. Das Toolkit wird dann nur für diese Solution installiert – was wichtig ist, denn:

Um das Toolkit auch tatsächlich nutzen zu können (obwohl man es ja gerade eben sogar für genau diese Solution installiert hat), muss man nicht nur den entsprechenden Namespace zum Beispiel seiner MainPage.xaml hinzufügen:

Sondern auch “eine Referenz” auf das im Namespace erwähnte “Assembly” hinzufügen. Und das ist schwierig, wenn man sich an die Anleitungen aus dem Internet hält (zum Beispiel diese oder diese). Denn erstens sieht man dort hin und wieder die veraltete URL http://silverlight.codeplex.com/, und zweitens findet man die Assembly-Datei Microsoft.Phone.Controls.Toolkit.dll nicht unter

C:/Program Files (x86)/Microsoft SDKs/Windows Phone/v7.0/Toolkit/Nov10/Bin/Microsoft.Phone.Controls.Toolkit.dll

sondern unter

Z:/pathtomyprojects/MyProject/packages/WPtoolkit.4.2012.10.30/lib/sl4-windowsphone71/Microsoft.Phone.Controls.Toolkit.dll

bzw. analog. Halt nicht an globaler Stelle, sondern lokal im Projekt. Wenn man das weiß, fügt man diese ominöse Referenz wie folgt hinzu:

Solution Explorer -> References -> Rechtsklick, “Add Reference…” -> Browse… -> Microsoft.Phone.Controls.Toolkit.dll aus dem Projektverzeichnis suchen.

Nun sollte man bsplw den TimePicker mittels

nutzen können. Aber: Im Emulator sieht man, dass die Icons für Bestätigen und Abbrechen fehlen:

Das Internet sagt hier, hier und hier, dass man einen Ordner “Toolkit.Content” mit den PNGs “ApplicationBar.Cancel.png” und “ApplicationBar.Check.png” anlegen soll. Also Rechtsklick auf Projekt im Solution Explorer -> Add -> New Folder (ist nur aktiv, wenn der Emulator nicht läuft) -> “Toolkit.Content”. Bei mir gab es daraufhin aber die Fehlermeldung “Cannot add a link to the folder Toolkit.Content. There is already a file of the same name in this folder.” Tatsächlich kann ich den Ordner im Windows Eplorer sehen – und die erwähnten PNGs ebenfalls 🙁 Doch wo sind sie im Solution Explorer, und warum sehe ich sie im Emulator nicht?

Die Antwort auf die erste Frage lautet: Weil das ein weiterer scheiß Bug ist! Visual Studio muss offenbar nach der Installation vom Toolkit neu gestartet werden, dann sieht man plötzlich auch den Ordner. Die Antwort auf Frage 2: Man muss einen Rechtsklick auf jedes PNG machen, und “Include In Project” auswählen. Dann geht’s:

Windows Phone 8 Emulator in Parallels

Wenn man endlich den Windows Phone Emulator (in Parallels) starten darf, wird man von dieser Meldung empfangen:

The Windows Phone Emulator wasn’t able to create the virtual machine: Generic failure*

*Die Deutsche Version lautet genauso, nur der “Generic failure” ist ein “Allgemeiner Fehler”

Der Grund ist im Wesentlichen, dass der Emulator eine virtuelle Machine ist – die man in einer virtuellen Maschine starten will. Das geht nicht zwingend; das Buzzword lautet “Nested Virtualization” (“Verschachtelte Virtualisierung”). Ein entsprechender Eintrag in der Parallels Knowledgebase (gefunden hier und hier) empfiehlt Folgendes:

  • Mindestens 4, besser 8GB RAM auf dem Mac
  • Parallels 8, möglichst aktuell – Richtig: Parallels 6 scheitert an verschachtelter Virtualiserung!
  • Windows 8 Pro x64
  • Die VM sollte auf 1 CPU laufen:

  • “Nested VT” muss aktiviert sein. Achtung:
    • wird nur angezeigt, wenn die CPU das unterstützt
    • kann man nur aktivieren, wenn die VM aus ist
    • UPDATE: wenn Parallels aktualisiert wurde, muss die VM evt neu installiert werden, damit die Option angezeigt wird. Das geht so weit, dass sogar das Intel Tool behauptet, dass die CPU das nicht unterstützt. Ein Blick in deren Datenbank schafft Klarheit

  • Windows’ “Hyper-V-Manager” starten, links den PC auswählen, unter “Virtuelle Computer” den Emulator auswählen (wenn er nicht erscheint: Visual Studio starten, Emulator starten), rechts auf “Einstellungen”, Prozessor, “Anzahl virtueller Prozessoren” (kann man nur ändern, wenn der Emulator aus ist): “1” einstellen:

  • Emulator starten 🙂

PS: Um herauszufinden, ob der Prozessor Nested VT unterstützt, kann man entweder entsprechende Tools (zum Beispiel das “Intel Processor Identification Utility”) nutzen, oder in die “Windows-Features” gehen: “Hyper-V” muss aktivierbar und aktiviert sein.

Windows Phone 8 Apps: “The name MainViewModel does not exist in the namespace”

Windows 8 Pro frisch installiert, das Windows Phone SDK heruntergeladen, installiert und gestartet, quasi-leere Demo-App erstellt, “Emulator WVGA 512MB” gestartet – folgende Fehlermeldung (plus drölf weiteren) bekommen:

Error 1 The name “MainViewModel” does not exist in the namespace “clr-namespace:MyApp”.

Vermutung im Internet: Irgendwelche “Assemblies” seien nicht “korrekt” verlinkt. Aha. Kann sein, schließlich habe ich gar nichts verlinkt. Finde ich auch nicht nötig, um ein vorgegebenes Hello-World-Programm zu starten. Was für ein bekackter Bug soll das sein??

Lösung (Schritt 6, Achtung, extrem hässliche Seite): Das Projekt muss auf einer anderen Partitition als Visual Studio abgespeichert sein. WTF. Würde aber zu o.g. Vermutung passen – evt. kommt VS nicht mit relativen Pfaden klar?

WP7: Apps und Website

7 Tage, 7 Posts, 4: Windows Phone 7-Apps, die ich installiert (und nicht sofort wieder gelöscht) habe – ohne besondere Reihenfolge:

  • Apict: Die einzige App, für die ich Geld bezahlt habe – hat sich im Grunde nicht gelohnt, aber es waren auch nur 99 C. Bietet Lomo-Effekte für gespeicherte Bilder, ist aber auch aus dem Kontext-Menü der Kamera erreichbar
  • DB Navigator: www.bahn.de für WP7
  • Ebay
  • Facebook: Funktioniert nicht gut. Places ist ein schlechter Witz, der nur durch seine Übersetzung unterboten wird. Naja, manchmal einfacher, als erst auf die Mobile-Seite zu surfen
  • Kicker online: Der Hit! 🙂
  • WordPress: Ich veröffentliche gerade diesen Artikel mit der App. Davon appgesehen habe ich es noch nicht wirklich oft gebraucht…

Ansonsten bleibt mir der Verweis auf windowsphonethoughts.com, der zumindest besten von mir bisher entdeckten Seite zum Thema – dort gab es die Info über das erste Vorab-Update einen Tag vor heise.de. Wie man sieht: Wenig Überraschendes. Eine Taschenlampe habe ich noch installiert. 🙂

O2 Communication Center mit Windows Phone 7 synchronisieren

Wer das “O2 Communication Center” kennt, der nutzt vermutlich kein Windows Phone 7. O2-Kunden können über das Communication-Center ihre Kontakte, Nachrichten (SMS, …) und vor allem den Kalender synchronisieren. Die Idee ist, dass man bei Handy-Verlust oder -Wechsel seine Daten direkt wieder hat… das funktioniert zB für Nokias Symbian ganz hervorragend – vor allem, wenn man das Nokia-Handy von O2 bekommen hat.

Schlechter sieht es aus, wenn man ein ungebrandetes Windows Phone 7 mit dem Communication Center syncen möchte:

Aktuell gestaltet sich dies noch recht komplex. Eine direkte Synchronisation ist mit diesem Betriebssystem noch nicht vorgesehen.

sagt der O2-Support. Wer aber ein Outlook besitzt, der kann folgenden Weg ausprobieren (Windows only):

Bitte melden Sie sich hierzu mit Ihrer Rufnummer und Ihrem Kennwort auf www.o2.de an.
Im o2 Communication Center rufen Sie bitte Einstellungen auf. Die Software “Sync Software für Ihr Windows Mobile ” steht aktuell nur bis maximal Windows Mobile 6.5 zur Verfügung.
Sie können jedoch das Programm “PC-Software für Outlook” herunterladen, um das o2 Communication Center mit Ihrem Outlook zu synchonisieren.

Für weitere Synchonisationsfunktionalität benötigen Sie folgende Software von Microsoft: Outlook Hotmail Connector

Achtung #1: Prinzipiell funktioniert O2s “PC-Software für Outlook” auch mit Outlook Express – aber Outlook Express kennt natürlich keine Kalender-Daten 🙂 Mit Outlook Express dürften von daher nur Kontakte zu syncen sein

Achtung #2: Die Testversion von Outlook wird merkwürdigerweise nicht unterstützt:

Ja, Sie haben Recht, mit der Testversion von Outlook können Sie leider keine Synchronisation vornehmen.

Deshalb ist das obige Vorgehen auch nicht von mir getestet! HTH, anyway.