Week 31

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.

I’ve created ‘full’ and ‘update’ installers so it’s possible to either install the patched 5.666 release as well as WACUP or just to install WACUP over an existing 5.666 install.

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.

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).

aa_prefs.png

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

-dro


Comments:

  1. I’d like to keep both AVS and MilkDrop in the installer, but in the interest of size, I can kinda understand the need to get rid of them. I actually use MilkDrop (ironically, with FooBar, too.), and occasionally AVS, so if you do remove them, at least leave me an installer for them! Lol!

  2. Fuzzy: The size aspect isn’t the key thing as a ~10MB installer isn’t all that large in modern terms. It’s more that AVS doesn’t really work 100% correctly on the OS that I’m targeting with WACUP (Windows 7 and newer).

    Maybe the fourth option would be to leave it as an option in the installer but have it download a mini-installer (if checked) instead of actually including it within the ‘full’ installer (which is the only one that it’s included in anyway from the original installers).That way if it’s wanted then it’s obtained otherwise it keeps the installer down in size whilst not including something that is somewhat broken (especially as it’s been a decade or so since AVS was the default Winamp visualisation plug-in).

    Does that possibly sound like a better compromise?

  3. Sounds viable. If you can get it to work, I’m game! Of course, if you want to get rid of both, (and this was an after thought) I could just use ProjectM to replace MilkDrop… It has it’s own installer at SourceForge…

  4. Fuzzy: I don’t want to be seen as killing things off that will annoy people or put them off against what I’m trying to do. My thing with AVS is from having had to deal with too many crash reports that were due to it and that nothing can really be done to resolve it (even Justin’s later modified versions from the source code that is out there is able to make it 100% stable).

    As another thought was to just keep the plug-in dlls in the installer and not include any of the presets. But just based on your comments, I think it might just be better to go with something like the fourth option so leaving them in as an option and download / provide direct links to the installers as needed. Though I’ll hold off a bit until I hear any other people’s thoughts on the matter.

    Thanks for the feedback!

  5. Sure thing! Hopefully, we can get more than my input on the matter, too!

  6. The fourth option sounds good, There is a lot of people not using the visualisations at all. I am using Winamp as a docked toolbar, the only music player I know that take that little space, but stay visible.

  7. I vote for keeping the AVS plugin and presets in installer. With the appropriate comment in desc area and by default unchecked. Not bad idea is to show it on components list as a link to download it separately (but in my opinion people will not download it, it is to much work :P, maybe this is better if AVS crashing).

    Maybe you could design a special page that allows to get installer and install it during installation (something I made few years ago in one of my installers: http://www.meggamusic.co.uk/shup/1472546108/dd.png)

    Ps: I use Milkdrop (or used to… now I use Classic Skin without any bells and whistles :P)

  8. The repair and/or reset to default settings is a great idea

  9. re: album artwork look-up
    The album artwork look-up order should be customizable.
    That makes Winamp more flexible/adaptable in general, and therefore adds to its power and versatility.
    And it might facilitate some experimentation with respect to memory use, artwork size and speed.