Hans Leidekker : msi: Fall back to the database summary information stream in MSI_OpenPackageW.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Mar 25 10:13:23 CDT 2015


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Mar 25 14:31:47 2015 +0100

msi: Fall back to the database summary information stream in MSI_OpenPackageW.

---

 dlls/msi/msipriv.h |  1 +
 dlls/msi/package.c | 18 +++++++++++++-----
 dlls/msi/suminfo.c |  4 ++--
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index a953d28..b67698a 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -952,6 +952,7 @@ extern UINT msi_spawn_error_dialog( MSIPACKAGE*, LPWSTR, LPWSTR ) DECLSPEC_HIDDE
 
 /* summary information */
 extern UINT msi_get_suminfo( IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si ) DECLSPEC_HIDDEN;
+extern UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **si ) DECLSPEC_HIDDEN;
 extern LPWSTR msi_suminfo_dup_string( MSISUMMARYINFO *si, UINT uiProperty ) DECLSPEC_HIDDEN;
 extern INT msi_suminfo_get_int32( MSISUMMARYINFO *si, UINT uiProperty ) DECLSPEC_HIDDEN;
 extern LPWSTR msi_get_suminfo_product( IStorage *stg ) DECLSPEC_HIDDEN;
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index de50703..6fbbbf5 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1488,8 +1488,12 @@ static WCHAR *get_package_code( MSIDATABASE *db )
     r = msi_get_suminfo( db->storage, 0, &si );
     if (r != ERROR_SUCCESS)
     {
-        WARN("failed to load summary info %u\n", r);
-        return NULL;
+        r = msi_get_db_suminfo( db, 0, &si );
+        if (r != ERROR_SUCCESS)
+        {
+            WARN("failed to load summary info %u\n", r);
+            return NULL;
+        }
     }
     ret = msi_suminfo_dup_string( si, PID_REVNUMBER );
     msiobj_release( &si->hdr );
@@ -1638,9 +1642,13 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
     r = msi_get_suminfo( db->storage, 0, &si );
     if (r != ERROR_SUCCESS)
     {
-        WARN("failed to load summary info\n");
-        msiobj_release( &package->hdr );
-        return ERROR_INSTALL_PACKAGE_INVALID;
+        r = msi_get_db_suminfo( db, 0, &si );
+        if (r != ERROR_SUCCESS)
+        {
+            WARN("failed to load summary info\n");
+            msiobj_release( &package->hdr );
+            return ERROR_INSTALL_PACKAGE_INVALID;
+        }
     }
     r = parse_suminfo( si, package );
     msiobj_release( &si->hdr );
diff --git a/dlls/msi/suminfo.c b/dlls/msi/suminfo.c
index 97544d5..bb5e935 100644
--- a/dlls/msi/suminfo.c
+++ b/dlls/msi/suminfo.c
@@ -469,7 +469,7 @@ UINT msi_get_suminfo( IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **ret )
     return ERROR_SUCCESS;
 }
 
-static UINT get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **ret )
+UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **ret )
 {
     IStream *stm;
     MSISUMMARYINFO *si;
@@ -547,7 +547,7 @@ UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase,
 
     ret = msi_get_suminfo( db->storage, uiUpdateCount, &si );
     if (ret != ERROR_SUCCESS)
-        ret = get_db_suminfo( db, uiUpdateCount, &si );
+        ret = msi_get_db_suminfo( db, uiUpdateCount, &si );
     if (ret != ERROR_SUCCESS)
     {
         if ((si = create_suminfo( db->storage, uiUpdateCount )))




More information about the wine-cvs mailing list