Hans Leidekker : msi: Skip files from global assemblies in the RemoveFiles action.
Alexandre Julliard
julliard at winehq.org
Mon May 30 12:41:17 CDT 2011
Module: wine
Branch: master
Commit: 1d6540bdc8bac62b759870cbb3da99c8005adca6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1d6540bdc8bac62b759870cbb3da99c8005adca6
Author: Hans Leidekker <hans at codeweavers.com>
Date: Mon May 30 09:27:53 2011 +0200
msi: Skip files from global assemblies in the RemoveFiles action.
---
dlls/msi/files.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index 8b2feb9..2ea119e 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -1164,7 +1164,10 @@ static UINT ITERATE_RemoveFiles(MSIRECORD *row, LPVOID param)
TRACE("Skipping removal due to install mode\n");
return ERROR_SUCCESS;
}
-
+ if (comp->assembly && !comp->assembly->application)
+ {
+ return ERROR_SUCCESS;
+ }
if (comp->Attributes & msidbComponentAttributesPermanent)
{
TRACE("permanent component, not removing file\n");
@@ -1266,15 +1269,19 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package )
MSIRECORD *uirow;
LPWSTR dir, p;
VS_FIXEDFILEINFO *ver;
+ MSICOMPONENT *comp = file->Component;
if ( file->state == msifs_installed )
ERR("removing installed file %s\n", debugstr_w(file->TargetPath));
- file->Component->Action = msi_get_component_action( package, file->Component );
- if (file->Component->Action != INSTALLSTATE_ABSENT || file->Component->Installed == INSTALLSTATE_SOURCE)
+ comp->Action = msi_get_component_action( package, comp );
+ if (comp->Action != INSTALLSTATE_ABSENT || comp->Installed == INSTALLSTATE_SOURCE)
+ continue;
+
+ if (comp->assembly && !comp->assembly->application)
continue;
- if (file->Component->Attributes & msidbComponentAttributesPermanent)
+ if (comp->Attributes & msidbComponentAttributesPermanent)
{
TRACE("permanent component, not removing file\n");
continue;
@@ -1299,7 +1306,7 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package )
{
WARN("failed to delete %s (%u)\n", debugstr_w(file->TargetPath), GetLastError());
}
- else if (!has_persistent_dir( package, file->Component ))
+ else if (!has_persistent_dir( package, comp ))
{
if ((dir = strdupW( file->TargetPath )))
{
@@ -1312,7 +1319,7 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package )
uirow = MSI_CreateRecord( 9 );
MSI_RecordSetStringW( uirow, 1, file->FileName );
- MSI_RecordSetStringW( uirow, 9, file->Component->Directory );
+ MSI_RecordSetStringW( uirow, 9, comp->Directory );
msi_ui_actiondata( package, szRemoveFiles, uirow );
msiobj_release( &uirow->hdr );
/* FIXME: call msi_ui_progress here? */
More information about the wine-cvs
mailing list