Mit Silverlight 4 ist es relativ leicht möglich OOB-Anwendungen bzw. Silverlight 4 Businessanwendungen zu entwickeln. Die Installation ist dabei kinderleicht. Ein Rechtsklick auf die Silverlight 4 Anwendung genügt, und schon steht ein Kontextmenüeintrag zur Installation bereit. Danach erscheint ein Dialog den der User bestätigen muss, um die Anwendung zu Installieren. Im Dialog kann der User selbst wählen, ob er Die Anwendung als Desktop-Icon oder Startmenü-Eintrag oder beides installieren möchte.
Nach der Bestätigung zur Installation folgt weder ein weiterer Setupdialog noch irgendeine Form von Prozentbalken, die eine Installation vermuten lässt. Die Anwendung ist einfach innerhalb von Sekunden sofort einsatzbereit. – Installieren war noch nie leichter. So werden nützliche Silverlight 4 Anwendung schnell lokal und auch offline verfügbar gemacht.
Die Antwort liegt auf der Hand: Automatische Updates. Und das geht wie folgt:
Silverlight 4 kommt bereits mit einer vollwertigen Update-Routine, die nur noch aufgerufen werden will. Dies erledigt man z.B. beim Starten der Applikation.
Dazu brauchen wir in die App.xaml.cs nur folgenden Codeschnipsel einfügen:
public App() { InitializeComponent(); if (Application.Current.IsRunningOutOfBrowser) { App.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(CheckAndDownloadUpdateCompleted); App.Current.CheckAndDownloadUpdateAsync(); } } void CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e) { if (e.Error == null && e.UpdateAvailable) { MessageBox.Show("Die Anwendung wurde aktualisiert. Bitte starten Sie die Anwendung neu."); } else { if(e.Error != null) MessageBox.Show(e.Error.ToString() + “.:“ + e.Error.Message); } }
Die Methode CheckAndDownloadUpdateAsync(); prüft auf ein Update der Anwendung. Bei Vorhandensein eines Updates wird dieses geladen. Das Ergebnis wird in einem Callback-Event void CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e) zurückgegeben, den wir vorher registriert haben. Diesen können wir auswerten und entsprechend darauf reagieren. Zum Beispiel den Benutzer auffordern, die Anwendung nach einem Update neu zu starten oder einen Fehler, sofern einer aufgetreten ist, auszugeben.
Um die Funktionalität zu testen, braucht man nur eine OOB Anwendung erstellen und anschließend zu installieren. Danach genügt eine Änderung, die kompiliert werden muss, sodass es ein vermeidliches Update der Anwendung gibt. Nach erneutem Starten der Anwendung vom Startmenü erscheint die oben programmierte Updatemeldung. – So leicht kann es gehen….
Leider funktioniert der oben beschriebene Weg nur auf dem eigenem PC, und nicht auf anderen im Netzwerk und schon gar nicht im Internet. Das ist auch gut so, da jede Aktualisierung einer Anwendung auch ein potenzielles Sicherheitsrisiko ist. Um das Problem zu lösen, müssen wir unsere Silverlight 4 OOB-Anwendung erst mit einem gültigen Zertifikat signieren. Es ist sowieso sinnvoller OOB Anwendungen zu signieren, da dem Benutzer zusätzlich der normalerweise abschreckende Bestätigungsdialog erspart bleibt. Stattdessen erscheint ein eher vertrauenserweckender Dialog mit Informationen zum Herausgeber der Anwendung, etc.
So signiert man eine Silverlight Anwendung:
"%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /v /f c:\path\to\mykey.pfx /p "MYPASSWORD" /t TIMESTAMP_URI_FROM_PROVIDER $(TargetName).xap
Nach dem Kompilieren sollte nun ein vertrauenswürdiger Dialog erscheinen, wenn man die Anwendung installieren will. Das Update funktioniert jetzt auch auf anderen Clients, die dem Zertifikat vertrauen. Wichtig ist jedoch, dass dieser Schritt vor dem ersten Ausrollen der Anwendung geschehen muss. Und nicht erst danach! Sonst steht kein automatisches Updatefeature mehr zur Verfügung.
Remember Me