[Bug 46812] New: PS4 Remote Play installer 2.8.x fails, claims ' You need the Media Feature Pack' ( MsiGetDatabaseState is called from a custom action)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Mar 10 07:35:28 CDT 2019


https://bugs.winehq.org/show_bug.cgi?id=46812

            Bug ID: 46812
           Summary: PS4 Remote Play installer 2.8.x fails, claims 'You
                    need the Media Feature Pack' (MsiGetDatabaseState is
                    called from a custom action)
           Product: Wine
           Version: 4.3
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: msi
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

stumbled across this while looking at bug 46809

The installer works with Wine-Staging 4.3 but not with plain Wine 4.3

Prerequisite: WinVer set to 'Windows 8.1' or higher (launch condition).

--- snip ---
$ WINEDEBUG=+seh,+relay,+msi,+wmp,+wmvcore wine ./RemotePlayInstaller.exe
>>log.txt 2>&1
...
003f:Ret  KERNEL32.LoadLibraryW() retval=10000000 ret=7e90cf1d
003f:Call KERNEL32.GetProcAddress(10000000,00162238 "DoAppSearchEx")
ret=7e90cfca
003f:Ret  KERNEL32.GetProcAddress() retval=10010e52 ret=7e90cfca
003f:Call KERNEL32.GetEnvironmentVariableA(7e98d055
"MsiBreak",0055fba0,00000104) ret=7e90cc78
003f:Ret  KERNEL32.GetEnvironmentVariableA() retval=00000000 ret=7e90cc78
...
003f:Call msi.MsiGetDatabaseState(00000001) ret=1001bd46
003f:trace:msi:MsiGetDatabaseState 1
003f:warn:msi:MsiGetDatabaseState MsiGetDatabaseState not allowed during a
custom action!
003f:Ret  msi.MsiGetDatabaseState() retval=00000000 ret=1001bd46 
...
003f:Call msi.MsiDatabaseOpenViewW(00000001,001707f0 L"SELECT
`Description`,`Template` FROM `ActionText` WHERE  `Action` = 'AppSearch'
",0055fa68) ret=1001c4bf
003f:trace:msi:MsiDatabaseOpenViewW L"SELECT `Description`,`Template` FROM
`ActionText` WHERE  `Action` = 'AppSearch' " 0x55fa68 
...
003f:Call msi.MsiGetDatabaseState(00000001) ret=1001bd46
003f:trace:msi:MsiGetDatabaseState 1
003f:warn:msi:MsiGetDatabaseState MsiGetDatabaseState not allowed during a
custom action!
003f:Ret  msi.MsiGetDatabaseState() retval=00000000 ret=1001bd46 
...
002f:Call KERNEL32.WideCharToMultiByte(00000000,00000000,003af710 L"Action
ended 12:47:48: AI_AppSearchEx. Return value
1.",ffffffff,003b0320,00000037,00000000,00000000) ret=7f29e5f7e516
002f:Ret  KERNEL32.WideCharToMultiByte() retval=00000037 ret=7f29e5f7e516 
...
002f:trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM ControlEvent WHERE
`Dialog_` = 'WelcomeDlg' AND `Control_` = 'Next' ORDER BY `Ordering`" 0x22e2f0 
...
002f:trace:msi:MSI_EvaluateConditionW L"AI_INSTALL AND ( (IS_INSTALL_WMP64 <> 1
AND IS_INSTALL_WMP7 <> 1) )" 
...
002f:trace:msi:MSI_EvaluateConditionW 1 <- L"AI_INSTALL AND ( (IS_INSTALL_WMP64
<> 1 AND IS_INSTALL_WMP7 <> 1) )" 
...
002f:trace:msi:dialog_event_handler handling event L"DoAction"
002f:trace:msi:ACTION_PerformAction Performing action (L"AI_DATA_SETTER_3")
...
002f:trace:msi:ACTION_CustomAction Handling custom action L"AI_DATA_SETTER_3"
(33 L"CustomActionData"
L"[SCE.MsgTxtMfpErr]\r\\n\r\\nhttps://remoteplay.dl.playstation.net/remoteplay/mediaFeaturePack.html
|[ProductName]
|MB_OKCANCEL,MB_ICONINFORMATION,MB_DEFBUTTON1|BTN_PRESSED|[CLIENTPROCESSID]") 
...
002f:trace:msi:MSI_EvaluateConditionW L"AI_INSTALL AND ( (IS_INSTALL_WMP64 <> 1
AND IS_INSTALL_WMP7 <> 1) )" 
...
002f:trace:msi:MSI_EvaluateConditionW 1 <- L"AI_INSTALL AND ( (IS_INSTALL_WMP64
<> 1 AND IS_INSTALL_WMP7 <> 1) )"
002f:trace:msi:msi_dialog_send_event Sending control event L"DoAction"
L"MsgBoxMfpWin" 
...
002f:trace:msi:ACTION_CustomAction Handling custom action L"MsgBoxMfpWin" (1
L"aicustact.dll" L"MsgBox")
002f:trace:msi:HANDLE_CustomType1 Calling function L"MsgBox" from
L"C:\\users\\focht\\Temp\\msic7ec.tmp" 
...
0043:Call user32.MessageBoxW(00000000,00171980 L"You need the Media Feature
Pack from Microsoft(R) to use PS4 Remote Play.\nClick [OK] to open your web
browser and download the Media Feature Pack from the
website.\r\n\r\nhttps://remoteplay.dl.playstation.net/remoteplay/mediaFeaturePack.html
",00171e90 L"PS4 Remote Play ",00000041) ret=10007c7e 
...
--- snip ---

The 'IS_INSTALL_WMP64' and 'IS_INSTALL_WMP7' properties ought to be set by
'AI_AppSearchEx' custom action.

Extracted 'RemotePlayInstaller_2.8.0.03041_Win32.msi' and export of
'AI_AppSearchEx' table via ORCA:

--- snip ---
Property    Type    SearchString    Order    Condition    VerMin    VerMax   
Platform    RefContent
s72    I4    s0    i4    S0    S0    S0    I2    S0
AI_AppSearchEx    Property    Type    SearchString
PreReqSearch_D564007E3BBE4F85950A09B470A7CA65    2   
HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum\Version    1   
    12.0.21005        0    
IS_INSTALL_WMP64    9    HKLM\SOFTWARE\Microsoft\Active Setup\Installed
Components\{22d6f312-b0f6-11d0-94ab-0080c74c7e95}\IsInstalled    2             
  0    M1
IS_INSTALL_WMP7    9    HKLM\SOFTWARE\Microsoft\Active Setup\Installed
Components\{6BF52A52-394A-11d3-B153-00C04F79FAA6}\IsInstalled    3             
  0    M1
--- snip ---

'ControlEvent' table:

--- snip ---
Dialog_    Control_    Event    Argument    Condition    Ordering
s72    s50    s50    s255    S255    I2
ControlEvent    Dialog_    Control_    Event    Argument    Condition
...
WelcomeDlg    Cancel    SpawnDialog    CancelDlg    1    100
WelcomeDlg    Next    EndDialog    Exit    AI_INSTALL AND ( IS_INSTALL_WMP64 <>
1 AND IS_INSTALL_WMP7 <> 1 )    14
WelcomeDlg    Next    NewDialog    LicenseAgreementDlg    AI_INSTALL AND (
IS_INSTALL_WMP64 = 1 OR IS_INSTALL_WMP7 = 1 )    15
WelcomeDlg    Next    DoAction    MsgBoxMfpWin    AI_INSTALL AND (
(IS_INSTALL_WMP64 <> 1 AND IS_INSTALL_WMP7 <> 1) )    5
WelcomeDlg    Next    DoAction    AI_DATA_SETTER_3    AI_INSTALL AND (
(IS_INSTALL_WMP64 <> 1 AND IS_INSTALL_WMP7 <> 1) )    4
WelcomeDlg    Next    DoAction    OpenUrlMfpWin    AI_INSTALL AND (
(IS_INSTALL_WMP64 <> 1 AND IS_INSTALL_WMP7 <> 1) AND (BTN_PRESSED = "IDOK") )  
 11
--- snip ---

https://github.com/wine-staging/wine-staging/tree/master/patches/msi-MsiGetDatabaseState

Which points to bug 43093 which was closed as dupe of bug 34989

https://bugs.winehq.org/show_bug.cgi?id=43093#c6

--- quote ---
Since the presence or absence of the associated staging patch does not actually
affect this bug anymore, and since it is likely that none of the problems
specific to this installer were blocking, I have marked this as a duplicate of
#34989.
--- quote ---

Well, this patch seems still relevant. If it's no longer relevant for bug 43093
the reference in description shall be removed or updated to this bug.

With
https://github.com/wine-staging/wine-staging/blob/master/patches/msi-MsiGetDatabaseState/0001-msi-Always-return-MSIDBSTATE_ERROR-when-MsiGetDataba.patch
applied, the installer detects WMP6/7 properly via registry.

I've created a snapshot via Internet archive to preserve the exact version in
case it gets updated:

https://web.archive.org/web/20190310123055/https://remoteplay.dl.playstation.net/remoteplay/module/win/RemotePlayInstaller.exe

$ sha1sum RemotePlayInstaller.exe 
d7e56a826e82689383687dfc63fe2a035b987604  RemotePlayInstaller.exe

$ du -sh RemotePlayInstaller.exe 
19M    RemotePlayInstaller.exe

$ wine --version
wine-4.3-229-g6d82b2f1ad

Regards

-- 
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