Hans Leidekker : msi: The AppSearch and CCPSearch actions must be run only once.
Alexandre Julliard
julliard at winehq.org
Tue Mar 23 12:12:47 CDT 2010
Module: wine
Branch: master
Commit: 8722d0c44a10bd7a2e82182b9a05e7ba415cea37
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8722d0c44a10bd7a2e82182b9a05e7ba415cea37
Author: Hans Leidekker <hans at codeweavers.com>
Date: Tue Mar 23 11:46:00 2010 +0100
msi: The AppSearch and CCPSearch actions must be run only once.
---
dlls/msi/action.c | 2 --
dlls/msi/appsearch.c | 16 ++++++++++++++++
dlls/msi/msipriv.h | 1 +
dlls/msi/upgrade.c | 6 +++---
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index db6c2cd..0d0e333 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -96,8 +96,6 @@ static const WCHAR szAllocateRegistrySpace[] =
{'A','l','l','o','c','a','t','e','R','e','g','i','s','t','r','y','S','p','a','c','e',0};
static const WCHAR szBindImage[] =
{'B','i','n','d','I','m','a','g','e',0};
-static const WCHAR szCCPSearch[] =
- {'C','C','P','S','e','a','r','c','h',0};
static const WCHAR szDeleteServices[] =
{'D','e','l','e','t','e','S','e','r','v','i','c','e','s',0};
static const WCHAR szDisableRollback[] =
diff --git a/dlls/msi/appsearch.c b/dlls/msi/appsearch.c
index 12c7411..6f00b14 100644
--- a/dlls/msi/appsearch.c
+++ b/dlls/msi/appsearch.c
@@ -1064,6 +1064,14 @@ UINT ACTION_AppSearch(MSIPACKAGE *package)
MSIQUERY *view = NULL;
UINT r;
+ if (check_unique_action(package, szAppSearch))
+ {
+ TRACE("Skipping AppSearch action: already done in UI sequence\n");
+ return ERROR_SUCCESS;
+ }
+ else
+ register_unique_action(package, szAppSearch);
+
r = MSI_OpenQuery( package->db, &view, query );
if (r != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -1111,6 +1119,14 @@ UINT ACTION_CCPSearch(MSIPACKAGE *package)
MSIQUERY *view = NULL;
UINT r;
+ if (check_unique_action(package, szCCPSearch))
+ {
+ TRACE("Skipping AppSearch action: already done in UI sequence\n");
+ return ERROR_SUCCESS;
+ }
+ else
+ register_unique_action(package, szCCPSearch);
+
r = MSI_OpenQuery(package->db, &view, query);
if (r != ERROR_SUCCESS)
return ERROR_SUCCESS;
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 0516dd1..647eab7 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -1084,6 +1084,7 @@ static const WCHAR szHU[] = {'H','K','E','Y','_','U','S','E','R','S','\\',0};
static const WCHAR szWindowsFolder[] = {'W','i','n','d','o','w','s','F','o','l','d','e','r',0};
static const WCHAR szAppSearch[] = {'A','p','p','S','e','a','r','c','h',0};
static const WCHAR szMoveFiles[] = {'M','o','v','e','F','i','l','e','s',0};
+static const WCHAR szCCPSearch[] = {'C','C','P','S','e','a','r','c','h',0};
/* memory allocation macro functions */
static void *msi_alloc( size_t len ) __WINE_ALLOC_SIZE(1);
diff --git a/dlls/msi/upgrade.c b/dlls/msi/upgrade.c
index a440070..3f40f55 100644
--- a/dlls/msi/upgrade.c
+++ b/dlls/msi/upgrade.c
@@ -209,13 +209,13 @@ UINT ACTION_FindRelatedProducts(MSIPACKAGE *package)
return ERROR_SUCCESS;
}
- if (check_unique_action(package,szFindRelatedProducts))
+ if (check_unique_action(package, szFindRelatedProducts))
{
- TRACE("Skipping FindRelatedProducts action: already done on client side\n");
+ TRACE("Skipping FindRelatedProducts action: already done in UI sequence\n");
return ERROR_SUCCESS;
}
else
- register_unique_action(package,szFindRelatedProducts);
+ register_unique_action(package, szFindRelatedProducts);
rc = MSI_DatabaseOpenViewW(package->db, Query, &view);
if (rc != ERROR_SUCCESS)
More information about the wine-cvs
mailing list