ChangeSet ID: 21041 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/02 05:42:56
Modified files: dlls/msi : files.c action.h action.c
Log message: Mike McCormack mike@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},