[Bug 26925] Windows Installer creates Game Explorer shortcuts in the wrong place

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Apr 25 11:40:11 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=26925

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download, Installer
                 CC|                            |focht at gmx.net
          Component|-unknown                    |msi

--- Comment #2 from Anastasius Focht <focht at gmx.net> 2011-04-25 11:40:11 CDT ---
Hello,

it seems some target folders/properties (resolved by costing) are not
recalculated during processing of InstallExecuteSequence table when previous
run of InstallUISequence already set them.

1. InstallUISequence -> costing -> resolves folders to default values
2. InstallExecuteSequence -> costing -> uses already resolved
folders/properties if present

The problem is there is a custom action run in InstallExecuteSequence before
costing that (re)sets property (parent folder) for other costing related
properties.
This change is not taken into account, leaving folders resolved to their
initial values.

I downloaded the demo and extracted relevant part of trace log.

InstallUISequence -> first costing run:

--- snip ---
...
002f:trace:msi:ITERATE_CostFinalizeDirectories directory
L"WixPlayTask0_Application" ...
002f:trace:msi:resolve_target_folder working to resolve
L"WixPlayTask0_Application" 
...
002f:trace:msi:msi_get_property property L"WixPlayTask0_Application" not found
002f:trace:msi:resolve_target_folder  ! parent is
L"WixPlayTasksRoot_Application"
002f:trace:msi:resolve_target_folder working to resolve
L"WixPlayTasksRoot_Application"
002f:trace:msi:resolve_target_folder    already resolved to L"C:\\"
002f:trace:msi:resolve_target_folder    TargetDefault = L"0"
002f:trace:msi:resolve_target_folder -> L"C:\\0\\"
002f:trace:msi:msi_set_property 0x131248 L"WixPlayTask0_Application" L"C:\\0\\" 
...
--- snip ---

The custom action that changes the parent folder:

--- snip ---
002f:trace:msi:ACTION_PerformUIAction Performing action
(L"WixPlayTasksRoot_Application") 
...
002f:trace:msi:ACTION_CustomAction Handling custom action
L"WixPlayTasksRoot_Application" (33 L"WixPlayTasksRoot_Application"
L"[CommonAppDataFolder]Microsoft\\Windows\\GameExplorer\\{BB112F90-7C81-4352-8823-861D3957CF8A}\\PlayTasks\\") 
...
--- snip ---

InstallExecuteSequence -> second costing run:

--- snip ---
002f:trace:msi:ITERATE_CostFinalizeDirectories directory
L"WixPlayTasksRoot_Application" ...
002f:trace:msi:resolve_target_folder working to resolve
L"WixPlayTasksRoot_Application" 
...
002f:trace:msi:msi_get_property returning L"C:\\users\\Public\\Application
Data\\Microsoft\\Windows\\GameExplorer\\{BB112F90-7C81-4352-8823-861D3957CF8A}\\PlayTasks\\"
for property L"WixPlayTasksRoot_Application"
002f:trace:msi:resolve_target_folder    property set to
L"C:\\users\\Public\\Application
Data\\Microsoft\\Windows\\GameExplorer\\{BB112F90-7C81-4352-8823-861D3957CF8A}\\PlayTasks\\"
002f:trace:msi:ITERATE_CostFinalizeDirectories resolves to
L"C:\\users\\Public\\Application
Data\\Microsoft\\Windows\\GameExplorer\\{BB112F90-7C81-4352-8823-861D3957CF8A}\\PlayTasks\\" 
...
002f:trace:msi:ITERATE_CostFinalizeDirectories directory
L"WixPlayTask0_Application" ...
002f:trace:msi:resolve_target_folder working to resolve
L"WixPlayTask0_Application" 
...
002f:trace:msi:msi_get_property returning L"C:\\0\\" for property
L"WixPlayTask0_Application"
002f:trace:msi:resolve_target_folder    property set to L"C:\\0\\"
002f:trace:msi:ITERATE_CostFinalizeDirectories resolves to L"C:\\0\\" 
...
002f:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"Shortcut:
WixPlayTask0_Application"
002f:trace:msi:ControlEvent_FireSubscribedEvent Firing Event L"ActionData"
002f:trace:msi:msiobj_release object 0x1227680 destroyed
002f:trace:msi:MSI_FormatRecordW 0x1481a8 0x12277f0 (nil) 0x32f7c8
002f:trace:msi:MSI_FormatRecordW (L"[#Dungeons.exe]")
002f:trace:msi:MSI_FormatRecordW 0x1481a8 0x12277f0 0x1227df0 0x32f7c8
002f:trace:msi:MSI_FormatRecordW (L"[#Dungeons.exe]")
002f:trace:msi:msiobj_release object 0x12277f0 destroyed
002f:trace:msi:resolve_target_folder working to resolve L"APPLICATIONFOLDER"
002f:trace:msi:resolve_target_folder    already resolved to L"C:\\Program
Files\\Kalypso Media\\Dungeons Demo"
002f:trace:msi:resolve_target_folder working to resolve
L"WixPlayTask0_Application"
002f:trace:msi:resolve_target_folder    already resolved to L"C:\\0\\"
002f:trace:msi:ITERATE_CreateShortcuts Writing shortcut to L"C:\\0\\Play.lnk"
--- snip ---

Parts of "Directory" table, exported in orca:

--- snip ---
Directory    Directory_Parent    DefaultDir
s72    S72    l255

WixPlayTasksRoot_Application    TARGETDIR    .
...

WixPlayTask0_Application    WixPlayTasksRoot_Application    0
--- snip ---

Parts of "Shortcut" table, exported in orca:

--- snip ---
Shortcut    Directory_    Name    Component_    Target    Arguments   
Description    Hotkey    Icon_    IconIndex    ShowCmd    WkDir   
DisplayResourceDLL    DisplayResourceId    DescriptionResourceDLL   
DescriptionResourceId
s72    s72    l128    s72    s72    S255    L255    I2    S72    I2    I2   
S72    S255    I2    S255    I2

WixPlayTask0_Application    WixPlayTask0_Application    1yab2vy1.pla|Play   
Application    [#Dungeons.exe]                            APPLICATIONFOLDER     
WixPlayTask1_Application    WixPlayTask1_Application    kvubp0qn.pla|Continue
Playing    Application    [#Dungeons.exe]    -continue                       
APPLICATIONFOLDER                
--- snip ---

Parts of "Custom action" table, exported in orca:

--- snip ---
WixPlayTasksRoot_Application    51    WixPlayTasksRoot_Application   
[CommonAppDataFolder]Microsoft\Windows\GameExplorer\{BB112F90-7C81-4352-8823-861D3957CF8A}\PlayTasks\ 
--- snip ---

Parts of "InstallUISequence" table, exported in orca:

--- snip ---
Action    Condition    Sequence
s72    S255    I2

CostInitialize        800
...
CostFinalize        1000
--- snip ---

Parts of "InstallExecuteSequence" table, exported in orca (see custom action
before costing finalize):

--- snip ---
Action    Condition    Sequence
s72    S255    I2

CostInitialize        800
..
WixPlayTasksRoot_Application        994
..
CostFinalize        1000
..
CreateShortcuts        4500
--- snip ---

You can work around the bug by running the installer in "silent" mode, e.g:

$> wine msiexec -i dungeons_demo_int.msi /quiet

This forces msi to not process InstallUISequence table so costing will be done
once (in InstallExecuteSequence) which resolves the target folder for
shortcuts.

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