## install4j API documentation

## com.install4j.api.launcher
Class Variables

    java.lang.Object
      com.install4j.api.launcher.Variables

    public class Variables

extends java.lang.Object

This class provides methods to access compiler and installer variables from your launchers. Do not use this class in the installer, uninstaller or in a custom installer application, in that case use the methods in the `context` instead.

All methods that access the Java preference store require at least Java 1.4. They do nothing if Java 1.3 is used.

Method Summary
`static java.lang.String` | `getCompilerVariable(java.lang.String variableName)` Get the value of a compiler variable.
`static java.lang.Object` | `getInstallerVariable(java.lang.String variableName)` Get the value of an installer variable that was saved to the automatically created response file `response.varfile`.
`static java.util.Map` | `getInstallerVariables()` Get a map of installer variables that were saved to the automatically created response file `response.varfile`.
`static java.util.Map` | `loadFromPreferenceStore(boolean userSpecific)` Load installer variables from the preference stores that have been saved by a "Save installer variables to the preference store" action.
`static java.util.Map` | `loadFromPreferenceStore(java.lang.String packageName, boolean userSpecific)` Load installer variables from the preference stores that have been saved by a "Save installer variables to the preference store" action.
`static void` | `saveToPreferenceStore(java.util.Map variables, boolean userSpecific)` Save a map of installer variables to the preference store.
`static void` | `saveToPreferenceStore(java.util.Map variables, java.lang.String packageName, boolean userSpecific)` Save a map of installer variables to the preference store.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### getCompilerVariable

    public static java.lang.String getCompilerVariable(java.lang.String variableName)
                                                throws java.io.IOException

  Get the value of a compiler variable. The first time this method is called, the installer config file will be read, for subsequent calls the compiler variables will be cached.

  Parameters:
    `variableName` - the name of the compiler variable
  Returns:
    the value of the compiler variable or `null` if the variable is undefined
  Throws:
    `java.io.IOException` - if the installer config file cannot be read

### getInstallerVariables

    public static java.util.Map getInstallerVariables()
                                               throws java.io.IOException

  Get a map of installer variables that were saved to the automatically created response file `response.varfile`. Not all installer variables are saved to that file. You can register a variable as a response file variable with `Context.registerResponseFileVariable(String)`. Variables to which form components are bound are automatically registered as response file variables.

  Returns:
    the map with installer variables from the response file. The keys are the variable names, the values are the original values at the time that the response file was saved.
  Throws:
    `java.io.IOException` - if the automatically created response file cannot be read

### getInstallerVariable

    public static java.lang.Object getInstallerVariable(java.lang.String variableName)
                                                 throws java.io.IOException

  Get the value of an installer variable that was saved to the automatically created response file `response.varfile`. See `getInstallerVariables()` for more information.

  Parameters:
    `variableName` - the name of the compiler variable
  Returns:
    the value of the compiler variable or `null` if the variable is undefined
  Throws:
    `java.io.IOException` - if the automatically created response file cannot be read
  See Also:
    `getInstallerVariables()`

### loadFromPreferenceStore

    public static java.util.Map loadFromPreferenceStore(boolean userSpecific)
                                                 throws java.io.IOException

  Load installer variables from the preference stores that have been saved by a "Save installer variables to the preference store" action. The package name in the preference store is set to the application ID which is the default save location of that action.

  Parameters:
    `userSpecific` - if the user-specific preference store should be used or not
  Returns:
    the map with installer variables from the preference store. The keys are the variable names, the values are the original values at the time that the installer variables were saved. Returns `null` if no variables were saved.
  Throws:
    `java.io.IOException` - if the operation fails due to a problem with the backing store

### loadFromPreferenceStore

    public static java.util.Map loadFromPreferenceStore(java.lang.String packageName,
                                                        boolean userSpecific)
                                                 throws java.io.IOException

  Load installer variables from the preference stores that have been saved by a "Save installer variables to the preference store" action.

  Parameters:
    `packageName` - the package name that was used when saving the installer variables to the preference store
    `userSpecific` - if the user-specific preference store should be used or not
  Returns:
    the map with installer variables from the preference store. The keys are the variable names, the values are the original values at the time that the installer variables were saved. Returns `null` if no variables were saved.
  Throws:
    `java.io.IOException` - if the operation fails due to a problem with the backing store

### saveToPreferenceStore

    public static void saveToPreferenceStore(java.util.Map variables,
                                             boolean userSpecific)
                                      throws java.io.IOException

  Save a map of installer variables to the preference store. If you use installer variables loaded by `loadFromPreferenceStore(boolean)` for the configuration of your application, you can save changes made in the application back to the preference store with this method. Values that cannot be decoded as described by `Context.registerResponseFileVariable(String)` will be ignored. Values that are present in the preference store and not in the supplied map will not be deleted. The package name in the preference store is set to the application ID which is the default save location of the "Save installer variables to the preference store" action.

  Parameters:
    `variables` - the map with the installer variables as returned by `loadFromPreferenceStore (boolean)`
    `userSpecific` - if the user-specific preference store should be used or not
  Throws:
    `java.io.IOException` - if the operation fails due to a problem with the backing store

### saveToPreferenceStore

    public static void saveToPreferenceStore(java.util.Map variables,
                                             java.lang.String packageName,
                                             boolean userSpecific)
                                      throws java.io.IOException

  Save a map of installer variables to the preference store. If you use installer variables loaded by `loadFromPreferenceStore(String, boolean)` for the configuration of your application, you can save changes made in the application back to the preference store with this method. Values that cannot be decoded as described by `Context.registerResponseFileVariable(String)` will be ignored. Values that are present in the preference store and not in the supplied map will not be deleted.

  Parameters:
    `variables` - the map with the installer variables as returned by `loadFromPreferenceStore (String, boolean)`
    `packageName` - the package name to which the installer variables should be saved in the preference store
    `userSpecific` - if the user-specific preference store should be used or not
  Throws:
    `java.io.IOException` - if the operation fails due to a problem with the backing store