I get it, I'll pack some script files which replace the obsolete files and delete themselves when they're run. For other files such as interface definitions or images, I'll just delete them after initialization.
I wrote that upgrade routine back in December 2007 and it's been left unchanged since version 2.0.003 BETA which was built in the same month. It has worked just fine for all those years but I'm glad we found a better solution now.
Here's the code I use for the self-destruction of obsolete files:
js code:
(function(path){
// Try to use DeleteFile from FileSystem.js if available
// (I prefer Windows API above ActiveX)
var deleteFunc = typeof(DeleteFile) == 'function' ? DeleteFile : false, fso;
// If DeleteFile exists and returns true, this block won't run
if(!( deleteFunc && deleteFunc(path) )) {
// Fall back on FSO
try {
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile(path);
} catch(e) {}
}
})(MsgPlus.ScriptFilesPath+"\\FILENAME.js");
In the new version, I'll use a minified version of this code like:
js code:
(function(p){var d=typeof(DeleteFile)=='function'?DeleteFile:0,f;if(!d||!d(p)){try{f=new ActiveXObject("Scripting.FileSystemObject");f.DeleteFile(p);}catch(e){}}})(MsgPlus.ScriptFilesPath+"\\FILENAME.js");
which is only 412 bytes long in UCS-2 LE.
My point still stands though, this really should be done by Plus!.
Back on topic perhaps?
The registry value being read by some scripts doesn't matter that much (although they shouldn't actually be reloading the script). Also, it appears that the latest version of Video Converter Plus! (2.60.016) doesn't write to this registry value any longer. Simply update Video Converter Plus!, remove the registry value and it won't come back. Problem solved!