From 499e9b57340d8dc9ee562b6f3e769003451faccb Mon Sep 17 00:00:00 2001 From: Scott Date: Tue, 28 Jul 2015 10:36:03 -0400 Subject: [PATCH 1/3] added a feed generator to actually generate the feed on the server end. Removed NLog and added Log4Net since the web is moving in that direction. --- NetSparkle/NLog.config | 26 - NetSparkle/NLog.xsd | 2585 ---------------------------- NetSparkle/NetSparkle2010.csproj | 19 +- NetSparkle/NetSparkleDiagnostic.cs | 4 +- NetSparkle/SparkleFeedGenerator.cs | 208 +++ NetSparkle/packages.config | 1 + 6 files changed, 218 insertions(+), 2625 deletions(-) delete mode 100644 NetSparkle/NLog.config delete mode 100644 NetSparkle/NLog.xsd create mode 100644 NetSparkle/SparkleFeedGenerator.cs diff --git a/NetSparkle/NLog.config b/NetSparkle/NLog.config deleted file mode 100644 index 6b73711..0000000 --- a/NetSparkle/NLog.config +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/NetSparkle/NLog.xsd b/NetSparkle/NLog.xsd deleted file mode 100644 index b206007..0000000 --- a/NetSparkle/NLog.xsd +++ /dev/null @@ -1,2585 +0,0 @@ - - - - - - - - - - - - - - Watch config file for changes and reload automatically. - - - - - Print internal NLog messages to the console. Default value is: false - - - - - Print internal NLog messages to the console error output. Default value is: false - - - - - Write internal NLog messages to the specified file. - - - - - Log level threshold for internal log messages. Default value is: Info. - - - - - Global log level threshold for application log messages. Messages below this level won't be logged.. - - - - - Pass NLog internal exceptions to the application. Default value is: false. - - - - - - - - - - - - - - Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes). - - - - - - - - - - - - - - - - - Prefix for targets/layout renderers/filters/conditions loaded from this assembly. - - - - - Load NLog extensions from the specified file (*.dll) - - - - - Load NLog extensions from the specified assembly. Assembly name should be fully qualified. - - - - - - - - - - Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name* - - - - - Comma separated list of levels that this rule matches. - - - - - Minimum level that this rule matches. - - - - - Maximum level that this rule matches. - - - - - Level that this rule matches. - - - - - Comma separated list of target names. - - - - - Ignore further rules if this one matches. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the file to be included. The name is relative to the name of the current config file. - - - - - Ignore any errors in the include file. - - - - - - - Variable name. - - - - - Variable value. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Limit on the number of requests in the lazy writer thread request queue. - - - - - Time in milliseconds to sleep between batches. - - - - - Number of log events that should be processed in a batch by the lazy writer thread. - - - - - Action to be taken when the lazy writer thread request queue count exceeds the set limit. - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to use sliding timeout. - - - - - Number of log events to be buffered. - - - - - Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to append newline at the end of log message. - - - - - Instance of that is used to format log messages. - - - - - Action that should be taken if the message is larger than maxMessageSize. - - - - - Maximum message size in bytes. - - - - - Encoding to be used. - - - - - Size of the connection cache (number of connections which are kept alive). - - - - - Network address. - - - - - Indicates whether to keep connection open whenever possible. - - - - - Indicates whether to include source info (file name and line number) in the information sent over the network. - - - - - Indicates whether to include call site (class and method name) in the information sent over the network. - - - - - AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - NDC item separator. - - - - - Indicates whether to include stack contents. - - - - - Indicates whether to include NLog-specific extensions to log4j schema. - - - - - Indicates whether to include dictionary contents. - - - - - - - - - - - - - - - - - - - - Layout that should be use to calcuate the value for the parameter. - - - - - Viewer parameter name. - - - - - - - - - - - - - - - - Name of the target. - - - - - Text to be rendered. - - - - - Footer. - - - - - Header. - - - - - Indicates whether to send the log messages to the standard error instead of the standard output. - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. - - - - - Name of the database provider. - - - - - Indicates whether to use database transactions. Some data providers require this. - - - - - Name of the connection string (as specified in <connectionStrings> configuration section. - - - - - Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. - - - - - Indicates whether to keep the database connection open between the log events. - - - - - Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. - - - - - Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. - - - - - Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. - - - - - Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. - - - - - Text of the SQL command to be run on each log level. - - - - - - - - - - - - - - - - - - - - - - - Type of the command. - - - - - Connection string to run the command against. If not provided, connection string from the target is used. - - - - - Indicates whether to ignore failures. - - - - - Command text. - - - - - - - - - - - - - - Layout that should be use to calcuate the value for the parameter. - - - - - Database parameter name. - - - - - Database parameter precision. - - - - - Database parameter scale. - - - - - Database parameter size. - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to return to the first target after any successful write. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Text to be rendered. - - - - - Header. - - - - - Footer. - - - - - File encoding. - - - - - Line ending mode. - - - - - Size in bytes above which log files will be automatically archived. - - - - - Maximum number of archive files that should be kept. - - - - - Name of the file to be used for an archive. - - - - - Way file archives are numbered. - - - - - Indicates whether to automatically archive log files every time the specified time passes. - - - - - Indicates whether to replace file contents on each write instead of appending log message at the end. - - - - - File attributes (Windows only). - - - - - Name of the file to write to. - - - - - Indicates whether to delete old log file on startup. - - - - - Indicates whether to enable log file(s) to be deleted. - - - - - Indicates whether to create directories if they don't exist. - - - - - Indicates whether concurrent writes to the log file by multiple processes on the same host. - - - - - Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity. - - - - - Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger). - - - - - Indicates whether concurrent writes to the log file by multiple processes on different network hosts. - - - - - Delay in milliseconds to wait before attempting to write to the file again. - - - - - Number of times the write is appended on the file before NLog discards the log message. - - - - - Log file buffer size in bytes. - - - - - Indicates whether to automatically flush the file buffers after each log message. - - - - - Indicates whether to keep log file open instead of opening and closing it on each logging event. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Condition expression. Log events who meet this condition will be forwarded to the wrapped target. - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - Message box title. - - - - - - - - - - - - - - - - - Name of the target. - - - - - Method name. The method must be public and static. - - - - - Class name. - - - - - - - - - - - - - - Layout that should be use to calcuate the value for the parameter. - - - - - Name of the parameter. - - - - - Type of the parameter. - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Action that should be taken if the message is larger than maxMessageSize. - - - - - Indicates whether to append newline at the end of log message. - - - - - Layout used to format log messages. - - - - - Maximum message size in bytes. - - - - - Encoding to be used. - - - - - Size of the connection cache (number of connections which are kept alive). - - - - - Indicates whether to keep connection open whenever possible. - - - - - Network address. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to append newline at the end of log message. - - - - - Instance of that is used to format log messages. - - - - - Action that should be taken if the message is larger than maxMessageSize. - - - - - Maximum message size in bytes. - - - - - Encoding to be used. - - - - - Size of the connection cache (number of connections which are kept alive). - - - - - Network address. - - - - - Indicates whether to keep connection open whenever possible. - - - - - Indicates whether to include source info (file name and line number) in the information sent over the network. - - - - - Indicates whether to include call site (class and method name) in the information sent over the network. - - - - - AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - NDC item separator. - - - - - Indicates whether to include stack contents. - - - - - Indicates whether to include NLog-specific extensions to log4j schema. - - - - - Indicates whether to include dictionary contents. - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to perform layout calculation. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - - Name of the target. - - - - - Default filter to be applied when no specific rule matches. - - - - - - - - - - - - - Condition to be tested. - - - - - Resulting filter to be applied when the condition matches. - - - - - - - - - - - - Name of the target. - - - - - - - - - - - - - - - Name of the target. - - - - - Number of times to repeat each log message. - - - - - - - - - - - - - - - - Name of the target. - - - - - Time to wait between retries in milliseconds. - - - - - Number of retries that should be attempted on the wrapped target in case of a failure. - - - - - - - - - - - - - - Name of the target. - - - - - - - - - - - - - - Name of the target. - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Web service URL. - - - - - Encoding. - - - - - Protocol to be used when calling web service. - - - - - Web service namespace. - - - - - Web service method name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Body layout (can be repeated multiple times). - - - - - Footer layout. - - - - - Header layout. - - - - - Quoting mode. - - - - - Quote Character. - - - - - Indicates whether CVS should include header. - - - - - Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). - - - - - Column delimiter. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Layout of the column. - - - - - Name of the column. - - - - - - - - - - - - Layout text. - - - - - - - - - - - - - - - - Body layout (can be repeated multiple times). - - - - - Header layout. - - - - - Footer layout. - - - - - - - - - - - - - - - - - - - - - - Condition expression. - - - - - Action to be taken when filter matches. - - - - - - - - - - - - - - - - - - - - - - - - - - Layout to be used to filter log messages. - - - - - Substring to be matched. - - - - - Action to be taken when filter matches. - - - - - Indicates whether to ignore case when comparing strings. - - - - - - - - - - - - - - - - - Indicates whether to ignore case when comparing strings. - - - - - Layout to be used to filter log messages. - - - - - Action to be taken when filter matches. - - - - - String to compare the layout to. - - - - - - - - - - - - - - - - - Layout to be used to filter log messages. - - - - - Substring to be matched. - - - - - Action to be taken when filter matches. - - - - - Indicates whether to ignore case when comparing strings. - - - - - - - - - - - - - - - - - Indicates whether to ignore case when comparing strings. - - - - - Layout to be used to filter log messages. - - - - - Action to be taken when filter matches. - - - - - String to compare the layout to. - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to use the XML format when serializing message. - - - - - Encoding to be used when writing text to the queue. - - - - - Layout used to format log messages. - - - - - Indicates whether to use recoverable messages (with guaranteed delivery). - - - - - Indicates whether to create the queue if it doesn't exists. - - - - - Label to associate with each message. - - - - - Name of the queue to write to. - - - - - - - - - - - - - - - - - Name of the target. - - - - - Maximum number of log events that the buffer can keep. - - - - - Indicates whether buffer should grow as needed. - - - - - Number of log events to be buffered. - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - - Name of the target. - - - - - Indicates whether to add <!-- --> comments around all written texts. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Text to be rendered. - - - - - Header. - - - - - Footer. - - - - - Indicates whether to use default row highlighting rules. - - - - - Indicates whether the error stream (stderr) should be used instead of the output stream (stdout). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Background color. - - - - - Condition that must be met in order to set the specified foreground and background color. - - - - - Foreground color. - - - - - - - - - - - - - - - Background color. - - - - - Foreground color. - - - - - Indicates whether to ignore case when comparing texts. - - - - - Regular expression to be matched. You must specify either text or regex. - - - - - Text to be matched. You must specify either text or regex. - - - - - Indicates whether to match whole words only. - - - - - - - - - - - - - - - Name of the target. - - - - - Footer. - - - - - Text to be rendered. - - - - - Header. - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - Name of the machine on which Event Log service is running. - - - - - Value to be used as the event Source. - - - - - Layout that renders event Category. - - - - - Layout that renders event ID. - - - - - Name of the Event Log to write to. This can be System, Application or any user-defined name. - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - Indicates whether log text should be appended to the text of the control instead of overwriting it. - - - - - Name of control to which NLog will log write log text. - - - - - Name of the Form on which the control is located. - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Username to change context to. - - - - - User account password. - - - - - Indicates whether to revert to the credentials of the process instead of impersonating another user. - - - - - Required impersonation level. - - - - - Windows domain name to change context to. - - - - - Logon Type. - - - - - Type of the logon provider. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Header. - - - - - Footer. - - - - - Text to be rendered. - - - - - Indicates whether to send message as HTML instead of plain text. - - - - - Indicates whether to add new lines between log entries. - - - - - Encoding to be used for sending e-mail. - - - - - Mail subject. - - - - - Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). - - - - - BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). - - - - - CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). - - - - - Sender's email address (e.g. joe@domain.com). - - - - - Mail message body (repeated for each log message send in one mail). - - - - - Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). - - - - - Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server. - - - - - Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). - - - - - SMTP Authentication mode. - - - - - SMTP Server to be used for sending. - - - - - Port number that SMTP Server is listening on. - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Performance counter instance name. - - - - - Counter help text. - - - - - Performance counter type. - - - - - Indicates whether performance counter should be automatically created. - - - - - Name of the performance counter category. - - - - - Name of the performance counter. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - Initial height of the form with rich text box. - - - - - Indicates whether scroll bar will be moved automatically to show most recent log entries. - - - - - Maximum number of lines the rich text box will store (or 0 to disable this feature). - - - - - Indicates whether the created form will be initially minimized. - - - - - Indicates whether the created window will be a tool window. - - - - - Name of RichTextBox to which Nlog will write. - - - - - Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one. - - - - - Initial width of the form with rich text box. - - - - - Indicates whether to use default coloring rules. - - - - - - - - - - - - - - - - - - - - - - - - - - - Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed. - - - - - Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed. - - - - - Indicates whether to ignore case when comparing texts. - - - - - Regular expression to be matched. You must specify either text or regex. - - - - - Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing. - - - - - Text to be matched. You must specify either text or regex. - - - - - Indicates whether to match whole words only. - - - - - - - - - - - - - Background color. - - - - - Condition that must be met in order to set the specified font color. - - - - - Font color. - - - - - Font style of matched text. - - - - - - - - - - - - - Name of the target. - - - - - Layout used to format log messages. - - - - - - - - - - - - - - - - - - - - Name of the target. - - - - - Name of the endpoint configuration in WCF configuration file. - - - - - Endpoint address. - - - - - Indicates whether to use binary message encoding. - - - - - Client ID. - - - - - Indicates whether to include per-event properties in the payload sent to the server. - - - - - - \ No newline at end of file diff --git a/NetSparkle/NetSparkle2010.csproj b/NetSparkle/NetSparkle2010.csproj index 3992007..7fe15ee 100644 --- a/NetSparkle/NetSparkle2010.csproj +++ b/NetSparkle/NetSparkle2010.csproj @@ -97,15 +97,14 @@ bin\x86\Release\AppLimit.NetSparkle.Net40.XML - false + true - - + TraQ6.pfx - - ..\lib\NLog.dll + + ..\packages\log4net.2.0.3\lib\net40-client\log4net.dll @@ -169,6 +168,7 @@ True Resources.resx + @@ -254,13 +254,8 @@ - - Always - - - Designer - + @@ -298,4 +293,4 @@ --> - + \ No newline at end of file diff --git a/NetSparkle/NetSparkleDiagnostic.cs b/NetSparkle/NetSparkleDiagnostic.cs index 3145079..84e239d 100644 --- a/NetSparkle/NetSparkleDiagnostic.cs +++ b/NetSparkle/NetSparkleDiagnostic.cs @@ -1,7 +1,7 @@ using System; -using NLog; using System.Drawing; using System.Windows.Forms; +using log4net; namespace AppLimit.NetSparkle { @@ -10,7 +10,7 @@ namespace AppLimit.NetSparkle /// internal class NetSparkleDiagnostic { - private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + private static readonly ILog logger = LogManager.GetLogger("logger"); private readonly bool _isDiagnosticWindowShown; private readonly NetSparkleMainWindows _diagnosticWindow; diff --git a/NetSparkle/SparkleFeedGenerator.cs b/NetSparkle/SparkleFeedGenerator.cs new file mode 100644 index 0000000..a517a2b --- /dev/null +++ b/NetSparkle/SparkleFeedGenerator.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml; +using System.Xml.Linq; + +namespace AppLimit.NetSparkle +{ + public class SparkleFeedGenerator + { + + XmlWriter writer; + public XmlDocument Document; + + #region Private Members + private string _title; + private string _link; + private string _description; + private string _language = "en"; + private DateTime _pubDate; + private string _docs = "http://www.andymatuschak.org/xml-namespaces/sparkle"; + #endregion + + #region Public Members + /// + /// Required - The name of the channel. It's how people refer to your service. If you have an HTML website that contains the same information as your RSS file, the title of your channel should be the same as the title of your website. + /// + public string Title + { + get { return _title; } + set { _title = value; } + } + + /// + /// Required - The URL to the HTML website corresponding to the channel. + /// + public string Link + { + get { return _link; } + set { _link = value; } + } + + /// + /// Required - Phrase or sentence describing the channel. + /// + public string Description + { + get { return _description; } + set { _description = value; } + } + + /// + /// The language the channel is written in. + /// + public string Language + { + get { return _language; } + set { _language = value; } + } + + + /// + /// The publication date for the content in the channel. For example, the New York Times publishes on a daily basis, the publication date flips once every 24 hours. That's when the pubDate of the channel changes. + /// + public DateTime PubDate + { + get { return _pubDate; } + set { _pubDate = value; } + } + + /// + /// A URL that points to the documentation for the format used in the RSS file. + /// + public string Docs + { + get { return _docs; } + set { _docs = value; } + } + + + #endregion + + #region Constructors + + + public SparkleFeedGenerator() + { + Document = new XmlDocument(); + writer = Document.CreateNavigator().AppendChild(); + } + + #endregion + + #region Methods + /// + /// Writes the beginning of the RSS document + /// + public void WriteStartDocument() + { + writer.WriteStartElement("rss"); + writer.WriteAttributeString("version", "2.0"); + writer.WriteAttributeString("sparkle", _docs); + } + + /// + /// Writes the end of the RSS document + /// + public void WriteEndDocument() + { + writer.WriteEndElement(); //rss + writer.WriteEndDocument(); + } + + /// + /// Closes this stream and the underlying stream + /// + public void Close() + { + writer.Flush(); + writer.Close(); + + } + + /// + /// Writes the beginning of a channel in the RSS document + /// + public void WriteStartChannel() + { + try + { + writer.WriteStartElement("channel"); + + writer.WriteElementString("title", _title); + writer.WriteElementString("link", _link); + writer.WriteElementString("description", _description); + + if (!String.IsNullOrEmpty(_language)) + writer.WriteElementString("language", _language); + + if (_pubDate != null && _pubDate != DateTime.MinValue && _pubDate != DateTime.MaxValue) + writer.WriteElementString("pubDate", _pubDate.ToString("r")); + } + catch (Exception ex) + { + throw; + } + + } + + /// + /// Writes the end of a channel in the RSS document + /// + public void WriteEndChannel() + { + writer.WriteEndElement(); //channel + } + + /// + /// Writes an RSS Feed Item + /// + /// The title of the item. + /// The URL of the item + /// The item synopsis. + /// Email address of the author of the item. + /// Includes the item in one or more categories + /// URL of a page for comments relating to the item. + /// A string that uniquely identifies the item. + /// Indicates when the item was published. + /// The URL of the RSS channel that the item came from. + /// The URL of where the enclosure is located + /// The length of the enclosure (how big it is in bytes). + /// The standard MIME type of the enclosure. + public void WriteItem(string title, string link, string description, DateTime pubDate, string encUrl, string encLength, string encType, string version, string dsaSignature, string releaseNotesUrl) + { + try + { + writer.WriteStartElement("item"); + writer.WriteElementString("title", title); + writer.WriteElementString("link", link); + writer.WriteRaw(""); + writer.WriteElementString("sparkle", "releaseNotesLink", _docs, _docs); + + if (pubDate != null && pubDate != DateTime.MinValue && pubDate != DateTime.MaxValue) + writer.WriteElementString("pubDate", pubDate.ToString("r")); + + if (!String.IsNullOrEmpty(encUrl) && !String.IsNullOrEmpty(encLength) && !String.IsNullOrEmpty(encType)) + { + writer.WriteStartElement("enclosure"); + writer.WriteAttributeString("url", encUrl); + writer.WriteAttributeString("length", encLength); + writer.WriteAttributeString("type", encType); + writer.WriteAttributeString("sparkle", "version", _docs, version); + writer.WriteAttributeString("sparkle", "dsaSignature", _docs, dsaSignature); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + } + catch (Exception ex) + { + throw; + } + } + + #endregion + } +} diff --git a/NetSparkle/packages.config b/NetSparkle/packages.config index 7ea9907..2acd7f2 100644 --- a/NetSparkle/packages.config +++ b/NetSparkle/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file From 89ce703ea9fb20828ab9d0fcc1a68913e4ae857c Mon Sep 17 00:00:00 2001 From: Scott Date: Tue, 28 Jul 2015 11:36:21 -0400 Subject: [PATCH 2/3] missed url update --- NetSparkle/SparkleFeedGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NetSparkle/SparkleFeedGenerator.cs b/NetSparkle/SparkleFeedGenerator.cs index a517a2b..27075c5 100644 --- a/NetSparkle/SparkleFeedGenerator.cs +++ b/NetSparkle/SparkleFeedGenerator.cs @@ -179,7 +179,7 @@ public void WriteItem(string title, string link, string description, DateTime pu writer.WriteElementString("title", title); writer.WriteElementString("link", link); writer.WriteRaw(""); - writer.WriteElementString("sparkle", "releaseNotesLink", _docs, _docs); + writer.WriteElementString("sparkle", "releaseNotesLink", _docs, releaseNotesUrl); if (pubDate != null && pubDate != DateTime.MinValue && pubDate != DateTime.MaxValue) writer.WriteElementString("pubDate", pubDate.ToString("r")); From d1b3484eb7464f18aee0b062e89a586b48b294f4 Mon Sep 17 00:00:00 2001 From: Scott Date: Wed, 29 Jul 2015 15:53:58 -0400 Subject: [PATCH 3/3] make sure the download box doesn't turn tomato if things are correct. --- NetSparkle/NetSparkleDownloadProgress.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NetSparkle/NetSparkleDownloadProgress.cs b/NetSparkle/NetSparkleDownloadProgress.cs index e78b545..48b2abd 100644 --- a/NetSparkle/NetSparkleDownloadProgress.cs +++ b/NetSparkle/NetSparkleDownloadProgress.cs @@ -160,6 +160,8 @@ private void UpdateDownloadValid() { if (this.IsDownloadDSAValid) { + lblSecurityHint.Visible =false; + BackColor = Color.FromArgb(240, 240, 240); return; } Size = new Size(Size.Width, 137);