How to update your skin
difficulty level - basic
You made a nice skin but now a new messenger version got released it isn't working anymore, now what?
Now we are going to upgrade your current skin to work with the new version!
First of all make sure you save your current skin, including the plsk, elsewhere too (backup folder).
Then you can start editing the SkinInfo.xml in your current skin folder. First put in the new version in Compatibility in Information area and make sure you have TraceFile set to true (if you use this element).
code:
<Compatibility>
<MsgVersion Major="9" Minor="0"/>
</Compatibility>
<TraceFile>true</TraceFile>
Next thing to do is put in the new messenger version in the Restrictions area(s).
code:
<Restrictions>
<MsgVersions>
<Version Major="9" Minor="0"/>
</MsgVersions>
</Restrictions>
If you have more Resource blocks repeat in those too.
Now in Messenger select your skin and restart as asked. This will generate a SkinTrace.txt in the skin folder if there's incompatibilities.
This file will give you some information about what isn't working, this is described in:
Messenger Plus! Live - Skinning Documentation
Skins Essentials - The Trace File.
First things to fix are the Definition files/Style sheets (if you modified any for your skin). You will need to use the ones from the new version so first extract the resources. You can do so from the skin panel in Plus! Preferences > Customize! > Skins. Rename the current msgres file(s) in your skin's folder to f.e. msgres_4004_947_85.txt (note the 85 at the end is old version number for easy reference) then copy the ones you altered in your skin from the resources folder to your skin's folder so you can edit the copy (if you plan on making a multi-version skin: rename
* this copy to f.e. msgres_4004_947_90.txt). Now you will need to put everything you altered in them into the new msgres files. If you forgot what you've altered, or just want to make sure everything is copied over and in the correct place you can use a comparing app such as
AptDiff (freeware). Using a tool like this will make this task lots easier, you can even copy whole blocks from one file to the other.
Once you fixed these files, rename (if you renamed them) the resources in SkinInfo.xml to the correct ones.
Example:
code:
<Windows>
<Definitions>
<Definition Id="947">
<File>msgres_4004_947_90.txt</File>
</Definition>
</Definitions>
</Windows>
Now try your skin again, you will see lots less errors reported in the SkinTrace. If it's still not all working as should then there are images/backgrounds IDs that have a different ID in the new version. To solve this you will have to look into the new resources to find the new ID and edit that in your SkinInfo.xml accordingly. Check your SkinTrace file again and if there's no more errors: congrats, you succesfully updated your skin to work with the new version! If you only want it to work with this new version you can remove all files from the folder that are no longer in use and repackage your skin (don't forget to set TraceFile back to false before you do).
How about if we want it backwards compatible?
How to update your skin with backwards compatibility (Multi-version skin)
difficulty level - advanced
If you want your skin to be backwards compatible, you will need to appoint resources to different messenger versions in your SkinInfo.xml. This can be achieved by using different resource blocks (<ResGroup>):
1 for everything that hasn't changed in the new version,
1 for the things different in the new version and
1 for the the things that are different in the previous version.
You tell it to load that specific block by setting restrictions in it.
Block for things unchanged:
code:
<ResGroup>
<Restrictions>
<MsgVersions>
<Version Major="9" Minor="0"/>
<Version Major="8" Minor="5"/>
</MsgVersions>
</Restrictions>
<Resources>
</Resources>
</ResGroup>
This block will be loaded in Windows Live Messenger version 9.0 and 8.5
Put all things same in both versions between <Resources></Resources> in this block.
Block for new version:
code:
<ResGroup>
<Restrictions>
<MsgVersions>
<Version Major="9" Minor="0"/>
</MsgVersions>
</Restrictions>
<Resources>
</Resources>
</ResGroup>
This block will be loaded in addition to the first when using Windows Live Messenger 9.0
Put all things different in the new version between <Resources></Resources> in this block.
Block for previous version:
code:
<ResGroup>
<Restrictions>
<MsgVersions>
<Version Major="8" Minor="5"/>
</MsgVersions>
</Restrictions>
<Resources>
</Resources>
</ResGroup>
This block will be loaded in addition to the first when using Windows Live Messenger 8.5
Put all things different in previous version between <Resources></Resources> in this block.
You can use this method from the get go (copy paste differences from the first block to the seperate resource blocks and edit in the block for the new version) or make a single version skin and compare later on (remember your backup folder) and then edit skinInfo.xml to be compatible with both versions.
Finally, don't forget to edit the Compatibility element in Information to support both versions:
code:
<Compatibility>
<MsgVersion Major="9" Minor="0"/>
<MsgVersion Major="8" Minor="5"/>
</Compatibility>
*Rename - instead of renaming your msgres files you can also put them in seperate folders, just make sure to specify the folder in SkinInfo Resource block(s) then too (and not to modify the wrong one by accident as all files will be named the same) - thanks aNILEator for this tip.
Note: the messenger versions in this tutorial are used as an example. Version 9 is not released.