wine/dlls/msi files.c action.h action.c

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 2 05:42:57 CST 2005


ChangeSet ID:	21041
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/02 05:42:56

Modified files:
	dlls/msi       : files.c action.h action.c 

Log message:
	Mike McCormack <mike at codeweavers.com>
	Implement the RemoveFiles action.

Patch: http://cvs.winehq.org/patch.py?id=21041

Old revision  New revision  Changes     Path
 1.28          1.29          +26 -0      wine/dlls/msi/files.c
 1.47          1.48          +1 -0       wine/dlls/msi/action.h
 1.226         1.227         +1 -1       wine/dlls/msi/action.c

Index: wine/dlls/msi/files.c
diff -u -p wine/dlls/msi/files.c:1.28 wine/dlls/msi/files.c:1.29
--- wine/dlls/msi/files.c:1.28	2 Nov 2005 11:42:56 -0000
+++ wine/dlls/msi/files.c	2 Nov 2005 11:42:56 -0000
@@ -868,3 +868,29 @@ UINT ACTION_DuplicateFiles(MSIPACKAGE *p
 
     return rc;
 }
+
+UINT ACTION_RemoveFiles( MSIPACKAGE *package )
+{
+    MSIFILE *file;
+
+    LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
+    {
+        if ( !file->Component )
+            continue;
+        if ( file->Component->Installed == INSTALLSTATE_LOCAL )
+            continue;
+
+        if ( file->state == msifs_installed )
+            ERR("removing installed file %s\n", debugstr_w(file->TargetPath));
+
+        if ( file->state != msifs_present )
+            continue;
+
+        TRACE("removing %s\n", debugstr_w(file->File) );
+        if ( !DeleteFileW( file->TargetPath ) )
+            ERR("failed to delete %s\n",  debugstr_w(file->TargetPath) );
+        file->state = msifs_missing;
+    }
+
+    return ERROR_SUCCESS;
+}
Index: wine/dlls/msi/action.h
diff -u -p wine/dlls/msi/action.h:1.47 wine/dlls/msi/action.h:1.48
--- wine/dlls/msi/action.h:1.47	2 Nov 2005 11:42:56 -0000
+++ wine/dlls/msi/action.h	2 Nov 2005 11:42:56 -0000
@@ -243,6 +243,7 @@ extern UINT ACTION_CustomAction(MSIPACKA
 extern UINT ACTION_AppSearch(MSIPACKAGE *package);
 extern UINT ACTION_FindRelatedProducts(MSIPACKAGE *package);
 extern UINT ACTION_InstallFiles(MSIPACKAGE *package);
+extern UINT ACTION_RemoveFiles(MSIPACKAGE *package);
 extern UINT ACTION_DuplicateFiles(MSIPACKAGE *package);
 extern UINT ACTION_RegisterClassInfo(MSIPACKAGE *package);
 extern UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package);
Index: wine/dlls/msi/action.c
diff -u -p wine/dlls/msi/action.c:1.226 wine/dlls/msi/action.c:1.227
--- wine/dlls/msi/action.c:1.226	2 Nov 2005 11:42:56 -0000
+++ wine/dlls/msi/action.c	2 Nov 2005 11:42:56 -0000
@@ -4285,7 +4285,7 @@ static struct _actions StandardActions[]
     { szRemoveDuplicateFiles, NULL},
     { szRemoveEnvironmentStrings, ACTION_RemoveEnvironmentStrings },
     { szRemoveExistingProducts, NULL},
-    { szRemoveFiles, NULL},
+    { szRemoveFiles, ACTION_RemoveFiles},
     { szRemoveFolders, NULL},
     { szRemoveIniValues, ACTION_RemoveIniValues },
     { szRemoveODBC, NULL},



More information about the wine-cvs mailing list