Version 3.0.2
-------------
** Bug
    * [FELIX-2366] - Avoiding property substitution by escaping does not remove escape character

** Improvement
    * [FELIX-1657] - Add option in fileinstall to start bundles transiently (START_TRANSIENT)

Version 3.0.0
-------------
** Bug
    * [FELIX-1776] - FileInstall starts already installed bundles twice
    * [FELIX-2069] - FileInstall creates ./load by default
    * [FELIX-2248] - fileinstall does not restart bundles when the underlying file is modified
    * [FELIX-2302] - Fileinstall should add entries for directories when creating JARs
    * [FELIX-2313] - fileinstall does not recognize jars if it does not have Bundle-SymbolicName and Bundle-Version

** Improvement
    * [FELIX-2249] - fileinstall should log installation/uninstallation/updation/activation details at INFO level
    * [FELIX-2307] - There is no way to bypass / escape property substitution


Version 2.0.8
-------------
** Bug
    * [FELIX-1775] - fileinstall release archives contains an empty "load"
                     folder which should be removed
    * [FELIX-1789] - FileInstall is too verbose
    * [FELIX-1851] - FileInstall watched bundles are restarted twice upon update
    * [FELIX-1861] - FileInstall created temp directories are never deleted
    * [FELIX-1862] - fileinstall thread name as printed in log messages need
                     to be less verbose
    * [FELIX-1928] - File installer starts bundles too early on restart

** Task
    * [FELIX-1811] - fileinstall should depend on the official osgi artifacts


Version 2.0.4
-------------
** Bug
    * [FELIX-1386] - Updating fileinstall bundle in watched directory 
      causes IllegalsStateException
    * [FELIX-1572] - File Install running in an infinite loop while watching 
      multiple directories, once of which is itself
    * [FELIX-1578] - FileInstall issue when updating already installed bundles 
      at startup time
    * [FELIX-1591] - FIleInstall should have an optional / dynamic import on 
      org.osgi.service.cm instead of exporting it
    * [FELIX-1593] - Got an exception when restarting FileInstall bundle
    * [FELIX-1628] - Fileinstall should load configurations as soon as config 
      admin is available
    * [FELIX-1715] - osgi:update on xml deployments will cause ZIPExceptions
    * [FELIX-1716] - Fileinstall does not recognize changes in lastmodification 
      date of an uninstalled bundle inside deploy folder
    * [FELIX-1736] - After a restart, fileinstall does not always properly 
      uninstall bundles
    * [FELIX-1750] - fileinstall does not work on jdk 1.4
    * [FELIX-1787] - REGRESSION: FileInstall relies on location to be a valid 
      URL for update to be successful
    * [FELIX-1788] - Set felix.fileinstall.tmpdir to ${java.io.tmpdir} by default
    * [FELIX-1790] - fileinstal tmp dir needs to be different for each 
      watched directory

** Improvement
    * [FELIX-1756] - Allow fileinstall to override (i.e. update) bundles that have 
      not been deployed by fiileinstall initially

** New Feature
    * [FELIX-1537] - File Install should support XML property files

Version 2.0.0
-------------
** Bug
    * [FELIX-938] - FileInstall starts a stopped bundles even if it is stopped 
      transiently by user
    * [FELIX-1269] - MalformedURLException for bundle locations installed 
      by FileInstall
    * [FELIX-1377] - fileinstall tries to process files which are not fully 
      copied yet 
    * [FELIX-1382] - FileInstall attempts to uninstall "System Bundle"
    * [FELIX-1481] - When performing variable substitution, fileinstall throws an 
      exception if there is a start or stop delimiter without the other one
    * [FELIX-1540] - [FileInstall] When removing/re-adding a bundle, all the 
      dependent bundles don't start anymore

** Improvement
    * [FELIX-1301] - Limit FileInstall configuration information to one line in 
      the output
    * [FELIX-1387] - FileInstall unnenessarily computes length of files
    * [FELIX-1475] - Add a file filter for a given watched directory
    * [FELIX-1476] - Allow system property substitution while loading configurations 
      from files
    * [FELIX-1553] - fileinstall bundle should have an optional import on 
      org.osgi.service.log instead of exporting it
    * [FELIX-1554] - fileinstall should not export org.apache.felix.fileinstall 
      and org.apache.felix.fileinstall.utils packages

** New Feature
    * [FELIX-922] - File Install bundle should be extensible to support new 
      artifact type
    * [FELIX-1483] - Fileinstall should support exploded artifacts

Version 1.2.0
-------------
   * [FELIX-1179] - FileInstall should recognize Jar files by content instead
     of extension
   * [FELIX-1216] - ClassCastException when running FileInstall with
     Knopflerfish
   * [FELIX-1228] - Felix File Install - Spaces in File Names
   * [FELIX-1203] - NPE in fileinstall if a watched bundle is uninstalled by
     some other means
   * [FELIX-1235] - NullPointerException due to misconfigured watched dir
   * [FELIX-1174] - FileInstall bundle does not print stack trace of exceptions
     when log service is not used
   * [FELIX-1251] - Looping NullPointerException if the polled directory is
     removed after File Install registration
   * [FELIX-1241] - Log "Bundle Started" 

Version 1.0.0
-------------

** Bug
    * [FELIX-1036] - FileInstaller spawns multiple watchers for same directory

** Improvement
    * [FELIX-1055] - Making FileInstall bundle CDC-1.1/Foundation 1.1 compatible

Version 0.9.2
--------------

** Bug
    * [FELIX-895] - File Install treats configuration files with identical subnames as the same configuration
    * [FELIX-926] - FileInstall does not read all values from Configuration properties
    * [FELIX-937] - FileInstall can't handle autostart bundles that are part of watched directory
    * [FELIX-938] - FileInstall starts a stopped bundles even if it is stopped transiently by user

** Improvement
    * [FELIX-920] - Add option to only install or "install and start" newly discovered bundles 
    * [FELIX-939] - Optimize File Install
    * [FELIX-942] - Fileinstall unit tests
    * [FELIX-983] - Allow property substitution in config file
    * [FELIX-998] - Metatype definition for FileInstall
    
Version 0.9.0
--------------

 * First public release
