MSI: various fixes

Mike McCormack mike at codeweavers.com
Fri Dec 24 00:54:41 CST 2004


ChangeLog:
<aric at codeweavers.com>
* create the shortcut directory if it does not exist
* set the INSTALLLEVEL in CostFInalize if it is not set

-------------- next part --------------
--- dlls/msi/action.c.old	2004-12-24 15:48:04.000000000 +0900
+++ dlls/msi/action.c	2004-12-24 15:52:20.000000000 +0900
@@ -2280,10 +2280,13 @@
         'C','o','n','d','i','t','i','o','n',0};
     static const WCHAR szCosting[] = {
        'C','o','s','t','i','n','g','C','o','m','p','l','e','t','e',0 };
+    static const WCHAR szlevel[] = {
+        'I','N','S','T','A','L','L','L','E','V','E','L',0};
     static const WCHAR szOne[] = { '1', 0 };
     UINT rc;
     MSIQUERY * view;
     DWORD i;
+    LPWSTR level;
 
     TRACE("Building Directory properties\n");
 
@@ -2485,6 +2488,12 @@
     }
 
     MSI_SetPropertyW(package,szCosting,szOne);
+    /* set default run level if not set */
+    level = load_dynamic_property(package,szlevel,NULL);
+    if (!level)
+        MSI_SetPropertyW(package,szlevel, szOne);
+    else
+        HeapFree(GetProcessHeap(),0,level);
     return ERROR_SUCCESS;
 }
 
@@ -4404,6 +4413,9 @@
         MSI_RecordGetStringW(row,2,buffer,&sz);
         target_folder = resolve_folder(package, buffer,FALSE,FALSE,NULL);
 
+        /* may be needed because of a bug somehwere else */
+        create_full_pathW(target_file);
+
         sz = 0x100;
         MSI_RecordGetStringW(row,3,buffer,&sz);
         reduce_to_longfilename(buffer);


More information about the wine-patches mailing list