Henning Stummer

Software-Entwicklung

Ich hatte das Problem, dass ich bei einem Setup (in WiX-Technik) einen Key aus der Windows-Registry beim deinstallieren löschen musste. Allerdings wurde dieser Key auch gelöscht, wenn ich nur eine neuere Version über eine bestehende installiert hatte. Mit Hilfe eines “Property” konnte ich das jetzt umgehen.

Zunächst wird der Key ausgelesen und in einem “Property” gespeichert:

<Property Id="MY_KEY">
 <RegistrySearch Id="Reg.GetMyKey" Root="HKLM" Key="Software\MyManufacturer\MyProduct\MyKey" Type="raw" />
</Property>

Während der automatischen Deinstallation der alten Version wird der Key auch weiterhin gelöscht. Deshalb wird er bei der anschließenden Installation wieder mit dem alten Inhalt erstellt:

<Registry Id="Reg.SetMyKey" Root="HKLM" Key="Software\MyManufacturer\MyProduct)\MyKey" Action="createKeyAndRemoveKeyOnUninstall"/>
<RegistryValue Root="HKLM" Key="Software\MyManufacturer\MyProduct\MyKey" Type="string" Value="[MY_KEY]"/>

Genau genommen wird durch die Angabe von “createKeyAndRemoveOnUninstall” der gewünschte Key bei der Installation erstellt und bei der Deinstallation wieder gelöscht. Aber mit Hilfe des “Propery” wird der Inhalt zwischengespeichert und ist nach einer Installation über eine bestehende Version noch vorhanden.

Bei Mozilla wird laut Mozilla-Community Camp-Firefox an einer Android-Version des Browsers gearbeitet. Allerdings befindet sich die Software noch in einem sehr frühen Stadium. So soll sich Firefox momentan auf dem Handy nur starten lassen. Vladimir Vukicevic, einer der Mozilla-Entwickler, berichtet in seinem Blog, dass man auch schon eine erste Internetseite anzeigen konnte.

Getestet wir die Version zur Zeit mit dem vollen Desktop-Interface. Ob in der endgültigen Version nur die abgespeckte Oberfläche des für Touchscreens optimierten Fennec zum Einsatz kommt, ist noch offen. Es wird aber noch Monate dauern, bis eine erste Alpha-Version veröffentlicht werden kann.

Seit heute steht die neue Version Firefox 3.6 zur Verfügung. Auffälligste Änderungen in der neuen Version sind unter anderem die früher als Erweiterung zu habende “Personas”, mit denen sich die Oberfläche von Firefox ohne Neustart anpassen lässt. Außerdem enthält die Version 3.6 einen Plug-in-Check, der alle installierten Erweiterungen prüft und bei Bedarf um Aktualisierung bittet. Laut Mozilla soll die neue Version auch um rund 20 Prozent schneller sein als der Vorgänger. Einen Überblick über die Neuerungen erhält man im englischsprachigen Mozilla-Blog.

Heute habe ich die neueste Version (1.1.0) meines Add-ons “Growl/GNTP for Songbird” veröffentlicht. Das Add-on verfügt jetzt über ein Einstellungsfenster, in dem man den Titel und Text im Benachrichtigungsfenster bei Trackwechsel verändern kann. Für die Metadaten des abgespielten Tracks stehen eine Reihe von Platzhaltern zur Verfügung.

Weitere Infos sowie den Download gibt’s auf der Songbird Add-on Seite.

Vor einiger Zeit habe ich das Tool Growl for Windows zu schätzen gelernt, um mich über länger dauernde (und damit im Hintergrund laufende) Prozesse informieren zu lassen. Über die Vorzüge hatte ich auch vor kurzem berichtet.

Der Autor von Growl for Windows, Brian Dunnington, hatte auch ein proprietäres Add-on für die Musikverwaltungssoftware Songbird zur Verfügung gestellt, mit dem man von Growl über das aktuell abgespielte Lied (Titel, Interpret, Album) informiert wurde. Da ich aber noch Ideen für Erweiterungen hatte, trat ich mit ihm in Kontakt. Und wie das so bei freier Software ist, hat er mir gleich die Pflege und Weiterentwicklung des Sondbird Add-ons übertragen.

Jetzt liegt mit Version 1.0.3 das erste Update aus meiner Feder vor. Im Benachrichtigungsfenster wird in der aktuellen Version auch das Cover-Bild des Albums angezeigt. Außerdem ist das Add-on nun auch mehrsprachig und zeigt auch ein Benachrichtigungsfenster, wenn eine neue Mediathek verbunden oder getrennt wurde (z.B. ein MP3-Player).

Die aktuelle Version kann auf der Add-on Seite von Songbird heruntergeladen werden:
http://addons.songbirdnest.com/addon/1585

Seit einiger Zeit verwende ich die freie Software Growl for Windows, mit der Systemmeldungen als Popups angezeigt werden können. Im Gegensatz zu den Windows-eigenen “Ballontipps” kann der Umfang der angezeigten Meldungen durch eine Vielzahl an Erweiterungen den eigenen Bedürfnissen angepasst werden. Diese Software basiert auf der für Mac OS erhältlichen Variante.

Growl for Windows

Über Plug-ins, die von der Webseite des Anbieters herunter geladen werden können, kann man sich beispielsweise automatisch von Thunderbird oder Microsoft Outlook über neue E-Mails benachrichtigen lassen. Oder man erfährt von Songbird oder iTunes, welches Lied jetzt abgespielt wird. Growl setzt außerdem das Apple-Protokoll Bonjour ein, um Instanzen von Growl auf anderen Rechnern (PCs oder Macs) zu finden. So können auch Meldungen aus dem Netzwerk dargestellt werden. Selbst das iPhone lässt sich nun als Empfänger nutzen, die App Prowl empfängt die weitergeleiteten Meldungen und kann sie passend darstellen.

Anfangs fand ich Growl for Windows interessant, um mich während der Arbeit am PC über neue E-Mails und die abgespielten Lieder informieren zu lassen. Aber die Möglichkeit, durch Remote-Zugriff auch über die Aktivitäten auf anderen Rechnern im Netzwerk informiert zu bleiben, macht es endgültig zu einem sehr nützlichen Werkzeug.

Vor ein paar Tagen wurde die Version 3.0 des Open-Source-E-Mail-Clients Thunderbird veröffentlicht. Nach zweieinhalb Jahren Entwicklungszeit bringt das Release eine Reihe von Neuerungen, unter anderem eine vollständig überarbeitete Benutzeroberfläche, eine verbesserte Suchfunktion, Tabs, Smart Folders und schnellere Performance. Die wichtigsten Änderungen können auf der Webseite von Mozilla Messaging nachgelesen werden, bzw. stehen in den Release Notes.

Eigentlich bin ich bei frisch erschienener Software immer erst etwas zurückhaltend. Vor allem, wenn ich in der Software einige Add-Ons installiert habe, die wahrscheinlich noch nicht für die neue Version verfügbar sind. Aber nach der Review bei Golem wagte ich doch den Schritt. Und ich muss sagen, dass ich schon nach kurzem Testen von der neuen Thunderbird-Version überzeugt war. Besonders gefielen mir die “gruppierten Ordner”, mit denen z.B. die Inbox meiner verschiedenen Mail-Account virtuell zu einem Ordner zusammengefasst werden; so muss ich nur eine Liste durchgehen, um alle neuen Mail zu lesen. Ich kann Version 3.0 nur weiter empfehlen.

Thunderbird 3.0 läuft unter Linux, Mac und Windows, ist in diversen Sprachversionen verfügbar und kann nun von der offiziellen Mozilla Messaging Website heruntergeladen werden.

Mir war aufgefallen, dass anscheinend beim Erstellen von MSI-Setups mit WiX/Votive einige veraltete Dateien in der MSI-Datei landeten. Obwohl die entsprechenden Projekte über Abhängigkeiten in VS2008 miteinander verknüpft waren, und die Dateien auch neu erstellt wurden. Bei anschließender Ausführung des fertigen Setups wurden immer wieder veraltete Dateien auf dem Testrechner installiert.

Nach einigem Ausprobieren habe ich ich das auf die harte Methode gelöst: In den “Pre-Build Events” des Setup-Projekts werden vorher einfach die alten Setup-Dateien gelöscht.

del bin\$(Configuration)\de-DE\*.* /Q
del bin\$(Configuration)\en-US\*.* /Q
del bin\$(Configuration)\es-ES\*.* /Q
del bin\$(Configuration)\fr-FR\*.* /Q
del bin\$(Configuration)\it-IT\*.* /Q

Seitdem enthält die erstellte MSI-Datei nur noch die aktuellen Dateien; so wie es eigentlich sein sollte. Ich habe aber auch nicht festgestellt, dass das Kompilieren des Setups mit dieser Methode länger dauern würde.

Für ein aktuelles Projekt sollte ich einen mehrsprachigen MSI-Setup erstellen, der beim Start die Sprache entsprechend des Betriebssystems anzeigt. Die erste Hürde war, im WiX-Projekt für jede Sprache einen eigenen Lizenztext einzubinden. Nun konnte ich zwar mit VS2008 je eine MSI-Datei für jede Sprache erzeugen, aber weder WiX noch Votive bieten eine Möglichkeit, eine einzige MSI-Datei für alle Sprachen zu erstellen. Diesmal diente mir der Artikel “Multi-Language MSI Packages without Setup.exe Launcher” von Andreas Kerl als Ausgangspunkt.

Zunächst werden die lokalisierten MSI-Dateien erstellt, und z.B. die englischsprachige MSI-Datei in einen neuen Ordner kopiert; Sie dient als Basis für den mehrsprachigen Setup. Anschließend werden mit dem Tool torch.exe für die anderen Sprachen sogenannte Transform-Dateien erstellt. Sie enthalten im Endeffekt nur die Unterschiede zwischen dem englischen Setup und einer der anderen Sprachen.

"%WIX%bin\torch.exe" -p -t language "Release\MySetup.msi" "Release\de-DE\MySetup.msi" -out "Release\MySetup-de-de.mst"

Danach werden die so erstellten Transform-Dateien in die (englische) MSI-Datei eingebunden, und die verfügbaren sprachen im Package gesetzt. Hierzu müssen die VB-Skripte WiSubStg.vbs und WiLangId.vbs heruntergeladen werden. Diese sind direkt auf der MSDN-Webseite zu finden.

WiSubStg.vbs "Release\MySetup.msi" "Release\MySetup-de-de.mst" 1031
 
WiLangId.vbs "Release\MySetup.msi" Package 1033,1031

Soll der Setup noch mehr Sprachen enthalten, muss einfach für jede Sprache eine eigene Transform-Datei erzeugt und anschließend der Basis-MSI hinzugefügt werden. Die Liste mit den Sprach-Codes (LCID) ist natürlich entsprechend zu erweitern.

Wenn die so erstellte MSI-Datei ausgeführt wird, wird dem Benutzer automatisch die zum Betriebssystem passende Sprache ausgewählt und angezeigt.

Für einen mehrsprachigen Setup, den ich mit WiX/Votive erstellen sollte, hatte ich das Problem, dass man nur eine Datei als “WixUILicenseRtf” angeben kann. Dabei sollte der Lizenztext in der jeweiligen Sprache angezeigt werden. Bei WiX 3.0.5419.0 inkl. Votive werden lokalisierte Variablen aus WXL-Dateien aber nicht als Wert für “WixVariable” akzeptiert. Der nachfolgende Code erzeugt den Fehler LGHT0103: The system cannot find the file ‘!(loc.path_to_license_rtf)’

<WixVariable Id="WixUILicenseRtf" Value="!(loc.PathToLicenseRTF)" />

Nach einigem Suchen bin ich über den Artikel “Customized UI’s for WiX” von Neil Sleightholm gestolpert. Hier erklärt er schön anschaulich, wie man die WixUI-Standard-Templates an seine eigenen Bedürfnisse anpassen kann. So kam ich auf die Idee, den Lizenz-Dialog so zu ändern, dass ich ihm eine lokalisierte Variable für den Lizenztext übergeben kann.

weiterlesen…

Powered by WordPress Web Design by SRS Solutions © 2012 Henning Stummer Design by SRS Solutions