https://bugs.winehq.org/show_bug.cgi?id=47430
Bug ID: 47430 Summary: RT Se7en Lite installer fails to {modify,repair,remove} product after successful installation, reporting 'Function failed.' Product: Wine Version: 4.11 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: msi Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
continuation of bug 27576
Invoking the installer again after successful installation to modify, repair or remove the product etc. leads to failure.
Prerequisite:
* 32-bit WINEPREFIX (WINEARCH=win32) * .NET Framework 3.5 ('winetricks -q dotnet35')
--- snip --- $ WINEDEBUG=+seh,+relay,+msi wine ./rt_7_lite_win7_vista_x86.exe >>log.txt 2>&1 ... 0009:Call KERNEL32.CreateProcessW(00173c70 L"Z:\home\focht\Downloads\rt_7_lite_win7_vista_x86.exe",00189680 L" /i "C:\users\focht\Application Data\Rockers Team\RT 7 Lite x86\install\rt_7_lite_win7_Vista_x86.msi" AI_SETUPEXEPATH="Z:\home\focht\Downloads\rt_7_lite_win7_vista_x86.exe" SETUPEXEDIR="Z:\home\focht\Downloads\"",00000000,00000000,00000000,00000020,00000000,00000000,0034f908,0034f950) ret=0045360b ... 0034:Call KERNEL32.__wine_kernel_init() ret=7bc7ba70 0034:Ret KERNEL32.__wine_kernel_init() retval=7b47b444 ret=7bc7ba70 0009:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0045360b ... 0034:trace:msi:MSI_OpenPackageW ... opening package L"C:\windows\Installer\5809.msi" ... 0034:trace:msi:MSI_OpenDatabaseW Call msvcrt._vsnprintf(0032e760,00000400,714cd469 "%s %s\n",0032eb80) ret=71435caa 0034:Ret msvcrt._vsnprintf() retval=0000002a ret=71435caa L"C:\windows\Installer\5809.msi" #0001 0034:Call ole32.StgOpenStorage(0032f000 L"C:\windows\Installer\5809.msi",00000000,00010022,00000000,00000000,0032ebbc) ret=7143799c 0034:Call KERNEL32.CreateFileW(0032f000 L"C:\windows\Installer\5809.msi",c0000000,00000001,00000000,00000003,10000080,00000000) ret=65264f54 0034:Ret KERNEL32.CreateFileW() retval=000001dc ret=65264f54 0034:Call KERNEL32.GetFileSize(000001dc,00000000) ret=65264f76 0034:Ret KERNEL32.GetFileSize() retval=00166800 ret=65264f76 ... 0034:Call KERNEL32.CreateProcessW(0066de20 L"Z:\home\focht\Downloads\rt_7_lite_win7_vista_x86.exe",0066e778 L"Z:\home\focht\Downloads\rt_7_lite_win7_vista_x86.exe /i "C:\users\focht\Application Data\Rockers Team\RT 7 Lite x86\install\rt_7_lite_win7_Vista_x86.msi" EXECUTEACTION="INSTALL" SECONDSEQUENCE="1" CLIENTPROCESSID="51" REMOVE="wimmount,MainFeature" ACTION="INSTALL" C"...,00000000,00000000,00000000,00000000,00000000,00000000,0032f228,0032f28c) ret=0046fa08 ... 0046:Call KERNEL32.__wine_kernel_init() ret=7bc7ba70 0046:Ret KERNEL32.__wine_kernel_init() retval=7b47b444 ret=7bc7ba70 0034:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0046fa08 ... 0046:Call advapi32.RegOpenKeyExW(80000002,0032ea10 L"Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-21-0-0-0-1000\Products\8AA8552FF60585C4BA460CC5F6767565\InstallProperties",00000000,000f013f,0032eed4) ret=71487822 ... 0046:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=71487822 ... 0046:Call KERNEL32.GetFileAttributesW(0032f000 L"C:\windows\Installer\5809.msi") ret=71476fa5 0046:Ret KERNEL32.GetFileAttributesW() retval=00000020 ret=71476fa5 ... 0046:trace:msi:MSI_OpenPackageW Call opening package L"C:\windows\Installer\5809.msi" ... 0046:Call ole32.StgOpenStorage(0032f000 L"C:\windows\Installer\5809.msi",00000000,00010022,00000000,00000000,0032ebbc) ret=7143799c 0046:Call KERNEL32.CreateFileW(0032f000 L"C:\windows\Installer\5809.msi",c0000000,00000001,00000000,00000003,10000080,00000000) ret=65264f54 0046:Ret KERNEL32.CreateFileW() retval=ffffffff ret=65264f54 0046:Ret ole32.StgOpenStorage() retval=80030020 ret=7143799c ... 0046:Ret msi.MsiOpenPackageW() retval=0000065b ret=0046e9df ... 0046:Call KERNEL32.FormatMessageW(00001300,00000000,0000065b,00000400,0032f3d0,00000000,00000000) ret=0046fdcd 0046:Ret KERNEL32.FormatMessageW() retval=00000012 ret=0046fdcd ... 0046:Call user32.MessageBoxW(00000000,0065a038 L"Function failed.\r\n",006595a8 L"RT 7 Lite x86",00000010) ret=004079a7 --- snip ---
Apparently a sharing violation. The installer package can't be opened a second time with MSIDBOPEN_TRANSACT from the child process (tid=0x0046). The parent installer process (tid=0x0034) still has it open.
$ sha1sum rt_7_lite_win7_vista_x86.exe 8afd116c1a524cf1772c972860bc390af713cb6c rt_7_lite_win7_vista_x86.exe
$ du -sh rt_7_lite_win7_vista_x86.exe 16M rt_7_lite_win7_vista_x86.exe
$ wine --version wine-4.11-192-g90a1e5d943
Regards