private void BindPhase(Output output, TableDefinitionCollection tableDefinitions) { var localizations = this.LoadLocalizationFiles(tableDefinitions).ToList(); var localizer = new Localizer(localizations); var resolver = new WixVariableResolver(localizer); var binder = new Binder(); binder.TempFilesLocation = this.IntermediateFolder; binder.WixVariableResolver = resolver; binder.SuppressValidation = true; binder.ContentsFile = this.ContentsFile; binder.OutputsFile = this.OutputsFile; binder.BuiltOutputsFile = this.BuiltOutputsFile; binder.WixprojectFile = this.WixProjectFile; if (this.BindPaths != null) { binder.BindPaths.AddRange(this.BindPaths); } binder.AddExtension(new BinderFileManager()); binder.Bind(output, this.OutputPath); }
private List <string> ResolveFilePathsToEmbed(IEnumerable <IntermediateSection> sections) { var embedFilePaths = new List <string>(); // Resolve paths to files that are to be embedded in the library. if (this.Context.BindFiles) { var variableResolver = new WixVariableResolver(this.Messaging); var fileResolver = new FileResolver(this.Context.BindPaths, this.Context.Extensions); foreach (var tuple in sections.SelectMany(s => s.Tuples)) { foreach (var field in tuple.Fields.Where(f => f?.Type == IntermediateFieldType.Path)) { var pathField = field.AsPath(); if (pathField != null) { var resolution = variableResolver.ResolveVariables(tuple.SourceLineNumbers, pathField.Path, false); var file = fileResolver.Resolve(tuple.SourceLineNumbers, tuple.Definition, resolution.Value); if (!String.IsNullOrEmpty(file)) { // File was successfully resolved so track the embedded index as the embedded file index. field.Set(new IntermediateFieldPathValue { EmbeddedFileIndex = embedFilePaths.Count }); embedFilePaths.Add(file); } else { this.Messaging.Write(ErrorMessages.FileNotFound(tuple.SourceLineNumbers, pathField.Path, tuple.Definition.Name)); } } } } } return(embedFilePaths); }