msi: Factorize and fix the INSTALLPROPERTY_MEDIAPACKAGEPATH case.
This commit is contained in:
parent
f178985db3
commit
d41cae07d5
|
@ -352,9 +352,12 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
|
||||||
LPDWORD pcchValue)
|
LPDWORD pcchValue)
|
||||||
{
|
{
|
||||||
WCHAR squished_pc[GUID_SIZE];
|
WCHAR squished_pc[GUID_SIZE];
|
||||||
HKEY sourcekey;
|
HKEY sourcekey, media;
|
||||||
UINT rc;
|
UINT rc;
|
||||||
|
|
||||||
|
static const WCHAR mediapack[] = {
|
||||||
|
'M','e','d','i','a','P','a','c','k','a','g','e',0};
|
||||||
|
|
||||||
TRACE("%s %s\n", debugstr_w(szProduct), debugstr_w(szProperty));
|
TRACE("%s %s\n", debugstr_w(szProduct), debugstr_w(szProperty));
|
||||||
|
|
||||||
if (!szProduct || !squash_guid(szProduct, squished_pc))
|
if (!szProduct || !squash_guid(szProduct, squished_pc))
|
||||||
|
@ -381,27 +384,21 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW) == 0)
|
if (!lstrcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW) ||
|
||||||
|
!lstrcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTW))
|
||||||
{
|
{
|
||||||
HKEY key;
|
rc = OpenMediaSubkey(sourcekey, &media, FALSE);
|
||||||
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
|
if (rc != ERROR_SUCCESS)
|
||||||
if (rc == ERROR_SUCCESS)
|
{
|
||||||
rc = RegQueryValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATHW,
|
RegCloseKey(sourcekey);
|
||||||
0, 0, (LPBYTE)szValue, pcchValue);
|
return ERROR_SUCCESS;
|
||||||
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
|
}
|
||||||
rc = ERROR_UNKNOWN_PROPERTY;
|
|
||||||
RegCloseKey(key);
|
if (!lstrcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW))
|
||||||
}
|
szProperty = mediapack;
|
||||||
else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTW) ==0)
|
|
||||||
{
|
RegQueryValueExW(media, szProperty, 0, 0, (LPBYTE)szValue, pcchValue);
|
||||||
HKEY key;
|
RegCloseKey(media);
|
||||||
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
|
|
||||||
if (rc == ERROR_SUCCESS)
|
|
||||||
rc = RegQueryValueExW(key, INSTALLPROPERTY_DISKPROMPTW, 0, 0,
|
|
||||||
(LPBYTE)szValue, pcchValue);
|
|
||||||
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
|
|
||||||
rc = ERROR_UNKNOWN_PROPERTY;
|
|
||||||
RegCloseKey(key);
|
|
||||||
}
|
}
|
||||||
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW)==0)
|
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW)==0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2998,12 +2998,9 @@ static void test_publishsourcelist(void)
|
||||||
lstrcpyA(value, "aaa");
|
lstrcpyA(value, "aaa");
|
||||||
r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
|
r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
|
||||||
MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH, value, &size);
|
MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH, value, &size);
|
||||||
todo_wine
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
||||||
{
|
ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
|
||||||
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
ok(size == 0, "Expected 0, got %d\n", size);
|
||||||
ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
|
|
||||||
ok(size == 0, "Expected 0, got %d\n", size);
|
|
||||||
}
|
|
||||||
|
|
||||||
size = MAX_PATH;
|
size = MAX_PATH;
|
||||||
lstrcpyA(value, "aaa");
|
lstrcpyA(value, "aaa");
|
||||||
|
|
|
@ -332,6 +332,16 @@ static void test_MsiSourceListGetInfo(void)
|
||||||
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
||||||
ok(size == 11, "Expected 11, got %d\n", size);
|
ok(size == 11, "Expected 11, got %d\n", size);
|
||||||
|
|
||||||
|
/* INSTALLPROPERTY_MEDIAPACKAGEPATH, media key does not exist */
|
||||||
|
size = MAX_PATH;
|
||||||
|
lstrcpyA(value, "aaa");
|
||||||
|
r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
|
||||||
|
MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH,
|
||||||
|
value, &size);
|
||||||
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
||||||
|
ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
|
||||||
|
ok(size == 0, "Expected 0, got %d\n", size);
|
||||||
|
|
||||||
res = RegCreateKeyA(hkey, "Media", &media);
|
res = RegCreateKeyA(hkey, "Media", &media);
|
||||||
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
|
||||||
|
|
||||||
|
@ -345,12 +355,9 @@ static void test_MsiSourceListGetInfo(void)
|
||||||
r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
|
r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
|
||||||
MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH,
|
MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH,
|
||||||
value, &size);
|
value, &size);
|
||||||
todo_wine
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
||||||
{
|
ok(!lstrcmpA(value, "path"), "Expected \"path\", got \"%s\"\n", value);
|
||||||
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
ok(size == 4, "Expected 4, got %d\n", size);
|
||||||
ok(!lstrcmpA(value, "path"), "Expected \"path\", got \"%s\"\n", value);
|
|
||||||
ok(size == 4, "Expected 4, got %d\n", size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* INSTALLPROPERTY_DISKPROMPT */
|
/* INSTALLPROPERTY_DISKPROMPT */
|
||||||
data = "prompt";
|
data = "prompt";
|
||||||
|
|
Loading…
Reference in New Issue