msi: Disable some path validity checks in MsiSetTargetPath.

This commit is contained in:
Andrey Turkin 2006-06-25 16:05:20 +04:00 committed by Alexandre Julliard
parent 27bfdc2a02
commit 2ad04cae39
2 changed files with 2 additions and 18 deletions

View File

@ -336,24 +336,14 @@ UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder,
attrib = GetFileAttributesW(szFolderPath);
if ( attrib != INVALID_FILE_ATTRIBUTES &&
(!(attrib & FILE_ATTRIBUTE_DIRECTORY) ||
attrib & FILE_ATTRIBUTE_OFFLINE ||
attrib & FILE_ATTRIBUTE_READONLY))
(attrib & FILE_ATTRIBUTE_OFFLINE ||
attrib & FILE_ATTRIBUTE_READONLY)) /* actually native MSI tests writeability by making temporary files at each drive */
return ERROR_FUNCTION_FAILED;
path = resolve_folder(package,szFolder,FALSE,FALSE,&folder);
if (!path)
return ERROR_DIRECTORY;
if (attrib == INVALID_FILE_ATTRIBUTES)
{
if (!CreateDirectoryW(szFolderPath,NULL))
{
msi_free( path );
return ERROR_FUNCTION_FAILED;
}
RemoveDirectoryW(szFolderPath);
}
msi_free(folder->Property);
folder->Property = build_directory_name(2, szFolderPath, NULL);

View File

@ -404,14 +404,10 @@ static void test_settargetpath(void)
{
sprintf( tempdir, "%s\\subdir", buffer );
r = MsiSetTargetPath( hpkg, "TARGETDIR", buffer );
todo_wine {
ok( r == ERROR_SUCCESS, "MsiSetTargetPath on file returned %d\n", r );
}
r = MsiSetTargetPath( hpkg, "TARGETDIR", tempdir );
todo_wine {
ok( r == ERROR_SUCCESS, "MsiSetTargetPath on 'subdir' of file returned %d\n", r );
}
DeleteFile( buffer );
@ -422,9 +418,7 @@ static void test_settargetpath(void)
ok ( r == INVALID_FILE_ATTRIBUTES, "file/directory exists after MsiSetTargetPath. Attributes: %08X\n", r );
r = MsiSetTargetPath( hpkg, "TARGETDIR", tempdir );
todo_wine {
ok( r == ERROR_SUCCESS, "MsiSetTargetPath on subsubdir returned %d\n", r );
}
} else {
trace("GetTempFileName failed, cannot do some tests\n");
}