msi: action.c resolve more source dirs

Aric Stewart aric at codeweavers.com
Tue Feb 8 05:23:29 CST 2005


Add logic to be able to resolve the SourceDir based on CurrentPath.
Also add logic to get the source locations of a file if it is not in a 
cabinent.
-------------- next part --------------
Index: dlls/msi/action.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/action.c,v
retrieving revision 1.80
diff -u -u -r1.80 action.c
--- dlls/msi/action.c	2 Feb 2005 09:29:30 -0000	1.80
+++ dlls/msi/action.c	8 Feb 2005 11:23:22 -0000
@@ -827,6 +827,13 @@
             p++;
             *p=0;
         }
+        else
+        {
+            HeapFree(GetProcessHeap(),0,path);
+            path = HeapAlloc(GetProcessHeap(),0,MAX_PATH*sizeof(WCHAR));
+            GetCurrentDirectoryW(MAX_PATH,path);
+            strcatW(path,cszbs);
+        }
 
         check = load_dynamic_property(package, cszSourceDir,NULL);
         if (!check)
@@ -2796,6 +2803,12 @@
         }
         rc = !extract_a_cabinet_file(package, source,path,NULL);
     }
+    else
+    {
+        sz = MAX_PATH;
+        MSI_GetPropertyW(package,cszSourceDir,source,&sz);
+        strcpyW(path,source);
+    }
     msiobj_release(&row->hdr);
     MSI_ViewClose(view);
     msiobj_release(&view->hdr);
@@ -5095,6 +5108,7 @@
 {'A','R','P','S','I','Z','E',0},
 {'A','R','P','U','R','L','I','N','F','O','A','B','O','U','T',0},
 {'A','R','P','U','R','L','U','P','D','A','T','E','I','N','F','O',0},
+{'P','r','o','d','u','c','t','I','D',0},
 {0},
     };
 
@@ -5114,6 +5128,7 @@
 {'S','i','z','e',0},
 {'U','R','L','I','n','f','o','A','b','o','u','t',0},
 {'U','R','L','U','p','d','a','t','e','I','n','f','o',0},
+{'P','r','o','d','u','c','t','I','D',0},
 {0},
     };
 


More information about the wine-patches mailing list