Hans Leidekker : msi: Keep the UI level fixed during the lifetime of a package.

Alexandre Julliard julliard at winehq.org
Thu Apr 5 12:31:47 CDT 2012


Module: wine
Branch: master
Commit: dd205230a0d215cefef42bfe25d2d78b237a9ec8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dd205230a0d215cefef42bfe25d2d78b237a9ec8

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Apr  5 15:12:15 2012 +0200

msi: Keep the UI level fixed during the lifetime of a package.

---

 dlls/msi/action.c  |    4 ++--
 dlls/msi/custom.c  |    4 ++--
 dlls/msi/dialog.c  |    2 +-
 dlls/msi/media.c   |    2 +-
 dlls/msi/msipriv.h |    1 +
 dlls/msi/package.c |    1 +
 6 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 5e9ef35..b3472f8 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -480,7 +480,7 @@ UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
 
 static BOOL needs_ui_sequence(MSIPACKAGE *package)
 {
-    return (gUILevel & INSTALLUILEVEL_MASK) >= INSTALLUILEVEL_REDUCED;
+    return (package->ui_level & INSTALLUILEVEL_MASK) >= INSTALLUILEVEL_REDUCED;
 }
 
 UINT msi_set_context(MSIPACKAGE *package)
@@ -2954,7 +2954,7 @@ static UINT ITERATE_LaunchConditions(MSIRECORD *row, LPVOID param)
     r = MSI_EvaluateConditionW(package,cond);
     if (r == MSICONDITION_FALSE)
     {
-        if ((gUILevel & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
+        if ((package->ui_level & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
         {
             LPWSTR deformated;
             message = MSI_RecordGetString(row,2);
diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c
index 7543767..9e50035 100644
--- a/dlls/msi/custom.c
+++ b/dlls/msi/custom.c
@@ -903,11 +903,11 @@ static UINT HANDLE_CustomType19(MSIPACKAGE *package, LPCWSTR source,
     if( row )
     {
         LPCWSTR error = MSI_RecordGetString( row, 1 );
-        if ((gUILevel & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
+        if ((package->ui_level & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
             MessageBoxW( NULL, error, NULL, MB_OK );
         msiobj_release( &row->hdr );
     }
-    else if ((gUILevel & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
+    else if ((package->ui_level & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
         MessageBoxW( NULL, deformated, NULL, MB_OK );
 
     msi_free( deformated );
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index 04a4a6b..a90d379 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -3978,7 +3978,7 @@ UINT msi_spawn_error_dialog( MSIPACKAGE *package, LPWSTR error_dialog, LPWSTR er
         'M','S','I','E','r','r','o','r','D','i','a','l','o','g','R','e','s','u','l','t',0
     };
 
-    if ((gUILevel & INSTALLUILEVEL_MASK) == INSTALLUILEVEL_NONE) return ERROR_SUCCESS;
+    if ((package->ui_level & INSTALLUILEVEL_MASK) == INSTALLUILEVEL_NONE) return ERROR_SUCCESS;
 
     if ( !error_dialog )
     {
diff --git a/dlls/msi/media.c b/dlls/msi/media.c
index 9a01277..612624d 100644
--- a/dlls/msi/media.c
+++ b/dlls/msi/media.c
@@ -77,7 +77,7 @@ static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi)
 
     static const WCHAR error_prop[] = {'E','r','r','o','r','D','i','a','l','o','g',0};
 
-    if ((gUILevel & INSTALLUILEVEL_MASK) == INSTALLUILEVEL_NONE &&
+    if ((package->ui_level & INSTALLUILEVEL_MASK) == INSTALLUILEVEL_NONE &&
         !gUIHandlerA && !gUIHandlerW && !gUIHandlerRecord) return ERROR_SUCCESS;
 
     error = msi_build_error_string(package, 1302, 1, mi->disk_prompt);
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 4ed4fd6..dc748e2 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -389,6 +389,7 @@ typedef struct tagMSIPACKAGE
     LPWSTR localfile;
     BOOL delete_on_close;
 
+    INSTALLUILEVEL ui_level;
     UINT CurrentInstallState;
     msi_dialog *dialog;
     LPWSTR next_dialog;
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 834467f..ca836ec 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1180,6 +1180,7 @@ MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db, LPCWSTR base_url )
         set_installed_prop( package );
         set_installer_properties( package );
 
+        package->ui_level = gUILevel;
         sprintfW( uilevel, fmtW, gUILevel & INSTALLUILEVEL_MASK );
         msi_set_property(package->db, szUILevel, uilevel);
 




More information about the wine-cvs mailing list