Komfortabler Dateimanager mit vielen Funktionen

SpeedCommander 14.60

By Sven on 21.05.2013 - 10:14 in SpeedCommander 14

Das sechste Update zu SpeedCommander 14 ist fertiggestellt und kann heruntergeladen werden. Zum Erstellen von SpeedCommander 14.60 verwende ich nun den Compiler von Visual Studio 2012 (Update 2). MFC und CRT basieren wie in SpeedCommander 14.50 auf Visual Studio 2012 (Update 1). Auf einigen wenigen XP-Systemen scheint der Compiler von Visual Studio 2012 Probleme zu bereiten. Das Installationsprogramm bricht hier mit einem Fehler ab und SpeedCommander lässt sich nicht starten. Die genaue Ursache konnte ich leider noch nicht herausfinden. Davon betroffene Anwender müssen auf die Version 14.40 zurückgehen.

Im Einstellungsdialog kann auf der Seite Spezielles die für die Anzeige des Untermenüs Freigeben für nötige zusätzliche Initialisierung des Hintergrund-Kontextmenüs deaktiviert werden. Dafür muss in der Sektion [ShellContextMenu] der Eintrag BackgroundInit auf Nein gesetzt werden. Möglicherweise haben einige Kontextmenü-Erweiterungen unter Windows 8 mit der zusätzlichen Initialisierung Probleme.

Zudem werden in der neuen Version Fehler behoben, die sich in SpeedCommander 14.50 mit den Umstellungsarbeiten auf Visual Studio 2012 eingeschlichen hatten.

Es gibt 2 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. Sven sagt:

    Danke für den Hinweis, aber dieser spezielle Fall liegt nicht am Update 2. Das Problem mit dem fehlenden Export hatte ich erst auch, aber dies ließ sich durch das Ersetzen der atlsxxx.libs durch die vom Update 1 beheben. Die Abstürze unter XP traten auch schon in der Version 14.50 auf, die mit Update 1 erstellt wurde.

    Ich habe das Installationsprogramm mit MessageBox-Aufrufen versehen und mich mit Hilfe eines betroffenen Anwenders zur Absturzstelle vorgetastet. In Zeile 16 des Snippets stürzt das Installationsprogramm ab. Wird der Block 16-23 auskommentiert, dann gibt es keinen Absturz. Mir ist auch unklar, warum das nur auf einer handvoll XP-Systemen auftritt und nicht auf jedem.

    _COM_SMARTPTR_TYPEDEF(IShellLink, __uuidof(IShellLink));
    _COM_SMARTPTR_TYPEDEF(IPropertyStore, __uuidof(IPropertyStore));
    ...
    ...
    // ShellLink erstellen
    IShellLinkPtr pShellLink = NULL; HRESULT hResult = NOERROR;
    if (FAILED(hResult = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pShellLink))))
    	return FALSE;
    ...
    ...
    // AppID ist vorhanden
    if (NULL != pszAppID)
    {
    	// Interface zu IPropertyStore abfragen
    	IPropertyStorePtr pPopertyStore; PROPVARIANT pv = { 0 };
    	if (SUCCEEDED(hResult = pShellLink->QueryInterface(IID_PPV_ARGS(&pPopertyStore))))
    	{
    		// Wert setzen und Aenderungen uebernehmen
    		if (SUCCEEDED(hResult = pPopertyStore->GetValue(PKEY_AppUserModel_ID, &pv)) && pv.vt == VT_LPWSTR)
    		{
    			STR_VERIFY(StringCchCopyW(pszAppID, MAX_PATH, pv.pwszVal));
    		}
    	}
    }
    
Top