Hans Leidekker : msi: Allow recursive changes to the target folder path.

Alexandre Julliard julliard at winehq.org
Wed Sep 26 14:22:32 CDT 2018


Module: wine
Branch: master
Commit: 7bf2a1b2099b534fd4472962d2e945bc9ab9e2b8
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7bf2a1b2099b534fd4472962d2e945bc9ab9e2b8

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Sep 26 15:17:19 2018 +0200

msi: Allow recursive changes to the target folder path.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msi/action.c    | 10 +++-------
 dlls/msi/tests/msi.c | 24 ++++++++----------------
 2 files changed, 11 insertions(+), 23 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index af86761..0d6da3e 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -2394,15 +2394,11 @@ void msi_resolve_target_folder( MSIPACKAGE *package, const WCHAR *name, BOOL loa
         else
             path = msi_build_directory_name( 2, folder->TargetDefault, NULL );
     }
+
     normalized_path = msi_normalize_path( path );
-    msi_free( path );
-    if (folder->ResolvedTarget && !strcmpiW( normalized_path, folder->ResolvedTarget ))
-    {
-        TRACE("%s already resolved to %s\n", debugstr_w(name), debugstr_w(folder->ResolvedTarget));
-        msi_free( normalized_path );
-        return;
-    }
     msi_set_property( package->db, folder->Directory, normalized_path, -1 );
+    msi_free( path );
+
     msi_free( folder->ResolvedTarget );
     folder->ResolvedTarget = normalized_path;
 
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index 842ed11..015cd65 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -336,16 +336,18 @@ static const char spf_custom_action_dat[] =
     "Action\tType\tSource\tTarget\tISComments\n"
     "s72\ti2\tS64\tS0\tS255\n"
     "CustomAction\tAction\n"
-    "SetFolderProp\t51\tMSITESTDIR\t[ProgramFilesFolder]\\msitest\\added\t\n";
+    "SetFolderProp\t51\tMSITESTDIR\t[ProgramFilesFolder]\\msitest\\added\t\n"
+    "SetFolderProp2\t51\tMSITESTDIR\t[ProgramFilesFolder]\\msitest\\added\\added2\t\n";
 
 static const char spf_install_exec_seq_dat[] =
     "Action\tCondition\tSequence\n"
     "s72\tS255\tI2\n"
     "InstallExecuteSequence\tAction\n"
-    "CostFinalize\t\t1000\n"
     "CostInitialize\t\t800\n"
     "FileCost\t\t900\n"
     "SetFolderProp\t\t950\n"
+    "SetFolderProp2\t\t960\n"
+    "CostFinalize\t\t1000\n"
     "InstallFiles\t\t4000\n"
     "InstallServices\t\t5000\n"
     "InstallFinalize\t\t6600\n"
@@ -14095,7 +14097,6 @@ static void test_setpropertyfolder(void)
 {
     UINT r;
     CHAR path[MAX_PATH];
-    DWORD attr;
 
     if (is_process_limited())
     {
@@ -14120,19 +14121,10 @@ static void test_setpropertyfolder(void)
         goto error;
     }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
-    attr = GetFileAttributesA(path);
-    if (attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_DIRECTORY))
-    {
-        ok(delete_pf("msitest\\added\\maximus", TRUE), "File not installed\n");
-        ok(delete_pf("msitest\\added", FALSE), "Directory not created\n");
-        ok(delete_pf("msitest", FALSE), "Directory not created\n");
-    }
-    else
-    {
-        trace("changing folder property not supported\n");
-        ok(delete_pf("msitest\\maximus", TRUE), "File not installed\n");
-        ok(delete_pf("msitest", FALSE), "Directory not created\n");
-    }
+    ok(delete_pf("msitest\\added\\added2\\maximus", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\added\\added2", FALSE), "Directory not created\n");
+    ok(delete_pf("msitest\\added", FALSE), "Directory not created\n");
+    ok(delete_pf("msitest", FALSE), "Directory not created\n");
 
 error:
     DeleteFileA(msifile);




More information about the wine-cvs mailing list