protected override void ExecuteTask() { foreach (string file in Items.FileNames) { if (SigningFunctions.IsSigned(file)) { UnsignFile(new FileInfo(file)); } } }
protected override void ExecuteTask() { // Validate the parameters if (string.IsNullOrEmpty(FileName) && (Items == null || Items.FileNames.Count == 0)) { throw new BuildException("Must specify @filename or <items>.", Location); } if (!string.IsNullOrEmpty(FileName) && Items != null && Items.FileNames.Count > 0) { throw new BuildException("Cannot specify @filename and <items>.", Location); } if (Verbose) { Log(Level.Info, "Description: {0}", Description); Log(Level.Info, "Page Hashes: {0}", PageHashes); Log(Level.Info, "Retries: {0}", Retries); Log(Level.Info, "SignTool Path: {0}", SignToolPath); Log(Level.Info, "Additional Certificate: {0}", AdditionalCertificate); Log(Level.Info, "Subject Name: {0}", SubjectName); Log(Level.Info, "Timestamp URL: {0}", TimestampURL); Log(Level.Info, "URL: {0}", URL); Log(Level.Info, "FileName: {0}", FileName); } StringBuilder filenames = new StringBuilder(); filenames.Capacity = 1000; if (Items != null) { // Construct the file list int count = 0; foreach (string file in Items.FileNames) { if (!SigningFunctions.IsSigned(file)) { filenames.Append(@""""); filenames.Append(file); filenames.Append(@""" "); count++; } // Limit the number of files being signed in any single call to SignTool if (filenames.Length > 1000) { SignFiles(filenames.ToString()); filenames.Remove(0, filenames.Length); } } // Sign any remaining files if (filenames.Length > 0) { SignFiles(filenames.ToString()); } Log(Level.Info, "Signed {0} files", count); } else { if (!SigningFunctions.IsSigned(FileName)) { // A single file is to be signed filenames.Append(@""""); filenames.Append(FileName); filenames.Append(@""" "); SignFiles(filenames.ToString()); } else { Log(Level.Info, "Skipping {0}. It is already signed", FileName); } } }