public void CopyFiles(InstallDirectoryItem appInstallation, PackageContent appPackage, string appLibPath) { if (!appInstallation.Directory.Exists) { appInstallation.Directory.Create(); } var installPath = appInstallation.Directory.FullName; var installFiles = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); // Копирование файлов из каталога 'lib' foreach (var libFile in appPackage.Lib) { var destinationPath = Path.Combine(installPath, appLibPath, libFile.InstallPath); CopyFileWithOverwrite(libFile.SourcePath, destinationPath, installFiles); } // Копирование файлов из каталога 'content' foreach (var contentFile in appPackage.Content) { var destinationPath = Path.Combine(installPath, "content", contentFile.InstallPath); CopyFileWithOverwrite(contentFile.SourcePath, destinationPath, installFiles); } // Копирование файлов из каталога 'plugin' foreach (var contentFile in appPackage.Plugin) { var destinationPath = Path.Combine(installPath, "platform", contentFile.InstallPath); CopyFileWithOverwrite(contentFile.SourcePath, destinationPath, installFiles); } }
/// <summary> /// Возвращает содержимое пакета. /// </summary> /// <param name="packageIdentity">Идентификатор пакета.</param> /// <param name="packageDependencies">Список зависимостей пакета.</param> private PackageContent GetPackageContent(PackageIdentity packageIdentity, List <PackageIdentity> packageDependencies) { var packageContent = new PackageContent(packageIdentity, packageDependencies); var targetFramework = GetPackageLowestSupportedFramework(packageIdentity); if (packageDependencies != null) { foreach (var dependency in packageDependencies) { FillPackageContent(packageContent, dependency, targetFramework, new DefaultCompatibilityProvider()); } } return(packageContent); }
/// <summary> /// Добавляет в содержимое пакета совместимые версии файлов из указанного пакета. /// </summary> /// <param name="packageContent">Содержимое пакета.</param> /// <param name="packageIdentity">Идентификатор пакета.</param> /// <param name="targetFramework">Версия совместимого фреймворка.</param> /// <param name="compatibilityProvider">Провайдер для проверки совместимости фреймворков.</param> private void FillPackageContent(PackageContent packageContent, PackageIdentity packageIdentity, NuGetFramework targetFramework, IFrameworkCompatibilityProvider compatibilityProvider) { var packagePath = GetPackagePath(packageIdentity); using (var reader = new PackageFolderReader(packagePath)) { var libItems = GetCompatibleItems(reader, reader.GetLibItems().ToList(), targetFramework, compatibilityProvider); if (libItems?.Items != null) { foreach (var item in libItems.Items) { var installItem = GetPackageItem(packagePath, item, PackagingConstants.Folders.Lib, libItems.TargetFramework); packageContent.Lib.Add(installItem); } } var contentItems = GetCompatibleItems(reader, reader.GetContentItems().ToList(), targetFramework, compatibilityProvider); if (contentItems?.Items != null) { foreach (var item in contentItems.Items) { var installItem = GetPackageItem(packagePath, item, PackagingConstants.Folders.Content, contentItems.TargetFramework); packageContent.Content.Add(installItem); } } var pluginItems = GetCompatibleItems(reader, reader.GetPluginItems().ToList(), targetFramework, compatibilityProvider); if (pluginItems?.Items != null) { foreach (var item in pluginItems.Items) { var installItem = GetPackageItem(packagePath, item, PluginFolderName, pluginItems.TargetFramework); packageContent.Plugin.Add(installItem); } } } }
/// <summary> /// Добавляет в содержимое пакета совместимые версии файлов из указанного пакета. /// </summary> /// <param name="packageContent">Содержимое пакета.</param> /// <param name="packageIdentity">Идентификатор пакета.</param> /// <param name="targetFramework">Версия совместимого фреймворка.</param> /// <param name="compatibilityProvider">Провайдер для проверки совместимости фреймворков.</param> private void FillPackageContent(PackageContent packageContent, PackageIdentity packageIdentity, NuGetFramework targetFramework, IFrameworkCompatibilityProvider compatibilityProvider) { var packagePath = GetPackagePath(packageIdentity); using (var reader = new PackageFolderReader(packagePath)) { var libItems = GetCompatibleItems(reader, reader.GetLibItems().ToList(), targetFramework, compatibilityProvider); if (libItems?.Items != null) { foreach (var item in libItems.Items) { var installItem = GetPackageItem(packagePath, item, PackagingConstants.Folders.Lib, libItems.TargetFramework); packageContent.Lib.Add(installItem); } } var contentItems = GetCompatibleItems(reader, reader.GetContentItems().ToList(), targetFramework, compatibilityProvider); if (contentItems?.Items != null) { foreach (var item in contentItems.Items) { var installItem = GetPackageItem(packagePath, item, PackagingConstants.Folders.Content, contentItems.TargetFramework); packageContent.Content.Add(installItem); } } var pluginItems = GetCompatibleItems(reader, reader.GetPluginItems().ToList(), targetFramework, compatibilityProvider); if (pluginItems?.Items != null) { foreach (var item in pluginItems.Items) { var installItem = GetPackageItem(packagePath, item, PluginFolderName, pluginItems.TargetFramework); packageContent.Plugin.Add(installItem); } } } }
/// <summary> /// Возвращает содержимое пакета. /// </summary> /// <param name="packageIdentity">Идентификатор пакета.</param> /// <param name="packageDependencies">Список зависимостей пакета.</param> private PackageContent GetPackageContent(PackageIdentity packageIdentity, List<PackageIdentity> packageDependencies) { var packageContent = new PackageContent(packageIdentity, packageDependencies); var targetFramework = GetPackageLowestSupportedFramework(packageIdentity); if (packageDependencies != null) { foreach (var dependency in packageDependencies) { FillPackageContent(packageContent, dependency, targetFramework, new DefaultCompatibilityProvider()); } } return packageContent; }
public void CopyFiles(InstallDirectoryItem appInstallation, PackageContent appPackage, string appLibPath) { if (!appInstallation.Directory.Exists) { appInstallation.Directory.Create(); } var installPath = appInstallation.Directory.FullName; var installFiles = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); // Копирование файлов из каталога 'lib' foreach (var libFile in appPackage.Lib) { var destinationPath = Path.Combine(installPath, appLibPath, libFile.InstallPath); CopyFileWithOverwrite(libFile.SourcePath, destinationPath, installFiles); } // Копирование файлов из каталога 'content' foreach (var contentFile in appPackage.Content) { var destinationPath = Path.Combine(installPath, "content", contentFile.InstallPath); CopyFileWithOverwrite(contentFile.SourcePath, destinationPath, installFiles); } // Копирование файлов из каталога 'plugin' foreach (var contentFile in appPackage.Plugin) { var destinationPath = Path.Combine(installPath, "platform", contentFile.InstallPath); CopyFileWithOverwrite(contentFile.SourcePath, destinationPath, installFiles); } }