msi: Extract cabinets based on DiskId, not LastSequence.

oldstable
James Hawkins 2006-10-27 00:42:14 -07:00 committed by Alexandre Julliard
parent 005c0a792e
commit 62dc9ca691
2 changed files with 14 additions and 9 deletions

View File

@ -458,7 +458,7 @@ static UINT ready_media_for_file( MSIPACKAGE *package, struct media_info *mi,
'`','M','e','d','i','a','`',' ','W','H','E','R','E',' ',
'`','L','a','s','t','S','e','q','u','e','n','c','e','`',' ','>','=',
' ','%', 'i',' ','O','R','D','E','R',' ','B','Y',' ',
'`','L','a','s','t','S','e','q','u','e','n','c','e','`',0};
'`','D','i','s','k','I','d','`',0};
LPCWSTR cab, volume;
DWORD sz;
INT seq;
@ -700,8 +700,13 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
if (file->IsCompressed)
{
if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(file->TargetPath))
{
ERR("compressed file wasn't extracted (%s)\n",
debugstr_w(file->TargetPath));
rc = ERROR_INSTALL_FAILURE;
break;
}
continue;
}

View File

@ -839,13 +839,13 @@ static void test_caborder(void)
create_cab_file("test2.cab", MEDIA_SIZE, "augustus\0");
r = MsiInstallProductA(msifile, NULL);
ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
ok(!delete_pf("msitest\\augustus", TRUE), "File is installed\n");
todo_wine
{
ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
ok(!delete_pf("msitest\\augustus", TRUE), "File is installed\n");
ok(!delete_pf("msitest", FALSE), "File is installed\n");
ok(!delete_pf("msitest\\maximus", TRUE), "File is installed\n");
ok(!delete_pf("msitest", FALSE), "File is installed\n");
}
ok(!delete_pf("msitest\\maximus", TRUE), "File is installed\n");
DeleteFile("test1.cab");
DeleteFile("test2.cab");
@ -854,12 +854,12 @@ static void test_caborder(void)
create_cab_file("test2.cab", MEDIA_SIZE, "maximus\0augustus\0");
r = MsiInstallProductA(msifile, NULL);
ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
ok(!delete_pf("msitest\\maximus", TRUE), "File is installed\n");
ok(!delete_pf("msitest\\augustus", TRUE), "File is installed\n");
todo_wine
{
ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
ok(!delete_pf("msitest\\maximus", TRUE), "File is installed\n");
ok(!delete_pf("msitest\\augustus", TRUE), "File is installed\n");
ok(!delete_pf("msitest", FALSE), "File is installed\n");
ok(!delete_pf("msitest", FALSE), "File is installed\n");
}
DeleteFile("test1.cab");