[2/2] msi: Resolve the target folder if necessary in msi_get_target_folder.
Hans Leidekker
hans at codeweavers.com
Thu Dec 1 06:04:44 CST 2011
Fixes http://bugs.winehq.org/show_bug.cgi?id=29202
---
dlls/msi/action.c | 10 ++--------
dlls/msi/install.c | 14 ++++++++++++--
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index c3e971e..d4170f5 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -3517,14 +3517,8 @@ static WCHAR *get_link_file( MSIPACKAGE *package, MSIRECORD *row )
link_folder = msi_get_target_folder( package, directory );
if (!link_folder)
{
- /* some installers use a separate root */
- MSIFOLDER *folder = msi_get_loaded_folder( package, directory );
- while (folder->Parent && strcmpW( folder->Parent, folder->Directory ))
- {
- folder = msi_get_loaded_folder( package, folder->Parent );
- }
- msi_resolve_target_folder( package, folder->Directory, TRUE );
- link_folder = msi_get_target_folder( package, directory );
+ ERR("unable to resolve folder %s\n", debugstr_w(directory));
+ return NULL;
}
/* may be needed because of a bug somewhere else */
msi_create_full_path( link_folder );
diff --git a/dlls/msi/install.c b/dlls/msi/install.c
index 285d7c9..fc5a625 100644
--- a/dlls/msi/install.c
+++ b/dlls/msi/install.c
@@ -213,8 +213,18 @@ UINT msi_strcpy_to_awstring( LPCWSTR str, awstring *awbuf, DWORD *sz )
const WCHAR *msi_get_target_folder( MSIPACKAGE *package, const WCHAR *name )
{
MSIFOLDER *folder = msi_get_loaded_folder( package, name );
- if (folder) return folder->ResolvedTarget;
- return NULL;
+
+ if (!folder) return NULL;
+ if (!folder->ResolvedTarget)
+ {
+ MSIFOLDER *parent = folder;
+ while (parent->Parent && strcmpW( parent->Parent, parent->Directory ))
+ {
+ parent = msi_get_loaded_folder( package, parent->Parent );
+ }
+ msi_resolve_target_folder( package, parent->Directory, TRUE );
+ }
+ return folder->ResolvedTarget;
}
/***********************************************************************
--
1.7.7.3
More information about the wine-patches
mailing list