After last week’s somewhat dull update (installers are fun, installers are fun, installers are fun), lets see how that all progressed and if anything more fun was able to be done for this week.
So lets first cover the continuation of the installer work and it’s now generally equivalent of what the official installer was able to do though the uninstaller still needs a bit more polish and I expect there’s a few more things I’ll think about that the main installer needs.
There’s also a ‘lite’ installer that I’ve replicated but I’m not sure on how best to do that with regards to what should or shouldn’t be included in it from WACUP so as to keep it ‘lite’. There is a ‘lite’ install type option within the ‘full’ installer so it might be simpler to start with that I leave it as just two installers.
One thing that I’ve been somewhat torn over with the installer is how much of what is provided with Winamp 5.666 is included. As I’ve made it clear in the past that I don’t think AVS should be included in an ‘official’ install due to it generally not working well on all recent Windows releases (I know it can work but that’s more so only in windows mode - as full-screen mode is temperamental).
The first option is to just not include it and leave it at that (which is what I’ve done with the tiny full-screen plug-in [vis_nsfs.dll] as that doesn’t work properly after Windows XP). The second is to provide a separate mini-installer which provides what was in the 5.666 installer and can be used by those that want it (which is more likely the responsible option even if it means spending a bit more time on this). The final option is to just keep it included and accept that it isn’t stable / works correctly and leave it at.
So thoughts about what would be the best option re: AVS are welcome.
Additionally I was thinking the same about Milkdrop but that was more with just including the plug-in dll and not the presets as a means to help reduce the overall size of the installer. On trying it out, there’s not that much saving with it dropping from around 10MB with everything included down to around 8.5MB without the existing included presets.
Whilst testing the installer there were a few issues with the ’secondary’ setup stage which is handled by Winamp itself instead of the installer (it’s the bit that allows for selecting the skin to use after installation). Most of the issues were minor and relatively simple to fix by tweaking what the original winamp.exe (named winamp.original) is trying to start to be the loader program (which is named winamp.exe so everything can be routed through it) instead of itself (the winamp.original instance).
However one issue turned out to involve a number of plug-ins including the WMA decoder (in_wm.dll), the disk writer (out_disk.dll) and their interaction with the loader with a new install. The issue manifested itself as a memory corruption issue.which would claim to be happening in the DirectSound output plug-in (out_ds.dll) which was fun to see happen when it wasn’t the active plug-in and so really shouldn’t have been doing much. In the end (after 2 days) I managed to track the problem down to a handling issue in the settings file cache with regards to a specific method which has now been fixed and the ’secondary’ setup mode now completes correctly :)
Moving onto non-installer aspects (as it’s been all I’ve talked about so far :) ) the first thing came about from a fellow Winamp user who’d been having crash issues (it wouldn’t start correctly) and was looking for some help. As some may have seen me tweet about this, the first suggestion I made thankfully worked (it involved deleting the modern skin settings file ’studio.xnf’) but it gave me an idea which led to the addition of a /REPAIR command-line option.
Is great when the first try to fix something works & helps someone to use #winamp again. Now I just need to implement an easy repair mode :)
— Darren Owen (@The_DoctorO) August 25, 2016
The idea with this feature is that it may help to get Winamp starting correctly (such as with the corrupted modern skin settings file issue) and will with time get expanded based on what issues arise and can be fixed (e.g. one thing that has come to mind is resetting the classic window positions). So for the moment, this command in it’s initial implementation will do the following:
- Reset the currently used skin back to the classic base skin to improve the chance of Winamp being able to load if it’s crashing on loading
- Deletes the modern skins settings file (studio.xnf) as this getting corrupted can prevent Winamp from being able to load
- Reset the post install flag back to indicate a valid setup has been completed in-case setup keeps crashing (which has been known to happen due to certain input plug-ins)
Related to the /REPAIR mode addition, if people are experiencing Winamp 5.666 crashing and are getting crash reports generated, I’m happy to have a look at them to try to determine what is causing the issue (as I doubt that anyone official is looking at any of the crash reports which are being sent).
The next thing done was to merge the replacement image loaders I’d already made (PNG, JPEG and GIF) into a single image component. This is because for normal operation, all of those formats (as well as BMP support which I’ve now also re-implemented in this shared component) are required, be that skin loading or handling album artwork.
So by merging all of them into a single component (image.w5s), it simplifies some of the verification checks that the loader program makes when started (which is done to ensure that the Winamp install is good) as well as removing duplicate code needed to load what was 4 singe components. This probably seems a bit at odds with the general plug-ins, plug-ins, plug-ins way of doing Winamp but for my needs with managing things, this combined plug-in makes things easier for me (and it uses a bit less memory than multiple components require to do the same thing :) ).
The final thing is related to the image component in that I’ve started on a replacement album artwork component (albumart.w5s) as the native implementation has a few limitations (which I had started to work on resolving when I was with the company that shall not be named). But as I received an email which covered some of the issues and was asking about how to deal with them, I thought I’d have a quick look as part of my Sunday night research slot.
So the end result is getting a basic replacement up and running (it needs some more work to cover off re-implementing the whole feature set) but the main thing that is already in from the start is some control over the expected album artwork look-up options (as seen below).
One thing I cannot remember from prior conversations about controlling the album artwork look-up is if the ordering needed to be customisable or not or if just tweaking the default ordering (as I’m mirroring the existing Winamp look-up order) is the better approach. So thoughts / suggestions are welcome on this :)
There’s more that needs to be done with this replacement component which will depend on things I’ve only vaguely thought about (i.e. possibly making it look-up album artwork) but having my own implementation opens up the possibility to do more things later on once the core re-implementation is done.
So that’s this update of what’s been going on over the last week which is a bit mixed I think in that it’s probably a bit dull (installer stuff) but maybe a bit more interesting with some of the album artwork stuff from my sunday night research slot. Here’s a general summary of what was talked about:
- After two weeks I’ve now got working ‘full’ (winamp + wacup) and ‘update’ (wacup only) installers internally created
- Questions about whether to include AVS or not or how to provide it
- Fixing ’secondary’ setup issues
- Addition of a basic ‘/REPAIR’ mode to try to help get Winamp running again
- If Winamp 5.666 is crashing for you, send me the crash reports and I’ll try to diagnose the issue for you
- Combined my replacement GIF, JPEG, PNG & BMP image loaders into a single image component
- Starting on a replacement album artwork component that has control options over how the look-up is done
- Questions about the album artwork look-up and if it needs tweaking