K-Meleon
KMeleonWiki > Resources > MacroLibrary > KmmResProfile
Submitted by: JamesD
Notes:
ResProfile.kmm will allow a copy of the files and folders in a user’s K-Meleon profile folder to be written to a location of the user’s choice.
The menu item for ResProfile is found in the Tools menu.
The copy activity occures after K-Meleon is stopped. This is because K-Meleon, while running, has write permission to some profile files. The copy activity is delayed two seconds after the OnQuit event in K-Meleon to give time for any writes to the files to finish. The user should not restart K-Meleon until there has been time for the script file to complete.
There is also a ProfileBackup installable extention by Guenter at Alain Aupeix’s site. http://pagesperso-orange.fr/jujuland46/JujuLand/KMES/KMES-Download.html#down_extensions
Open your User Macro Folder (Edit > Configuration > User-Defined Macros) or your Macro Folder (Edit > Configuration > Macros) and create the following text file(s):
# K-Meleon Macros (http://kmeleon.sourceforge.net/wiki/index.php?id=MacroLanguage)
#
# ---------- ResProfile.kmm
# ---------- K-Meleon Macro Language make a reserve copy of your profile ---------------
#
# Dependencies : main.kmm
# Resources : ResProfile.js
# Preferences : -
# Version : 0.8.5 2007-12-06
# --------------------------------------------------------------------------------
ResProfile_RunCode {
$_ResProfile_Cur_Profile_Path = getfolder(ProfileFolder);
$_ResProfile_Reserve_Path = promptforfolder( "Select a folder for your Reserve Profile.\nIt is best to make a separate folder.\nThe folder does not need to be within K-Meleon." , getfolder(RootFolder) );
$_ResProfile_Reserve_Path ==""? &_ResProfile_Cancel : &_ResProfile_ValidateNotSameFolder;
}
# PRIVATE --------------
# set global variables
$_ResProfile_Staged_Flag = false;
$_ResProfile_Cur_Profile_Path = "dummy" ;
$_ResProfile_Reserve_Path = "dummy" ;
_ResProfile_Cancel {
$ResProfile_Button=confirm("Did you mean to cancel?","Affirm cancel" ,YESNO,QUESTION);
$ResProfile_Button == "YES" ? 0 : &_ResProfile_RunCode ;
}
_ResProfile_ValidateNotSameFolder {
$_ResProfile_Cur_Profile_Path == $_ResProfile_Reserve_Path ? &_ResProfile_ReDo : &_ResProfile_Staged ;
}
_ResProfile_ReDo {
alert("Target of copy should not be\n\nthe profile folder.","Copy to itself",EXCLAIM);
&_ResProfile_RunCode ;
}
_ResProfile_Staged {
$_ResProfile_Staged_Flag = true ;
}
_ResProfile_ExitRun {
$_ResProfile_Staged_Flag == true ? exec("wscript.exe \"".$_ResProfile_Path."\" \"".$_ResProfile_Cur_Profile_Path."\" \"".$_ResProfile_Reserve_Path."\"") : 0 ;
}
_ResProfile_BuildMenu{
setmenu("&Tools",macro,"Reserve Profile",ResProfile_RunCode,Misc);
}
_ResProfile_GetPath{
### ResProfile.js is supposed to be located in the same folder as ResProfile.kmm (this file).
### If it isn't, Windows Script Host will notify the user.
### Double underscore makes variable local only.
$__Data=readfile(getfolder(MacroFolder)."\\ResProfile.kmm");
$_ResProfile_Path=getfolder($__Data==""?UserMacroFolder:MacroFolder)."\\ResProfile.js";
}
$OnQuit=$OnQuit."_ResProfile_ExitRun;";
$OnStartup=$OnStartup."_ResProfile_GetPath;";
$OnInit=$OnInit."_ResProfile_BuildMenu;";
$macroModules=$macroModules."ResProfile;";
/* ResProfile.js by JamesD, version 0.9 2007-12-15
This script is a helper application for the K-Meleon Macro Module ResProfile.kmm that
enables you to make a reserve ( backup ) copy of your profile [<unique name>.slt].
Windows Script Host 2.0 (or better) required!
WSH is part of Microsoft Internet Explorer 5.0 and newer. Latest version of WSH is
available at http://msdn.microsoft.com/scripting/
*/
var c, r, i, RegF, RegFTwo ;
var overwrite = 1 ;
var Current_Profile_Path = WScript.Arguments(0);
var Reserve_Profile_Path = WScript.Arguments(1);
var objfso = new ActiveXObject("Scripting.FileSystemObject");
WScript.Sleep( 2000) ;
if (objfso.FolderExists(Current_Profile_Path)) { c = "exists" ; }
if (objfso.FolderExists(Reserve_Profile_Path)) { r = "exists" ; }
if (c == "exists" && r == "exists") {objfso.copyfolder(Current_Profile_Path, Reserve_Profile_Path, overwrite); }