Browse Source

Support addins with subdirectories from the online gallery.

Addin manager now copies all files and subdirectories from the extracted
NuGet package to the temporary addin installation folder.
addin-manager-package-subdirectories
Matt Ward 12 years ago
parent
commit
e4b067feed
  1. 28
      src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs

28
src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs

@ -445,26 +445,34 @@ namespace ICSharpCode.AddInManager2.Model
{ {
Directory.Delete(targetDir, true); Directory.Delete(targetDir, true);
} }
Directory.CreateDirectory(targetDir); DeepCopy(packageDirectory, targetDir);
var packageContentsFiles = Directory.EnumerateFiles(packageDirectory, "*.*", SearchOption.TopDirectoryOnly);
if (packageContentsFiles != null) return true;
}
catch (Exception)
{
return false;
}
}
void DeepCopy(string packageDirectory, string targetDirectory)
{ {
foreach (var file in packageContentsFiles) Directory.CreateDirectory(targetDirectory);
foreach (string file in Directory.EnumerateFiles(packageDirectory, "*.*", SearchOption.TopDirectoryOnly))
{ {
// Don't copy the .nupkg file // Don't copy the .nupkg file
FileInfo fileInfo = new FileInfo(file); FileInfo fileInfo = new FileInfo(file);
if (fileInfo.Extension != ".nupkg") if (fileInfo.Extension != ".nupkg")
{ {
File.Copy(file, Path.Combine(targetDir, fileInfo.Name)); File.Copy(file, Path.Combine(targetDirectory, fileInfo.Name));
}
} }
} }
return true; foreach (string packageSubDirectory in Directory.EnumerateDirectories(packageDirectory))
}
catch (Exception)
{ {
return false; string newTargetDirectory = Path.Combine(targetDirectory, Path.GetFileName(packageSubDirectory));
DeepCopy(packageSubDirectory, newTargetDirectory);
} }
} }

Loading…
Cancel
Save