https://bugs.winehq.org/show_bug.cgi?id=35539
Bug ID: 35539 Summary: Proteus 8 demo fails to install Product: Wine Version: 1.7.11 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: msi Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Classification: Unclassified
Hello folks,
split off from bug 34457
--- snip --- $ WINEDEBUG=+tid,+seh,+relay,+msi wine ./prodemo.exe >>log.txt 2>&1 ... 0037:trace:msi:ACTION_PerformUIAction Performing action (L"WriteEnvironmentStrings") ... 0037:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 100 L"Action 13:24:18: WriteEnvironmentStrings. Updating environment strings" ... 0037:trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM `Environment`" 0x33f7e8 ... 0037:trace:msi:ITERATE_WriteEnvironmentString name L"!-*LXKSERVER" value (null) ... 0037:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"Name: LXKSERVER, Value: , Action 0" ... 0037:trace:msi:ITERATE_WriteEnvironmentString name L"=-*LXKSERVER" value L"[KEY_SERVER]" ... 0037:trace:msi:MSI_FormatRecordW L"[KEY_SERVER]" ... 0037:trace:msi:msi_get_property property L"KEY_SERVER" not found ... 0037:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"Name: LXKSERVER, Value: , Action 0" ... 0037:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended 13:24:18: WriteEnvironmentStrings. Return value 14." ... 0037:err:msi:ITERATE_Actions Execution halted, action L"WriteEnvironmentStrings" returned 14 --- snip ---
"Environment" msi table dump with ORCA:
--- snip --- Environment Name Value Component_ s72 l255 L255 s72
LXKSERVER !-*LXKSERVER APPFRAME.DLL LXKSERVER_1 =-*LXKSERVER [KEY_SERVER] APPFRAME.DLL --- snip ---
The first one has no value -> skipped (ok).
The second one has a value and is getting deformatted ... unfortunately 'KEY_SERVER' property is not set at this point, resulting in failure.
I found only one occurrence of this property 'KEY_SERVER' in msi tables:
"Control" msi table:
--- snip --- KeyServerDlg Edit_1 Edit 101 112 125 18 3 KEY_SERVER {260} Bitmap --- snip ---
The unattended install using explicit command line property works, see: http://www.softnual.com/html/pds/network-installation.htm
--- quote --- Where a server license and dongle are installed the KEY_SERVER property can be set on the command line to point to the licence key server. If set this will set the environment variable, if not set the variable will be cleared. --- quote ---
If I pass the property via command line it finishes successfully:
--- snip --- $ wine msiexec -i setup_demo8.1.17358.0.msi KEY_SERVER=test ... $ fixme:wshom:WshShell3_RegWrite (L"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\LXKSERVER" {VT_BSTR: L"test"} {vt 10}): stub --- snip ---
For UI install, the 'KeyServerDlg' is referenced from 'LicenseKeyTypeDlg' which is referenced from 'LicenseAgreementDlg':
--- snip --- LicenseAgreementDlg Back NewDialog WelcomeDlg AI_INSTALL AND LicenseAgreementDlg_Cond 1 LicenseAgreementDlg Next NewDialog SetupTypeDlg AI_INSTALL AND LicenseAgreementDlg_Cond 3 LicenseAgreementDlg Next NewDialog LicenseKeyTypeDlgAI_INSTALL AND LicenseAgreementDlg_Cond AND LicenseKeyTypeDlg_Cond 4 LicenseAgreementDlg Next [LicenseKeyTypeDlg_Cond] 1 Family <> "Demonstration" 2 LicenseAgreementDlg Next [LicenseKeyTypeDlg_Cond] {} 1 1 LicenseAgreementDlg Cancel SpawnDialog CancelDlg 1 100 LicenseAgreementDlg PrintButton DoAction AI_PrintRtf 1 2 LicenseAgreementDlg PrintButton [AI_PRINT_RTF] LicenseAgreementDlg#AgreementText 1 1 --- snip ---
'SetupTypeDlg' is selected for 'next' button instead of 'LicenseKeyTypeDlg':
--- snip --- 0037:trace:msi:msi_set_property 0x1437c0 L"LicenseAgreementDlg_Cond" L"1" -1 ... 0037:trace:msi:MSI_EvaluateConditionW 1 <- L"AI_INSTALL AND LicenseAgreementDlg_Cond" ... 0037:trace:msi:msi_dialog_send_event Sending control event L"NewDialog" L"LicenseAgreementDlg" ... 0037:trace:msi:MSI_EvaluateConditionW L"AI_INSTALL AND LicenseAgreementDlg_Cond AND LicenseKeyTypeDlg_Cond" ... 0037:trace:msi:msi_get_property returning L"1" for property L"AI_INSTALL" ... 0037:trace:msi:msi_get_property returning L"1" for property L"LicenseAgreementDlg_Cond" ... 0037:trace:msi:msi_get_property property L"LicenseKeyTypeDlg_Cond" not found ... 0037:trace:msi:MSI_EvaluateConditionW 0 <- L"AI_INSTALL AND LicenseAgreementDlg_Cond AND LicenseKeyTypeDlg_Cond" ... 0037:trace:msi:MSI_EvaluateConditionW 1 <- L"AI_INSTALL AND LicenseAgreementDlg_Cond" 0037:trace:msi:msi_dialog_send_event Sending control event L"NewDialog" L"SetupTypeDlg" --- snip ---
'LicenseKeyTypeDlg_Cond' is tied to control 'Event':
--- snip --- LicenseAgreementDlg Next [LicenseKeyTypeDlg_Cond] 1 Family <> "Demonstration" 2 LicenseAgreementDlg Next [LicenseKeyTypeDlg_Cond] {} 1 1 --- snip ---
The event condition:
--- snip --- 0037:trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM ControlEvent WHERE `Dialog_` = 'LicenseAgreementDlg' AND `Control_` = 'Next' ORDER BY `Ordering`" 0x33f240 ... 0037:trace:msi:MSI_EvaluateConditionW L"1" ... 0037:trace:msi:COND_GetString Got identifier L"1" ... 0037:trace:msi:MSI_EvaluateConditionW 1 <- L"1" ... 0037:trace:msi:msi_set_property 0x1437c0 L"LicenseKeyTypeDlg_Cond" (null) -1 ... 0037:trace:msi:msi_get_property property L"LicenseKeyTypeDlg_Cond" not found 0037:trace:msi:MSI_DatabaseOpenViewW L"DELETE FROM `_Property` WHERE `_Property` = 'LicenseKeyTypeDlg_Cond'" 0x33f11c ... 0037:trace:msi:MSI_EvaluateConditionW L"Family <> "Demonstration"" ... 0037:trace:msi:COND_GetString Got identifier L"Family" ... 0037:trace:msi:msi_get_property returning (null) for property L"Family" ... 0037:trace:msi:msi_get_property returning L"Demonstration" for property L"Family" ... 0037:trace:msi:COND_GetLiteral Got literal L"Demonstration" ... 0037:trace:msi:MSI_EvaluateConditionW 0 <- L"Family <> "Demonstration"" ... --- snip ---
'Family' property is hard coded by default to 'Demonstration' value. Makes sense for demo app/installer.
Summing it up: at first glance everything looks ok. Maybe it's another MSI client vs. server issue.
$ sha1sum prodemo.exe e3409adbc80bd73a36f82890da2b7d16be2fbf51 prodemo.exe
$ du -sh prodemo.exe 166M prodemo.exe
$ wine --version wine-1.7.11-306-g8f289c8
Regards