Class Util


  • public class Util
    extends java.lang.Object
    The class contains various utility functions to be used by script properties, custom actions and custom screens.
    • Constructor Summary

      Constructors 
      Constructor Description
      Util()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static void dumpVariables​(Context context)
      Dump all defined installer variables to stderr.
      static void fatalError​(java.lang.Throwable t)
      This method can be invoked if you encounter a non-recoverable and non-expected error in your custom code.
      static java.lang.String getAnnotatedStackTrace​(java.lang.Throwable t)
      If a stack trace comes from scripts, it can be difficult to trace them to their origin by looking at the stack trace alone.
      static java.io.File getLogFile()
      Get the location of the log file.
      static java.awt.Window getParentWindow()
      Get the window of the installer.
      static java.lang.String getStandardApplicationsDirectory()
      Returns the standard directory for installing applications.
      static java.lang.String getUserHome()
      Returns the home directory.
      static boolean hasFullAdminRights()
      Checks whether the current process has full administration rights.
      static boolean is64BitWindows()
      Returns whether the Windows is a 64-bit Windows, regardless of whether the installer is running with a 32-bit JVM or a 64-bit JVM.
      static boolean isAdminGroup()
      Checks whether the current user is from the administration group.
      static boolean isAdminUser()
      Deprecated.
      static boolean isAix()
      Returns whether the platform is AIX.
      static boolean isAtLeastWindows7()
      Returns whether the platform is at least Windows 7.
      static boolean isAtLeastWindowsVista()
      Returns whether the platform is at least Windows Vista.
      static boolean isAtLeastWindowsXP()
      Deprecated.
      static boolean isDirectoryWritable​(java.io.File directory)
      Checks if a directory is writable with the currently available privileges.
      static boolean isHpux()
      Returns whether the platform is HP UX.
      static boolean isLinux()
      Returns whether the platform is Linux.
      static boolean isMacOS()
      Returns whether the platform is macOS.
      static boolean isMacosInstaller()
      Returns whether the installer is a macOS installer
      static boolean isSolaris()
      Returns whether the platform is Solaris.
      static boolean isUnixInstaller()
      Returns whether the installer is a Unix installer
      static boolean isWindows()
      Returns whether the platform is Windows.
      static boolean isWindows10()
      Returns whether the platform is Windows 10.
      static boolean isWindows2000()
      Returns whether the platform is Windows 2000.
      static boolean isWindows2003()
      Returns whether the platform is Windows 2003.
      static boolean isWindows2008()
      Returns whether the platform is Windows 2008.
      static boolean isWindows2012()
      Returns whether the platform is Windows 2012.
      static boolean isWindows2016()
      Returns whether the platform is Windows 2016.
      static boolean isWindows7()
      Returns whether the platform is Windows 7.
      static boolean isWindows8()
      Returns whether the platform is Windows 8.
      static boolean isWindows9X()
      Deprecated.
      always returns false because launchers do not work with Windows 9X anymore
      static boolean isWindowsInstaller()
      Returns whether the installer is a Windows installer
      static boolean isWindowsNT()
      Deprecated.
      static boolean isWindowsVista()
      Returns whether the platform is Windows Vista.
      static boolean isWindowsXP()
      Returns whether the platform is Windows XP.
      static void loadNativeFromResources​(java.lang.String fileName)
      Call System.load(java.lang.String) with the supplied file name resolved against the resource directory.
      static void log​(java.lang.Throwable t)
      Writes an stack trace to the installation log.
      static void logError​(java.lang.Object source, java.lang.String message)
      Writes an error message to the installation log.
      static void logInfo​(java.lang.Object source, java.lang.String message)
      Writes an info message to the installation log.
      static void moveLogFile​(java.io.File newLogFile)
      Move the log file to a new location.
      static void printAnnotatedStackTrace​(java.lang.Throwable t)
      Prints the return value of getAnnotatedStackTrace(Throwable) to System.err.
      static void showErrorMessage​(java.lang.String message)
      Show a message dialog.
      static void showMessage​(java.lang.String message)
      Show a message dialog.
      static void showMessage​(java.lang.String message, int messageType)
      Show a message dialog.
      static int showOptionDialog​(java.lang.String message, java.lang.String[] options, int messageType)
      Show an options dialog.
      static void showPath​(java.lang.String path)
      Show the specified directory or file.
      static void showUrl​(java.net.URL url)
      Show a URL in the default browser.
      static void showWarningMessage​(java.lang.String message)
      Show a message dialog.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Util

        public Util()
    • Method Detail

      • getUserHome

        public static java.lang.String getUserHome()
        Returns the home directory.
        Returns:
        the home directory
      • isSolaris

        public static boolean isSolaris()
        Returns whether the platform is Solaris.
        Returns:
        the result
      • isLinux

        public static boolean isLinux()
        Returns whether the platform is Linux.
        Returns:
        the result
      • isWindows

        public static boolean isWindows()
        Returns whether the platform is Windows.
        Returns:
        the result
      • isWindows9X

        @Deprecated
        public static boolean isWindows9X()
        Deprecated.
        always returns false because launchers do not work with Windows 9X anymore
        Returns whether the platform is Windows 9X (95, 98, ME).
        Returns:
        the result
      • isWindowsNT

        @Deprecated
        public static boolean isWindowsNT()
        Deprecated.
        Returns whether the platform is Windows NT.
        Returns:
        the result
      • isAtLeastWindowsVista

        public static boolean isAtLeastWindowsVista()
        Returns whether the platform is at least Windows Vista.
        Returns:
        the result
      • isAtLeastWindows7

        public static boolean isAtLeastWindows7()
        Returns whether the platform is at least Windows 7.
        Returns:
        the result
      • isAtLeastWindowsXP

        @Deprecated
        public static boolean isAtLeastWindowsXP()
        Deprecated.
        Returns whether the platform is at least Windows XP.
        Returns:
        the result
      • isWindowsVista

        public static boolean isWindowsVista()
        Returns whether the platform is Windows Vista.
        Returns:
        the result
      • isWindows7

        public static boolean isWindows7()
        Returns whether the platform is Windows 7.
        Returns:
        the result
      • isWindows8

        public static boolean isWindows8()
        Returns whether the platform is Windows 8. This includes Windows 8.1.
        Returns:
        the result
      • isWindows10

        public static boolean isWindows10()
        Returns whether the platform is Windows 10.
        Returns:
        the result
      • isWindowsXP

        public static boolean isWindowsXP()
        Returns whether the platform is Windows XP.
        Returns:
        the result
      • isWindows2000

        public static boolean isWindows2000()
        Returns whether the platform is Windows 2000.
        Returns:
        the result
      • isWindows2003

        public static boolean isWindows2003()
        Returns whether the platform is Windows 2003.
        Returns:
        the result
      • isWindows2008

        public static boolean isWindows2008()
        Returns whether the platform is Windows 2008.
        Returns:
        the result
      • isWindows2012

        public static boolean isWindows2012()
        Returns whether the platform is Windows 2012.
        Returns:
        the result
      • isWindows2016

        public static boolean isWindows2016()
        Returns whether the platform is Windows 2016.
        Returns:
        the result
      • is64BitWindows

        public static boolean is64BitWindows()
        Returns whether the Windows is a 64-bit Windows, regardless of whether the installer is running with a 32-bit JVM or a 64-bit JVM. This condition cannot be found out by inspecting System.getProperty("os.arch"), since this will return a value that corresponds to the JRE and not to the OS (i.e. always "x86" for a 32-bit JRE, even if it is running on a 64-bit Windows).

        This method inspects the environment variables PROCESSOR_ARCHITECTURE and PROCESSOR_ARCHITEW6432. If PROCESSOR_ARCHITECTURE contains AMD64 or IA64, the currently used JRE is a 64-bit JRE which is then by definition running on a 64-bit Windows. If PROCESSOR_ARCHITECTURE contains x86, the PROCESSOR_ARCHITEW6432 is undefined for a 32-bit Windows and contains AMD64 or IA64 for a 64-bit Windows.

        Returns:
        the result. If the current OS is not Windows, the result is always false.
      • isMacOS

        public static boolean isMacOS()
        Returns whether the platform is macOS.
        Returns:
        the result
      • isHpux

        public static boolean isHpux()
        Returns whether the platform is HP UX.
        Returns:
        the result
      • isAix

        public static boolean isAix()
        Returns whether the platform is AIX.
        Returns:
        the result
      • isWindowsInstaller

        public static boolean isWindowsInstaller()
        Returns whether the installer is a Windows installer
        Returns:
        the result
      • isUnixInstaller

        public static boolean isUnixInstaller()
        Returns whether the installer is a Unix installer
        Returns:
        the result
      • isMacosInstaller

        public static boolean isMacosInstaller()
        Returns whether the installer is a macOS installer
        Returns:
        the result
      • getStandardApplicationsDirectory

        public static java.lang.String getStandardApplicationsDirectory()
        Returns the standard directory for installing applications.
        Returns:
        the directory
      • showUrl

        public static void showUrl​(java.net.URL url)
        Show a URL in the default browser. If no default browser can be determined for the operating system, the user is asked to locate the executable of the internet browser. This executable is cached so that subsequent invocations of this method do not bring up this questions again.

        For quiet installers, this method does nothing.

        Parameters:
        url - the URL to be shown in the browser.
      • showMessage

        public static void showMessage​(java.lang.String message,
                                       int messageType)
        Show a message dialog. This message dialog is a JOptionPane, the parameters are equivalent to those of the standard Java class. This method works in both GUI and console mode.
        Parameters:
        message - the message
        messageType - the message type (see JOptionPane)
        See Also:
        JOptionPane
      • showMessage

        public static void showMessage​(java.lang.String message)
        Show a message dialog. This message dialog is a JOptionPane with a message type of INFORMATION_MESSAGE. This method works in both GUI and console mode.

        Paragraphs can be created by double line feeds (\n\n), single line feeds will be ignored. On Windows and macOS, the string is split into a title that is shown in a larger font and a message that is shown in a regular font. If the message does not contain a line feed, the entire message is shown as a title. If the message contains a line feed, the title is split from the beginning up to the first dot or the first line feed, the remainder is shown as the regular message. If you do not want to display anything in the title font, start the message with a single line break.

        Text is wrapped automatically on word boundaries. On Windows, text that cannot be wrapped is split with an ellipsis in the middle of the line to limit the maximum width of the message dialog. In some circumstances this may not be desirable, for example for displaying stack trace elements. You can prepend the message with a zero character \0 to prevent word wrapping and ellipsis insertion. On macOS, text is wrapped on word boundaries and within words if the width of a single word is too large. This behavior of the native alert cannot be changed.

        Parameters:
        message - the message
        See Also:
        JOptionPane
      • showErrorMessage

        public static void showErrorMessage​(java.lang.String message)
        Show a message dialog. This message dialog is a JOptionPane with a message type of ERROR_MESSAGE. This method works in both GUI and console mode.

        See showMessage(String, int) for a discussion on the message format.

        Parameters:
        message - the message
        See Also:
        JOptionPane
      • showWarningMessage

        public static void showWarningMessage​(java.lang.String message)
        Show a message dialog. This message dialog is a JOptionPane with a message type of WARNING_MESSAGE. This method works in both GUI and console mode.

        See showMessage(String, int) for a discussion on the message format.

        Parameters:
        message - the message
        See Also:
        JOptionPane
      • showOptionDialog

        public static int showOptionDialog​(java.lang.String message,
                                           java.lang.String[] options,
                                           int messageType)
                                    throws UserCanceledException
        Show an options dialog. This option dialog is a JOptionPane, the parameters are equivalent to those of the standard Java class. This method works in both GUI and console mode.

        See showMessage(String, int) for a discussion on the message format.

        Parameters:
        message - the message
        options - the options. To explicitly set keys for answers in console mode, prefix the desired letter with '&'. For example new String[] {"&Enter", "E&xit"}. If no explicit keys are set the first letters of the options are taken. Repeating letters are replaced with numeric indices.
        messageType - the message type (see JOptionPane)
        Returns:
        the index of the selected option or -1 if the installer is running in unattended mode
        Throws:
        UserCanceledException - if the user cancels the selection in console mode
        See Also:
        JOptionPane
      • fatalError

        public static void fatalError​(java.lang.Throwable t)
        This method can be invoked if you encounter a non-recoverable and non-expected error in your custom code. The exception and all system properties will be printed to a log file and the user will be informed with a crash dialog. The installer will then quit.
        Parameters:
        t - the exception that occurred
      • getParentWindow

        public static java.awt.Window getParentWindow()
        Get the window of the installer.
        Returns:
        the window or null if the installer is silent
      • logInfo

        public static void logInfo​(java.lang.Object source,
                                   java.lang.String message)
        Writes an info message to the installation log.
        Parameters:
        source - the object that requests the log. Usually the bean that executes this code. Can be null, in this case the currently executed action or - if no action is being executed - the currently displayed screen are used. A case where you should explicitly set this parameter is in code that is executed from form components.
        message - the message to be logged.
      • logError

        public static void logError​(java.lang.Object source,
                                    java.lang.String message)
        Writes an error message to the installation log.
        Parameters:
        source - the object that requests the log. Usually the bean that executes this code. Can be null, in this case the currently executed action or - if no action is being executed - the currently displayed screen are used. A case where you should explicitly set this parameter is in code that is executed from form components.
        message - the message to be logged.
      • log

        public static void log​(java.lang.Throwable t)
        Writes an stack trace to the installation log.
        Parameters:
        t - the throwable instance
      • dumpVariables

        public static void dumpVariables​(Context context)
        Dump all defined installer variables to stderr. In order to be able to see the output you have to create a debug installer by selecting the corresponding option in the Build step in the install4j GUI.
        Parameters:
        context - the context
      • isAdminUser

        @Deprecated
        public static boolean isAdminUser()
        Deprecated.
        Checks whether the current user has administration privileges.
        • On Windows this method returns true if the installer is running with administration privileges.
        • On macOS this method returns true if the user is member of the "admin" group.
        • On Unix this method returns true if the current user is called "root".
        Returns:
        true or false.
      • isAdminGroup

        public static boolean isAdminGroup()
        Checks whether the current user is from the administration group.
        • On Windows this is the case, if the user is a member of the "Administrators" group.
        • On macOS this method returns true if the user is member of the "admin" group.
        • On Unix this method returns true if the current user is called "root".
        Returns:
        true or false.
      • hasFullAdminRights

        public static boolean hasFullAdminRights()
        Checks whether the current process has full administration rights.
        • On Windows this method returns true if the installer is running with elevated privileges.
        • On macOS and Unix this method returns true if the current user is called "root".
        Returns:
        true or false.
      • getAnnotatedStackTrace

        public static java.lang.String getAnnotatedStackTrace​(java.lang.Throwable t)
        If a stack trace comes from scripts, it can be difficult to trace them to their origin by looking at the stack trace alone. With this method you can annotate the stack trace with the actual names of properties, actions, screens or form components that contain the offending script code.
        Parameters:
        t - the exception
        Returns:
        the annotated stack trace
      • printAnnotatedStackTrace

        public static void printAnnotatedStackTrace​(java.lang.Throwable t)
        Prints the return value of getAnnotatedStackTrace(Throwable) to System.err. This can be used for debugging purposes.
        Parameters:
        t - the exception
      • showPath

        public static void showPath​(java.lang.String path)
        Show the specified directory or file. On Windows this will open an explorer window and on Linux/Unix it will open a terminal. On macOS it will open a finder window for regular files or directories. It will mount a DMG file and show its content.
        Parameters:
        path - the directory that should be displayed
      • isDirectoryWritable

        public static boolean isDirectoryWritable​(java.io.File directory)
        Checks if a directory is writable with the currently available privileges.
        Parameters:
        directory - the directory. If the directory is a file, false is returned. It is acceptable if the directory does not exist.
        Returns:
        true or false.
      • getLogFile

        public static java.io.File getLogFile()
        Get the location of the log file. This is a temporary file, for the installer it will be moved to .install4j/installation.log before the installer terminates if an "Install files" action has been executed. For an installer application, this log file will be deleted when the installer application is terminated unless the VM parameter -Dinstall4j.keepLog=true is set.
        Returns:
        the log file
      • moveLogFile

        public static void moveLogFile​(java.io.File newLogFile)
        Move the log file to a new location. With this method an alternative permanent location of the log file can be specified. The log file will be moved immediately and it will not be deleted when the installer application exits.
        See Also:
        getLogFile()
      • loadNativeFromResources

        public static void loadNativeFromResources​(java.lang.String fileName)
        Call System.load(java.lang.String) with the supplied file name resolved against the resource directory. This is useful to load supporting native libraries for SQL drivers, such as sqljdbc_auth.dll for the Oracle JDBC driver. If you add that DLL on the "Installer->Custom code & resources step", you can load it with the code
        
             Util.loadNativeFromResources("sqljdbc_auth.dll");
         
        in a "Run script" action.
        Parameters:
        fileName - the file name of the native library