[Bug 26925] Multiple MSI-based installers create folders in the wrong place (InstallExecuteSequence costing needs to recalculate directory properties to avoid stale data from InstallUISequence costing)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Nov 5 17:28:40 CST 2014


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Windows Installer creates   |Multiple MSI-based
                   |Game Explorer shortcuts in  |installers create folders
                   |the wrong place             |in the wrong place
                   |                            |(InstallExecuteSequence
                   |                            |costing needs to
                   |                            |recalculate directory
                   |                            |properties to avoid stale
                   |                            |data from InstallUISequence
                   |                            |costing)

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

still present.

I found another victim while looking into bug 33078: 'Microsoft Lync 2010
Attendee'.

You will be presented with this funny looking root directory layout after the
installer has finished:

--- snip ---
$ pwd
/home/focht/.wine/drive_c

$ ls -1
AppDataFolder
LocalAppDataFolder
Program Files
users
windows
--- snip ---

Relevant part of trace log in this case (although my comment #2 was already
exhaustive).

--- snip ---
...
0042:trace:msi:ACTION_ProcessUISequence Running the actions
...
0042:trace:msi:ACTION_PerformUIAction Performing action (L"CostInitialize")
...
0042:trace:msi:load_folder L"Directory_AppData"
...
0042:trace:msi:load_folder TargetDefault = L"LocalAppDataFolder"
0042:trace:msi:load_folder SourceLong = L"LocalAppDataFolder"
0042:trace:msi:load_folder SourceShort = L"zefpwv8p"
...
0042:trace:msi:ACTION_PerformUIAction Performing action (L"FileCost")
...
0042:trace:msi:ACTION_PerformUIAction Performing action (L"CostFinalize")
...
0042:trace:msi:ACTION_CostFinalize Building directory properties
0042:trace:msi:msi_resolve_target_folder resolving L"TARGETDIR" 
...
0042:trace:msi:msi_resolve_target_folder L"Directory_Mozilla_Plugins" resolves
to L"C:\\AppDataFolder\\Mozilla\\Plugins\\"
0042:trace:msi:msi_resolve_target_folder L"Directory_Mozilla" resolves to
L"C:\\AppDataFolder\\Mozilla\\"
0042:trace:msi:msi_resolve_target_folder L"APPDATADIRECTORY" resolves to
L"C:\\AppDataFolder\\"
0042:trace:msi:msi_resolve_target_folder resolving L"Directory_AppData"
...
0042:trace:msi:msi_set_property 0x14dd70 L"Directory_AppData"
L"C:\\LocalAppDataFolder\\" -1
...
0042:trace:msi:msi_resolve_target_folder L"ProgramMenuFolder" resolves to
L"C:\\users\\focht\\Start Menu\\Programs\\"
0042:trace:msi:msi_resolve_target_folder L"INSTALLDIRECTORY" resolves to
L"C:\\LocalAppDataFolder\\Microsoft Lync Attendee\\"
0042:trace:msi:msi_resolve_target_folder L"Directory_AppData" resolves to
L"C:\\LocalAppDataFolder\\"
0042:trace:msi:msi_resolve_target_folder L"TARGETDIR" resolves to L"C:\\"
0042:trace:msi:ACTION_CostFinalize Evaluating component conditions
...
0042:trace:msi:ACTION_CostFinalize Calculating file cost
0042:trace:msi:set_target_path file L"abbrdialtone" is named
L"COMMUNICATOR_abbrdialtone.wav"
...
0042:trace:msi:set_target_path resolves to L"C:\\LocalAppDataFolder\\Microsoft
Lync Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav"
0042:Call KERNEL32.GetFileAttributesW(001c09d0
L"C:\\LocalAppDataFolder\\Microsoft Lync
Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav") ret=7ecbeb5d
0042:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=7ecbeb5d
...
0042:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended
22:46:53: CostFinalize. Return value 0." 
...
0042:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended
22:46:53: MigrateFeatureStates. Return value 0." 
...
0042:Call user32.CreateWindowExW(00000000,7ed5f540 L"Static",001aff08 L"Please
wait while the Setup Wizard updates Microsoft Lync 2010
Attendee.",40020000,0000001b,00000057,000001b8,0000002f,0003007a,00000000,00000000,00000000)
ret=7eceb4ee 
...
0042:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action start
22:46:56: ExecuteAction." 
...
0042:trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM `InstallExecuteSequence`
WHERE `Sequence` > 0 ORDER BY `Sequence`" 0x33f920 
...
0042:trace:msi:ACTION_ProcessExecSequence Running the actions 
...
0042:trace:msi:ACTION_PerformUIAction Performing action (L"SetReinstallMode") 
...
0042:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended
22:46:56: AppSearch. Return value 0." 
...
0042:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended
22:46:56: LaunchConditions. Return value 0." 
...
0042:trace:msi:MSI_EvaluateConditionW 1 <- L"(NOT Installed) AND (NOT ALLUSERS
OR ALLUSERS=0)"
0042:trace:msi:ACTION_PerformUIAction Performing action
(L"SetInstallDirLocalApp") 
...
0042:trace:msi:ACTION_CustomAction Handling custom action
L"SetInstallDirLocalApp" (33 L"INSTALLDIRECTORY"
L"[LocalAppDataFolder]Microsoft Lync Attendee") 
...
0042:trace:msi:msi_get_property returning L"C:\\users\\focht\\Local
Settings\\Application Data\\" for property L"LocalAppDataFolder" 
...
0042:trace:msi:msi_set_property 0x14dd70 L"INSTALLDIRECTORY"
L"C:\\users\\focht\\Local Settings\\Application Data\\Microsoft Lync Attendee"
70 
...
0042:trace:msi:ACTION_PerformUIAction Performing action (L"CostFinalize") 
...
0042:trace:msi:ACTION_CostFinalize Building directory properties
0042:trace:msi:msi_resolve_target_folder resolving L"TARGETDIR" 
...
0042:trace:msi:msi_resolve_target_folder L"TARGETDIR" already resolved to
L"C:\\" 
...
0042:trace:msi:ACTION_CostFinalize Evaluating component conditions
...
0042:trace:msi:ACTION_CostFinalize Evaluating feature conditions
...
0042:trace:msi:ACTION_CostFinalize Calculating file cost
0042:trace:msi:set_target_path file L"abbrdialtone" is named
L"COMMUNICATOR_abbrdialtone.wav"
...
0042:trace:msi:set_target_path resolves to L"C:\\LocalAppDataFolder\\Microsoft
Lync Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav"
0042:Call KERNEL32.GetFileAttributesW(001c09d0
L"C:\\LocalAppDataFolder\\Microsoft Lync
Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav") ret=7ecbeb5d
0042:Ret  KERNEL32.GetFileAttributesW() retval=ffffffff ret=7ecbeb5d
0042:trace:msi:set_target_path file L"appinvite" is named
L"COMMUNICATOR_appinvite.wav" 
...
0042:trace:msi:cabinet_copy_file extracting L"abbrdialtone" ->
L"C:\\LocalAppDataFolder\\Microsoft Lync
Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav"
0042:Call KERNEL32.CreateFileW(008bf010 L"C:\\LocalAppDataFolder\\Microsoft
Lync
Attendee\\Media\\COMMUNICATOR_abbrdialtone.wav",c0000000,00000000,00000000,00000002,00000080,00000000)
ret=7ed05e7e
0042:Ret  KERNEL32.CreateFileW() retval=000000a0 ret=7ed05e7e 
...
--- snip ---

The custom action 'SetInstallDirLocalApp' in the 'InstallExecuteSequence' part
updates the directory property but this has no effect since the directory
properties are never recalculated as they have been already resolved by
'CostFinalize' in 'InstallUISequence'.

$ sha1sum AttendeeSetupUser.exe 
bf0356c4b88d52cb6af698341925903b3cce2e76  AttendeeSetupUser.exe

$ du -sh AttendeeSetupUser.exe 
59M    AttendeeSetupUser.exe

$ wine --version
wine-1.7.30-70-ge385df0

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