Example #1
0
        /// <summary>Gets the flags text.</summary>
        /// <param name="entryFlags">The entry flags.</param>
        /// <returns>Text representing assembly flags.</returns>
        private static IEnumerable <string> GetFlagsText(LibZEntry.EntryFlags entryFlags)
        {
            if ((entryFlags & LibZEntry.EntryFlags.Unmanaged) != 0)
            {
                yield return("Unmanaged");
            }

            if ((entryFlags & LibZEntry.EntryFlags.AnyCPU) != 0)
            {
                yield return("AnyCPU");
            }
            else if ((entryFlags & LibZEntry.EntryFlags.X64) != 0)
            {
                yield return("x64");
            }
            else
            {
                yield return("x86");
            }

            if ((entryFlags & LibZEntry.EntryFlags.Portable) != 0)
            {
                yield return("Portable");
            }
            if ((entryFlags & LibZEntry.EntryFlags.SafeLoad) != 0)
            {
                yield return("SafeLoad");
            }
        }
Example #2
0
        /// <summary>Saves entry to file.</summary>
        /// <param name="resourceName">Name of the resource.</param>
        /// <param name="assemblyName">Name of the assembly.</param>
        /// <param name="input">The content of the assembly.</param>
        /// <param name="flags">The flags.</param>
        /// <param name="options">The options.</param>
        private void SetBytes(
            string resourceName,
            AssemblyName assemblyName, byte[] input, LibZEntry.EntryFlags flags, AppendOptions options)
        {
            var codecName = options.CodecName;

            lock (_stream)
            {
                // prepare entry
                var entry = new LibZEntry {
                    Id             = Hash.Get(resourceName),
                    Hash           = Hash.Get(input),
                    AssemblyName   = assemblyName,
                    Offset         = _magicOffset,
                    Flags          = flags,
                    OriginalLength = input.Length,
                };

                // add it to dictionary
                if (options.Overwrite)
                {
                    _entries[entry.Id] = entry;
                }
                else
                {
                    _entries.Add(entry.Id, entry);
                }

                // encode it
                var encoded = Encode(codecName, input);
                if (encoded != null)
                {
                    entry.CodecName = codecName;
                    input           = encoded;
                }

                // write it
                _magicOffset += entry.StorageLength = WriteBytes(_stream, _magicOffset, input);
                _stream.SetLength(_stream.Position);

                _containerId = Guid.NewGuid();

                _dirty = true;
            }
        }