## install4j API documentation

## com.install4j.api.windows
Class WinFileSystem

    java.lang.Object
      com.install4j.api.windows.WinFileSystem

    public class WinFileSystem

extends java.lang.Object

Collection of static methods to access Microsoft Windows-specific folder locations and to execute native file system operations.

Author:
  ej-technologies GmbH

Method Summary
`static boolean` | `createShellLink(java.io.File file, java.io.File shortcutTo, java.io.File iconFile)` Creates a shell link.
`static boolean` | `createShellLink(java.io.File file, java.io.File shortcutTo, java.io.File iconFile, java.lang.String arguments)` Creates a shell link.
`static boolean` | `createShellLink(java.io.File file, java.io.File shortcutTo, java.io.File iconFile, java.lang.String arguments, java.lang.String description)` Creates a shell link.
`static void` | `createStartMenuEntry(java.lang.String programGroupName, java.lang.String entryName, java.io.File destination, boolean allUsers, java.io.File icon)` Creates a start menu entry.
`static java.io.File` | `getCommonFilesDirectory()` Returns a folder for components that are shared across applications.
`static java.io.File` | `getProgramFilesDirectory()` Returns the program files directory of the current Windows installation.
`static java.io.File` | `getSpecialFolder(SpecialFolder folderType, boolean allUsers)` Returns Windows-specific directories like the start menu or the desktop.
`static java.io.File` | `getSystemDirectory()` Returns the system directory.
`static java.io.File` | `getWindowsDirectory()` Returns the Windows directory.
`static boolean` | `moveWithDelayUntilReboot(java.io.File source, java.io.File destination)` Calls the win32 API function MoveFileEx with MOVEFILE_DELAY_UNTIL_REBOOT.

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

Method Detail

### getSpecialFolder

    public static java.io.File getSpecialFolder(SpecialFolder folderType,
                                                boolean allUsers)

  Returns Windows-specific directories like the start menu or the desktop.

  Parameters:
    `folderType` - specifies the requested folder type.
    `allUsers` - if this parameter is `true` and if the current user is in the Administrators group, the method returns the requested folder for all users. Otherwise it returns the folder for the current user.
  Returns:
    the requested folder location.

### getProgramFilesDirectory

    public static java.io.File getProgramFilesDirectory()

  Returns the program files directory of the current Windows installation. A typical path is `C:\Program Files`.

  Returns:
    the program files directory.

### getCommonFilesDirectory

    public static java.io.File getCommonFilesDirectory()

  Returns a folder for components that are shared across applications. A typical path is `C:\Program Files\Common`. Valid only for Windows NT/2000/XP/Vista systems.

  Returns:
    the common files directory.

### getWindowsDirectory

    public static java.io.File getWindowsDirectory()

  Returns the Windows directory. A typical path is `C:\Windows`.

  Returns:
    the Windows directory.

### getSystemDirectory

    public static java.io.File getSystemDirectory()

  Returns the system directory. A typical path is `C:\Windows\system32`

  Returns:
    the system directory.

### createShellLink

    public static boolean createShellLink(java.io.File file,
                                          java.io.File shortcutTo,
                                          java.io.File iconFile)

  Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file. This as the same as calling `createShellLink(file, shortcutTo, iconFile, null, null)`

  Parameters:
    `file` - the shell link that should be created inluding the `lnk` suffix.
    `shortcutTo` - the file it should link to.
    `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
  Returns:
    whether the link could be created or not.
  See Also:
    `createShellLink(java.io.File, java.io.File, java.io.File, String)`

### createShellLink

    public static boolean createShellLink(java.io.File file,
                                          java.io.File shortcutTo,
                                          java.io.File iconFile,
                                          java.lang.String arguments)

  Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file. This as the same as calling `createShellLink(file, shortcutTo, iconFile, arguments, null)`

  Parameters:
    `file` - the shell link that should be created inluding the `lnk` suffix.
    `shortcutTo` - the file it should link to.
    `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
    `arguments` - the arguments passed to the target.
  Returns:
    whether the link could be created or not.

### createShellLink

    public static boolean createShellLink(java.io.File file,
                                          java.io.File shortcutTo,
                                          java.io.File iconFile,
                                          java.lang.String arguments,
                                          java.lang.String description)

  Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file.

  Parameters:
    `file` - the shell link that should be created inluding the `lnk` suffix.
    `shortcutTo` - the file it should link to.
    `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
    `arguments` - the arguments passed to the target.
    `description` - the description used in the tooltip
  Returns:
    whether the link could be created or not.

### createStartMenuEntry

    public static void createStartMenuEntry(java.lang.String programGroupName,
                                            java.lang.String entryName,
                                            java.io.File destination,
                                            boolean allUsers,
                                            java.io.File icon)
                                     throws java.io.IOException

  Creates a start menu entry.

  Parameters:
    `programGroupName` - the name of the program group where the entry should be created
    `entryName` - the name of the menu entry. You can create subfolders with backslashes.
    `destination` - the file that should be linked to
    `allUsers` - whether the entry should be created for all users or not
    `icon` - an optional icon file. If `null` is passed, the default icon of the `destination` target will be used.
  Throws:
    `java.io.IOException` - if the start menu entry could not be created

### moveWithDelayUntilReboot

    public static boolean moveWithDelayUntilReboot(java.io.File source,
                                                   java.io.File destination)

  Calls the win32 API function MoveFileEx with MOVEFILE_DELAY_UNTIL_REBOOT. You must be administrator to call this function. Not supported on Windows 9x.

  Parameters:
    `source` - the source file. Must be on the same drive as the destination file.
    `destination` - the destination file. If empty, the source file will be deleted.
  Returns:
    true if the operation could be registered successfully.