コード例 #1
0
 internal void AddItems(FileLineNumber typeLine, IEnumerable <PackageItem> items)
 {
     foreach (PackageItem item in items)
     {
         this.AddItem(typeLine, item);
     }
 }
コード例 #2
0
        /// <summary>
        /// Creates an
        /// </summary>
        /// <param name="id"></param>
        /// <param name="type"></param>
        public WixSection(string id, string type, FileLineNumber typeStartLineNumber)
        {
            this.Id     = id;
            this.tables = new Dictionary <string, XElement>();
            this.Xml    = new XElement(WixBackendCompilerServices.WixobjNamespace + "section",
                                       new XAttribute("id", id),
                                       new XAttribute("type", type));

            XElement row = WixBackendCompilerServices.GenerateRow(this, "WixFragment", typeStartLineNumber,
                                                                  id);
        }
コード例 #3
0
        internal void AddItem(FileLineNumber typeLine, PackageItem item)
        {
            item.LineNumber = typeLine;
            this.items.Add(item);

            if (!String.IsNullOrEmpty(item.Id))
            {
                this.namedItems.Add(item.Id, item);
            }

            this.unresolved.Add(item); // track unresolved items so that we optimize our passes through Resolve().
        }
コード例 #4
0
        internal object CreateInstance(FileLineNumber line)
        {
            object obj = Activator.CreateInstance(this.Type);

            if (line != null)
            {
                PropertyInfo lineNumberProperty = this.Type.GetProperty("LineNumber", BindingFlags.Instance | BindingFlags.NonPublic, null, typeof(FileLineNumber), new Type[0], null);
                if (lineNumberProperty != null)
                {
                    lineNumberProperty.SetValue(obj, line, null);
                }
            }

            return(obj);
        }
        public static XElement GenerateRow(WixSection section, string tableName, FileLineNumber typeStartLineNumber, params object[] fields)
        {
            string sourceLineNumbers = GenerateSourceLineNumbers(typeStartLineNumber);

            XElement row = new XElement(WixBackendCompilerServices.WixobjNamespace + "row",
                                        new XAttribute("sourceLineNumber", sourceLineNumbers));

            XElement table = section.GetTable(tableName);

            table.Add(row);

            foreach (var field in fields)
            {
                row.Add(new XElement(WixBackendCompilerServices.WixobjNamespace + "field", field));
            }

            return(row);
        }
コード例 #6
0
 public void WriteXml(XmlWriter writer)
 {
     writer.WriteStartElement("Exception");
     writer.WriteElementString("AssemblyVersion", AssemblyVersion);
     writer.WriteElementString("PortalId", PortalId.ToString());
     writer.WriteElementString("UserId", UserId.ToString());
     writer.WriteElementString("TabId", TabId.ToString());
     writer.WriteElementString("RawUrl", RawUrl);
     writer.WriteElementString("Referrer", Referrer);
     writer.WriteElementString("UserAgent", UserAgent);
     writer.WriteElementString("ExceptionHash", ExceptionHash);
     writer.WriteElementString("Message", Message);
     writer.WriteElementString("StackTrace", StackTrace);
     writer.WriteElementString("InnerMessage", InnerMessage);
     writer.WriteElementString("InnerStackTrace", InnerStackTrace);
     writer.WriteElementString("Source", Source);
     writer.WriteElementString("FileName", FileName);
     writer.WriteElementString("FileLineNumber", FileLineNumber.ToString());
     writer.WriteElementString("FileColumnNumber", FileColumnNumber.ToString());
     writer.WriteElementString("Method", Method);
     writer.WriteEndElement();
 }
コード例 #7
0
        /// <summary>
        /// Creates a file transfer object.
        /// </summary>
        /// <param name="lineNumber">Optional line number for item that required the file transfer.</param>
        /// <param name="source">Source path.</param>
        /// <param name="destination">Destination path.</param>
        /// <param name="type">Optional type of file trnasfer.</param>
        /// <param name="move">Flag if file should be moved or copied</param>
        /// <returns>File transfer object.</returns>
        public static FileTransfer Create(FileLineNumber lineNumber, string source, string destination, string type, bool move)
        {
            FileTransfer transfer = new FileTransfer();

            transfer.LineNumber = lineNumber;
            transfer.Type       = type;
            transfer.Move       = move;

            try
            {
                transfer.Source = Path.GetFullPath(source);
            }
            catch (ArgumentException)
            {
                throw new CompilerException(new CompilerMessageEventArgs(CompilerMessage.InvalidFileName(source), lineNumber));
            }
            catch (PathTooLongException)
            {
                throw new CompilerException(new CompilerMessageEventArgs(CompilerMessage.PathTooLong(source), lineNumber));
            }

            try
            {
                transfer.Destination = Path.GetFullPath(destination);
            }
            catch (ArgumentException)
            {
                throw new CompilerException(new CompilerMessageEventArgs(CompilerMessage.InvalidFileName(destination), lineNumber));
            }
            catch (PathTooLongException)
            {
                throw new CompilerException(new CompilerMessageEventArgs(CompilerMessage.PathTooLong(destination), lineNumber));
            }

            transfer.Redundant = String.Equals(transfer.Source, transfer.Destination, StringComparison.OrdinalIgnoreCase);
            return(transfer);
        }
 private static string GenerateSourceLineNumbers(FileLineNumber typeStartLineNumber)
 {
     return(String.Concat(typeStartLineNumber.SourceFile, "*", typeStartLineNumber.LineNumber));
 }
        public static XElement GenerateSimpleReference(WixSection section, string tableName, FileLineNumber typeStartLineNumber, params string[] primaryKeys)
        {
            XElement row = GenerateRow(section, "WixSimpleReference", typeStartLineNumber);

            row.Add(new XElement(WixBackendCompilerServices.WixobjNamespace + "field", tableName));
            row.Add(new XElement(WixBackendCompilerServices.WixobjNamespace + "field", String.Join("/", primaryKeys)));

            return(row);
        }