Example #1
0
        private PackagingMetadata GetPackagingMetadata()
        {
            var result = new PackagingMetadata();

            result.DeploymentType = IsPortable ? DeploymentType.FrameworkDependent : DeploymentType.SelfContained;

            result.ApplicationName = ApplicationName;

            result.ApplicationVersion = ApplicationVersion;

            if (String.IsNullOrEmpty(PackageName))
            {
                result.PackageFileName = Path.Combine(PublishedOutput, $"{result.ApplicationName}-{result.ApplicationVersion}");
            }
            else
            {
                result.PackageFileName = PackageName;
            }

            result.PathToFiles = PublishedOutput;

            result.CustomMetadata = (Dictionary <string, string>)AdditionalMetadata.CloneCustomMetadata();

            // We inverse here and now go through the file. If the key exists, we simply skip since the properties
            // win by order.
            if (!String.IsNullOrEmpty(MetadataFile) && File.Exists(MetadataFile))
            {
                var fileMetadata = JObject.Parse(File.ReadAllText(MetadataFile));

                foreach (var line in fileMetadata)
                {
                    var key = line.Key.Substring(0, 1).ToUpper() + line.Key.Substring(1, line.Key.Length);

                    if (!result.CustomMetadata.ContainsKey(key))
                    {
                        result.CustomMetadata.Add(key, line.Value.ToString());
                    }
                }
            }

            return(result);
        }
        public override void Pack(PackagingMetadata metadata)
        {
            var finalName = metadata.PackageFileName + (metadata.PackageFileName.Contains(".zip") ? String.Empty : ".zip");

            if (File.Exists(finalName))
            {
                File.Delete(finalName);
            }
            var tempFile = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            try {
                ZipFile.CreateFromDirectory(metadata.PathToFiles, tempFile);
                File.Copy(tempFile, finalName);
            } catch
            {
                throw;
            } finally
            {
                File.Delete(tempFile);
            }
        }
 public abstract void Pack(PackagingMetadata metadata);