James Hawkins : msi: Simplify the MEDIAPACKAGEPATH and DISKPROMPT cases.
Alexandre Julliard
julliard at winehq.org
Tue Feb 19 08:05:18 CST 2008
Module: wine
Branch: master
Commit: 95ef6a1fbc4ffc8964dc384b7f8d197ceb94f24f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=95ef6a1fbc4ffc8964dc384b7f8d197ceb94f24f
Author: James Hawkins <jhawkins at codeweavers.com>
Date: Tue Feb 19 01:49:04 2008 -0600
msi: Simplify the MEDIAPACKAGEPATH and DISKPROMPT cases.
---
dlls/msi/source.c | 41 ++++++++++++++-------------------
dlls/msi/tests/source.c | 57 ++++++++++++----------------------------------
2 files changed, 33 insertions(+), 65 deletions(-)
diff --git a/dlls/msi/source.c b/dlls/msi/source.c
index 710383c..9702cda 100644
--- a/dlls/msi/source.c
+++ b/dlls/msi/source.c
@@ -395,9 +395,14 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
LPCWSTR szProperty, LPCWSTR szValue)
{
WCHAR squished_pc[GUID_SIZE];
- HKEY sourcekey;
+ HKEY sourcekey, media;
+ LPCWSTR property;
UINT rc;
+ static const WCHAR media_package[] = {
+ 'M','e','d','i','a','P','a','c','k','a','g','e',0
+ };
+
TRACE("%s %s %x %x %s %s\n", debugstr_w(szProduct), debugstr_w(szUserSid),
dwContext, dwOptions, debugstr_w(szProperty), debugstr_w(szValue));
@@ -415,40 +420,30 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
FIXME("Unhandled options MSICODE_PATCH\n");
return ERROR_UNKNOWN_PATCH;
}
-
+
if (szUserSid)
FIXME("Unhandled UserSid %s\n",debugstr_w(szUserSid));
if (dwContext == MSIINSTALLCONTEXT_USERUNMANAGED)
FIXME("Unknown context MSIINSTALLCONTEXT_USERUNMANAGED\n");
+ property = szProperty;
+ if (!lstrcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW))
+ property = media_package;
+
rc = OpenSourceKey(szProduct, &sourcekey, MSICODE_PRODUCT, dwContext, FALSE);
if (rc != ERROR_SUCCESS)
return rc;
- if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW) == 0)
+ if (!lstrcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW) ||
+ !lstrcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTW))
{
- HKEY key;
- DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
- rc = OpenMediaSubkey(sourcekey, &key, FALSE);
+ rc = OpenMediaSubkey(sourcekey, &media, TRUE);
if (rc == ERROR_SUCCESS)
- rc = RegSetValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATHW, 0,
- REG_SZ, (const BYTE *)szValue, size);
- if (rc != ERROR_SUCCESS)
- rc = ERROR_UNKNOWN_PROPERTY;
- RegCloseKey(key);
- }
- else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTW) == 0)
- {
- HKEY key;
- DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
- rc = OpenMediaSubkey(sourcekey, &key, FALSE);
- if (rc == ERROR_SUCCESS)
- rc = RegSetValueExW(key, INSTALLPROPERTY_DISKPROMPTW, 0,
- REG_SZ, (const BYTE *)szValue, size);
- if (rc != ERROR_SUCCESS)
- rc = ERROR_UNKNOWN_PROPERTY;
- RegCloseKey(key);
+ {
+ rc = msi_reg_set_val_str(media, property, szValue);
+ RegCloseKey(media);
+ }
}
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW)==0)
{
diff --git a/dlls/msi/tests/source.c b/dlls/msi/tests/source.c
index 013e7e9..ffc2145 100644
--- a/dlls/msi/tests/source.c
+++ b/dlls/msi/tests/source.c
@@ -1509,28 +1509,19 @@ static void test_MsiSourceListSetInfo(void)
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* Media key is created by MsiSourceListSetInfo */
res = RegOpenKeyA(source, "Media", &media);
- todo_wine
- {
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- CHECK_REG_STR(media, "MediaPackage", "path");
- }
+ ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+ CHECK_REG_STR(media, "MediaPackage", "path");
/* set the info again */
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
INSTALLPROPERTY_MEDIAPACKAGEPATH, "path2");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- CHECK_REG_STR(media, "MediaPackage", "path2");
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ CHECK_REG_STR(media, "MediaPackage", "path2");
/* NULL szProperty */
r = MsiSourceListSetInfoA(prodcode, NULL,
@@ -1557,11 +1548,8 @@ static void test_MsiSourceListSetInfo(void)
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
INSTALLPROPERTY_MEDIAPACKAGEPATH, "");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- CHECK_REG_STR(media, "MediaPackage", "");
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ CHECK_REG_STR(media, "MediaPackage", "");
/* INSTALLPROPERTY_MEDIAPACKAGEPATH, MSISOURCETYPE_NETWORK */
r = MsiSourceListSetInfoA(prodcode, NULL,
@@ -1589,11 +1577,8 @@ static void test_MsiSourceListSetInfo(void)
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
INSTALLPROPERTY_DISKPROMPT, "prompt");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- CHECK_REG_STR(media, "DiskPrompt", "prompt");
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ CHECK_REG_STR(media, "DiskPrompt", "prompt");
/* INSTALLPROPERTY_DISKPROMPT, MSISOURCETYPE_NETWORK */
r = MsiSourceListSetInfoA(prodcode, NULL,
@@ -1750,18 +1735,12 @@ static void test_MsiSourceListSetInfo(void)
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_USERMANAGED, MSICODE_PRODUCT,
INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* Media key is created by MsiSourceListSetInfo */
res = RegOpenKeyA(source, "Media", &media);
- todo_wine
- {
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- CHECK_REG_STR(media, "MediaPackage", "path");
- }
+ ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+ CHECK_REG_STR(media, "MediaPackage", "path");
RegDeleteValueA(media, "MediaPackage");
RegDeleteKeyA(media, "");
@@ -1793,18 +1772,12 @@ static void test_MsiSourceListSetInfo(void)
r = MsiSourceListSetInfoA(prodcode, NULL,
MSIINSTALLCONTEXT_MACHINE, MSICODE_PRODUCT,
INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
- todo_wine
- {
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- }
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* Media key is created by MsiSourceListSetInfo */
res = RegOpenKeyA(source, "Media", &media);
- todo_wine
- {
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- CHECK_REG_STR(media, "MediaPackage", "path");
- }
+ ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+ CHECK_REG_STR(media, "MediaPackage", "path");
/* szUserSid is non-NULL */
r = MsiSourceListSetInfoA(prodcode, usersid,
More information about the wine-cvs
mailing list