Adding files to an extension's uninstallationFrom MozillaZine Knowledge BaseUninstall logs are no longer used or necessary since Firefox 1.5. See bug 286100 for more info.
[edit] The uninstall logWhen an extension is installed, the Extension Manager creates a log of the files which comprise that extension. This log is used by the Extension Manager to cleanly uninstall an extension when requested by the user. Here's a real log created when the PasswordMaker extension is installed on a Windows OS:
add C:\Documents and Settings\Fidel Castro\Application Data\Mozilla\Firefox\Profiles\ifk9k760.dev9\extensions\
{5872365e-67d1-4afd-9480-fd293bebd20d}\install.rdf
add C:\Documents and Settings\Fidel Castro\Application Data\Mozilla\Firefox\Profiles\ifk9k760.dev9\extensions\
{5872365e-67d1-4afd-9480-fd293bebd20d}\defaults\passwordmakerdialog.ico
add C:\Documents and Settings\Fidel Castro\Application Data\Mozilla\Firefox\Profiles\ifk9k760.dev9\extensions\
{5872365e-67d1-4afd-9480-fd293bebd20d}\defaults\passwordmakerdialog.xpm
add C:\Documents and Settings\Fidel Castro\Application Data\Mozilla\Firefox\Profiles\ifk9k760.dev9\extensions\
{5872365e-67d1-4afd-9480-fd293bebd20d}\install.js
add C:\Documents and Settings\Fidel Castro\Application Data\Mozilla\Firefox\Profiles\ifk9k760.dev9\extensions\
{5872365e-67d1-4afd-9480-fd293bebd20d}\chrome\passwdmaker.jar
register profile package passwdmaker
register profile skin classic/1.0
An extension's log is written to the file [edit] "Add" entriesEach add\tpath\filename\n where When an extension is uninstalled, the Extension Manager reads the extension's log and subsequently deletes each file that has an [edit] Adding entries to the uninstall logIf an extension creates file(s) during its lifetime, and the extension developer would like those file(s) automatically deleted when the extension is uninstalled,
/**
* Adds an "add" entry to this extension's Uninstall log.
* The file argument can be created by DirIO.get() or FileIO.get()
* in io.js. The guid argument is the GUID for your extension,
* including braces and dashes; e.g, "{5872365E-67D1-4AFD-9480-FD293BEBD20D}"
* See usage example below.
*/
function addToUninstallList(file, guid) {
// make sure the new file is in the extension uninstall list
var uninstallFile = DirIO.get("ProfD"); // %Profile% dir
uninstallFile.append("extensions");
uninstallFile.append(guid);
uninstallFile.append("uninstall");
uninstallFile.append("Uninstall");
var data = FileIO.read(uninstallFile);
var r = new RegEx("^add\s.*" + file.path", "m");
if (!data || r.test(data)) {
// Uninstall file doesn't exist or filename is
// already listed in it.
return;
}
// Add new file to the Uninstall list.
// Note we're not using the FileIO.path() function
// because it returns an URL-encoded path (e.g., a space equals %20)
var newLine = "add\t" + file.path + "\n";
FileIO.write(uninstallFile, newLine, "a");
}
Sample use of the function:
// Write a file. If successful, update the Uninstall log
// so the file is automatically deleted when our extension
// is uninstalled by the user.
var myfile = DirIO.get("ProfD"); // %Profile% dir
myfile.append("extensions");
myfile.append("{5872365E-67D1-4AFD-9480-FD293BEBD20D}");
myfile.append("myfile.xml");
if (FileIO.write(myfile, "<hello-world/>", "w")) {
// Make sure the new file is in the extension uninstall list
addToUninstallList(myfile, "{5872365E-67D1-4AFD-9480-FD293BEBD20D}");
}
[edit] References
|
|