IFolderSyncFiltersCopy link to this sectionLink to this section copied!

This interface is meant to specify the filters that allow you to select which files will be added from the synchronized folder to the package.

DeclarationCopy link to this sectionLink to this section copied!

IFolderSyncFilters : IDispatch

PropertiesCopy link to this sectionLink to this section copied!

Array<String> NamePatterns - Gets the collection of the patterns that will be used to filter files.

Bool ReadOnlyFiles - Gets or sets the option that will specify if the “ReadOnly” attribute of the files that will be added to the package.

Bool HiddenFiles - Gets or sets the option that will specify if the “Hidden” attribute of the files that will be added to the package.

Bool SystemFiles - Gets or sets the option that will specify if the “System” attribute of the files that will be added to the package.

Bool ArchiveFiles - Gets or sets the option that will specify if the “Archive” attribute of the files that will be added to the package.

Bool SparseFiles - Gets or sets the option that will specify if the “Sparse” attribute of the files that will be added to the package.

Bool ReparsePointFiles - Gets or sets the option that will specify if the “ReparsePoint” attribute of the files that will be added to the package.

Bool CompressedFiles - Gets or sets the option that will specify if the “Compressed” attribute of the files that will be added to the package.

Bool OfflineFiles - Gets or sets the option that will specify if the “Offline” attribute of the files that will be added to the package.

Bool EncriptedFiles - Gets or sets the option that will specify if the “Encripted” attribute of the files that will be added to the package.

String ExcludeSubfolders - Gets or sets the excluded sub-folders. This is available only on exclude filters.

MethodsCopy link to this sectionLink to this section copied!

NewNamePattern(String aNamePattern) - Adds a new name pattern to the collection that will be used to filter files.

RemoveNamePattern(String aNamePattern) - Removes a name pattern from the collection that will be used to filter files.

ExamplesCopy link to this sectionLink to this section copied!

Method 1: use Advanced Installer support for folder synchronization

       $advinst  = new-object -comObject "AdvancedInstaller"
 $proj     = $advinst.CreateProjectS("architect")
 $new_folder = $proj.PredefinedFolders.ApplicationFolder.CreateFolder("MyApplication")
 $new_folder.Synchronization.SourceFolder = "D:\MyApplication\MyApplication\bin\Release"
 $new_folder.Synchronization.ExcludeFilters.NewNamePattern("*.pdb")
 $new_folder.Synchronization.ExcludeFilters.NewNamePattern("*.aip")
 # refresh folder
$release.Synchronization.RefreshFolder()

 $proj.SaveAs("D:\MyApplication\MyApplication\Setup\Setup.aip")
 $proj.Build()

    

Method 2: use PowerShell for scanning folder contents + Advanced Installer

      $advinst  = new-object -comObject "AdvancedInstaller"
$proj     = $advinst.CreateProject($advinst.ProjectTypes.Architect)
# add new folder
$new_folder = $proj.PredefinedFolders.ApplicationFolder.CreateFolder("MyApplication")
$folder_to_sync = "D:\MyApplication\MyApplication\bin\Release"
# get all resources from folder
$resources = Get-ChildItem $folder_to_sync -Exclude ("*.pdb", "*.aip") -Recurse
foreach ($res in $resources) 
{
    # check if is directory
    if($res.Mode -eq "d-----")
    {
        # create path to folder in aip
        $path_to_aip = $res.FullName.Replace($folder_to_sync, $new_folder.FullPath)
        # create folder if it does not exist in aip
        if (!$proj.FoldersComponent.FindFolderByPath($path_to_aip))
        {
            # create path relative to $new_folder
            $folder_path_relative = $path_to_aip.Replace("$($new_folder.FullPath)\", "")
            $new_folder.CreateFolder($folder_path_relative)
        }
    }
    # item is a file and should be added to project
    else
    {
           # create path to file relative to $new_folder
           $file_path_relative = $res.Directory.FullName.Replace("$($folder_to_sync)\", "")
           if ($res.Directory.FullName -eq $folder_to_sync)
           {
                $proj.FilesComponent.AddFileS($new_folder.FullPath, $res.FullName)
           }
           else
           {
                $proj.FilesComponent.AddFileS("$($new_folder.FullPath)\$file_path_relative", $res.FullName)
           }
    }
}
$proj.SaveAs("D:\MyApplication\Setup\Setup.aip")