Module: wine Branch: master Commit: db6dbcf2a2f44715052e8efba824a624d24eb295 URL: http://source.winehq.org/git/wine.git/?a=commit;h=db6dbcf2a2f44715052e8efba8...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Aug 23 14:42:15 2011 +0200
msi: Initialize the installation context from the registry if the product is installed.
---
dlls/msi/action.c | 17 +++++++++-------- dlls/msi/msi.c | 1 + 2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index bea3052..71f4f6a 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -488,14 +488,15 @@ static BOOL needs_ui_sequence(MSIPACKAGE *package)
UINT msi_set_context(MSIPACKAGE *package) { - int num; - - package->Context = MSIINSTALLCONTEXT_USERUNMANAGED; - - num = msi_get_property_int(package->db, szAllUsers, 0); - if (num == 1 || num == 2) - package->Context = MSIINSTALLCONTEXT_MACHINE; - + UINT r = msi_locate_product( package->ProductCode, &package->Context ); + if (r != ERROR_SUCCESS) + { + int num = msi_get_property_int( package->db, szAllUsers, 0 ); + if (num == 1 || num == 2) + package->Context = MSIINSTALLCONTEXT_MACHINE; + else + package->Context = MSIINSTALLCONTEXT_USERUNMANAGED; + } return ERROR_SUCCESS; }
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 2a8fa72..7506338 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -54,6 +54,7 @@ UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context) HKEY hkey = NULL;
*context = MSIINSTALLCONTEXT_NONE; + if (!szProduct) return ERROR_UNKNOWN_PRODUCT;
if (MSIREG_OpenProductKey(szProduct, NULL, MSIINSTALLCONTEXT_USERMANAGED, &hkey, FALSE) == ERROR_SUCCESS)