Ab sofort könnt ihr euch die finale Version von SpeedCommander 13.30 herunterladen. Auf Vorschlag von widestone habe ich die Beschriftung für die Ordnerfenster auf den Registerkarten noch einmal erweitert. Nun können neben dem Laufwerksbuchstaben und dem Ordnernamen auch noch beide in Kombination angezeigt werden. Die entsprechende Option befindet sich im Einstellungsdialog auf der Seite Verhalten – Registerkarten. Die anderen Neuerungen hatte ich ja schon beim Erscheinen der Betaversion beschrieben.
Startbildschirme von SpeedCommander 13
Mit dem Startbildschirm von SpeedCommander 13 wurde der Komet in den wohlverdienten Ruhestand versetzt und durch das mit SpeedCommander 11 eingeführte Programmsymbol ersetzt. In der nicht-öffentlichen Betaversion vermutet ein kleines Pac-Man Symbol im großen C seine Mami:
Diese Komposition wurde auch in der öffentlichen Betaversion beibehalten:
Der Startbildschirm der finalen Version ist für mich der schönste bisher:
Eine spezielle Version für den Veröffentlichungskandidaten kam leider nicht zum Einsatz, sie soll hier aber nicht unerwähnt bleiben:
SpeedCommander 13 erschien Ende Oktober 2009, kurz nach der Veröffentlichung von Windows 7.
Damit endet die Serie der Startbildschirme von SpeedCommander. Ich hoffe, dass der eine oder andere etwas Spaß daran hatte.
Startbildschirme von SpeedCommander 12
Langsam kommen wir zum Ende der Startbildschirm-Galerie. Bei der nicht-öffentlichen Betaversion von SpeedCommander 12 verwandelte sich der Komet in einen Todesstern:
Mit der öffentlichen Betaversion wurde der Komet erneut überarbeitet:
Bei der endgültigen Version gab es nur noch kleine Änderungen im Textlayout:
SpeedCommander 12 erschien im Oktober 2007.
K32GetModuleFileNameExW wird nicht gefunden
Nach der Umstellung vom Windows SDK für Vista auf das von Windows 7 zeigte das Installationsprogramm von SpeedCommander unter Windows XP und Vista beim Start plötzlich folgende Meldung an:
—————————
setup.exe – Einsprungpunkt nicht gefunden
—————————
Der Prozedureinsprungpunkt “K32GetModuleFileNameExW” wurde in der DLL “KERNEL32.dll” nicht gefunden.
—————————
OK
—————————
Der Grund dafür ist, dass mit Windows 7 alle Funktionen der PSAPI.DLL in den Kernel gewandert sind. Wenn man nun für Windows 7 kompiliert, dann werden alle Funktionsnamen auf die entsprechenden Kernelfunktionen gemappt. Die Implementierung findet man in der psapi.h:
// // Give teams a choice of using a downlevel version of psapi.h for an OS versions. // Teams can set C_DEFINES=$(C_DEFINES) -DPSAPI_VERSION=1 for downlevel psapi // on windows 7 and higher. We found that test code needs this capability. // #ifndef PSAPI_VERSION #if (NTDDI_VERSION >= NTDDI_WIN7) #define PSAPI_VERSION 2 #else #define PSAPI_VERSION 1 #endif #endif #if (PSAPI_VERSION > 1) #define EnumProcesses K32EnumProcesses #define EnumProcessModules K32EnumProcessModules #define EnumProcessModulesEx K32EnumProcessModulesEx #define GetModuleBaseNameA K32GetModuleBaseNameA #define GetModuleBaseNameW K32GetModuleBaseNameW #define GetModuleFileNameExA K32GetModuleFileNameExA #define GetModuleFileNameExW K32GetModuleFileNameExW ...... #endif
Die Kernelfunktionen existieren aber nur ab Windows 7. Auf älteren Systemen können sie beim Programmstart nicht aufgelöst werden und es erfolgt eine Fehlermeldung.
Zur Abhilfe definiert man einfach vor dem Einbinden der psapi.h den entsprechenden Kompatibilitätsschalter:
#define PSAPI_VERSION 1
Nun werden die Funktionen nicht mehr gemappt und wie bisher gewohnt in der PSAPI.DLL gesucht.
SpeedCommander 13.30.6165 (Beta)
Mit SpeedCommander 13.30 gibt es einige Änderungen hinter den Kulissen. Die wohl größte ist die Umstellung auf die CRT/MFC sowie den Compiler/Linker von Visual Studio 2010. Dazu wurden die Komponenten Scintilla, OpenSSL und UnRar auf die aktuellen Versionen aktualisiert.
In den Registerkarten können nun auf Wunsch nur die Laufwerksbezeichner anstatt der Ordnernamen angezeigt werden. Durch einen Doppelklick in den freien Bereich wird eine neue Registerkarte erstellt. Beim Kopieren von Dateien größer als 4 GiB auf einen FAT32-Datenträger erscheint nun eine aussagekräftigere Fehlermeldung.
Mit SpeedCommander 13.00 wurden die Dateien beim Doppelklick in der Listenansicht mit Hilfe des Kontextmenüs gestartet. Dazu wurde mit den markierten Dateien ein Kontextmenüobjekt initialisiert und mit dessen Methoden die Dateien geöffnet. Seitdem war auf meinem System aber zu beobachten, dass beim Öffnen von Mediendateien mit dem Media Player ab und zu mal die Meldung Starten des Servers fehlgeschlagen angezeigt wurde, die ich in den vorherigen Versionen nie zu sehen bekam. Aus diesem Grund öffnet SpeedCommander 13.30 die Dateien wieder mit der bewährten Windows-Funktion ShellExecuteEx. Über einen Schalter in der SpeedCommander.ini lässt sich die gewünschte Methode anpassen:
[FolderWndShell] OpenWithContextMenu=0
0 ist Standard und steht für ShellExecuteEx, mit 1 werden die Kontextmenü-Methoden verwendet.
Dazu gibt es noch einen Schalter, mit dem sich die Verzögerung bei der Anzeige des InfoTip-Fensters beim Überfahren der Laufwerkssymbole mit der Maus einstellen lässt. In den ersten Betaversionen von SpeedCommander 13.00 gab es unter Umständen kleine Hänger, wenn der Mauszeiger bei der Laufwerksauswahl eine kurze Zeit über einem Netzlaufwerk verweilte und die Anzeige der Speicherplatzanzeige für die Laufwerkssymbole aktiviert ist. Mit dem folgenden Schalter lässt sich der Mindestaufenthalt des Mauszeigers über einem Laufwerkssymbol nun anpassen:
[DriveWnd] InfoTipDelayInitial=0
Mit dem Wert 0 wird die in Windows eingestellte Verzögerung für die Anzeige von InfoTips verwendet, ansonsten erfolgt die Angabe in Millisekunden. Der Wert 2000 bedeutet also, dass man mit dem Mauszeiger zwei Sekunden über einem Laufwerkssymbol verweilen muss, damit das InfoTip-Fenster angezeigt wird.
Startbildschirme von SpeedCommander 11
Bei SpeedCommander 11 gab es erstmals einen eigenen Startbildschirm für die Betaversion:
Mit dem Startbildschirm für die finale Version erfolgte ein Schwenk von einem dunklen zu einem hellen Hintergrund. Auch der Komet wurde grundlegend überarbeitet:
Für die an Windows Vista angepasste Version 11.5 gab es dann noch einen aktualisierten Startbildschirm, wobei das .V sowie das Vista-Logo im Kometen an Vista erinnern sollten:
SpeedCommander 11 erschien im Oktober 2005 als 32-bit und 64-bit Version. Ab SpeedCommander 11.1 gab es dann auch eine Version für U3-Sticks. Die Version 11.5 wurde im Oktober 2006 veröffentlicht.
Hintergrundbilder für SpeedCommander 13
Alexandra hat einige Hintergrundbilder für SpeedCommander 13 erstellt. Pro Auflösung gibt es eine helle und dunkle Version, jeweils mit einem farbigen und einem monochromen Linseneffekt:
Die entsprechend der Auflösung geschnürten Pakete findet ihr im Download-Bereich.
Startbildschirm von SpeedCommander 10
Nach einer kurzen Pause geht es heute weiter mit dem Startbildschirm von SpeedCommander 10. Im Vergleich zum Startbildschirm von SpeedCommander 9 wurde der Komet etwas überarbeitet:
SpeedCommander 10 erschien im Januar 2004.
Visual Studio 2010 kurz getestet
Nun hat die Neugier doch gesiegt und ich habe auf meinem Entwicklungsrechner Visual Studio 2010 installiert. Man kann sich ja nur mit ein paar gesammelten Erfahrungen für oder gegen eine Sache entscheiden.
Bei der Installation gab es nichts zu bemängeln, alles lief sauber durch. Auch die AddIns Visual Assist und Tabs Studio waren schnell eingerichtet. Auf Tabs Studio bin ich über einen Pingback zum EasyTabs-Beitrag gestoßen. Tabs Studio bietet die wichtigsten Funktionen von EasyTabs. Etwas nachteilig ist lediglich, dass die Leiste nicht auch unten angeordnet werden kann. Aber daran könnte man sich sicher gewöhnen.
Große Ernüchterung brachte der Aufruf der Online-Hilfe, zu der Martin schon einen treffenden Beitrag geschrieben hat. Keine Ahnung, was Microsoft sich da wieder mal gedacht hat, wenn überhaupt. Alles läuft im Browser ab und somit natürlich auch außerhalb der IDE. Vermutlich verwenden bei Microsoft alle Entwickler mehrere Bildschirme und müssen nie in der Hilfe suchen.
Bei der Anpassung von Menüs und Symbolleisten geht Microsoft neue innovative Wege. Symbolleisten können per Maus nur noch an der jeweiligen Andockposition hin- und hergeschoben werden. Das Wechseln der Positionen (z.B. vom oberen Fensterrand an den unteren) ist nur noch per Dialog möglich. Aber auch das Hinzufügen, Entfernen oder Verschieben von Symbolen oder Menüeinträgen funktioniert nur noch über ein Dialogfenster. Die Maus ist immerhin noch dafür da, die entsprechenden Schaltflächen im Dialog anzuklicken. Ich bin gespannt, ob sich dieses neue Bedienkonzept auch in anderen Anwendungen durchsetzt.
Über die Darstellungsqualität des Texteditors kann ich mich nicht beklagen. Alles wird sauber dargestellt, auch ohne die ClearType-Einstellungen anpassen zu müssen. Erheblich verschlechtert hat sich aber leider wieder einmal die Makro-Performance. Ich habe mir schon zu VC6-Zeiten ein paar Makros geschrieben, die auf Knopfdruck diverse Kommentarblöcke in Quelltextdateien einfügen. Im VC6-Editor waren die Blöcke quasi schon eingefügt, wenn man das jeweilige Tastenkürzel losgelassen hat. Der Editor von Visual Studio 2008 brauchte für die gleiche Aktion schon etwas über zwei Sekunden, was aber von Visual Studio 2010 mit über sechs Sekunden locker übertroffen wird.
Aufgrund der fensterlosen WPF-Oberfläche ist das Scrollen eines inaktiven Fensters per Mausrad mit Hilfe von KatMouse nicht mehr möglich. Man muss immer erst in das Fenster klicken, welches man durchblättern möchte. Die Bearbeitung der globalen VC-Verzeichnisse für Header- oder Bibliotheksdateien im Einstellungsdialog wurde wegen der Umstellung auf das MSBuild-System abgeschafft, stattdessen muss man diese nun in den Eigenschaftsseiten eines Projekts bearbeiten. Dazu wählt man im Menü Ansicht den Eigenschaften-Manager und öffnet jeweils eine Win32- und x64-Konfiguration:
Über den Befehl Eigenschaften des Kontextmenüs öffnet man den Einstellungsdialog und kann nun die Verzeichnisse anpassen:
Die aktualisierten Eigenschaften-Dateien werden in den lokalen Eigenschaften des Benutzers (C:\Users\<Benutzername>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props bzw. Microsoft.Cpp.x64.user.props) abgelegt.
Zu dieser offiziellen Methode gibt es noch eine Alternative, mit der man die VC-Verzeichnisse systemglobal für alle Anwender ändern kann. Dazu öffnet man die beiden Dateien C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v100\Microsoft.Cpp.Win32.v100.props und C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets\v100\Microsoft.Cpp.x64.v100.props und editiert die Pfade direkt. SpeedEdit kann auch Dateien in UAC-geschützten Verzeichnissen bearbeiten, bei Verwendung eines anderen Editors muss man die Dateien vor der Änderung erst in ein UAC-freies Verzeichnis kopieren und anschließend wieder zurückspielen.
Eine Konstante beim Erscheinen einer neuen Visual Studio-Version ist die Umstellung auf neue Projekt- und Arbeitsbereichsdateien. Die Konvertierung geschieht automatisch beim Öffnen eines alten Projekts oder eines Arbeitsbereichs. Dabei kann es passieren, dass Meldungen mit der Kennung MSB8012 angezeigt werden:
MSB8012: $(TargetName) (‘CxArj’) does not match the Linker’s OutputFile property value ‘..\..\lib\CxArj61u.dll’ (‘CxArj61u’) in project configuration ‘Release|Win32′. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetName) property value matches the value specified in %(Link.OutputFile).
MSB8012: $(TargetPath) (‘D:\Visual C++\Dev\Libraries\CxArchiver\CxArj\.\objs\Release\CxArj.dll’) does not match the Linker’s OutputFile property value ‘..\..\lib\CxArj61u.dll’ (‘D:\Visual C++\Dev\lib\CxArj61u.dll’) in project configuration ‘Release|Win32′. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Link.OutputFile).
Das passiert, wenn im Projekt eine Ausgabedatei festgelegt wird, die sich vom Projektnamen selbst unterscheidet oder der Ausgabepfad für die Datei nicht dem eingestellten Ausgabeverzeichnis für das Projekt entspricht. Ich vermute mal, dass dieses gar nicht mal so selten vorkommt, da Zieldateien in der Debugversion häufig durch ein abschließendes “d” bzw. bei Erstellung von Ansi-/Unicode-Projekten durch ein zusätzliches “u” für die Unicode-Variante gekennzeichnet werden. Bei mir ist es z.B. so, dass alle Dlls in einem gemeinsamen Zielverzeichnis erstellt werden. Da ich aber nicht möchte, dass sich in diesem Verzeichnis auch alle .exp- und .lib-Dateien dieser Dlls tummeln, unterscheidet sich das Ausgabeverzeichnis des Projekts vom Zielverzeichnis der Dlls.
Die gleichen Warnungen werden anschließend auch beim Erstellen des Projekts angezeigt. Zur Auflösung des Konflikts wird empfohlen, den Projektnamen in den allgemeinen Konfigurationseigenschaften anzupassen. In Visual Studio 2010 gibt es dafür ein neues Feld für die Anpassung von $(TargetName). Allerdings muss man diese Änderung dann auch für alle Projekte in allen Konfigurationen durchführen. Wer also 100 Projekte mit jeweils vier Konfigurationen hat (Release/Debug für Win32/x64), darf unter Umständen 400x mal den Zielnamen anpassen, wenn der Name der Ausgabedatei nicht dem Projektnamen entspricht.
Allerdings ist es mir nicht gelungen, die zweite Warnung zum $(TargetPath) abzustellen, ohne das Ausgabeverzeichnis dem Zielverzeichnis gleichzusetzen. Fans der Holzhammer-Methode öffnen einfach die Datei C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets und entfernen in Zeile 982 den Text DoLinkOutputFilesMatch. Nachteilig ist dabei aber, dass die Variable $(TargetPath) dann nicht mehr der tatsächlichen Ausgabedatei entspricht, sondern stattdessen auf das in den Projekteigenschaften definierte Ausgabeverzeichnis zeigt. Wichtig ist das bei selbstdefinierten Build-Ereignissen, die man entsprechend anpassen muss, wenn man die Zieldatei nicht im Ausgabeverzeichnis ablegen möchte.
Nach der Konvertierung eines Arbeitsbereichs kann dieser mit Visual Studio 2008 nicht mehr geöffnet werden, wenigstens wird eine Sicherungsdatei angelegt. Will man mit beiden Versionen weiterarbeiten, dann muss man Arbeitsbereiche und Projektdateien doppelt pflegen. Vorsicht aber beim Einchecken in den TFS, da alle alten Projektdateien nach der Konvertierung automatisch aus der Quellcodeverwaltung gelöscht werden.
Mir persönlich fällt es sehr schwer, wesentliche Gründe zu finden, die für einen Umstieg auf Visual Studio 2010 sprechen. .NET 4 brauche ich nicht, die Hilfe-Funktion ist praktisch nicht mehr vorhanden und der neue historische Debugger funktioniert sowieso nur mit .NET-Code. Das erheblich verbesserte IntelliSense bringt mir auch keine Vorteile, da Visual Assist hier schon seit Jahren um Klassen besser ist. Die für einen C++-Entwickler wichtigen Neuerungen (Compiler, C/C++-Laufzeit und MFC) lassen sich zudem sehr einfach in Visual Studio 2008 einbinden.
Fazit: Bis zum Erscheinen von Visual Studio 2012 geht es erst einmal mit Visual Studio 2008 R2 weiter.
Aktualisierung auf TFS 2010
Ich habe lange überlegt, ob ich den Team Foundation Server auf die neue Version aktualisiere. Aufgrund meines vorläufigen Verbleibs bei Visual Studio 2008 R2 ist das Upgrade eigentlich nicht notwendig. Allerdings versprühen die geringeren Softwareanforderungen einen gewissen Charme. Für die Installation von TFS 2008 war eine Windows-Serverversion notwendig, dazu kamen noch ein SQL-Server mit Berichts- und Analysefunktion sowie SharePoint. Das SP1 ließ sich nur einspielen, wenn der TFS-Server an einen Domänencontroller angemeldet war, allerdings durfte er selbst nicht auf einem solchen installiert werden. Ich musste also temporär einen Domänencontroller in einer VM installieren und vor dem SP1-Update den Server in die Domäne einklinken. Nach dem Update konnte die Verbindung wieder gelöst werden. Einfach sieht anders aus.
TFS 2010 ist hier deutlich anspruchsloser. Er lässt sich auch auf einem Client-Betriebssystem installieren und begnügt sich mit der Express-Variante vom SQL Server. Diese wird auf Wunsch auch während der Einrichtung des TFS installiert, einfacher geht es nicht. Zudem reizte mich auch eine Aktualisierung des Betriebssystems auf Windows 7 oder Windows Server 2008 R2, die eine bessere Zusammenarbeit mit Windows 7-Clients versprechen. TFS 2008 läuft bei mir noch auf einem Windows Server 2003 R2.
Die Festplatte meines Servers enthält bereits zwei primäre Partitionen mit jeweils 30 GB, einer testweisen Aktualisierung stand also nichts im Weg. Nach der Sicherung der aktuellen TFS-Datenbanken mit DBSave wurde auf der freien Partition Windows Server 2008 R2 eingespielt, anschließend folgte noch der gerade veröffentlichte SQL Server 2008 R2 sowie der TFS 2010. Nach der Rücksicherung der Datenbanken wurde TFS 2010 mit Hilfe der Team Foundation-Administratorkonsole über die Upgradefunktion eingerichtet:
Berichtsfunktion und SharePoint habe ich deaktiviert, da die beiden Sachen in den letzten zwei Jahren kaum bzw. gar nicht benötigt wurden. Wer mag, der kann im achten Schritt noch den vorgegebenen Namen für die Standardkollektion ändern, dies ist später nicht mehr möglich.
Auf dem letzten Screenshot ist zu sehen, dass bei der Installation auch gleich der Webzugriff eingerichtet wurde. Dafür musste im TFS 2008 noch eine zusätzliche Software eingespielt werden.
Anwender von Visual Studio 2008 müssen nun noch das Update für die Aufwärtskompatibilität von Visual Studio Team System 2008 Service Pack 1 mit Team Foundation Server 2010 installieren. Beim Verbinden mit einem TFS 2010-Server muss im Verbindungsdialog die vollständige Adresse http://server:8080/tfs angegeben werden.
Ein kleines Problem hatte ich mit dem alten Arbeitsbereich, der zwar übernommen aber in Visual Studio 2008 nicht erkannt wurde. Löschen und Neuanlegen schafften Abhilfe. An dieser Stelle noch der Hinweis, dass man zur Sicherheit vor der Aktualisierung möglichst alle Dateien einchecken sollte.






























