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