<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <blockquote cite="mid:53ED2422.1050306@riseup.net" type="cite"> <br>
      There is still, however, the problem of updating the database file
      used by the extension.  As I anticipated, trying to drop the
      existing data with the following line of code:<br>
      <meta http-equiv="content-type" content="text/html;
        charset=windows-1252">
      <pre>  mainDB.createStatement("drop table rulesets").execute();</pre>
    </blockquote>
    I think you shouldn't be doing this at the SQL level, you should be
    doing it by dropping the new file into place, which it sounds like
    you are going to do next. Take a look at how user rulesets are
    implemented. The (immutable) extension files go under
    .mozilla/firefox/xjhfewkj.dev/extensions/https-everywhere@eff.org.
    But when the user creates new rules they go under
    .mozilla/firefox/xjhfewkj.dev/HTTPSEverywhereUserRules, which is
    modifiable.<br>
    <br>
    Probably the best approach is this: Choose some directory under the
    profile root, say HTTPSEverywhereRulesetUpdates. At startup or when
    reloading rulesets, look for a rulesets.sqlite there. If not
    present, load the immutable copy from the extension directory. When
    an update is downloaded, store it in the profile root under
    HTTPSEverywhereRulesetUpdates. There are some extension APIs that
    should allow you to get the profile directory and the extension
    directory. I don't remember them offhand but the user rules example
    should show you the way.<br>
    <br>
    Thanks for all your hard work on this!<br>
  </body>
</html>