Commit 30fc5602 authored by James Hawkins's avatar James Hawkins Committed by Alexandre Julliard

msi: Reload properties as they may have been changed by a transform.

parent cf3f4427
......@@ -674,6 +674,9 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
msi_apply_transforms( package );
msi_apply_patches( package );
/* properties may have been added by a transform */
msi_clone_properties( package );
if ( (msi_get_property_int(package, szUILevel, 0) & INSTALLUILEVEL_MASK) >= INSTALLUILEVEL_REDUCED )
{
package->script->InWhatSequence |= SEQUENCE_UI;
......
......@@ -688,6 +688,7 @@ extern UINT WINAPI MSI_SetFeatureStateW(MSIPACKAGE*, LPCWSTR, INSTALLSTATE );
extern LPCWSTR msi_download_file( LPCWSTR szUrl, LPWSTR filename );
extern UINT msi_package_add_info(MSIPACKAGE *, DWORD, DWORD, LPCWSTR, LPWSTR);
extern UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR);
extern UINT msi_clone_properties(MSIPACKAGE *);
/* for deformating */
extern UINT MSI_FormatRecordW( MSIPACKAGE *, MSIRECORD *, LPWSTR, DWORD * );
......
......@@ -60,10 +60,11 @@ static void MSI_FreePackage( MSIOBJECTHDR *arg)
ACTION_free_package_structures(package);
}
static UINT clone_properties(MSIPACKAGE *package)
static UINT create_temp_property_table(MSIPACKAGE *package)
{
MSIQUERY * view = NULL;
MSIQUERY *view = NULL;
UINT rc;
static const WCHAR CreateSql[] = {
'C','R','E','A','T','E',' ','T','A','B','L','E',' ','`','_','P','r','o',
'p','e','r','t','y','`',' ','(',' ','`','_','P','r','o','p','e','r','t',
......@@ -73,17 +74,7 @@ static UINT clone_properties(MSIPACKAGE *package)
'U','L','L',' ','T','E','M','P','O','R','A','R','Y',' ','P','R','I','M',
'A','R','Y',' ','K','E','Y',' ','`','_','P','r','o','p','e','r','t','y',
'`',')',0};
static const WCHAR Query[] = {
'S','E','L','E','C','T',' ','*',' ',
'F','R','O','M',' ','`','P','r','o','p','e','r','t','y','`',0};
static const WCHAR Insert[] = {
'I','N','S','E','R','T',' ','i','n','t','o',' ',
'`','_','P','r','o','p','e','r','t','y','`',' ',
'(','`','_','P','r','o','p','e','r','t','y','`',',',
'`','V','a','l','u','e','`',')',' ',
'V','A','L','U','E','S',' ','(','?',',','?',')',0};
/* create the temporary properties table */
rc = MSI_DatabaseOpenViewW(package->db, CreateSql, &view);
if (rc != ERROR_SUCCESS)
return rc;
......@@ -91,8 +82,23 @@ static UINT clone_properties(MSIPACKAGE *package)
rc = MSI_ViewExecute(view, 0);
MSI_ViewClose(view);
msiobj_release(&view->hdr);
if (rc != ERROR_SUCCESS)
return rc;
}
UINT msi_clone_properties(MSIPACKAGE *package)
{
MSIQUERY *view = NULL;
UINT rc;
static const WCHAR Query[] = {
'S','E','L','E','C','T',' ','*',' ',
'F','R','O','M',' ','`','P','r','o','p','e','r','t','y','`',0};
static const WCHAR Insert[] = {
'I','N','S','E','R','T',' ','i','n','t','o',' ',
'`','_','P','r','o','p','e','r','t','y','`',' ',
'(','`','_','P','r','o','p','e','r','t','y','`',',',
'`','V','a','l','u','e','`',')',' ',
'V','A','L','U','E','S',' ','(','?',',','?',')',0};
/* clone the existing properties */
rc = MSI_DatabaseOpenViewW(package->db, Query, &view);
......@@ -735,7 +741,8 @@ MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db, LPCWSTR base_url )
package->PackagePath = strdupW( db->path );
package->BaseURL = strdupW( base_url );
clone_properties( package );
create_temp_property_table( package );
msi_clone_properties( package );
set_installer_properties(package);
sprintfW(uilevel,szpi,gUILevel);
MSI_SetPropertyW(package, szLevel, uilevel);
......
......@@ -2453,11 +2453,8 @@ static void test_transformprop(void)
r = MsiInstallProductA(msifile, "TRANSFORMS=winetest.mst");
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
todo_wine
{
ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n");
ok(delete_pf("msitest", FALSE), "File not installed\n");
}
/* Delete the files in the temp (current) folder */
DeleteFile(msifile);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment