https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bc149d9d1499212dee9f60...
commit bc149d9d1499212dee9f602ef1573c7a18fd5660 Author: winesync ros-dev@reactos.org AuthorDate: Sun Mar 13 00:03:58 2022 +0100 Commit: Mark Jansen mark.jansen@reactos.org CommitDate: Sun Mar 20 19:28:03 2022 +0100
[WINESYNC] msi: Allow recursive changes to the target folder path.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
wine commit id 7bf2a1b2099b534fd4472962d2e945bc9ab9e2b8 by Hans Leidekker hans@codeweavers.com --- dll/win32/msi/action.c | 10 +++------- modules/rostests/winetests/msi/msi.c | 24 ++++++++---------------- 2 files changed, 11 insertions(+), 23 deletions(-)
diff --git a/dll/win32/msi/action.c b/dll/win32/msi/action.c index 1ef6da8562b..e71b8aeb705 100644 --- a/dll/win32/msi/action.c +++ b/dll/win32/msi/action.c @@ -2401,15 +2401,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/modules/rostests/winetests/msi/msi.c b/modules/rostests/winetests/msi/msi.c index ee962b52f80..17efddd8236 100644 --- a/modules/rostests/winetests/msi/msi.c +++ b/modules/rostests/winetests/msi/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" @@ -14103,7 +14105,6 @@ static void test_setpropertyfolder(void) { UINT r; CHAR path[MAX_PATH]; - DWORD attr;
if (is_process_limited()) { @@ -14128,19 +14129,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);