msi: The AppSearch and CCPSearch actions must be run only once.

oldstable
Hans Leidekker 2010-03-23 11:46:00 +01:00 committed by Alexandre Julliard
parent a4be941df9
commit 8722d0c44a
4 changed files with 20 additions and 5 deletions

View File

@ -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[] =

View File

@ -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;

View File

@ -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);

View File

@ -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)