[Bug 10211] gmax 1.2 installer doesn't update dialog controls subscribed to SelectionPath event when the INSTALLDIR property has changed
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Jul 22 15:31:02 CDT 2011
http://bugs.winehq.org/show_bug.cgi?id=10211
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|REOPENED |NEW
CC| |focht at gmx.net
Component|-unknown |msi
Version|unspecified |0.9.48.
Summary|gmax installer does not |gmax 1.2 installer doesn't
|allow changing of |update dialog controls
|installation directory, |subscribed to SelectionPath
|fails to install |event when the INSTALLDIR
| |property has changed
--- Comment #8 from Anastasius Focht <focht at gmx.net> 2011-07-22 15:31:01 CDT ---
Hello,
confirming, still present.
--- snip ---
...
0021:Call user32.CreateWindowExW(00000000,683a7440 L"Static",0063e346
L"C:\\gmax\\",50020000,00000033,000000c8,00000130,00000017,00040022,00000000,00000000,00000000)
ret=68338857
0021:trace:win:WIN_CreateWindowEx L"C:\\gmax\\" L"Static" ex=00000000
style=50020000 51,200 304x23 parent=0x40022 menu=(nil) inst=(nil) params=(nil)
0021:trace:win:dump_window_styles style: WS_CHILD WS_VISIBLE WS_GROUP
0021:trace:win:dump_window_styles exstyle:
0021:trace:win:WIN_SetWindowLong 0x20094 -12 0 W
...
0021:trace:win:WIN_CreateWindowEx created window 0x20094
0021:Ret user32.CreateWindowExW() retval=00020094 ret=68338857
0021:trace:msi:msi_dialog_create_window Dialog L"Single_Feature_Destination"
control L"[_WiseDialogFontDefault][INSTALLDIR]" hwnd 0x20094
...
0021:Call user32.SetPropW(00020094,683a745c L"MSIDATA",00185b20) ret=6833996f
0021:Ret user32.SetPropW() retval=00000001 ret=6833996f
0021:trace:msi:ControlEvent_SubscribeToEvent event L"SelectionPath" control
L"Text43" attribute L"SelectionPath"
...
0021:trace:msi:msi_get_property returning L"C:\\gmax\\yyy\\" for property
L"INSTALLDIR"
...
0021:trace:msi:ControlEvent_FireSubscribedEvent Firing event L"SelectionPath"
...
0021:trace:msi:msi_get_property property L"C:\\gmax\\yyy\\" not found
0021:Call user32.SetWindowTextW(00020094,00000000) ret=683392c9
0021:Call window proc 0x683395e0
(hwnd=0x20094,msg=WM_SETTEXT,wp=00000000,lp=00000000)
0021:trace:msi:MSIText_WndProc 0x20094 000c 00000000 00000000
0021:Call user32.GetPropW(00020094,683a745c L"MSIDATA") ret=68339673
0021:Ret user32.GetPropW() retval=00185b20 ret=68339673
0021:Call user32.CallWindowProcW(68712a33,00020094,0000000c,00000000,00000000)
ret=683396e5
0021:Call window proc 0x68712a33
(hwnd=0x20094,msg=WM_SETTEXT,wp=00000000,lp=00000000)
0021:Ret window proc 0x68712a33
(hwnd=0x20094,msg=WM_SETTEXT,wp=00000000,lp=00000000) retval=00000000
0021:Ret user32.CallWindowProcW() retval=00000000 ret=683396e5
...
0021:Ret window proc 0x683395e0
(hwnd=0x20094,msg=WM_SETTEXT,wp=00000000,lp=00000000) retval=00000000
0021:Ret user32.SetWindowTextW() retval=00000000 ret=683392c9
...
0021:trace:msi:MSI_SetTargetPathW 0x1658a0 L"INSTALLDIR" L"C:\\gmax\\yyy\\"
...
0021:trace:msi:msi_set_property 0x1468d8 L"INSTALLDIR" L"C:\\gmax\\yyy\\"
--- snip ---
The dialog controls correctly subscribe the "SelectionPath" event.
The event is fired after the folder selection is done (browse dialog).
Unfortunately there is a bug when retrieving the property value.
See "msi_dialog_handle_event":
http://source.winehq.org/git/wine.git/blob/e601ef55a9ce9c0d3e52da48846cfa3ff000a287:/dlls/msi/dialog.c#l693
--- snip ---
...
else if ( !strcmpW( attribute, szSelectionPath ) )
{
LPWSTR prop = msi_dialog_dup_property( dialog, ctrl->property, TRUE );
LPWSTR path;
if (!prop) return;
path = msi_dup_property( dialog->package->db, prop );
SetWindowTextW( ctrl->hwnd, path );
msi_free(prop);
msi_free(path);
}
--- snip ---
Due to "indirect == TRUE" passed to msi_dialog_dup_property(), the returned
string which ought to be the property name _is_ the property value (path value
of the INSTALLDIR property).
The following msi_dup_property() fails due to that mishap, returning NULL.
Either pass FALSE to msi_dialog_dup_property() or get rid following
msi_dup_property().
With that fixed, the installation directory name will be properly updated for
controls that are subscribed to SelectionPath event.
$ sha1sum gmax12.exe
197b049ab1eda1b26061520e18ae43cf55b97e92 gmax12.exe
$ wine --version
wine-1.3.25-1-gdf65f3e
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list