http://bugs.winehq.org/show_bug.cgi?id=29153
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |RESOLVED CC| |focht@gmx.net Resolution| |FIXED
--- Comment #13 from Anastasius Focht focht@gmx.net 2013-12-06 08:45:27 CST --- Hello folks,
for me it looks like NSIS ExecWait works exactly as expected.
--- snip --- $ WINEDEBUG=+tid,+seh,+relay wine ./setup.exe >>log.txt 2>&1 ... 0025:Call KERNEL32.lstrcatA(0079f4d8 "Execute: ",0040b3a8 ""C:\users\focht\Temp\TrueSpk.exe"") ret=004052fd ... 0025:Call KERNEL32.CreateProcessA(00000000,0040b3a8 ""C:\users\focht\Temp\TrueSpk.exe"",00000000,00000000,00000000,00000000,00000000,00000000,007a2508,009ce7f8) ret=004057be ... 0027:Call KERNEL32.__wine_kernel_init() ret=7bc599cc 0025:Ret KERNEL32.CreateProcessA() retval=00000001 ret=004057be ... 0025:Call KERNEL32.CloseHandle(00000084) ret=004057cb 0025:Ret KERNEL32.CloseHandle() retval=00000001 ret=004057cb 0025:Call KERNEL32.lstrlenA(007a3ac0 "") ret=00406422 0025:Ret KERNEL32.lstrlenA() retval=00000000 ret=00406422 0025:Call user32.wvsprintfA(007a3ac0,0040a2b4 "Exec: success ("%s")",009ce810) ret=0040642b 0025:Ret user32.wvsprintfA() retval=00000033 ret=0040642b 0025:Call KERNEL32.WaitForSingleObject(00000080,00000064) ret=00402094 --- snip ---
At this point the main installer waits for the sub-installer (tid=0x27) to finish. The sub-installer puts up some progress bar (briefly seen), tries to load a dialog template which fails (incomplete example? intended?) and continues pumping messages which blocks the parent process indefinitely.
--- snip --- 0027:Call user32.CreateDialogIndirectParamA(00000000,00145788,00000000,00405fab,0013a1f4) ret=004060fa 0027:Call winex11.drv.EnumDisplayMonitors(00000000,00000000,7eb59a2c,0033f7b4) ret=7eb5a08c 0027:Call winex11.drv.GetMonitorInfo(00000001,0033f634) ret=7eb59fbc 0027:Ret winex11.drv.GetMonitorInfo() retval=00000001 ret=7eb59fbc 0027:Ret winex11.drv.EnumDisplayMonitors() retval=00000001 ret=7eb5a08c 0027:Call winex11.drv.GetMonitorInfo(00000001,0033f86c) ret=7eb59fbc 0027:Ret winex11.drv.GetMonitorInfo() retval=00000001 ret=7eb59fbc 0027:Ret user32.CreateDialogIndirectParamA() retval=00000000 ret=004060fa 0027:Call KERNEL32.FreeResource(00000000) ret=00405278 0027:Ret KERNEL32.FreeResource() retval=00000000 ret=00405278 0027:Call KERNEL32.GlobalUnlock(00145788) ret=004051ae 0027:Ret KERNEL32.GlobalUnlock() retval=00000001 ret=004051ae 0027:Call KERNEL32.GlobalFree(00145788) ret=004051b8 0027:Ret KERNEL32.GlobalFree() retval=00000000 ret=004051b8 0027:Call user32.GetMessageA(0033fc1c,00000000,00000000,00000000) ret=0040610f 0027:Call winex11.drv.MsgWaitForMultipleObjectsEx(00000001,0033fb78,ffffffff,000004ff,00000000) ret=7eb96ad3 0027:Ret winex11.drv.MsgWaitForMultipleObjectsEx() retval=00000000 ret=7eb96ad3 0027:Call winex11.drv.MsgWaitForMultipleObjectsEx(00000001,0033fb78,ffffffff,000004ff,00000000) ret=7eb96ad3 --- snip ---
The main installer waits for the sub-installer to finish:
--- snip --- 0025:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=00402094 0025:Call user32.PeekMessageA(009ce7ec,00000000,0000000f,0000000f,00000001) ret=004064bd 0025:Call winex11.drv.MsgWaitForMultipleObjectsEx(00000000,00000000,00000000,000004ff,00000000) ret=7ed27ad3 0025:Ret winex11.drv.MsgWaitForMultipleObjectsEx() retval=00000102 ret=7ed27ad3 0025:Ret user32.PeekMessageA() retval=00000000 ret=004064bd 0025:Call KERNEL32.WaitForSingleObject(00000080,00000064) ret=00402094 0025:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=00402094 --- snip ---
$sha1sum setup.exe d28e8387867e2d92a4f4b2c4e6ae864d64936153 setup.exe
$ du -sh setup.exe 164K setup.exe
$ wine --version wine-1.7.7-326-ged89525
Regards