From f909e1c06ed7723eb6524ec3faeb11ea610cb8b5 Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Thu, 21 Aug 2008 02:17:15 -0500 Subject: [PATCH] msi: Don't remove a file that is installed as source. --- dlls/msi/files.c | 3 ++- dlls/msi/tests/install.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/msi/files.c b/dlls/msi/files.c index 6de1c5a4ad8..945390ee7e2 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -547,7 +547,8 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package ) if ( file->state == msifs_installed ) ERR("removing installed file %s\n", debugstr_w(file->TargetPath)); - if ( file->Component->ActionRequest != INSTALLSTATE_ABSENT ) + if ( file->Component->ActionRequest != INSTALLSTATE_ABSENT || + file->Component->Installed == INSTALLSTATE_SOURCE ) continue; /* don't remove a file if the old file diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c index 1c361a32bf4..972739312e2 100644 --- a/dlls/msi/tests/install.c +++ b/dlls/msi/tests/install.c @@ -4269,9 +4269,9 @@ static void test_removefiles(void) r = MsiInstallProductA(msifile, "REMOVE=ALL"); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r); ok(!pf_exists("msitest\\hydrogen"), "File not deleted\n"); + ok(delete_pf("msitest\\helium", TRUE), "File deleted\n"); todo_wine { - ok(delete_pf("msitest\\helium", TRUE), "File deleted\n"); ok(delete_pf("msitest\\lithium", TRUE), "File deleted\n"); } ok(delete_pf("msitest", FALSE), "File deleted\n");