[Bug 35539] New: Proteus 8 demo fails to install

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Feb 7 07:51:04 CST 2014


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 at winehq.org
          Reporter: focht at 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

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