Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
5f161252
Commit
5f161252
authored
Aug 10, 2007
by
Paul Vriens
Committed by
Alexandre Julliard
Aug 10, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msi/tests: Run tests again on win98 and NT4.
parent
f879f69f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
141 additions
and
100 deletions
+141
-100
install.c
dlls/msi/tests/install.c
+41
-26
msi.c
dlls/msi/tests/msi.c
+54
-45
source.c
dlls/msi/tests/source.c
+46
-29
No files found.
dlls/msi/tests/install.c
View file @
5f161252
...
...
@@ -32,6 +32,11 @@
#include "wine/test.h"
static
UINT
(
WINAPI
*
pMsiQueryComponentStateA
)
(
LPCSTR
,
LPCSTR
,
MSIINSTALLCONTEXT
,
LPCSTR
,
INSTALLSTATE
*
);
static
UINT
(
WINAPI
*
pMsiSourceListGetInfoA
)
(
LPCSTR
,
LPCSTR
,
MSIINSTALLCONTEXT
,
DWORD
,
LPCSTR
,
LPSTR
,
LPDWORD
);
static
const
char
*
msifile
=
"msitest.msi"
;
static
const
char
*
msifile2
=
"winetest2.msi"
;
static
const
char
*
mstfile
=
"winetest.mst"
;
...
...
@@ -794,6 +799,14 @@ static int fci_delete(char *pszFile, int *err, void *pv)
return
0
;
}
static
void
init_functionpointers
(
void
)
{
HMODULE
hmsi
=
GetModuleHandleA
(
"msi.dll"
);
pMsiQueryComponentStateA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiQueryComponentStateA"
);
pMsiSourceListGetInfoA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiSourceListGetInfoA"
);
}
static
BOOL
check_record
(
MSIHANDLE
rec
,
UINT
field
,
LPCSTR
val
)
{
CHAR
buffer
[
0x20
];
...
...
@@ -1695,7 +1708,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1715,7 +1728,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1735,7 +1748,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1758,7 +1771,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1775,7 +1788,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"feature"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1795,7 +1808,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1815,7 +1828,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1838,7 +1851,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -1861,7 +1874,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"feature"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1881,7 +1894,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -1904,7 +1917,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1930,7 +1943,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -1956,7 +1969,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -1982,7 +1995,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -2008,7 +2021,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -2034,7 +2047,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -2063,7 +2076,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -2092,7 +2105,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -2118,7 +2131,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -2144,7 +2157,7 @@ static void test_publish(void)
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
}
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
todo_wine
{
...
...
@@ -2170,7 +2183,7 @@ static void test_publish(void)
state
=
MsiQueryFeatureState
(
"{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}"
,
"montecristo"
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
"{DF2CBABC-3BCC-47E5-A998-448D1C0C895B}"
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -2204,7 +2217,7 @@ static void test_publishsourcelist(void)
/* nothing published */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -2216,7 +2229,7 @@ static void test_publishsourcelist(void)
/* after RegisterProduct */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -2228,7 +2241,7 @@ static void test_publishsourcelist(void)
/* after ProcessComponents */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -2240,7 +2253,7 @@ static void test_publishsourcelist(void)
/* after PublishFeatures */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -2253,7 +2266,7 @@ static void test_publishsourcelist(void)
/* after PublishProduct */
size
=
MAX_PATH
;
lstrcpyA
(
value
,
"aaa"
);
r
=
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
value
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
!
lstrcmpA
(
value
,
"msitest.msi"
),
"Expected 'msitest.msi', got %s
\n
"
,
value
);
...
...
@@ -2662,6 +2675,8 @@ START_TEST(install)
DWORD
len
;
char
temp_path
[
MAX_PATH
],
prev_path
[
MAX_PATH
];
init_functionpointers
();
GetCurrentDirectoryA
(
MAX_PATH
,
prev_path
);
GetTempPath
(
MAX_PATH
,
temp_path
);
SetCurrentDirectoryA
(
temp_path
);
...
...
dlls/msi/tests/msi.c
View file @
5f161252
...
...
@@ -31,16 +31,35 @@ typedef struct test_MSIFILEHASHINFO {
ULONG
dwData
[
4
];
}
test_MSIFILEHASHINFO
,
*
test_PMSIFILEHASHINFO
;
typedef
INSTALLSTATE
(
WINAPI
*
fnMsiUseFeatureExA
)(
LPCSTR
,
LPCSTR
,
DWORD
,
DWORD
);
fnMsiUseFeatureExA
pMsiUseFeatureExA
;
typedef
UINT
(
WINAPI
*
fnMsiOpenPackageExA
)(
LPCSTR
,
DWORD
,
MSIHANDLE
*
);
fnMsiOpenPackageExA
pMsiOpenPackageExA
;
typedef
UINT
(
WINAPI
*
fnMsiOpenPackageExW
)(
LPCWSTR
,
DWORD
,
MSIHANDLE
*
);
fnMsiOpenPackageExW
pMsiOpenPackageExW
;
typedef
INSTALLSTATE
(
WINAPI
*
fnMsiGetComponentPathA
)(
LPCSTR
,
LPCSTR
,
LPSTR
,
DWORD
*
);
fnMsiGetComponentPathA
pMsiGetComponentPathA
;
typedef
UINT
(
WINAPI
*
fnMsiGetFileHashA
)(
LPCSTR
,
DWORD
,
test_PMSIFILEHASHINFO
);
fnMsiGetFileHashA
pMsiGetFileHashA
;
static
BOOL
(
WINAPI
*
pConvertSidToStringSidA
)(
PSID
,
LPSTR
*
);
static
INSTALLSTATE
(
WINAPI
*
pMsiGetComponentPathA
)
(
LPCSTR
,
LPCSTR
,
LPSTR
,
DWORD
*
);
static
UINT
(
WINAPI
*
pMsiGetFileHashA
)
(
LPCSTR
,
DWORD
,
test_PMSIFILEHASHINFO
);
static
UINT
(
WINAPI
*
pMsiOpenPackageExA
)
(
LPCSTR
,
DWORD
,
MSIHANDLE
*
);
static
UINT
(
WINAPI
*
pMsiOpenPackageExW
)
(
LPCWSTR
,
DWORD
,
MSIHANDLE
*
);
static
UINT
(
WINAPI
*
pMsiQueryComponentStateA
)
(
LPCSTR
,
LPCSTR
,
MSIINSTALLCONTEXT
,
LPCSTR
,
INSTALLSTATE
*
);
static
INSTALLSTATE
(
WINAPI
*
pMsiUseFeatureExA
)
(
LPCSTR
,
LPCSTR
,
DWORD
,
DWORD
);
static
void
init_functionpointers
(
void
)
{
HMODULE
hmsi
=
GetModuleHandleA
(
"msi.dll"
);
HMODULE
hadvapi32
=
GetModuleHandleA
(
"advapi32.dll"
);
pMsiGetComponentPathA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiGetComponentPathA"
);
pMsiGetFileHashA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiGetFileHashA"
);
pMsiOpenPackageExA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiOpenPackageExA"
);
pMsiOpenPackageExW
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiOpenPackageExW"
);
pMsiQueryComponentStateA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiQueryComponentStateA"
);
pMsiUseFeatureExA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiUseFeatureExA"
);
pConvertSidToStringSidA
=
(
void
*
)
GetProcAddress
(
hadvapi32
,
"ConvertSidToStringSidA"
);
}
static
void
test_usefeature
(
void
)
{
...
...
@@ -324,7 +343,7 @@ static void get_user_sid(LPSTR *usersid)
size
=
sizeof
(
buf
);
GetTokenInformation
(
token
,
TokenUser
,
(
void
*
)
buf
,
size
,
&
size
);
user
=
(
PTOKEN_USER
)
buf
;
ConvertSidToStringSid
(
user
->
User
.
Sid
,
usersid
);
pConvertSidToStringSidA
(
user
->
User
.
Sid
,
usersid
);
}
static
void
test_MsiQueryProductState
(
void
)
...
...
@@ -664,42 +683,42 @@ static void test_MsiQueryComponentState(void)
/* NULL szProductCode */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
NULL
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
NULL
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
/* empty szProductCode */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
""
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
\
r
=
p
MsiQueryComponentStateA
(
""
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
\
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
/* random szProductCode */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
"random"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
"random"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
/* GUID-length szProductCode */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
"DJANE93KNDNAS-2KN2NR93KMN3LN13=L1N3KDE"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
"DJANE93KNDNAS-2KN2NR93KMN3LN13=L1N3KDE"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
/* GUID-length with brackets */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
"{JANE93KNDNAS-2KN2NR93KMN3LN13=L1N3KD}"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
"{JANE93KNDNAS-2KN2NR93KMN3LN13=L1N3KD}"
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
/* actual GUID */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
...
...
@@ -710,7 +729,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -727,7 +746,7 @@ static void test_MsiQueryComponentState(void)
/* local system product key exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
...
...
@@ -736,7 +755,7 @@ static void test_MsiQueryComponentState(void)
/* LocalPackage value exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -748,7 +767,7 @@ static void test_MsiQueryComponentState(void)
/* component key exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -757,7 +776,7 @@ static void test_MsiQueryComponentState(void)
/* component\product exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_NOTUSED
,
"Expected INSTALLSTATE_NOTUSED, got %d
\n
"
,
state
);
...
...
@@ -765,7 +784,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_MACHINE
,
component
,
&
state
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
...
...
@@ -779,7 +798,7 @@ static void test_MsiQueryComponentState(void)
/* MSIINSTALLCONTEXT_USERUNMANAGED */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
...
...
@@ -790,7 +809,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -812,7 +831,7 @@ static void test_MsiQueryComponentState(void)
RegCloseKey
(
prodkey
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -826,7 +845,7 @@ static void test_MsiQueryComponentState(void)
/* component key exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -835,7 +854,7 @@ static void test_MsiQueryComponentState(void)
/* component\product exists */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_NOTUSED
,
"Expected INSTALLSTATE_NOTUSED, got %d
\n
"
,
state
);
...
...
@@ -843,14 +862,14 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
/* MSIINSTALLCONTEXT_USERMANAGED */
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
...
...
@@ -861,7 +880,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
ok
(
state
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
state
);
...
...
@@ -877,7 +896,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_UNKNOWN_COMPONENT
,
"Expected ERROR_UNKNOWN_COMPONENT, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_UNKNOWN
,
"Expected INSTALLSTATE_UNKNOWN, got %d
\n
"
,
state
);
...
...
@@ -897,7 +916,7 @@ static void test_MsiQueryComponentState(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
state
=
0xdeadbeef
;
r
=
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
r
=
p
MsiQueryComponentStateA
(
prodcode
,
NULL
,
MSIINSTALLCONTEXT_USERMANAGED
,
component
,
&
state
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
state
==
INSTALLSTATE_LOCAL
,
"Expected INSTALLSTATE_LOCAL, got %d
\n
"
,
state
);
...
...
@@ -912,17 +931,7 @@ static void test_MsiQueryComponentState(void)
START_TEST
(
msi
)
{
HMODULE
hmod
=
GetModuleHandle
(
"msi.dll"
);
pMsiUseFeatureExA
=
(
fnMsiUseFeatureExA
)
GetProcAddress
(
hmod
,
"MsiUseFeatureExA"
);
pMsiOpenPackageExA
=
(
fnMsiOpenPackageExA
)
GetProcAddress
(
hmod
,
"MsiOpenPackageExA"
);
pMsiOpenPackageExW
=
(
fnMsiOpenPackageExW
)
GetProcAddress
(
hmod
,
"MsiOpenPackageExW"
);
pMsiGetComponentPathA
=
(
fnMsiGetComponentPathA
)
GetProcAddress
(
hmod
,
"MsiGetComponentPathA"
);
pMsiGetFileHashA
=
(
fnMsiGetFileHashA
)
GetProcAddress
(
hmod
,
"MsiGetFileHashA"
);
init_functionpointers
();
test_usefeature
();
test_null
();
...
...
dlls/msi/tests/source.c
View file @
5f161252
...
...
@@ -30,6 +30,21 @@
#include "wine/test.h"
static
BOOL
(
WINAPI
*
pConvertSidToStringSidA
)(
PSID
,
LPSTR
*
);
static
UINT
(
WINAPI
*
pMsiSourceListGetInfoA
)
(
LPCSTR
,
LPCSTR
,
MSIINSTALLCONTEXT
,
DWORD
,
LPCSTR
,
LPSTR
,
LPDWORD
);
static
void
init_functionpointers
(
void
)
{
HMODULE
hmsi
=
GetModuleHandleA
(
"msi.dll"
);
HMODULE
hadvapi32
=
GetModuleHandleA
(
"advapi32.dll"
);
pMsiSourceListGetInfoA
=
(
void
*
)
GetProcAddress
(
hmsi
,
"MsiSourceListGetInfoA"
);
pConvertSidToStringSidA
=
(
void
*
)
GetProcAddress
(
hadvapi32
,
"ConvertSidToStringSidA"
);
}
/* copied from dlls/msi/registry.c */
static
BOOL
squash_guid
(
LPCWSTR
in
,
LPWSTR
out
)
{
...
...
@@ -93,7 +108,7 @@ static void get_user_sid(LPSTR *usersid)
size
=
sizeof
(
buf
);
GetTokenInformation
(
token
,
TokenUser
,
(
void
*
)
buf
,
size
,
&
size
);
user
=
(
PTOKEN_USER
)
buf
;
ConvertSidToStringSid
(
user
->
User
.
Sid
,
usersid
);
pConvertSidToStringSidA
(
user
->
User
.
Sid
,
usersid
);
}
static
void
test_MsiSourceListGetInfo
(
void
)
...
...
@@ -113,82 +128,82 @@ static void test_MsiSourceListGetInfo(void)
get_user_sid
(
&
usersid
);
/* NULL szProductCodeOrPatchCode */
r
=
MsiSourceListGetInfoA
(
NULL
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
NULL
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* empty szProductCodeOrPatchCode */
r
=
MsiSourceListGetInfoA
(
""
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
""
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* garbage szProductCodeOrPatchCode */
r
=
MsiSourceListGetInfoA
(
"garbage"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
"garbage"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* szProductCodeOrPatchCode */
r
=
MsiSourceListGetInfoA
(
"garbage"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
"garbage"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* guid without brackets */
r
=
MsiSourceListGetInfoA
(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
"51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* guid with brackets */
r
=
MsiSourceListGetInfoA
(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
"{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
/* same length as guid, but random */
r
=
MsiSourceListGetInfoA
(
"ADKD-2KSDFF2-DKK1KNFJASD9GLKWME-1I3KAD"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
"ADKD-2KSDFF2-DKK1KNFJASD9GLKWME-1I3KAD"
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* invalid context */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_NONE
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_NONE
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* another invalid context */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_ALLUSERMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_ALLUSERMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* yet another invalid context */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_ALL
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_ALL
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* mix two valid contexts */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERMANAGED
|
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERMANAGED
|
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* invalid option */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
4
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
NULL
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
/* NULL property */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
NULL
,
NULL
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* empty property */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
""
,
NULL
,
NULL
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
/* value is non-NULL while size is NULL */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
value
,
NULL
);
ok
(
r
==
ERROR_INVALID_PARAMETER
,
"Expected ERROR_INVALID_PARAMETER, got %d
\n
"
,
r
);
/* size is non-NULL while value is NULL */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PRODUCT
,
"Expected ERROR_UNKNOWN_PRODUCT, got %d
\n
"
,
r
);
...
...
@@ -199,7 +214,7 @@ static void test_MsiSourceListGetInfo(void)
ok
(
res
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
res
);
/* user product key exists */
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_BAD_CONFIGURATION
,
"Expected ERROR_BAD_CONFIGURATION, got %d
\n
"
,
r
);
...
...
@@ -208,7 +223,7 @@ static void test_MsiSourceListGetInfo(void)
/* SourceList key exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
size
==
0
,
"Expected 0, got %d
\n
"
,
size
);
...
...
@@ -219,14 +234,14 @@ static void test_MsiSourceListGetInfo(void)
/* PackageName value exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
size
==
11
,
"Expected 11, got %d
\n
"
,
size
);
/* read the value, don't change size */
lstrcpyA
(
value
,
"aaa"
);
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
value
,
&
size
);
ok
(
r
==
ERROR_MORE_DATA
,
"Expected ERROR_MORE_DATA, got %d
\n
"
,
r
);
ok
(
!
lstrcmpA
(
value
,
"aaa"
),
"Expected 'aaa', got %s
\n
"
,
value
);
...
...
@@ -234,7 +249,7 @@ static void test_MsiSourceListGetInfo(void)
/* read the value, fix size */
size
++
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
INSTALLPROPERTY_PACKAGENAME
,
value
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
!
lstrcmpA
(
value
,
"msitest.msi"
),
"Expected 'msitest.msi', got %s
\n
"
,
value
);
...
...
@@ -242,14 +257,14 @@ static void test_MsiSourceListGetInfo(void)
/* empty property now that product key exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
""
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PROPERTY
,
"Expected ERROR_UNKNOWN_PROPERTY, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
/* nonexistent property now that product key exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
"nonexistent"
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PROPERTY
,
"Expected ERROR_UNKNOWN_PROPERTY, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -260,14 +275,14 @@ static void test_MsiSourceListGetInfo(void)
/* nonexistent property now that nonexistent value exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PRODUCT
,
"nonexistent"
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PROPERTY
,
"Expected ERROR_UNKNOWN_PROPERTY, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
/* invalid option now that product key exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
4
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
size
==
11
,
"Expected 11, got %d
\n
"
,
size
);
...
...
@@ -281,7 +296,7 @@ static void test_MsiSourceListGetInfo(void)
/* try a patch */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PATCH
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_UNKNOWN_PATCH
,
"Expected ERROR_UNKNOWN_PATCH, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -296,7 +311,7 @@ static void test_MsiSourceListGetInfo(void)
* NOTE: using prodcode guid, but it really doesn't matter
*/
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PATCH
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_BAD_CONFIGURATION
,
"Expected ERROR_BAD_CONFIGURATION, got %d
\n
"
,
r
);
ok
(
size
==
0xdeadbeef
,
"Expected 0xdeadbeef, got %d
\n
"
,
size
);
...
...
@@ -306,7 +321,7 @@ static void test_MsiSourceListGetInfo(void)
/* SourceList key exists */
size
=
0xdeadbeef
;
r
=
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
r
=
p
MsiSourceListGetInfoA
(
prodcode
,
usersid
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSICODE_PATCH
,
INSTALLPROPERTY_PACKAGENAME
,
NULL
,
&
size
);
ok
(
r
==
ERROR_SUCCESS
,
"Expected ERROR_SUCCESS, got %d
\n
"
,
r
);
ok
(
size
==
0
,
"Expected 0, got %d
\n
"
,
size
);
...
...
@@ -319,5 +334,7 @@ static void test_MsiSourceListGetInfo(void)
START_TEST
(
source
)
{
init_functionpointers
();
test_MsiSourceListGetInfo
();
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment