Fix bugs in resolve_folder.
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index b4af03c..4acab1c 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c
@@ -1646,19 +1646,25 @@ package->folders[i].ParentIndex].Directory, path,source, set_prop, NULL); - if (!source && package->folders[i].TargetDefault[0]) + if (!source) { - strcatW(path,package->folders[i].TargetDefault); - strcatW(path,cszbs); + if (package->folders[i].TargetDefault[0]) + { + strcatW(path,package->folders[i].TargetDefault); + strcatW(path,cszbs); + } strcpyW(package->folders[i].ResolvedTarget,path); TRACE(" resolved into %s\n",debugstr_w(path)); if (set_prop) MsiSetPropertyW(hPackage,name,path); } - else if (package->folders[i].SourceDefault[0]) + else { - strcatW(path,package->folders[i].SourceDefault); - strcatW(path,cszbs); + if (package->folders[i].SourceDefault[0]) + { + strcatW(path,package->folders[i].SourceDefault); + strcatW(path,cszbs); + } strcpyW(package->folders[i].ResolvedSource,path); } } @@ -2195,7 +2201,7 @@ { if (package->files[index].State >= 3) { - strcmpW(file_source,package->files[index].TargetPath); + strcpyW(file_source,package->files[index].TargetPath); return ERROR_SUCCESS; } else @@ -2287,7 +2293,6 @@ if (MsiRecordIsNull(row,4)) { -ERR("HERE target path %s\n",debugstr_w(file_source)); strcpyW(dest_name,strrchrW(file_source,'\\')+1); } else