Software “Mouse without borders”

Wenn man mehrere (Windows-basierte) PC’s nebeneinander stehen hat und nur eine Tastatur und eine Maus für die Bedienung verwenden möchte, hat ein Mitarbeiter von Microsoft eine elegante Software-Lösung dafür geschrieben. Diese wird auf allen betroffenen PC’s installiert und anschliessend können die PC’s mittels Codeeingabe miteinander verknüpft werden.

Das Tool funktioniert hervorragend, einzige Einschränkung: die beiden PC’s müssen sich aktuell im gleichen Netz befinden; d.h. wenn einer der beiden PC’s eine VPN-Verbindung aufgebaut hat, klappt es leider nicht (obwohl sie ja eigentlich lokal im selben Netz stehen).

Windows8 Preview

Nachdem die erste Preview-Version von Windows8 verfügbar ist, habe ich mir diese natürlich auch schnell angeschaut. Die neue Windows-Version habe ich dabei mittels VMWare Workstation 8 installiert (mit dem VMWare-Player funktioniert es wegen einem HAL-Problem nicht). Da gemäss Presse auch mit VMWare Workstation 7 nichts zu wollen ist, habe ich nun direkt mit der frisch erschienen Version Workstation 8.0.0 installiert und dort hat es tatsächlich einwandfrei geklappt.

Interessant ist, dass für das Einrichten von Windows8 eine neue oder bestehende Windows LiveId benötigt wird – das kennen wir doch von den neuen Smartphones, oder nicht?

Bildschirm nach setup

 

 

 

 

 

 

Der Start-Bildschirm von Windows8 nach dem Setup stellt sich jedenfalls schon mal komplett anders dar, als man sich das bisher gewohnt ist. Ich gehe jetzt mal weiter testen… :)

Java Webstart Cache löschen

Wenn man ab und an Web-Anwendungen auf Basis von Java Webstart nutzt und sicher gehen will, dass man die aktuellste Version davon hat, hilft manchmal der Cache Viewer. Dieser kann mit

javaws -viewer

aufgerufen werden. Aus dieser Übersicht können die einzelnen Anwendungen im Cache gestartet, gelöscht oder verknüpft werden.

Powershell-Script ausführen

Wenn nun auf dem Desktop eine Verknüpfung zu einem Powershell-Script erstellt wird, führt ein Doppelclick interessanterweise ins Notepad, d.h. ein automatisches Ausführen des Scripts funktioniert nicht einfach so. Zu diesem Zweck muss der Link der Verknüpfung angepasst werden – vor dem effektiven Script ist noch der Powershell-Pfad samt dem Befehl “-noexit” hinzuzufügen. Mit Noexit kann zumindestens am Anfang noch geprüft werden, ob es irgendwelche Fehler gibt oder nicht.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit " & 'U:\mypath\myscript.ps1'"

Falls keine Fehler vorhanden sind, bzw. immer alles funktioniert, kann anstelle von -noexit der Parameter -command verwendet werden.

Je nachdem wo Ihr das Script nun speichert kann es sein, dass es wegen fehlender digitaler Signatur nicht ausgeführt wird. Das ist zwar unschön, dem kann aber abgeholfen werden – allerdings wird es jetzt etwas aufwendig (weil wir ja eigentlich nur ein Script laufen lassen möchten)…

Unter dieser Adresse kann der SDK-Webinstaller des .Net Framework 4 aufgerufen werden, der einem einen selektiven Download ermöglicht. Eine allfällige Fehlermeldung beim Start (von wegen nur .Net 4 Client und nicht Full installiert) kann ignoriert werden. Alle Auswahlen bis zu den Installationsoptions standardmässig durchklicken – hier dann unter “Windows Native Code Development” den Punkt “Tools” anklicken und den Rest deaktivieren. Nach Abschluss der Installation sollte jetzt ein Verzeichnis “C:\Program Files\Microsoft SDKs\Windows\v7.1” bestehen.

Dann mit dem Commandline-Prompt (Achtung wichtig: mit Admin-Rechten) in das Verzeichnis C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin wechseln und die folgenden Befehle ausführen:

makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

Für das Erstellen des privaten Schlüssels ist ein Kennwort (z.bsp. “certpassword”) zu definieren; dieses bitte notieren – es muss anschliessend wieder eingegeben werden. Die obigen Befehle müssen mit “Succeeded” bestätigt werden, ansonsten stimmt etwas nicht.

Danach den folgenden Text in eine Textdatei kopieren und diese mit “Add-Signature.ps1″ benennen.

## add-signature.ps1
## Signiert eine Datei
param([string] $file=$(throw "Geben Sie einen Dateinamen an."))
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert

Geben Sie folgende Befehle an der Windows PowerShell-Eingabeaufforderung ein, um die Skriptdatei “Add-Signature.ps1″ zu signieren:

$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature add-signature.ps1 $cert

Damit ist nun das Skript signiert und es kann nun – endlich – das ursprüngliche Skript mit “.\add-signature.ps1 meinscript.ps1” signiert werden. Wenn man nun die Skript-Datei anschaut, sieht man, dass am Ende der Datei eine Signatur angehängt wurde.

Somit kann nun endlich die eigene Skript-Datei mittels Doppelklick gestartet werden!

Download einer Datei mit Powershell

Bei einem meiner Forex-Provider habe ich das Problem, dass der Java-Client nicht sauber gestartet wird, d.h. dass zwar die .JNLP-Datei runtergeladen wird, dafür aber Java nicht gestartet wird. Um dem abzuhelfen, habe ich beschlossen, dafür ein entsprechendes Powershell-Skript zu erstellen. Der Hauptgrund dafür ist die Tatsache, dass der Download einer Datei aus dem Internet durch Powershell eigentlich problemlos möglich sein müsste – und ist es auch.

Nach einigem Suchen im Internet habe ich folgendes Script zusammengestellt, welches jetzt die gewünschte Datei aus dem Web holt, lokal abspeichert und via Java-Webstart ausführt:

# aktuelle Datei runterladen
# mit Java-Webstart starten
# 18.07.2011
$clnt = new-object System.Net.WebClient
$url = "https://www.xx.com/client/live/jclient/jfo.jnlp"
$file = "c:\temp\jfo.jnlp"
$clnt.DownloadFile($url,$file)
# type $file
C:
cd C:\temp
javaws jfo.jnlp

Diese Datei kann jetzt als scriptname.ps1 gespeichert werden. Damit ist nun schon ein erster Schritt getan und diese Datei kann manuell ausgeführt werden – mit einem Doppelklick gehts noch nicht, aber dazu später mehr.

AppWrench für Google App Engine

Wer mit der Google App Engine (GAE) arbeitet, kennt das Problem ziemlich sicher: wie teste ich lokal mit denselben Daten, die ich auf der GAE gespeichert habe? Oder wie exportiere ich die Daten aus GAE?

Als Basis für die Entwicklung mit der GAE dient ja meistens Eclipse, so auch bei mir. Wenn man lokal arbeitet, kann man den lokalen Datastore ja auch mit dem Browser abrufen, und zwar unter: http://localhost:8888/_ah/admin/datastore. Im Gegensatz zur “richtigen” Version kann man die Datensätze jedoch nicht editieren, sondern nur löschen.

Nach längerer Suche und ersten Gedanken, ob ich wohl selber einen Dataviewer für die GAE bauen soll, bin ich auf AppWrench von OnPositive Technologies gestossen. Dabei handelt es sich um eine Serie von Eclipse-Plugins, die die Entwicklung und das Testen von Java-Applikationen vereinfachen.

Nach der Installation ist in Eclipse ein neuer View “Google Apps Data View” verfügbar:

In dieser View können die einzelnen Tabellen ausgewählt werden und anschliessend “Access-like” dargestellt und editiert werden. Dabei können die Einträge auch exportiert und importiert werden – ein unschätzbarer Vorteil bei der Entwicklung! Hier ein Beispiel für das manuelle Hinzufügen eines einzelnen Eintrages in einer meiner eigenen Tabellen:

Neben den neuen View-Funktionalitäten gibt es auch eine neue Toolbar, mit welcher zum Beispiel zwischen lokalem Entwicklungsserver (L) und dem GAE-Server (R) umgeschalten werden kann:

Neben den Daten kann übrigens auch der Blob-Store angeschaut werden. Insgesamt für mich ein unverzichtbares Tool für die Entwicklung mit der GoogleAppEngine, welches ein 5 Stern-Rating (*****) absolut verdient!

Gmail und Outlook: Fehler (0x800CCC0F) Abonnierte Ordner

Wer mit Outlook 2010 via IMAP-Protokoll seinen Gmail-Account synchronisieren möchte, kennt vermutlich den folgenden Fehler: “Fehler (0x800CCC0f) beim Ausführen der Aufgabe ‘Abonnierte Ordner für ‘xy@gmail.com’ werden synchronisiert”: “Von Outlook können keine abonnierten Order für ‘xy@gmail.com’ synchronisiert werden.”

Auf die Funktionalität des Mailaustausches hat der Fehler keinen Einfluss, weil das Mail im Schritt vorher problemlos synchronisiert werden konnte. Allerdings nervt dieser Fehler gewaltig, weil nämlich die Synchronisation immer hängen bleibt und bei ungeübten Benutzern Irrationen hervorruft.

Nach Suche im Internet und selber Ausprobieren hier die Schritte zur Lösung dieses Problems:

  • allfällig geöffnetes Outlook schliessen
  • in der Weboberfläche von Gmail ein neues Label “Google Mail” erstellen
  • Outlook starten
  • in der Navigationsleiste auf “Ordner” klicken, dann den Punkt “IMAP-Ordner” in der Symbolleiste auswählen
  • auf die Lasche “Abonnierte” klicken und den Button “Abfrage” drücken
  • bis zum Ordner “Google Mail” blättern (den wir vorhin mit dem Label angelegt haben) und diesen Eintrag auswählen
  • den Button “Abo kündigen” drücken, worauf der Ordner aus der Liste verschwindet
  • OK drücken
  • auf die Lasche “Senden/Empfangen” wechseln und das erste Icon “alle Ordner senden/empfangen” drücken

Das müsste nun bereits ohne Fehler funktionieren – falls nicht, sollte spätestens nach einem Neustart von Outlook das Problem verschwunden sein.

Windows Live Skydrive als Laufwerk mappen

Die 25 GB kostenloser Online Speicher von Microsoft können nicht nur via Browser verwaltet werden, sondern auch ganz komfortabel via Dateimanager. Dazu einfach in Skydrive einloggen und dort links auf “Mein Profil” bzw. “My profile” wechseln, dann sollte oben in der URL etwas in dieser Art stehen: http://profile.live.com/cid-12B3C534C4CA8HJ9

Danach kann man im lokalen Dateimanager ein neues Netzlaufwerk verbinden und folgendes eingeben: \\docs.live.net@SSL\12B3C534C4CA8HJ9

Somit muss man einfach die eigene Buchstaben/Zahlen-Kombination eintragen und das Mapping funktioniert (nach Login mit dem eigenen Username/Passwort selbstverständlich)…