Added patch to update ProductVersion when applying MSI transforms.

This commit is contained in:
Sebastian Lackner 2014-11-01 21:30:04 +01:00
parent 61769b2227
commit 9c556a5905
5 changed files with 95 additions and 1 deletions

View File

@ -35,7 +35,7 @@ Wine. All those differences are also documented on the
Included bugfixes and improvements
==================================
**Bugfixes and features included in the next upcoming release [9]:**
**Bugfixes and features included in the next upcoming release [10]:**
* Cinema 4D needs NotifyIpInterfaceChange ([Wine Bug #34573](https://bugs.winehq.org/show_bug.cgi?id=34573))
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
@ -46,6 +46,7 @@ Included bugfixes and improvements
* Support for TLB dependencies lookup in resources ([Wine Bug #34184](https://bugs.winehq.org/show_bug.cgi?id=34184))
* Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372))
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
* Update ProductVersion property when applying MSI transforms ([Wine Bug #37493](https://bugs.winehq.org/show_bug.cgi?id=37493))
**Bugs fixed in Wine-Compholio 1.7.29 [80]:**

1
debian/changelog vendored
View File

@ -9,6 +9,7 @@ wine-compholio (1.7.30) UNRELEASED; urgency=low
* Added patch for implementation of GdipCreateRegionRgnData.
* Added patch for implementation of D3DXCreatePolygon.
* Added patch for TLB dependencies lookup in resources.
* Added patch to update ProductVersion when applying MSI transforms.
* Removed patch to avoid Clang compiler warning because of unused Vtable (accepted upstream).
* Removed patch for additional ATL thunks (accepted upstream).
* Removed patch to ímplement IRichEditOle and ITextDocument support for ITextServices (accepted upstream).

View File

@ -49,6 +49,7 @@ PATCHLIST := \
libs-Unicode_Collation.ok \
libwine-BSD_mmap_fixed.ok \
mshtml-sessionStorage.ok \
msi-Transform_ProductVersion.ok \
msvcp90-basic_string_wchar_dtor.ok \
ntdll-DOS_Attributes.ok \
ntdll-Dynamic_DST.ok \
@ -734,6 +735,24 @@ mshtml-sessionStorage.ok:
echo '+ { "mshtml-sessionStorage", "Zhenbo Li", "Implement sessionStorage (partially)." },'; \
) > mshtml-sessionStorage.ok
# Patchset msi-Transform_ProductVersion
# |
# | Included patches:
# | * Update ProductVersion property when applying MSI transforms. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#37493] Update ProductVersion property when applying MSI transforms
# |
# | Modified files:
# | * dlls/msi/patch.c
# |
.INTERMEDIATE: msi-Transform_ProductVersion.ok
msi-Transform_ProductVersion.ok:
$(call APPLY_FILE,msi-Transform_ProductVersion/0001-msi-Update-ProductVersion-property-when-applying-tra.patch)
@( \
echo '+ { "msi-Transform_ProductVersion", "Sebastian Lackner", "Update ProductVersion property when applying MSI transforms." },'; \
) > msi-Transform_ProductVersion.ok
# Patchset msvcp90-basic_string_wchar_dtor
# |
# | Included patches:

View File

@ -0,0 +1,69 @@
From 89ce3a340e3086a4b223d8dbe8356eedcf7ec1f1 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 18 Sep 2014 00:38:15 +0200
Subject: msi: Update ProductVersion property when applying transforms.
---
dlls/msi/patch.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/patch.c b/dlls/msi/patch.c
index a738de1..1cf5373 100644
--- a/dlls/msi/patch.c
+++ b/dlls/msi/patch.c
@@ -118,7 +118,7 @@ error:
return NULL;
}
-static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform )
+static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform, WCHAR **version_to )
{
static const UINT supported_flags =
MSITRANSFORM_VALIDATE_PRODUCT | MSITRANSFORM_VALIDATE_LANGUAGE |
@@ -255,9 +255,16 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform
msi_free( upgrade_code_installed );
}
+ if ((valid_flags & wanted_flags) != wanted_flags)
+ {
+ free_transform_desc( desc );
+ msiobj_release( &si->hdr );
+ return ERROR_FUNCTION_FAILED;
+ }
+
+ *version_to = strdupW( desc->version_to );
free_transform_desc( desc );
msiobj_release( &si->hdr );
- if ((valid_flags & wanted_flags) != wanted_flags) return ERROR_FUNCTION_FAILED;
TRACE("applicable transform\n");
return ERROR_SUCCESS;
}
@@ -266,6 +273,7 @@ static UINT apply_substorage_transform( MSIPACKAGE *package, MSIDATABASE *patch_
{
UINT ret = ERROR_FUNCTION_FAILED;
IStorage *stg = NULL;
+ WCHAR *version_to;
HRESULT r;
TRACE("%p %s\n", package, debugstr_w(name));
@@ -278,9 +286,16 @@ static UINT apply_substorage_transform( MSIPACKAGE *package, MSIDATABASE *patch_
r = IStorage_OpenStorage( patch_db->storage, name, NULL, STGM_SHARE_EXCLUSIVE, NULL, 0, &stg );
if (SUCCEEDED(r))
{
- ret = check_transform_applicable( package, stg );
+ ret = check_transform_applicable( package, stg, &version_to );
if (ret == ERROR_SUCCESS)
+ {
msi_table_apply_transform( package->db, stg );
+ if (version_to)
+ {
+ msi_set_property( package->db, szProductVersion, version_to, -1 );
+ msi_free( version_to );
+ }
+ }
else
TRACE("substorage transform %s wasn't applicable\n", debugstr_w(name));
IStorage_Release( stg );
--
2.1.2

View File

@ -0,0 +1,4 @@
Author: Sebastian Lackner
Subject: Update ProductVersion property when applying MSI transforms.
Revision: 1
Fixes: [37493] Update ProductVersion property when applying MSI transforms