[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