private void LoadDataTypesFromDll(string filePath) { string fileName = Path.GetFileName(filePath); if (DllsNotToLoad.Any(fileName.StartsWith)) { return; } var assembly = PackageAssemblyHandler.TryGetAlreadyLoadedAssembly(filePath); if (assembly == null) { try { assembly = Assembly.LoadFrom(filePath); } catch (Exception) { return; } } DataTypeTypesManager.AddNewAssembly(assembly, false); }
/// <exclude /> public override IEnumerable <XElement> Install() { Verify.IsNotNull(_filesToCopy, "{0} has not been validated", this.GetType().Name); foreach (string directoryToDelete in _directoriesToDelete) { Directory.Delete(directoryToDelete, true); } var fileElements = new List <XElement>(); foreach (FileToCopy fileToCopy in _filesToCopy) { Log.LogVerbose(LogTitle, "Installing the file '{0}' to the target filename '{1}'", fileToCopy.SourceFilename, fileToCopy.TargetFilePath); string targetDirectory = Path.GetDirectoryName(fileToCopy.TargetFilePath); if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } string backupFileName = null; if (C1File.Exists(fileToCopy.TargetFilePath) && fileToCopy.Overwrite) { if ((C1File.GetAttributes(fileToCopy.TargetFilePath) & FileAttributes.ReadOnly) > 0) { FileUtils.RemoveReadOnly(fileToCopy.TargetFilePath); } if (InstallerContext.PackageInformation.CanBeUninstalled) { backupFileName = GetBackupFileName(fileToCopy.TargetFilePath); string backupFilesFolder = this.InstallerContext.PackageDirectory + "\\FileBackup"; C1Directory.CreateDirectory(backupFilesFolder); C1File.Copy(fileToCopy.TargetFilePath, backupFilesFolder + "\\" + backupFileName); } } this.InstallerContext.ZipFileSystem.WriteFileToDisk(fileToCopy.SourceFilename, fileToCopy.TargetFilePath); // Searching for static IData interfaces string targetFilePath = fileToCopy.TargetFilePath; if (targetFilePath.StartsWith(Path.Combine(PathUtil.BaseDirectory, "Bin"), StringComparison.InvariantCultureIgnoreCase) && targetFilePath.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase)) { string fileName = Path.GetFileName(targetFilePath); if (!DllsNotToLoad.Any(fileName.StartsWith)) { Assembly assembly; try { assembly = Assembly.LoadFrom(targetFilePath); } catch (Exception) { continue; } DataTypeTypesManager.AddNewAssembly(assembly, false); } } var fileElement = new XElement("File", new XAttribute("filename", fileToCopy.TargetRelativeFilePath)); if (backupFileName != null) { fileElement.Add(new XAttribute("backupFile", backupFileName)); } fileElements.Add(fileElement); } yield return(new XElement("Files", fileElements)); }