Information for Players - i.e. Not Addon Developers
Dear player,
this Addon is NOT intended to be used by you directly. If you just download this addon and install it, nothing will happen at all. So please don't do that.
If you came to this site because you get errors in LibVersionCheck while playing, downloading the addon here and installing it will probably not fix your problem. LibVersionCheck is intended to be embedded in other Addons, and you have to download the newest version of that other addon that uses LibVersionCheck to fix your error.
If you really want to use LibVersionCheck standalone, make sure you don't mess with it when you unpack it. Especially, don't remove the Translations.lua file - you need it even if you use the english client to play.
Currently, the Addons that use LibVersionCheck (that i know of, there might be more) are:
BankIt, Docker, Equalizer, Heartometer, JaBoB, MereHealingFrames, MoneyBags, PopupItems, RareDar, RareTracker, Rifter, SightSeer, TomTom, ToonInfo, WhereAmI
So if you use one of those addons, please upgrade them first. Remove your LibVersionCheck installation if you have installed it standalone.
Thank you!
Information for Developers
LibVersionCheck collects addon version information from other players, and tells you if your version numbers are smaller than the ones collected.
This is an Addon for Developers to embed into their own Addon, it's not usably in any way by normal players.
- Any Addon can embed LibVersionCheck, and register itself and its version number with the library.
- Whenever the library "sees" another player (Event.Unit.Available.Full), it sends a query to that player. This is done only once per player name and session to conserve bandwith.
- When the library gets a query from another player, it will start sending messages about the registered addons and version numbers to that player. These response messages are limited to one every 0.1 sec, again to conserve bandwith.
- When a response message arrives, the library will save the version number in its own list, IF this version number is higher than the current maximum. No user interaction is done at this point, to prevent messages popping up in combat etc.
- When a user logs in, the library compares the user's addon version to the maximum versions it has found elsewhere. If there are addons that are outdated, the user is given a message window that lists addon name, own version, and maximum detected version. Then, he can choose between buttons when to show the message again (5 choices between "next login" and "never").
From a user perspective, the library tries to be as non-invasive as possible - the worst thing that can happen to a user is he has to press "never" once after a login. But if a user is interested in getting update information at all, he will get it without having to know and issue any macros, press any buttons or anything.
From the server perspective, the addon tries to use as little bandwith as possible - it sends only one query to users who don't have any addons using the library installed, and it limits response data to about then 100 bytes per second.
For a developer, it's very easy to use the library. Everything you have to do is:
- embed the library folder in your addon folder
- put the following into your RiftAddon.toc:
Embed = { LibVersionCheck = true, } Dependencies = { LibVersionCheck = {"required", "before"}, };
- at an appropriate location in your code, typically in an Event.Addon.Load.End handler, call something like
LibVersionCheck.register(AddonData.toc.Identifier, AddonData.toc.Version)
or
LibVersionCheck.register("MyAddon", "12.3r5alpha")
Everything else is handled by the Library. (Version numbers are strings, not numbers, so embedding something like alpha into the version should work fine).
If you're developing newer versions, and have already bumped the version number, you should use "/libversioncheck developer on" to prevent your libversioncheck from telling other people version numbers that don't exist yet.
You can use "/libversioncheck spy on" to generate an exhausive list of who answered to your queries, and which version numbers they sent, to get an idea of which other addons are used along with yours (that might cause problems when using the same global vars etc.).