Beta 2 ist da

Ab sofort könnt ihr die Beta 2 von SpeedCommander 12 herunterladen und testen. Es wurden größtenteils kleinere Fehler behoben. Neu ist die Möglichkeit, Verbindungspunkte zu filtern und damit auch andersfarbig darstellen zu können. Wer unter Windows Vista ein fest definiertes Farbschema mit aktivierten Office-Gradientfarben verwendet, der sollte in der Titelzeile der Ordnerfenster nun wieder weiße Schrift auf blauem Hintergrund sehen.

Dampf auf allen Kernen

Also wenn es ein Argument für einen QuadCore-Prozessor gibt, dann heißt es Visual Studio 2008:

CPU-Auslastung im Task-Manager

Windows-Aero funktioniert nicht

heise online berichtet über WGA-Funktionsstörungen und Phil Liu, seines Zeichens WGA-Program Manager bei Microsoft, will nicht eher schlafen gehen, als bis die Störungen behoben sind. Selbst wenn es bis Dienstag dauert.

Wem sein Aero lieb und teuer ist, der sollte im Moment keine Downloads von Microsoft durchführen, die eine Validierung erfordern. Ansonsten gibt es bei der folgenden Windows-Anmeldung die nette Meldung, dass man möglicherweise Opfer einer Softwarefälschung geworden ist:

Aero funktioniert nicht

Die gleiche Meldung gibt es auch, wenn man anschließend eine Windows-Updatesuche anstoßen möchte.

Ein nicht aktiviertes Vista lässt sich aber problemlos aktivieren und wird als Originalsoftware gekennzeichnet, die Suche nach Updates funktioniert ebenso. Also im Moment Finger weg von validierungspflichtigen Downloads, es sei denn, man hat ein aktuelles Image in der Hinterhand.

Nachtrag um 21:30

Jetzt klappt wieder alles.

Hey, it compiles! Let’s ship it!

Heute startet die 34. Kalenderwoche, und wie angekündigt gibt es in dieser die erste öffentliche Betaversion von SpeedCommander 12 zum Download. Ein solcher Moment ist für mich immer sehr spannend, da man nie weiß, wie die Reaktionen der Anwender auf die neuen Funktionen ausfallen. Hier im Blog gab es zwar schon einige Vorgucker, über ein paar grundlegende Änderungen habe ich aber noch nicht berichtet.

Die Beta 1 ist (wie man so schön sagt) “feature complete”, jetzt geht es nur noch darum, kleinere Fehler zu finden. Die größeren haben meine Betatester hoffentlich alle gefunden. An dieser Stelle nochmals vielen Dank an den kleinen (aber feinen!) Kreis, ohne euch würden die nächsten Wochen sicher sehr viel stressiger verlaufen. Ein großes Dankeschön auch an Alexandra, die sich mit dem Design der neuen hochauflösenden Icons für Windows Vista wieder exzellente Arbeit geleistet hat.

Visual Studio 2008 rockt

Am Wochenende habe ich die Beta 2 von Visual Studio 2008 installiert. Ich war gespannt, wie sie sich in der Praxis im Vergleich zu Visual Studio 2005 schlägt, und ob die gröbsten Probleme abgestellt sind, die mich bisher von einem Produktiveinsatz abgehalten haben.

Das Kompilieren von CRT und MFC (aufgrund der WinSxS-Hölle sowie eigener Anpassungen) lief zu meiner Überraschung ziemlich problemlos durch. Wenn ich mich recht erinnere, dann ist es wohl das erste Mal, dass alle zum Kompilieren der CRT benötigten Dateien auch vorhanden sind. Beim Öffnen von mit Visual Studio 2005 erstellten Arbeitsbereichen und Projekten führt ein Assistent durch die Konvertierung. Auf Wunsch werden Sicherungsdateien erstellt, denn Visual Studio 2005 kann die konvertierten Projekte nicht mehr öffnen.

Die Projekte von SpeedCommander 12 ließen sich ohne Probleme kompilieren. Die einzige Auffälligkeit waren vier selbst geschriebene Makros für Nachrichtenhandler, die nun bereits in der MFC enthalten sind. Der Compiler bemängelte die doppelte Definition, das Entfernen der eigenen Definition löste das Problem sehr schnell.

Beim ersten längeren Arbeiten mit der IDE bemerkt man eine spürbare Verbesserung der Geschwindigkeit im Vergleich zu 2005. Der Editor reagiert besser auf Eingaben und Einfügeoperationen per Makro, das Aktualisieren der IntelliSense-Datenbank läuft geschmeidig im Hintergrund. Auch das Kompilieren aller Projekte per Batchdatei läuft jetzt schneller ab.

Schon Visual Studio 2005 hat beim Erstellen von Projekten mehrere Prozessoren unterstützt, nicht voneinander abhängige Projekte wurden nebeneinander kompiliert. Ab sofort gibt es zudem noch die Möglichkeit, innerhalb eines Projektes mehrere Dateien gleichzeitig zu kompilieren. Der neue Schalter /MP sorgt dafür, dass entsprechend der Anzahl der vorhandenen Prozessoren mehrere cl.exe-Prozesse gestartet werden. Durch Hinzufügen eines Parameters von 1 bis 65536 lässt sich die automatische Erkennung auch umgehen und die Anzahl der gewünschten Prozesse explizit vorgeben. Vor der Verwendung von /MP muss jedoch die Option /Gm (Incremental Rebuild) deaktiviert werden, beide Optionen sind nicht miteinander kompatibel. Mit /MP werden laut Taskmanager beide Cores zu jeweils 100% ausgelastet, so dass sich ein QuadCore-Prozessor bald lohnen könnte.

Die Integration in Vista ist ebenfalls sehr gelungen. Alle Dateisymbole für die von Visual Studio verwendeten Dateitypen liegen in der Größe von 256×256 Punkten vor, worüber sich das Auge besonders bei Überschreibe- und Löschdialogen freut. Auch die Unterstützung von UAC funktioniert klasse. Für die Erstellung eines UAC-konformen Manifests gibt es den neuen Schalter /MANIFESTUAC, per Einstellungsseite lassen sich alle möglichen Elemente bequem anwählen:

Das mühsame Erstellen und Einbinden eines eigenen Manifests ist damit endlich Geschichte.

Visual Studio 2008 erkennt beim Debuggen ebenfalls, ob eine Anwendung erhöhte Rechte benötigt. In diesem Fall bietet es an, die aktuelle Umgebung zu sichern und sich automatisch mit erhöhten Rechten zu starten und die Debugsitzung durchzuführen:

Der Debugger selbst ist natürlich wieder ein Traum. Völlig überrascht hat mich, dass beim Debuggen einer optimierten Release-Version sämtliche Variablen komplett angezeigt wurden. Vom VC 6 war ich bisher anderes gewöhnt, aber der ist ja nun auch schon etwas älter. Wenn man im Thread-Fenster mit der Maus auf die jeweils ausgeführte Funktion zeigt, dann erscheint ein kleines InfoTip-Fenster mit dem kompletten Aufrufstack des Threads. Ein Doppelklick öffnet die entsprechende Quellcodedatei, man sieht damit sofort, wo der Thread gerade wartet. Möglicherweise war dies im Visual Studio 2005 aber auch schon so, die Win32-Versionen habe ich fast ausschließlich im VC 6 entwickelt.

Das Debuggen auf anderen Systemen läuft dank Remote-Debugger ganz einfach. Auf dem Zielsystem muss lediglich der Remote-Debugger installiert werden, die Installationsdatei befindet sich auf der VS 2008-DVD im Ordner “I:\Remote Debugger\x86″. Anschließend muss der Remote-Debugger nur noch in den Projekteigenschaften unter “Debugging” aktiviert werden. Nach Eingabe des Namens vom entfernten Rechner und der Zieldatei (diese muss vom entfernten Rechner erreichbar sein) kann es schon losgehen. Die Anwendung lässt sich so wunderbar in einer VM debuggen und man muss sein Entwicklungssystem so überhaupt nicht mehr verlassen.

Nun warte ich sehnsüchtig auf eine neue Version von Visual Assist, in den kommenden Wochen soll eine erste Beta erscheinen. Ohne VA wirken die Quelltexte leider wie grauer Einheitsbrei.

Und was machen die übrigen Punkte, die mich in Visual Studio 2005 gestört haben? Der Projektmappen-Explorer flickert immer noch, aber nicht mehr so stark wie in VS 2005. Der Aufklappstatus der Einträge wird leider immer noch gespeichert. An die etwas größere Fontdarstellung werde ich mich wohl gewöhnen müssen, ebenso an das fehlende WndTabs. Die Probleme mit dem Dialog- und Stringtabelleneditor sind gelöst, nur das einzeilige Eingabefeld stört noch etwas. Zur Not kann man längere Texte aber auch in einem externen Editor schreiben und anschließend in das Eingabefeld kopieren.

Für das leidige ClassWizard-Problem habe ich mir ein kleines Makro geschrieben, das die gröbsten Unannehmlichkeiten beseitigt. Mehr dazu aber in einem späteren Beitrag.

Nur noch ab Windows 2000

Ende März hatte ich im Anwenderforum eine Umfrage zum eingesetzten Betriebssystem gestartet. Bis heute haben 114 Anwender abgestimmt. Die überwiegende Mehrheit (knapp 87%) verwendet XP oder Vista, ein kleiner Teil (fast 10%) setzt noch Windows 2000 ein. Windows 9x/ME sowie NT 4.0 werden kaum noch genutzt, von den vier abgegebenen Stimmen gehören drei zum Kreis meiner Betatester.

Aufgrund der Umfrageergebnisse und der Tatsache, dass das kommende Visual Studio 2008 nur noch Anwendungen für Windows 2000 und höher erstellt, habe ich mich dazu entschlossen, die Unterstützung für Windows 9x/ME und NT 4.0 mit SpeedCommander 12 einzustellen. SpeedCommander 12 wird es nur noch als Unicode-Version geben, Mindestvoraussetzung für den Betrieb ist Windows 2000. Die selbstentpackenden Archive von SpeedCommander 12 funktionieren aber weiterhin unter Windows 9x/ME und NT 4.0.

Die Lauffähigkeit von SpeedCommander 11.62 unter Windows 9x/ME und NT 4.0 wird mit diesem Schritt natürlich nicht eingeschränkt, zukünftige Updates in der 11.x-Reihe wird es auch weiterhin für diese Systeme geben.

Konfigurierbare Statuszeile

Eine der größeren Neuerungen in SpeedCommander 12 ist die anpassbare Statuszeile unterhalb der Ordnerfenster. In den bisherigen Versionen waren die angezeigten Informationen fest vorgegeben, in SpeedCommander 12 kann sich nun jeder Anwender seine eigene Statuszeile zusammenbauen.

Die Statuszeile kann aus mehreren Sektionen bestehen, jede Sektion wird im Definitionsfeld durch eine eigene Zeile definiert. Der Anwender kann sich aus einer Vielzahl von Parametern die gewünschten aussuchen. Zudem können Sektionen ausgeblendet werden, wenn der jeweilige Wert in der Sektion gleich oder ungleich 0 ergibt.

Folgende Parameter können verwendet werden:

Einträge insgesamt
{td} Anzahl der Ordner
{tf} Anzahl der Dateien
{ti} Anzahl der Dateien und Ordner
{tba} Größe aller Einträge (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{tbb} Größe aller Einträge in Bytes
{tbk} Größe aller Einträge in KiB
{tmp3} Dauer aller Musik- und Videodateien (mp3, wav, avi, wmv)
Ausgewählte Einträge
{sd} Anzahl der markierten Ordner
{sf} Anzahl der markierten Dateien
{si} Anzahl der markierten Dateien und Ordner
{sba} Größe aller ausgewählten Einträge (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{sbb} Größe aller ausgewählten Einträge in Bytes
{sbk} Größe aller ausgewählten Einträge in KiB
{smp3} Dauer aller ausgewählten Musik- und Videodateien (mp3, wav, avi, wmv)
Versteckte Einträge
{hi} Anzahl der versteckten Einträge
{hba} Größe aller versteckten Einträge (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{hbb} Größe aller versteckten Einträge in Bytes
{hbk} Größe aller versteckten Einträge in KiB
Speicherplatz
{dta} Speicherplatz insgesamt (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{dtb} Speicherplatz insgesamt in Bytes
{dtk} Speicherplatz insgesamt in KiB
{dfa} Freier Speicherplatz (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{dfb} Freier Speicherplatz in Bytes
{dfk} Freier Speicherblatz in KiB
{dua} Belegter Speicherplatz (automatische Anzeige in Bytes, KiB, MiB, GiB und TiB)
{dub} Belegter Speicherplatz in Bytes
{duk} Belegter Speicherplatz in KiB
{pf} Freier Speicherplatz in Prozent
{pu} Belegter Speicherplatz in Prozent
Sonstiges
{fs} Ordnerfenster werden synchronisiert (*)
{fi} Aktueller Dateifilter
{ci} Index des aktuellen Eintrags
Formatierung
{widthXX} Vorgabe einer festen Breite für die Sektion, wobei XX für die Breite in Punkten steht
{pad} Sektion auf XX% der Gesamtbreite vergrößern ({padXX})
{rpad} Sektion auf XX% der restlichen Breite vergrößern ({rpadXX})
{fmtr} Text in der Sektion rechtsbündig anzeigen
{fmtc} Text in der Sektion zentriert anzeigen
{fmtnb} Keine Anzeige des rechten Sektionsrandes
{h!} Text oder Sektion ausblenden, wenn der erste Wert 0 ergibt
{h?} Text oder Sektion ausblenden, wenn der erste Wert nicht 0 ergibt
{h:} Text oder Sektion ausblenden, der Ordner nicht zum regulären Dateisystem (lokales Laufwerk bzw. UNC-Ordner) gehört

Aufgrund der Vielzahl von möglichen Platzhaltern kann der Aufbau einer Vorlage recht komplex werden. Die vordefinierte Standardvorlage besteht aus vier Sektionen und sieht wie folgt aus:

{rpad}{sd}/{td} Ordner, {sf}/{tf} Dateien markiert{h!} ({hi} versteckte Einträge){h!}{h!} ({sbb} Bytes){h!}
{h!}{fi}{h!}
{h:}{pu}% belegt, {dfa} verfügbar{fmtnb}{h:}
{h!}{fs}{h!}

Das am Anfang stehende {rpad} legt fest, dass der nach der Anzeige aller Einträge noch freie Platz mit der ersten Sektion aufgefüllt wird. Die vier nachfolgenden Platzhalter zeigen die markierten sowie insgesamt vorhandenen Dateien und Ordner. Anschließend wird die Anzahl der versteckten Einträge angezeigt, aber auch nur, wenn mindestens ein versteckter Eintrag vorhanden ist. Dies wird durch den Platzhalter {h!} erreicht. Ist der erste nachfolgende Wert {hi} 0, dann wird der Text bis zum abschließenden {h!} ausgeblendet. Ist {hi} dagegen größer als 0, dann wird der Text abzüglich der beiden Platzhalter {h!} angezeigt. Das gleiche gilt für die nachfolgende Anzeige der Größe der markierten Dateien und Ordner.

In der zweiten Sektion wird der Name eines gewählten Filters angezeigt. Ist kein Filter aktiv, dann wird auch kein Filtername angezeigt. Da die gesamte Sektion nur aus dem Filternamen besteht, wird sie gänzlich ausgeblendet, sofern kein Filter aktiv ist.

Die dritte Sektion zeigt den verfügbaren Speicherplatz auf dem aktuellen Laufwerk sowie den prozentual belegten Anteil an. Durch {h:} wird festgelegt, dass diese Sektion nur bei einem lokalen bzw. Netzwerklaufwerk oder bei einem UNC-Ordner im Netzwerkbereich angezeigt wird.

In der vierten Sektion wird angezeigt, ob die Ordnersynchronisierung aktiviert ist. Bei aktivierter Ordnersynchronisierung wird das aus früheren SpeedCommander-Versionen bekannte *-Symbol angezeigt. Ist die Ordnersynchronisierung deaktiviert, dann wird die Sektion ausgeblendet.

Zusätzlich zur anpassbaren Statuszeilenvorlage gibt es noch einen Ministatus, dessen Aufbau nicht konfigurierbar ist. Der Ministatus besteht aus Name, Größe und Datum der letzten Änderung und kann automatisch angezeigt werden, wenn nur ein Element gewählt bzw. im NC-Auswahlmodus fokussiert ist. Die Anzeige des Ministatus kann zudem auch per Tastatur (Strg+Umschalt+L) ausgelöst bzw. deaktiviert werden.

Musikliebhaber werden sich sicher über die Parameter {tmp3} und {smp3} freuen. Damit lassen sich die Zeiten aller bzw. mehrerer MP3-Dateien aufaddiert in der Statuszeile anzeigen. Da die Statuszeile bei jeder Auswahländerung aktualisiert wird, erfolgt die Berechnung der Spielzeiten im Hintergrund. Zudem werden bereits ermittelte Zeiten pro Ordnerfenster zwischengespeichert.

Freigegebene Ordner

Beim Löschen von freigegebenen Ordnern mit SpeedCommander bleiben die Freigaben leider erhalten, da vor dem Löschen nicht geprüft wird, ob der Ordner für andere Benutzer freigegeben ist. Der Explorer zeigt hingegen vor dem Löschen eines freigegebenen Ordners einen Hinweisdialog an und entfernt die Freigabe automatisch.

SpeedCommander 12 passt sich nun dem Verhalten vom Explorer an und zeigt ebenfalls einen Hinweisdialog:

Löschen eines freigegebenen Ordners

Neu ist zudem auch die automatische Aktualisierung des Dateisymbols, wenn ein Ordner freigegeben bzw. wenn die Freigabe beendet wird. Bis einschließlich SpeedCommander 11 erfolgte die Aktualisierung erst nach dem manuellen Neueinlesen des Ordners.

Beim Testen dieser Funktion ist mir aufgefallen, dass die Anzeige von Freigaben bis einschließlich Windows XP für eingeschränkte Benutzer nicht funktioniert. Die entsprechenden Netzwerkfunktionen geben lediglich den Fehlercode “Zugriff verweigert” zurück. In Vista wurde dieses Verhalten korrigiert, hier klappt die Anzeige auch für eingeschränkte Benutzer. Gleichwohl benötigt man für die Erstellung bzw. das  Löschen von Freigaben aber Administratorrechte. Bei eingeschränkten Benutzern bittet SpeedCommander daher über die Benutzerkontensteuerung um Bestätigung.

Vista-Sicherheit erklärt

Wer meinen Anfang des Jahres erschienenen Artikel zur Benutzerkontensteuerung in Vista verpasst hat, der hat jetzt noch einmal die Möglichkeit zur Nachlese. Im aktuellen c’t spezial Security ist der Artikel “Fensterwächter” erneut abgedruckt. Dazu gibt es natürlich auch noch weitere sehr interessante Artikel. Also schnell zugreifen, solange das Heft noch nicht ausverkauft ist.