2010/01/25

InstallBuilder 6.2.7 Released

We just released v6.2.7 of InstallBuilder which includes the following improvements:
  • New <useMSDOSPath> property in <runProgram> action to configure whether to use or not 8.3 format in the <program> path
  • Added encoding property in <addTextToFile> action and <fileContentTest> rule
  • New <unix2dos> action
  • Allow file type filters in <fileParameter> dialogs for xwindow, osx and win32 modes
  • Include InstallBuilder version by default in the generated installers version info
  • Fixed error with file selection crashing if third-party Explorer extensions change locale
  • Fixed unpacking error in some Windows environments due to antivirus software locking files
Check out our changelog and download the latest release to benefit from the new features and bug fixes.

    2010/01/04

    Handling Access Control List on Windows With BitRock InstallBuilder

    Access Control List (ACL) is the way in which Windows manages permissions on NTFS file systems.

    There are several command line tools on Windows for handling this: cacls, xcals, icacls. Unfortunately, these tools are not always present in a default Windows installation and depending on the Windows version, different tools may be required.

    BitRock InstallBuilder now provides you with <setWindowsACL> built-in actions. This powerful action for managing permissions allows you to modify ACL on Windows. It is based in the icacls windows tool (http://technet.microsoft.com/en-us/library/cc753525(WS.10).aspx).

    You can define the files you want to apply the permissions to. It allows you to specify if you want to "allow" or "deny" access. You can also match a list of users for which the permissions will be applied, and to specify any of the allowed permissions types.

    You can define the users either using names or SIDs. Please take into account that special users, like "Everyone" are localized so it is a good practice to use SIDs instead for these users. You can find a list of the well known SIDs in this article:

    http://support.microsoft.com/kb/243330

    The most common file permissions are also detailed below:

    http://msdn.microsoft.com/en-us/library/aa364399(VS.85).aspx


    http://support.microsoft.com/kb/243330

    Note that ACL are only supported on NFTS file systems.

    Example 1 - Basic:

    The following example will allow all users in the system to read, write and execute the files that match the pattern in <files>. For the directories that match that pattern, the users will be allowed to read the content and write new content in that directory.
    <setWindowsACL>
    <user>Everyone</users> 
    <permissions>file_read_data file_write_data file_execute</permissions>
    <files>c:\myfolder\*;c:\myfolder\*\*;c:\myfolder\*\*\*</files>
    <action>allow</action>
    </setWindowsACL>
    

    Example 2 – Inheritance:

    It is also possible to define the inheritance level:
    <setWindowsACL>
         <action>deny</action>
         <files>c:\some\folder</files>
         <permissions>file_read_data</permissions>
         <recurseContainers>0</recurseContainers>
         <recurseObjects>0</recurseObjects>
         <recurseOneLevelOnly>0</recurseOneLevelOnly>
         <self>1</self>
         <users>Everyone</users>
    </setWindowsACL>
    

    • <self> : determines if the objects specified in the <files> tag will be modified or just their children, if the recursion tags are enabled.
    • <recurseOneLevelOnly> : Only applies inheritance to the first level of hierarchy if one of the below are enabled.
    • <recurseObjects> : Applies inheritance to objects (files).
    • <recurseContainers> : Applies inheritance to containers (folders).


    Example 3 – Using InstallBuilder GUI:

    Of course this action is also available from the InstallBuilder GUI.



    How to use Custom Build Targets

    One of the most useful features of InstallBuilder is the ability to automate the build process. Installers can be built from a command line prompt such as:

    installbuilder-6.2.6/bin/builder build /path/to/project.xml linux

    The above describes the basic command line build process. You can also make changes to the project prior to the build process to adapt it to your needs using the --setvars flag.

    In most cases, this is used to modify project properties such as the <version>, the <fullName> or the <windowsExecutableIcon>:
    builder build project.xml --setvars version=1.2.3  project.fullName="New Installer Name"
    

    However, there is much more you can achieve using this functionality.