# Actions: Files

install4j BeanInfo catalog. Each entry below documents a bean class that can appear inside a `<serializedBean>` element in an install4j project file.

## Contents

- [Change Windows file rights](#change-windows-file-rights) — `com.install4j.runtime.beans.actions.files.AddWindowsFileRightsAction`
- [Copy files and directories](#copy-files-and-directories) — `com.install4j.runtime.beans.actions.files.CopyFileAction`
- [Create a symbolic link](#create-a-symbolic-link) — `com.install4j.runtime.beans.actions.files.CreateSymlinkAction`
- [Create a ZIP file](#create-a-zip-file) — `com.install4j.runtime.beans.actions.files.CreateZipFileAction`
- [Delete files and directories](#delete-files-and-directories) — `com.install4j.runtime.beans.actions.files.DeleteFileAction`
- [Extract a DMG file on macOS](#extract-a-dmg-file-on-macos) — `com.install4j.runtime.beans.actions.files.ExtractDmgFileAction`
- [Extract a TAR file](#extract-a-tar-file) — `com.install4j.runtime.beans.actions.files.ExtractTarFileAction`
- [Extract a ZIP file](#extract-a-zip-file) — `com.install4j.runtime.beans.actions.files.ExtractZipFileAction`
- [Install content of a ZIP file](#install-content-of-a-zip-file) — `com.install4j.runtime.beans.actions.files.InstallExternalZipFileAction`
- [Modify a ZIP file](#modify-a-zip-file) — `com.install4j.runtime.beans.actions.files.ModifyZipFileAction`
- [Move files and directories](#move-files-and-directories) — `com.install4j.runtime.beans.actions.files.MoveFileAction`
- [Set the modification time of files](#set-the-modification-time-of-files) — `com.install4j.runtime.beans.actions.files.SetFiletimeAction`
- [Set the owner of files and directories](#set-the-owner-of-files-and-directories) — `com.install4j.runtime.beans.actions.files.SetOwnerAction`
- [Set the UNIX access mode of files and directories](#set-the-unix-access-mode-of-files-and-directories) — `com.install4j.runtime.beans.actions.files.SetModeAction`

---

### Change Windows file rights
- **Class:** `com.install4j.runtime.beans.actions.files.AddWindowsFileRightsAction`
- **Category:** File operations
- **Multiple instances:** yes

Changes access rights to files and directories on Windows.If a helper process with elevated privileges has been created by the "Request privileges" action, this action is pushed to the helper process. Please see the help topic on "Elevation Of Privileges" for more information.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Files and directories | File[] | Configuration | — | The files and directories whose rights should be modified. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. The rights for a directory will be inherited by all subdirectories and their contained files. |
| `accessMode` — Access mode | [AccessMode](enums.md#accessmode) | Configuration | — | The access change mode.Grant access: Combines the specified rights with existing rights for the trustee.Set access: Set only the specified rights for the trustee.Deny access: Combine the specified rights with existing "deny" entries for the trustee.Revoke access: Remove all existing rights for the trustee. Note that this mode only deletes existing non-inherited "allow" entries for the trustee. To prevent access, use the "Deny access" mode instead. |
| `group` — Trustee | [WindowsGroup](enums.md#windowsgroup) | Rights | — | The trustee for which the access right should be changed. Specifies the user or group to which the file system rights should apply. The available options are: Authenticated users All users that have successfully logged on to the system. This excludes anonymous or guest sessions. This is equivalent to the Windows built-in group Authenticated Users. World All users, including guests and anonymous users. This corresponds to the Windows Everyone group. Administrators The built-in Windows group Administrators. Users The built-in Windows group Users, which includes all standard non-privileged users. Guests The built-in Windows group Guests, typically used for limited access accounts. Original User The user who originally started the installer process. This is relevant if the installer includes a "Request privileges" action and the "Action elevation type" property of this action is set to "Elevate to maximum available privileges". SID or Account Name Allows specifying a custom security identifier (SID) or account name manually in a separate child property. Use this for advanced use cases requiring access control for specific accounts or domain users. |
| `sidOrAccountName` — SID or Account Name | String | Rights | `group`=SID or Account Name | The SID in String form or the account name for which the access right should be changed. |
| `read` — Read | boolean | Rights | — | The right to read the object. |
| `write` — Write | boolean | Rights | — | The right to write to the object. |
| `execute` — Execute | boolean | Rights | — | The right to execute the object. |
| `all` — All | boolean | Rights | — | All available rights. |

### Copy files and directories
- **Class:** `com.install4j.runtime.beans.actions.files.CopyFileAction`
- **Category:** File operations
- **Multiple instances:** yes

Copy files and directories. This action will be automatically reverted by the 'Uninstall files' action.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Source files or directories | File[] | Configuration | — | The files and directories to be copied. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `showProgress` — Show progress | boolean | Configuration | — | If selected, and a progress bar is available on the current screen, the action will show its progress in the progress bar. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |
| `destinationFile` — Destination directory | File | Configuration | — | The destination directory. If you have selected a single source file, this can also be a file rather than a directory. The destination directory will not be created, it must exist before this action is executed, otherwise it will be treated as a destination file. |
| `destinationRoot` — Resolve relative file in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `destinationFile` set | A relative destination file can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `filesRoot` — Resolve relative files in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `files` set | Relative files can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `overwriteMode` — Overwrite mode | [OverwriteMode](enums.md#overwritemode) | Configuration | — | How to handle an existing destination file. |
| `uninstallMode` — Uninstall mode | [UninstallMode](enums.md#uninstallmode) | Configuration | — | The mode how the uninstaller should handle the files created with this action. |
| `symlinkMode` — Symlink handling | [SymlinkMode](enums.md#symlinkmode) | Symlinks | — | If symlinks are created, absolute symlinks will always be created with the same absolute target path. Relative symlinks can either retain the same relative target path or point to the same file as the source as an absolute target. |
| `symlinkFailureMode` — On symlink creation failure | [SymlinkFailureMode](enums.md#symlinkfailuremode) | Symlinks | — | How the action should handle a failure to create symlinks. This mainly applies to Windows. |
| `mode` — Access mode | String | Unix | — | The UNIX access mode for files. |
| `directoryMode` — Directory access mode | String | Unix | — | The UNIX access mode for directories. |
| `shared` — Shared file | boolean | Windows | — | If created files should be registered as a shared files. |
| `delay` — Delay if necessary | boolean | Windows | — | If selected and a destination file cannot be replaced, the operation will be scheduled for the next reboot. The context method isRebootRequired() will return true in this case. |
| `triggerReboot` — Trigger reboot if required | boolean | Windows | — | If selected and the operation is delayed until reboot, the user will be asked for a reboot automatically at the end of installation. |

### Create a symbolic link
- **Class:** `com.install4j.runtime.beans.actions.files.CreateSymlinkAction`
- **Category:** File operations
- **Multiple instances:** yes

Creates a symbolic link. On Windows, symlinks can by default only be created with elevated privileges.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `file` — File | File | Configuration | — | The file or directory that the symbolic link should point to. |
| `linkFile` — Link file | File | Configuration | — | The link file that should be created. Relative files will be resolved relative to the installation directory. |
| `removeOnUninstall` — Remove on uninstall | boolean | Configuration | — | If the link should be deleted by the 'Uninstall files' action in the uninstaller. |
| `executeOnWindows` — Execute on Windows | boolean | Configuration | — | If the action should also be executed on Windows. On Windows, symlinks can by default only be created with elevated privileges. |

### Create a ZIP file
- **Class:** `com.install4j.runtime.beans.actions.files.CreateZipFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes

Create a ZIP file from the specified source files and directories.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Source files or directories | File[] | Configuration | — | The files and directories to be zipped. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `showProgress` — Show progress | boolean | Configuration | — | If selected, and a progress bar is available on the current screen, the action will show its progress in the progress bar. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |
| `zipFile` — ZIP file | File | Configuration | — | The ZIP file that should be created. |
| `zipRoot` — Resolve relative file in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `zipFile` set | A relative zip file can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `addTopLevelDirectoriesToRelativePath` — Add top level directories | boolean | Configuration | — | If selected, all directories that you have added to the source files will be added under the name of the directory. Otherwise, the contents of the directories will be added directly to the root of ZIP file. |
| `method` — ZIP method | [ZipMethod](enums.md#zipmethod) | Configuration | — | The compression method used to add files. To compress files, select "Deflated", to store files without compression, select "Stored". |

### Delete files and directories
- **Class:** `com.install4j.runtime.beans.actions.files.DeleteFileAction`
- **Category:** File operations
- **Multiple instances:** yes

Deletes files and directory. Directories can be deleted recursively.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Files and directories | File[] | Configuration | — | The files and directories to be deleted. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `recursive` — Recursive | boolean | Configuration | — | If selected, the operation will be performed recursively on directories. |
| `backupForRollback` — Backup for rollback | boolean | Configuration | — | If selected, a backup of the files to be deleted will be made and restored in case of rollback. |

### Extract a DMG file on macOS
- **Class:** `com.install4j.runtime.beans.actions.files.ExtractDmgFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes

Extracts the content of a DMG file to an arbitrary location on macOS.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `archiveFile` — DMG file | File | Configuration | — | The DMG file that contains the content to be extracted. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each entry in the archive file that is about to be processed by this action. The script is invoked for both directories and files, which are passed as relative files. You can return true if the file or directory should be processed or false if it should be excluded from processing. If you leave the script empty, all files and directories are processed. |
| `destinationDirectory` — Destination directory | File | Configuration | — | The destination directory. Relative directory information in the zip file will be added to this value. If the destination directory does not exist, it will be created. |
| `showProgress` — Show progress | boolean | Configuration | — | If the action should show its progress with the progress bar and the detail message. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |

### Extract a TAR file
- **Class:** `com.install4j.runtime.beans.actions.files.ExtractTarFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes

Extracts the content of a tar or tar.gz file to an arbitrary location.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `archiveFile` — Tar file | File | Configuration | — | The tar or tar.gz file that contains the content to be extracted. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each entry in the archive file that is about to be processed by this action. The script is invoked for both directories and files, which are passed as relative files. You can return true if the file or directory should be processed or false if it should be excluded from processing. If you leave the script empty, all files and directories are processed.Note that tar files have no hierarchical directory structure, so it is not guaranteed that you are passed directory entries before entries of contained files. This also means that by excluding a directory, you do not automatically exclude its contents, you have to check and reject each contained file as well. |
| `destinationDirectory` — Destination directory | File | Configuration | — | The destination directory. Relative directory information in the zip file will be added to this value. If the destination directory does not exist, it will be created. |
| `showProgress` — Show progress | boolean | Configuration | — | If the action should show its progress with the progress bar and the detail message. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |

### Extract a ZIP file
- **Class:** `com.install4j.runtime.beans.actions.files.ExtractZipFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes

Extracts the content of a ZIP file to an arbitrary location.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `zipFile` — Zip file | File | Configuration | — | The zip file that contains the content to be installed. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each entry in the ZIP file that is about to be processed by this action. The script is invoked for both directories and files, which are passed as relative files. You can return true if the file or directory should be processed or false if it should be excluded from processing. If you leave the script empty, all files and directories are processed.Note that ZIP files have no hierarchical directory structure, so it is not guaranteed that you are passed directory entries before entries of contained files. This also means that by excluding a directory, you do not automatically exclude its contents, you have to check and reject each contained file as well. |
| `destinationDirectory` — Destination directory | File | Configuration | — | The destination directory. Relative directory information in the zip file will be added to this value. If the destination directory does not exist, it will be created. |
| `showProgress` — Show progress | boolean | Configuration | — | If the action should show its progress with the progress bar and the detail message. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |
| `mode` — File access mode | String | Unix | — | The UNIX access mode of extracted files. |
| `dirMode` — Dir access mode | String | Unix | — | The UNIX access mode of extracted directories. |
| `fileNameEncoding` — File name encoding | String | Configuration | — | The encoding for names of ZIP file entries. If you leave this property empty, UTF-8 will be used. Only has an effect with Java 7+. |
| `destinationRoot` — Resolve relative file in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `destinationDirectory` set | A relative destination directory can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `zipRoot` — Resolve relative file in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `zipFile` set | A relative zip file can be resolved against the installation directory or against the root of the temporarily extracted archive. |

### Install content of a ZIP file
- **Class:** `com.install4j.runtime.beans.actions.files.InstallExternalZipFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes
- **Installed files required:** yes

Installs the content of an external ZIP file to an arbitrary location. This action will be automatically reverted by the 'Uninstall files' action.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `zipFile` — Zip file | File | Configuration | — | The zip file that contains the content to be installed. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each entry in the ZIP file that is about to be processed by this action. The script is invoked for both directories and files, which are passed as relative files. You can return true if the file or directory should be processed or false if it should be excluded from processing. If you leave the script empty, all files and directories are processed.Note that ZIP files have no hierarchical directory structure, so it is not guaranteed that you are passed directory entries before entries of contained files. This also means that by excluding a directory, you do not automatically exclude its contents, you have to check and reject each contained file as well. |
| `destinationDirectory` — Destination directory | File | Configuration | — | The destination directory. Relative directory information in the zip file will be added to this value. If the destination directory does not exist, it will be created. |
| `showProgress` — Show progress | boolean | Configuration | — | If the action should show its progress with the progress bar and the detail message. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |
| `mode` — File access mode | String | Unix | — | The UNIX access mode of installed files. |
| `dirMode` — Dir access mode | String | Unix | — | The UNIX access mode of installed directories. |
| `fileNameEncoding` — File name encoding | String | Configuration | — | The encoding for names of ZIP file entries. If you leave this property empty, UTF-8 will be used. Only has an effect with Java 7+. |
| `overwriteMode` — Overwrite mode | [OverwriteMode](enums.md#overwritemode) | Configuration | — | How to handle an existing destination file. |
| `uninstallMode` — Uninstall mode | [UninstallMode](enums.md#uninstallmode) | Configuration | — | The mode how the uninstaller should handle files created with this action. |
| `shared` — Shared file | boolean | Windows | — | If the file should be registered as a shared file. |
| `delay` — Delay if necessary | boolean | Windows | — | If selected and a destination file cannot be replaced, the operation will be scheduled for the next reboot. The variable sys.rebootRequired will be set to Boolean.TRUE in this case. |
| `triggerReboot` — Trigger reboot if required | boolean | Windows | — | If selected and an operation is delayed until reboot, the user will be asked for a reboot automatically at the end of installation. |

### Modify a ZIP file
- **Class:** `com.install4j.runtime.beans.actions.files.ModifyZipFileAction`
- **Category:** ZIP files and archives
- **Multiple instances:** yes

Modify the contents of a ZIP file with a configurable list of actions.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `zipFile` — Zip file | File | Configuration | — | The zip file that should be modified. |
| `showProgress` — Show progress | boolean | Configuration | — | If the action should show its progress with the progress bar and the detail message. |
| `actionList` — Modification actions | ActionList (action list) | Configuration | — | The actions that modify the contents of the ZIP file. All actions operate in the root directory of the temporarily extracted ZIP file, except where configurable otherwise.The "Copy files and directories" action can be used to copy files into or from the archive, the "Delete files and directories" action is used for removing files. All actions for modifying text files, XML files, property files and ZIP files are also supported. |
| `newFileMethod` — ZIP method for new files | [ZipMethod](enums.md#zipmethod) | Configuration | — | The compression method for new files. To compress files, select "Deflated", to store files without compression, select "Stored". |

### Move files and directories
- **Class:** `com.install4j.runtime.beans.actions.files.MoveFileAction`
- **Category:** File operations
- **Multiple instances:** yes

Moves files and directories. The newly created files are subject to removal by the 'Uninstall files' action.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Source files or directories | File[] | Configuration | — | The files and directories to be moved. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `showProgress` — Show progress | boolean | Configuration | — | If selected, and a progress bar is available on the current screen, the action will show its progress in the progress bar. |
| `showFileNames` — Show file names | boolean | Configuration | `showProgress`=true | If selected, the names of the files that are processed will be shown during the installation. |
| `destinationFile` — Destination directory | File | Configuration | — | The destination directory. If you have selected a single source file, this can also be a file rather than a directory. The destination directory will not be created, it must exist before this action is executed, otherwise it will be treated as a destination file. |
| `destinationRoot` — Resolve relative file in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `destinationFile` set | A relative destination file can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `filesRoot` — Resolve relative files in | [ArchiveFileOperationRoot](enums.md#archivefileoperationroot) | Configuration | `files` set | Relative files can be resolved against the installation directory or against the root of the temporarily extracted archive. |
| `overwriteMode` — Overwrite mode | [OverwriteMode](enums.md#overwritemode) | Configuration | — | How to handle an existing destination file. |
| `uninstallMode` — Uninstall mode | [UninstallMode](enums.md#uninstallmode) | Configuration | — | The mode how the uninstaller should handle the files created with this action. |
| `symlinkMode` — Symlink handling | [SymlinkMode](enums.md#symlinkmode) | Symlinks | — | If symlinks are created, absolute symlinks will always be created with the same absolute target path. Relative symlinks can either retain the same relative target path or point to the same file as the source as an absolute target. |
| `symlinkFailureMode` — On symlink creation failure | [SymlinkFailureMode](enums.md#symlinkfailuremode) | Symlinks | — | How the action should handle a failure to create symlinks. This mainly applies to Windows. |
| `mode` — Access mode | String | Unix | — | The UNIX access mode for files. |
| `directoryMode` — Directory access mode | String | Unix | — | The UNIX access mode for directories. |
| `shared` — Shared file | boolean | Windows | — | If created files should be registered as a shared files. |
| `delay` — Delay if necessary | boolean | Windows | — | If selected and a destination file cannot be replaced, the operation will be scheduled for the next reboot. The context method isRebootRequired() will return true in this case. |
| `triggerReboot` — Trigger reboot if required | boolean | Windows | — | If selected and the operation is delayed until reboot, the user will be asked for a reboot automatically at the end of installation. |

### Set the modification time of files
- **Class:** `com.install4j.runtime.beans.actions.files.SetFiletimeAction`
- **Category:** File operations
- **Multiple instances:** yes

Sets the modification time of files.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Files and directories | File[] | Configuration | — | The files and directories that the modification time should be set for. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `recursive` — Recursive | boolean | Configuration | — | If selected, the operation will be performed recursively on directories. |
| `time` — Time | Date [context=dateTime] | Configuration | — | The new modification time. |

### Set the owner of files and directories
- **Class:** `com.install4j.runtime.beans.actions.files.SetOwnerAction`
- **Category:** File operations
- **Multiple instances:** yes

Sets the owner and optionally the group of files and directories. This action has no effect on Windows.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Files and directories | File[] | Configuration | — | The files and directories that the owner should be set for. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `recursive` — Recursive | boolean | Configuration | — | If selected, the operation will be performed recursively on directories. |
| `owner` — Owner | String | Configuration | — | The owner to be set. If you want to set the group, too, please add it with a colon (example: user:group). To only change the group, prefix the group name with a colon (example: :group). |

### Set the UNIX access mode of files and directories
- **Class:** `com.install4j.runtime.beans.actions.files.SetModeAction`
- **Category:** File operations
- **Multiple instances:** yes

Sets the UNIX access mode of files and directories. This action has no effect on Windows.

| Property | Type | Category | Visible when | Description |
|---|---|---|---|---|
| `files` — Files and directories | File[] | Configuration | — | The files and directories that the access mode should be set for. In the edit dialog you can choose files from the distribution tree or enter them manually. Files and directories that are installer variables with array or collection values (e.g. String[], Object[] or List<File>) are expanded as separate files and directories, this allows you to build a variable length list of files and directories at runtime. |
| `fileFilter` — File filter script | ScriptProperty → boolean | Configuration | — | The file filter script is invoked for each file that is about to be processed by this action. The script is not invoked for directories. You can return true if the file should be processed or false if it should be excluded from processing. |
| `directoryFilter` — Directory filter script | ScriptProperty → boolean | Configuration | — | The directory filter script is invoked for each directory that is about to be processed by this action. The script is not invoked for files. You can return true if the directory should be processed or false if it should be excluded from processing. |
| `recursive` — Recursive | boolean | Configuration | — | If selected, the operation will be performed recursively on directories. |
| `mode` — Mode | String | Configuration | — | The mode to be set. This can be an octal mode like 750 or a symbolic mode that can be used with chmod, like u+x. For the permission flags in the symbolic mode, only rwxugo are supported. |
| `fileTarget` — Perform on | [FileTarget](enums.md#filetarget) | Configuration | — | The type of file this action should be performed on. |

