[Bug 30385] New: Windows Live Essentials 2011 web installer fails to download packages in background (shell32.SHGetKnownFolderPath missing support for KF_FLAG_DEFAULT_PATH)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 8 11:49:49 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=30385

             Bug #: 30385
           Summary: Windows Live Essentials 2011 web installer fails to
                    download packages in background
                    (shell32.SHGetKnownFolderPath missing support for
                    KF_FLAG_DEFAULT_PATH)
           Product: Wine
           Version: 1.5.1
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: shell32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net
    Classification: Unclassified


Hello,

installer log file:

--- snip ---
...
Downloader     :00000029 (04/08/2012 17:22:39.783) Manager is removing file
transfer "Bingbar" from the queue.
PkgDownload    :00000028 (04/08/2012 17:22:39.783) Download of 'Bingbar'
finished successfully.
Downloader     :00000028 (04/08/2012 17:22:39.783) Completing Request
"Bingbar".
Cert           :00000028 (04/08/2012 17:22:39.834) Verifying signature of
file=[C:\users\Public\Application Data\Microsoft\WLSetup\wlt6449.tmp]...
Cert           :00000028 (04/08/2012 17:22:39.865) Verifying signature of
file=[C:\users\Public\Application Data\Microsoft\WLSetup\wlt6449.tmp]...
!ERROR!        :00000028 (04/08/2012 17:22:40) SOURCE=Decomp, CODE=0x80070057
Leaving ExtractCabFileOutOfXSFile()
!ERROR!        :00000028 (04/08/2012 17:22:40) SOURCE=Decomp, CODE=0x80070057
Leaving ExtractCabFileOutOfXSCabFile()
SecureCache    :00000028 (04/08/2012 17:22:40.013) AddPackage(): Deleting file
'C:\users\Public\Application Data\Microsoft\WLSetup\wlt6449.tmp'
!ERROR!        :00000028 (04/08/2012 17:22:40) SOURCE=SecureCache,
CODE=0x80070057 Leaving AddPackage()
!ERROR!        :00000028 (04/08/2012 17:22:40) SOURCE=PkgDownload,
CODE=0x80070057 leaving AddPackageToCache
!ERROR!        :00000028 (04/08/2012 17:22:40) SOURCE=PkgDownload,
CODE=0x80070057 Download 'Bingbar' completed with an error
(OnDownloadFinished), _fBackground=0
Task           :00000028 (04/08/2012 17:22:40.030) Task(00642F88) ignoring
failure 0x80070057 for this task
TaskThread     :00000028 (04/08/2012 17:22:40.030) TaskThread(00581D38):
Incrementing task completed counter for 'OnTaskComplete', Task(00642F88)
PackageDownloadTask Bingbar
TaskThread     :00000028 (04/08/2012 17:22:40.030) TaskThread(00581D38):
OnTaskComplete() releasing semaphore for Task(00642F88) PackageDownloadTask
Bingbar
Task           :00000028 (04/08/2012 17:22:40.040) Task(00642F88) completed
result=0x1
Engine         :0000002E (04/08/2012 17:22:40.040) Overall result = 0x40690
PkgDownload    :00000028 (04/08/2012 17:22:40.040) ETW: TraceDownloadState_End
- Bing Bar
...
--- snip ---

The reason is this trace log part:

--- snip ---
002b:Call shell32.SHGetKnownFolderPath(004220f0,00008400,00000000,014ad984)
ret=004567ca
002b:fixme:shell:SHGetKnownFolderPath flags 0x00008400 not supported
002b:Ret  shell32.SHGetKnownFolderPath() retval=80070057 ret=004567ca
002b:Call shlwapi.PathFileExistsW(00000000) ret=00456e58
002b:Ret  shlwapi.PathFileExistsW() retval=00000000 ret=00456e58 
...
--- snip ---

0x8400 = KF_FLAG_CREATE | KF_FLAG_DEFAULT_PATH

Wine doesn't support KF_FLAG_DEFAULT_PATH hence SHGetKnownFolderPath() failure
causes downloaded temp files to get deleted again.

MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd378447%28v=vs.85%29.aspx

Source:
http://source.winehq.org/git/wine.git/blob/798beb2cb8d07cd76494cd878ecef711ca969d92:/dlls/shell32/shellpath.c#l3036

--- snip ---
3036 HRESULT WINAPI SHGetKnownFolderPath(REFKNOWNFOLDERID rfid, DWORD flags,
HANDLE token, PWSTR *path)
3037 {
3038     HRESULT hr;
3039     WCHAR folder[MAX_PATH];
3040     int index = csidl_from_id( rfid );
3041 
3042     TRACE("%s, 0x%08x, %p, %p\n", debugstr_guid(rfid), flags, token,
path);
3043 
3044     *path = NULL;
3045 
3046     if (index < 0)
3047         return HRESULT_FROM_WIN32( ERROR_FILE_NOT_FOUND );
3048 
3049     if (flags & KF_FLAG_CREATE)
3050         index |= CSIDL_FLAG_CREATE;
3051 
3052     if (flags & KF_FLAG_DONT_VERIFY)
3053         index |= CSIDL_FLAG_DONT_VERIFY;
3054 
3055     if (flags & KF_FLAG_NO_ALIAS)
3056         index |= CSIDL_FLAG_NO_ALIAS;
3057 
3058     if (flags & KF_FLAG_INIT)
3059         index |= CSIDL_FLAG_PER_USER_INIT;
3060 
3061     if (flags &
~(KF_FLAG_CREATE|KF_FLAG_DONT_VERIFY|KF_FLAG_NO_ALIAS|KF_FLAG_INIT))
3062     {
3063         FIXME("flags 0x%08x not supported\n", flags);
3064         return E_INVALIDARG;
3065     }
3066 
3067     hr = SHGetFolderPathW( NULL, index, token, 0, folder );
3068     if (SUCCEEDED(hr))
3069     {
3070         *path = CoTaskMemAlloc( (strlenW( folder ) + 1) * sizeof(WCHAR) );
3071         if (!*path)
3072             return E_OUTOFMEMORY;
3073         strcpyW( *path, folder );
3074     }
3075     return hr;
3076 }
--- snip ---

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list