Commit 477702c8 authored by David Hedberg's avatar David Hedberg Committed by Alexandre Julliard

msi: Check other sources if install media not present at last used location.

parent 599b3083
...@@ -748,23 +748,44 @@ static UINT find_published_source(MSIPACKAGE *package, MSIMEDIAINFO *mi) ...@@ -748,23 +748,44 @@ static UINT find_published_source(MSIPACKAGE *package, MSIMEDIAINFO *mi)
if (r != ERROR_SUCCESS) if (r != ERROR_SUCCESS)
return r; return r;
index = 0;
volumesz = MAX_PATH;
promptsz = MAX_PATH;
if (last_type[0] == 'n') if (last_type[0] == 'n')
{ {
while (MsiSourceListEnumSourcesW(package->ProductCode, NULL, WCHAR cabinet_file[MAX_PATH];
package->Context, BOOL check_all = FALSE;
MSISOURCETYPE_NETWORK, index++,
volume, &volumesz) == ERROR_SUCCESS) while(TRUE)
{ {
if (!strncmpiW(source, volume, strlenW(source))) index = 0;
volumesz = MAX_PATH;
while (MsiSourceListEnumSourcesW(package->ProductCode, NULL,
package->Context,
MSISOURCETYPE_NETWORK, index++,
volume, &volumesz) == ERROR_SUCCESS)
{ {
lstrcpyW(mi->sourcedir, source); if (check_all || !strncmpiW(source, volume, strlenW(source)))
TRACE("Found network source %s\n", debugstr_w(mi->sourcedir)); {
return ERROR_SUCCESS; lstrcpyW(cabinet_file, volume);
PathAddBackslashW(cabinet_file);
lstrcatW(cabinet_file, mi->cabinet);
if (GetFileAttributesW(cabinet_file) == INVALID_FILE_ATTRIBUTES)
{
volumesz = MAX_PATH;
if(!check_all)
break;
continue;
}
lstrcpyW(mi->sourcedir, volume);
TRACE("Found network source %s\n", debugstr_w(mi->sourcedir));
return ERROR_SUCCESS;
}
} }
if (!check_all)
check_all = TRUE;
else
break;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment