IFolderSyncFilters
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.
Declaration
IFolderSyncFilters : IDispatch
Properties
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.
Methods
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.
Examples
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") $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")