Commit ec688fb4 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

Beginnings of costing and organizing into components and features.

parent e2d4ea81
......@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = msi.dll
IMPORTS = shell32 cabinet ole32 user32 advapi32 kernel32
IMPORTS = shell32 cabinet oleaut32 ole32 version user32 advapi32 kernel32
EXTRALIBS = -luuid $(LIBUNICODE)
C_SRCS = \
......
......@@ -573,7 +573,8 @@ static INT comp_ge_m2(INT a, LPWSTR b)
static int COND_IsAlpha( WCHAR x )
{
return( ( ( x >= 'A' ) && ( x <= 'Z' ) ) ||
( ( x >= 'a' ) && ( x <= 'z' ) ) );
( ( x >= 'a' ) && ( x <= 'z' ) ) ||
( ( x == '_' ) ) );
}
static int COND_IsNumber( WCHAR x )
......
......@@ -149,6 +149,8 @@ typedef struct tagMSIPACKAGE
UINT loaded_folders;
struct tagMSICOMPONENT *components;
UINT loaded_components;
struct tagMSIFILE *files;
UINT loaded_files;
} MSIPACKAGE;
#define MSIHANDLETYPE_ANY 0
......@@ -220,6 +222,7 @@ UINT read_raw_stream_data( MSIHANDLE hdb, LPCWSTR stname,
USHORT **pdata, UINT *psz );
UINT ACTION_DoTopLevelINSTALL(MSIHANDLE hPackage, LPCWSTR szPackagePath,
LPCWSTR szCommandLine);
void ACTION_remove_tracked_tempfiles(MSIPACKAGE* hPackage);
/* record internals */
extern UINT WINAPI MSI_RecordSetIStream( MSIHANDLE handle,
......
......@@ -56,6 +56,8 @@ void MSI_FreePackage( VOID *arg)
MsiCloseHandle(package->db);
ACTION_remove_tracked_tempfiles(package);
if (package->features && package->loaded_features > 0)
HeapFree(GetProcessHeap(),0,package->features);
......@@ -64,6 +66,9 @@ void MSI_FreePackage( VOID *arg)
if (package->components && package->loaded_components > 0)
HeapFree(GetProcessHeap(),0,package->components);
if (package->files && package->loaded_files > 0)
HeapFree(GetProcessHeap(),0,package->files);
}
UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage)
......@@ -299,9 +304,11 @@ UINT WINAPI MsiOpenPackageW(LPCWSTR szPackage, MSIHANDLE *phPackage)
package->features = NULL;
package->folders = NULL;
package->components = NULL;
package->files = NULL;
package->loaded_features = 0;
package->loaded_folders = 0;
package->loaded_components= 0;
package->loaded_files = 0;
/* ok here is where we do a slew of things to the database to
* prep for all that is to come as a package */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment