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