mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 14:10:32 +00:00
msi/tests: Create only a single restore point.
This commit is contained in:
parent
8777994882
commit
167ef04727
@ -26,6 +26,7 @@
|
||||
#include <msidefs.h>
|
||||
#include <msi.h>
|
||||
#include <msiquery.h>
|
||||
#include <srrestoreptapi.h>
|
||||
|
||||
#include "wine/test.h"
|
||||
|
||||
@ -36,10 +37,14 @@ static UINT (WINAPI *pMsiApplyMultiplePatchesA)(LPCSTR, LPCSTR, LPCSTR);
|
||||
|
||||
static BOOL (WINAPI *pConvertSidToStringSidA)(PSID, LPSTR*);
|
||||
|
||||
static BOOL (WINAPI *pSRRemoveRestorePoint)(DWORD);
|
||||
static BOOL (WINAPI *pSRSetRestorePointA)(RESTOREPOINTINFOA*, STATEMGRSTATUS*);
|
||||
|
||||
static void init_functionpointers(void)
|
||||
{
|
||||
HMODULE hmsi = GetModuleHandleA("msi.dll");
|
||||
HMODULE hadvapi32 = GetModuleHandleA("advapi32.dll");
|
||||
HMODULE hsrclient;
|
||||
|
||||
#define GET_PROC(mod, func) \
|
||||
p ## func = (void*)GetProcAddress(mod, #func);
|
||||
@ -48,6 +53,9 @@ static void init_functionpointers(void)
|
||||
|
||||
GET_PROC(hadvapi32, ConvertSidToStringSidA);
|
||||
|
||||
hsrclient = LoadLibraryA("srclient.dll");
|
||||
GET_PROC(hsrclient, SRRemoveRestorePoint);
|
||||
GET_PROC(hsrclient, SRSetRestorePointA);
|
||||
#undef GET_PROC
|
||||
}
|
||||
|
||||
@ -774,6 +782,27 @@ done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static BOOL notify_system_change(DWORD event_type, STATEMGRSTATUS *status)
|
||||
{
|
||||
RESTOREPOINTINFOA spec;
|
||||
|
||||
spec.dwEventType = event_type;
|
||||
spec.dwRestorePtType = APPLICATION_INSTALL;
|
||||
spec.llSequenceNumber = status->llSequenceNumber;
|
||||
lstrcpyA(spec.szDescription, "msitest restore point");
|
||||
|
||||
return pSRSetRestorePointA(&spec, status);
|
||||
}
|
||||
|
||||
static void remove_restore_point(DWORD seq_number)
|
||||
{
|
||||
DWORD res;
|
||||
|
||||
res = pSRRemoveRestorePoint(seq_number);
|
||||
if (res != ERROR_SUCCESS)
|
||||
trace("Failed to remove the restore point : %08x\n", res);
|
||||
}
|
||||
|
||||
static void test_createpackage(void)
|
||||
{
|
||||
MSIHANDLE hPackage = 0;
|
||||
@ -11870,10 +11899,22 @@ static void test_MsiApplyPatch(void)
|
||||
|
||||
START_TEST(package)
|
||||
{
|
||||
STATEMGRSTATUS status;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
init_functionpointers();
|
||||
|
||||
GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
|
||||
|
||||
/* Create a restore point ourselves so we circumvent the multitude of restore points
|
||||
* that would have been created by all the installation and removal tests.
|
||||
*/
|
||||
if (pSRSetRestorePointA)
|
||||
{
|
||||
memset(&status, 0, sizeof(status));
|
||||
ret = notify_system_change(BEGIN_NESTED_SYSTEM_CHANGE, &status);
|
||||
}
|
||||
|
||||
test_createpackage();
|
||||
test_doaction();
|
||||
test_gettargetpath_bad();
|
||||
@ -11905,4 +11946,11 @@ START_TEST(package)
|
||||
test_MsiSetProperty();
|
||||
test_MsiApplyMultiplePatches();
|
||||
test_MsiApplyPatch();
|
||||
|
||||
if (pSRSetRestorePointA && ret)
|
||||
{
|
||||
ret = notify_system_change(END_NESTED_SYSTEM_CHANGE, &status);
|
||||
if (ret)
|
||||
remove_restore_point(status.llSequenceNumber);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user