[Bug 27338] New: Msi should provide detailed error if temporary row can't be inserted (MSIMODIFY_VALIDATE_NEW -> MSIDBERROR_DUPLICATEKEY support, Dirt3 installer fails)
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon May 30 15:09:19 CDT 2011
http://bugs.winehq.org/show_bug.cgi?id=27338
Summary: Msi should provide detailed error if temporary row
can't be inserted (MSIMODIFY_VALIDATE_NEW ->
MSIDBERROR_DUPLICATEKEY support, Dirt3 installer
fails)
Product: Wine
Version: 1.3.21
Platform: x86
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: msi
AssignedTo: wine-bugs at winehq.org
ReportedBy: focht at gmx.net
Hello,
another bug while looking at "Dirt 3" game installer ...
The installer fails on "WixSchedInternetShortcuts" custom action.
$ wine msiexec -i game.msi
--- snip ---
...
0021:trace:msi:HANDLE_CustomType1 Calling function L"WixSchedInternetShortcuts"
from L"C:\\users\\focht\\Temp\\msi628.tmp"
...
0024:Call msi.MsiRecordSetStringA(00000007,00000000,014f49b0
"WixSchedInternetShortcuts: Adding folder
'Fid_D5579516_84CF_3B51_7784_BD063F26A84D', component
'Shortcuts__0F4C15DF_B733_5E9F_AEB9_4AE3EB2CE922' to the CreateFolder table")
ret=014e33e2
...
0024:Call msi.MsiRecordSetStringA(00000009,00000000,014f49b0
"WixSchedInternetShortcuts: Adding folder
'Fid_5AD471A0_5D86_6CBD_CAA1_F4D40C3E18F0', component
'Shortcuts__0F4C15DF_B733_5E9F_AEB9_4AE3EB2CE922' to the CreateFolder table")
ret=014e33e2
...
0024:Call msi.MsiRecordSetStringA(00000009,00000000,014f49b0
"WixSchedInternetShortcuts: Adding folder 'ApplicationProgramsMenuFolder',
component 'Shortcuts__CFDF6910_DB4F_C69E_9ADA_92860D3756B1' to the CreateFolder
table") ret=014e33e2
...
0024:Call msi.MsiRecordSetStringA(00000009,00000000,014f49b0
"WixSchedInternetShortcuts: Adding folder 'ApplicationProgramsMenuFolder',
component 'Shortcuts__CFDF6910_DB4F_C69E_9ADA_92860D3756B1' to the CreateFolder
table") ret=014e33e2
...
0024:Call msi.MsiCreateRecord(00000002) ret=014e47b5
0024:Call ntdll.RtlAllocateHeap(00110000,00000008,0000002c) ret=6839152e
0024:Ret ntdll.RtlAllocateHeap() retval=016cc4a8 ret=6839152e
0024:trace:msi:alloc_msihandle 0x16cc4a8 -> 9
0024:Ret msi.MsiCreateRecord() retval=00000009 ret=014e47b5
...
0024:Call msi.MsiRecordSetStringW(00000009,00000001,016cc6a0
L"ApplicationProgramsMenuFolder") ret=014e48e5
...
0024:Call msi.MsiRecordSetStringW(00000009,00000002,016cc638
L"Shortcuts__CFDF6910_DB4F_C69E_9ADA_92860D3756B1") ret=014e48e5
...
0024:Call msi.MsiViewModify(00000007,00000007,00000009) ret=014e491b
0024:trace:msi:MsiViewModify 7 7 9
0024:Call ntdll.RtlAllocateHeap(00110000,00000000,00000008) ret=683c8451
0024:Ret ntdll.RtlAllocateHeap() retval=016cc528 ret=683c8451
0024:Call ntdll.RtlFreeHeap(00110000,00000000,016cc528) ret=683c84f1
0024:Ret ntdll.RtlFreeHeap() retval=00000001 ret=683c84f1
0024:Ret msi.MsiViewModify() retval=0000065b ret=014e491b
0024:Call msi.MsiViewModify(00000007,00000009,00000009) ret=014e493e
0024:trace:msi:MsiViewModify 7 9 9
0024:Call ntdll.RtlAllocateHeap(00110000,00000000,00000008) ret=683c8451
0024:Ret ntdll.RtlAllocateHeap() retval=016cc528 ret=683c8451
0024:Call ntdll.RtlFreeHeap(00110000,00000000,016cc528) ret=683c84f1
0024:Ret ntdll.RtlFreeHeap() retval=00000001 ret=683c84f1
0024:Ret msi.MsiViewModify() retval=0000065b ret=014e493e
0024:Call msi.MsiViewGetErrorW(00000007,0a20e60c,0a20e5f4) ret=014e4961
0024:fixme:msi:MsiViewGetErrorW 7 0xa20e60c 0xa20e5f4 - returns empty error
string
0024:Ret msi.MsiViewGetErrorW() retval=00000000 ret=014e4961
...
0024:Call msi.MsiRecordSetStringA(0000000a,00000000,014f49b0
"WixSchedInternetShortcuts: Error 0x8007065b: failed to add temporary row,
dberr: 0, err: ") ret=014e33e2
...
0021:err:msi:ITERATE_Actions Execution halted, action
L"WixSchedInternetShortcuts" returned 1603
--- snip ---
Orca dump of "WixInternetShort" table:
--- snip ---
WixInternetShortcut Component_ Directory_ Name Target Attributes
s72 s72 s72 s72 l0 i2
WixInternetShortcut WixInternetShortcut
SCID__02F04857_1890_3E47_2CDB_ABB67103AA99
Shortcuts__0F4C15DF_B733_5E9F_AEB9_4AE3EB2CE922
Fid_D5579516_84CF_3B51_7784_BD063F26A84D Join Code M.lnk
http://www.codemasters.com/codem 0
SCID__2B3E8C81_E632_A062_08E5_2F5110BA11C4
Shortcuts__0F4C15DF_B733_5E9F_AEB9_4AE3EB2CE922
Fid_5AD471A0_5D86_6CBD_CAA1_F4D40C3E18F0 DiRT 3 Homepage.lnk
http://www.dirt3game.com 0
SCID__DAC95ADF_79FE_72E5_13F7_87C55123F117
Shortcuts__CFDF6910_DB4F_C69E_9ADA_92860D3756B1
ApplicationProgramsMenuFolder Join Code M.url
http://www.codemasters.com/codem 1
SCID__80F28856_E815_8494_E21B_DE466EB73131
Shortcuts__CFDF6910_DB4F_C69E_9ADA_92860D3756B1
ApplicationProgramsMenuFolder DiRT 3 Homepage.url
http://www.dirt3game.com 1
--- snip ---
The insertion of last temporary WixInternetShortcut record fails due to folder
already existing in "CreateFolder" table -> duplicate item.
This error is usually harmless but must be propagated somehow.
Msi only returns ERROR_FUNCTION_FAILED on temporary row insertion failure.
The installer tries to figure out exact error and issues
MSIMODIFY_VALIDATE_NEW, see:
http://msdn.microsoft.com/en-us/library/aa370519.aspx
--- quote ---
MSIMODIFY_VALIDATE_NEW
9
Validate a new record. Does not validate across joins. Checks for duplicate
keys. Obtain validation errors by calling MsiViewGetError. Works with
read-write and read-only records. This mode cannot be used with a view
containing joins.
--- quote ---
The following MsiViewGetErrorW() to fetch the detailed error should actually
return MSIDBERROR_DUPLICATEKEY.
The installer recognizes this error code and does not fail if returned.
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