public void Install(RunningDeployment deployment) { if (deployment.Variables.GetFlag(SpecialVariables.Action.Azure.CloudServicePackageExtractionDisabled, false)) { return; } var packagePath = deployment.Variables.Get(SpecialVariables.Action.Azure.CloudServicePackagePath); Log.VerboseFormat("Extracting Cloud Service package: '{0}'", packagePath); using (var package = Package.Open(packagePath, FileMode.Open)) { var manifest = AzureCloudServiceConventions.ReadPackageManifest(package); var workingDirectory = deployment.CurrentDirectory; ExtractContents(package, manifest, AzureCloudServiceConventions.PackageFolders.ServiceDefinition, workingDirectory); ExtractContents(package, manifest, AzureCloudServiceConventions.PackageFolders.NamedStreams, workingDirectory); ExtractLayouts(package, manifest, workingDirectory); } if (deployment.Variables.GetFlag(SpecialVariables.Action.Azure.LogExtractedCspkg)) { LogExtractedPackage(deployment.CurrentDirectory); } Log.SetOutputVariable(SpecialVariables.Action.Azure.PackageExtractionPath, deployment.CurrentDirectory, deployment.Variables); }
public void Install(RunningDeployment deployment) { if (deployment.Variables.GetFlag(SpecialVariables.Action.Azure.CloudServicePackageExtractionDisabled, false)) { return; } Log.Verbose("Re-packaging cspkg."); var workingDirectory = deployment.CurrentDirectory; var originalPackagePath = deployment.Variables.Get(SpecialVariables.Action.Azure.CloudServicePackagePath); var newPackagePath = Path.Combine(Path.GetDirectoryName(originalPackagePath), Path.GetFileNameWithoutExtension(originalPackagePath) + "_repacked.cspkg"); using (var originalPackage = Package.Open(originalPackagePath, FileMode.Open)) using (var newPackage = Package.Open(newPackagePath, FileMode.CreateNew)) { var originalManifest = AzureCloudServiceConventions.ReadPackageManifest(originalPackage); var newManifest = new PackageDefinition { MetaData = { AzureVersion = originalManifest.MetaData.AzureVersion } }; AddParts(newPackage, newManifest, Path.Combine(workingDirectory, AzureCloudServiceConventions.PackageFolders.ServiceDefinition), AzureCloudServiceConventions.PackageFolders.ServiceDefinition); AddParts(newPackage, newManifest, Path.Combine(workingDirectory, AzureCloudServiceConventions.PackageFolders.NamedStreams), AzureCloudServiceConventions.PackageFolders.NamedStreams); AddLocalContent(newPackage, newManifest, workingDirectory); AddPackageManifest(newPackage, newManifest); newPackage.Flush(); } fileSystem.OverwriteAndDelete(originalPackagePath, newPackagePath); }
public void Install(RunningDeployment deployment) { if (deployment.Variables.GetFlag(SpecialVariables.Action.Azure.CloudServicePackageExtractionDisabled, false)) { return; } Log.Verbose("Re-packaging cspkg."); var workingDirectory = deployment.CurrentDirectory; var originalPackagePath = deployment.Variables.Get(SpecialVariables.Action.Azure.CloudServicePackagePath); var newPackagePath = Path.Combine(Path.GetDirectoryName(originalPackagePath), Path.GetFileNameWithoutExtension(originalPackagePath) + "_repacked.cspkg"); using (semaphoreFactory.Acquire("Calamari - multi threaded packaging causes IsolatedStorage errors", "Waiting to re-package")) using (var originalPackage = Package.Open(originalPackagePath, FileMode.Open)) using (var newPackage = Package.Open(newPackagePath, FileMode.CreateNew)) { try { var originalManifest = AzureCloudServiceConventions.ReadPackageManifest(originalPackage); var newManifest = new PackageDefinition { MetaData = { AzureVersion = originalManifest.MetaData.AzureVersion } }; AddParts(newPackage, newManifest, Path.Combine(workingDirectory, AzureCloudServiceConventions.PackageFolders.ServiceDefinition), AzureCloudServiceConventions.PackageFolders.ServiceDefinition); AddParts(newPackage, newManifest, Path.Combine(workingDirectory, AzureCloudServiceConventions.PackageFolders.NamedStreams), AzureCloudServiceConventions.PackageFolders.NamedStreams); AddLocalContent(newPackage, newManifest, workingDirectory); AddPackageManifest(newPackage, newManifest); newPackage.Flush(); } catch (Exception ex) { Log.Error(ex.PrettyPrint()); throw new Exception("An exception occured re-packaging the cspkg"); } } fileSystem.OverwriteAndDelete(originalPackagePath, newPackagePath); }