forked from Mirrors/wine-wine
msi/tests: Run the 'in_use' tests again.
parent
875c9c71ab
commit
312e4f6b23
|
@ -7359,23 +7359,43 @@ static char rename_ops[] = "PendingFileRenameOperations";
|
||||||
|
|
||||||
static void process_pending_renames(HKEY hkey)
|
static void process_pending_renames(HKEY hkey)
|
||||||
{
|
{
|
||||||
char *buf, *src, *dst;
|
char *buf, *src, *dst, *buf2, *buf2ptr;
|
||||||
DWORD size;
|
DWORD size, buf2len = 0;
|
||||||
LONG ret;
|
LONG ret;
|
||||||
|
BOOL found = FALSE;
|
||||||
|
|
||||||
ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, NULL, &size);
|
ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, NULL, &size);
|
||||||
buf = HeapAlloc(GetProcessHeap(), 0, size);
|
buf = HeapAlloc(GetProcessHeap(), 0, size);
|
||||||
|
buf2ptr = buf2 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
|
|
||||||
ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, (LPBYTE)buf, &size);
|
ret = RegQueryValueExA(hkey, rename_ops, NULL, NULL, (LPBYTE)buf, &size);
|
||||||
ok(!ret, "RegQueryValueExA failed %d (%u)\n", ret, GetLastError());
|
ok(!ret, "RegQueryValueExA failed %d (%u)\n", ret, GetLastError());
|
||||||
ok(strstr(buf, "msitest\\maximus") != NULL, "Unexpected value \"%s\"\n", buf);
|
|
||||||
|
|
||||||
for (src = buf; *src; src = dst + strlen(dst) + 1)
|
for (src = buf; *src; src = dst + strlen(dst) + 1)
|
||||||
{
|
{
|
||||||
DWORD flags = MOVEFILE_COPY_ALLOWED;
|
DWORD flags = MOVEFILE_COPY_ALLOWED;
|
||||||
|
|
||||||
dst = src + strlen(src) + 1;
|
dst = src + strlen(src) + 1;
|
||||||
|
|
||||||
|
if (!strstr(src, "msitest"))
|
||||||
|
{
|
||||||
|
lstrcpyA(buf2ptr, src);
|
||||||
|
buf2len += strlen(src) + 1;
|
||||||
|
buf2ptr += strlen(src) + 1;
|
||||||
|
if (*dst)
|
||||||
|
{
|
||||||
|
lstrcpyA(buf2ptr, dst);
|
||||||
|
buf2ptr += strlen(dst) + 1;
|
||||||
|
buf2len += strlen(dst) + 1;
|
||||||
|
}
|
||||||
|
buf2ptr++;
|
||||||
|
buf2len++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
found = TRUE;
|
||||||
|
|
||||||
if (*dst == '!')
|
if (*dst == '!')
|
||||||
{
|
{
|
||||||
flags |= MOVEFILE_REPLACE_EXISTING;
|
flags |= MOVEFILE_REPLACE_EXISTING;
|
||||||
|
@ -7390,8 +7410,19 @@ static void process_pending_renames(HKEY hkey)
|
||||||
else
|
else
|
||||||
ok(DeleteFileA(src), "Failed to delete file %s (%u)\n", src, GetLastError());
|
ok(DeleteFileA(src), "Failed to delete file %s (%u)\n", src, GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ok(found, "Expected a 'msitest' entry\n");
|
||||||
|
|
||||||
|
if (*buf2)
|
||||||
|
{
|
||||||
|
buf2len++;
|
||||||
|
RegSetValueExA(hkey, rename_ops, 0, REG_MULTI_SZ, (LPBYTE)buf2, buf2len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RegDeleteValueA(hkey, rename_ops);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, buf);
|
HeapFree(GetProcessHeap(), 0, buf);
|
||||||
RegDeleteValueA(hkey, rename_ops);
|
HeapFree(GetProcessHeap(), 0, buf2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL file_matches_data(LPCSTR file, LPCSTR data)
|
static BOOL file_matches_data(LPCSTR file, LPCSTR data)
|
||||||
|
@ -7415,7 +7446,6 @@ static BOOL file_matches_data(LPCSTR file, LPCSTR data)
|
||||||
static void test_file_in_use(void)
|
static void test_file_in_use(void)
|
||||||
{
|
{
|
||||||
UINT r;
|
UINT r;
|
||||||
DWORD size;
|
|
||||||
HANDLE file;
|
HANDLE file;
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
|
@ -7427,11 +7457,6 @@ static void test_file_in_use(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
RegOpenKeyExA(HKEY_LOCAL_MACHINE, session_manager, 0, KEY_ALL_ACCESS, &hkey);
|
RegOpenKeyExA(HKEY_LOCAL_MACHINE, session_manager, 0, KEY_ALL_ACCESS, &hkey);
|
||||||
if (!RegQueryValueExA(hkey, rename_ops, NULL, NULL, NULL, &size))
|
|
||||||
{
|
|
||||||
skip("Pending file rename operations, skipping test\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CreateDirectoryA("msitest", NULL);
|
CreateDirectoryA("msitest", NULL);
|
||||||
create_file("msitest\\maximus", 500);
|
create_file("msitest\\maximus", 500);
|
||||||
|
@ -7468,7 +7493,6 @@ static void test_file_in_use(void)
|
||||||
static void test_file_in_use_cab(void)
|
static void test_file_in_use_cab(void)
|
||||||
{
|
{
|
||||||
UINT r;
|
UINT r;
|
||||||
DWORD size;
|
|
||||||
HANDLE file;
|
HANDLE file;
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
|
@ -7480,11 +7504,6 @@ static void test_file_in_use_cab(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
RegOpenKeyExA(HKEY_LOCAL_MACHINE, session_manager, 0, KEY_ALL_ACCESS, &hkey);
|
RegOpenKeyExA(HKEY_LOCAL_MACHINE, session_manager, 0, KEY_ALL_ACCESS, &hkey);
|
||||||
if (!RegQueryValueExA(hkey, rename_ops, NULL, NULL, NULL, &size))
|
|
||||||
{
|
|
||||||
skip("Pending file rename operations, skipping test\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CreateDirectoryA("msitest", NULL);
|
CreateDirectoryA("msitest", NULL);
|
||||||
create_file("maximus", 500);
|
create_file("maximus", 500);
|
||||||
|
|
Loading…
Reference in New Issue