/// <summary> /// The physical moving of files in a <see cref="Package"/> to a location from where they can be executed. /// </summary> /// <param name="package"></param> /// <returns></returns> public Task Deploy(Package package) { return(this._server.Run(() => { // TODO [SAR] potential dead lock with the server action queue, is this lock required? lock (this._lock) { Logger.Info(this, "Deploying package from " + package.Source + "..."); this._deployment = new Deployment { PackageContent = this._packageRepository.ExtractPackageInfo(package) }; this._deployment.BinFolder = Path.Combine(this._context.AppFolder, this.Name, "bin", this._deployment.PackageContent.Bootstrapper.Assembly.Version); this._deployment.SettingsFolder = Path.Combine(this._context.AppFolder, this.Name, "conf"); package.Deploy(this._deployment); string deploymentInfoPath = Path.Combine(this._deployment.BinFolder, "deployment.info"); using (FileStream stream = File.Create(deploymentInfoPath)) { XmlSerializer.Serialize(this._deployment, stream, new NamespaceMapping { Prefix = "", Namespace = Serialization.NAMESPACE }); Logger.Info(this, "Saved deployment info to " + deploymentInfoPath); } this.RunUpdates(); this.Load(); Logger.Info(this, "Package deployed"); } })); }
/// <summary> /// The physical moving of files in a <see cref="Package"/> to a location from where they can be executed. /// </summary> /// <param name="package"></param> /// <returns></returns> public Task Deploy(Package package) { return (this._server.Run(() => { // TODO [SAR] potential dead lock with the server action queue, is this lock required? lock(this._lock) { Logger.Info(this, "Deploying package from " + package.Source + "..."); this._deployment = new Deployment { PackageContent = this._packageRepository.ExtractPackageInfo(package) }; this._deployment.BinFolder = Path.Combine(this._context.AppFolder, this.Name, "bin", this._deployment.PackageContent.Bootstrapper.Assembly.Version); this._deployment.SettingsFolder = Path.Combine(this._context.AppFolder, this.Name, "conf"); package.Deploy(this._deployment); string deploymentInfoPath = Path.Combine(this._deployment.BinFolder, "deployment.info"); using(FileStream stream = File.Create(deploymentInfoPath)) { XmlSerializer.Serialize(this._deployment, stream, new NamespaceMapping { Prefix = "", Namespace = Serialization.NAMESPACE }); Logger.Info(this, "Saved deployment info to " + deploymentInfoPath); } this.RunUpdates(); this.Load(); Logger.Info(this, "Package deployed"); } })); }