http://bugs.winehq.org/show_bug.cgi?id=26925
Summary: Windows Installer creates Game Explorer shortcuts in the wrong place Product: Wine Version: 1.3.18 Platform: x86 URL: http://demos.gamersgate.com/22521 OS/Version: Linux Status: UNCONFIRMED Severity: trivial Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: gyebro69@gmail.com
Created an attachment (id=34342) --> (http://bugs.winehq.org/attachment.cgi?id=34342) plain terminal output (Dungeons demo installer)
After a successful installation of the demo (Dungeons) one can notice that two directories were created in the root of drive_c: during installation. One is named "0" containing a shortcut "Play.lnk" The other directory is named "1" containing a shortcut "Continue play.lnk"
If I'm not mistaken, they should belong to the Game Explorer stuff. I don't have Vista or Seven only a Windows XP running in Virtualbox. After installation those shortcuts went into C:\Documents and Settings\All Users\Application Data\Microsoft\Windows\GameExplorer{BB112F90-7C81-4352-8823-861D3957CF8A}\PlayTasks
I guess in Wine they should go into: /users/Public/Application Data/Microsoft/Windows/GameExplorer/{BB112F90-7C81-4352-8823-861D3957CF8A}/PlayTasks
At least other games (e.g. Woody Two-Legs) place their Game Explorer shortcuts there.
I've tried installing the demo with WinXP, Vista and Windows 7 compatibility modes but the directories were always created in the root directory.
Dungeons demo download link added to URL (~525 MB).
http://bugs.winehq.org/show_bug.cgi?id=26925
--- Comment #1 from GyB gyebro69@gmail.com 2011-04-25 10:27:34 CDT --- Created an attachment (id=34343) --> (http://bugs.winehq.org/attachment.cgi?id=34343) 7zipped +msi,+msiexec log (Fate of the World installer)
Unfortunately a +msi log for Dungeons demo would be too large for Bugzilla so I attached a similar log when installing Fate of the World: it shares the same problem except that it creates only a "0" directory with a 'Play.lnk' shortcut in it.
http://bugs.winehq.org/show_bug.cgi?id=26925
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer CC| |focht@gmx.net Component|-unknown |msi
--- Comment #2 from Anastasius Focht focht@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
http://bugs.winehq.org/show_bug.cgi?id=26925
--- Comment #3 from GyB gyebro69@gmail.com 2011-04-25 12:01:59 CDT --- Wow, now that was an exhaustive explanation and I'm not saying I understood every bit of it ;)
Indeed, using the silent method shortcuts are created in the right place.
http://bugs.winehq.org/show_bug.cgi?id=26925
GyB gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://demos.gamersgate.com |http://www.fileplanet.com/2 |/22521 |18602/210000/fileinfo/Dunge | |ons-Demo
--- Comment #4 from GyB gyebro69@gmail.com 2011-09-03 04:18:45 CDT --- This bug is still alive in wine-1.3.27-224-g32c36b7. Using the /quiet flag still works around the problem. Download link has been modified (the previous one no longer worked without a registration on the GG website).
http://bugs.winehq.org/show_bug.cgi?id=26925
--- Comment #5 from Frédéric Delanoy frederic.delanoy@gmail.com 2013-07-15 06:59:09 CDT --- Created attachment 45274 --> http://bugs.winehq.org/attachment.cgi?id=45274 Terminal log wine-1.6-rc5 (dungeons demo installer)
Still in wine-1.6-rc5.
Installer fails with msi errors, first of which being
err:msi:cabinet_copy_file failed to create L"C:\Program Files\Kalypso Media\Dungeons Demo\data\localization\de\audio\speech\quip_l1_h_mage_sacrifice_2.ogg" (error 112)
Empty 0 and Program Files\Kalypso Media directories created.
http://bugs.winehq.org/show_bug.cgi?id=26925
Frédéric Delanoy frederic.delanoy@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW URL|http://www.fileplanet.com/2 |http://www.shacknews.com/fi |18602/210000/fileinfo/Dunge |le/25451/dungeons-internati |ons-Demo |onal-demo CC| |frederic.delanoy@gmail.com Ever Confirmed|0 |1
--- Comment #6 from Frédéric Delanoy frederic.delanoy@gmail.com 2013-07-15 06:59:58 CDT --- Updating download URL
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
https://bugs.winehq.org/show_bug.cgi?id=26925
Béla Gyebrószki gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.shacknews.com/fi |http://www.4players.de/4pla |le/25451/dungeons-internati |yers.php/download_info/Down |onal-demo |loads/Download/56623/Dungeo | |ns/Deutsche_Demo.html
--- Comment #8 from Béla Gyebrószki gyebro69@gmail.com --- Still present in wine-1.8-rc1.
dungeons_demo_de.msi sha1: 080ca93ae52c518ddcd7aab0b72f9f23d370499f
https://bugs.winehq.org/show_bug.cgi?id=26925
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Multiple MSI-based |Multiple MSI-based |installers create folders |installers create folders |in the wrong place |in the wrong place |(InstallExecuteSequence |(InstallExecuteSequence |costing needs to |costing should be separate |recalculate directory |from InstallUISequence |properties to avoid stale |costing) |data from InstallUISequence | |costing) | CC| |z.figura12@gmail.com
--- Comment #9 from Zebediah Figura z.figura12@gmail.com --- Actually the two resolutions are entirely independent: for example, if you run a custom action to print the target path after ExecuteAction in the UI sequence, it'll print the unmodified target directory as resolved in the UI sequence; on the other hand, if you run the action in the execute sequence before doing anything else, it'll fail with ERROR_DIRECTORY.
https://bugs.winehq.org/show_bug.cgi?id=26925
winetaste@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetaste@gmx.net
https://bugs.winehq.org/show_bug.cgi?id=26925
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #10 from joaopa jeremielapuree@yahoo.fr --- Does the bug still occur with wine-4.9?
https://bugs.winehq.org/show_bug.cgi?id=26925
pattietreutel katyaberezyaka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |katyaberezyaka@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=26925
--- Comment #11 from Zebediah Figura z.figura12@gmail.com --- (In reply to joaopa from comment #10)
Does the bug still occur with wine-4.9?
Nothing has changed in the affected MSI code.
https://bugs.winehq.org/show_bug.cgi?id=26925
mirh mirh@protonmail.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mirh@protonmail.ch
https://bugs.winehq.org/show_bug.cgi?id=26925
Chebanenko Igor chebanenkoigor93@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |chebanenkoigor93@gmail.com
--- Comment #12 from Chebanenko Igor chebanenkoigor93@gmail.com --- We have Wine 7.0 right now. Any updates?
https://bugs.winehq.org/show_bug.cgi?id=26925
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.4players.de/4pla |https://web.archive.org/web |yers.php/download_info/Down |/20211015083451/https://dow |loads/Download/56623/Dungeo |nload.fileplanet.com/ftp1/0 |ns/Deutsche_Demo.html |22011/dungeons_demo_int.msi | |?st=LEbB82UVyn3MtMhYNLiw2Q& | |e=1634297676
--- Comment #13 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
Adding stable download links via Internet Archive for documentation.
====
https://web.archive.org/web/20211015083451/https://download.fileplanet.com/f...
$ sha1sum dungeons_demo_int.msi 2972801ef889bc9788d20598233ddc24ebda8069 dungeons_demo_int.msi
$ du -sh dungeons_demo_int.msi 525M dungeons_demo_int.msi
====
https://web.archive.org/web/20220206195732/https://download.gamestar.de/publ...
$ sha1sum dungeons_demo_de.zip 4be8ccb132e0b2578ae77a17d7f69d1f40bd6902 dungeons_demo_de.zip
$ du -sh dungeons_demo_de.zip 394M dungeons_demo_de.zip
====
https://web.archive.org/web/20110908212121/http://download.microsoft.com/dow...
https://www.virustotal.com/gui/file/bf2888e0563597bf10e10655a25dc4abd103ffc0...
$ sha1sum AttendeeSetupUser.exe 4f0afff3ddfddc6207b2c4a19ffa315a4e119493 AttendeeSetupUser.exe
$ du -sh AttendeeSetupUser.exe 51M AttendeeSetupUser.exe
$ wine --version wine-7.1
Regards