public Package CreatePackage(Application application, Core.Package source) { IEnumerable<Package> existingPackages = this.GetPackages(application); PackageContent packageContentInfo; try { packageContentInfo = this.ExtractPackageInfo(source); } catch (AppServerException ex) { Logger.Warn(this, ex, "Unable to extract package info"); throw new InvalidOperationException(ex.Message); } Package package = new Package { Version = Version.Parse(packageContentInfo.Bootstrapper.Assembly.Version) }; Logger.Info(this, "Detected package version = " + package.Version); if (existingPackages.Any(p => p.Version == package.Version)) throw new InvalidOperationException("Application " + application.Name + " already has a package with version " + package.Version.ToString(4)); package.Application = application; package.File = Path.Combine(this.RootFolder, application.Name, package.Version.ToString(4), source.Source); package.Directory = Path.GetDirectoryName(package.File); source.SaveAs(package.File); return (package); }