https://bugs.winehq.org/show_bug.cgi?id=26925
Anastasius Focht focht@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@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