From a3f3c20d7143ca61df357c6fca5a222383cb9518 Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 16 Aug 2016 16:53:37 +0200 Subject: [PATCH 1/5] Work in progress for the Jira backport. [skip ci] --- GreenshotJiraPlugin/Forms/JiraForm.cs | 136 +- .../GreenshotJiraPlugin.csproj | 51 +- GreenshotJiraPlugin/Jira.cs | 413 -- GreenshotJiraPlugin/JiraConfiguration.cs | 5 +- GreenshotJiraPlugin/JiraConnector.cs | 181 + GreenshotJiraPlugin/JiraDestination.cs | 64 +- GreenshotJiraPlugin/JiraPlugin.cs | 35 +- GreenshotJiraPlugin/JiraUtils.cs | 19 +- .../Web References/JiraSoap/Reference.cs | 3721 ----------------- GreenshotJiraPlugin/packages.config | 7 + GreenshotPlugin/Controls/PleaseWaitForm.cs | 46 +- GreenshotPlugin/Core/NetworkHelper.cs | 14 +- 12 files changed, 402 insertions(+), 4290 deletions(-) delete mode 100644 GreenshotJiraPlugin/Jira.cs create mode 100644 GreenshotJiraPlugin/JiraConnector.cs delete mode 100644 GreenshotJiraPlugin/Web References/JiraSoap/Reference.cs create mode 100644 GreenshotJiraPlugin/packages.config diff --git a/GreenshotJiraPlugin/Forms/JiraForm.cs b/GreenshotJiraPlugin/Forms/JiraForm.cs index bb6ab54eb..56cf7a3e9 100644 --- a/GreenshotJiraPlugin/Forms/JiraForm.cs +++ b/GreenshotJiraPlugin/Forms/JiraForm.cs @@ -22,14 +22,19 @@ using System; using System.Globalization; using System.Windows.Forms; +using Dapplo.Jira.Entities; using Greenshot.IniFile; using GreenshotPlugin.Controls; using GreenshotPlugin.Core; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; namespace GreenshotJiraPlugin.Forms { public partial class JiraForm : Form { + private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraForm)); private readonly JiraConnector _jiraConnector; - private JiraIssue _selectedIssue; + private Issue _selectedIssue; private readonly GreenshotColumnSorter _columnSorter; private readonly JiraConfiguration _config = IniConfig.GetIniSection(); @@ -47,15 +52,46 @@ namespace GreenshotJiraPlugin.Forms { _jiraConnector = jiraConnector; ChangeModus(false); - try { - if (!jiraConnector.IsLoggedIn) { - jiraConnector.Login(); + + uploadButton.Enabled = false; + Load += OnLoad; + } + + private async void OnLoad(object sender, EventArgs eventArgs) + { + try + { + if (!_jiraConnector.IsLoggedIn) + { + await _jiraConnector.Login(); } - } catch (Exception e) { + } + catch (Exception e) + { MessageBox.Show(Language.GetFormattedString("jira", LangKey.login_error, e.Message)); } - uploadButton.Enabled = false; - UpdateForm(); + if (_jiraConnector.IsLoggedIn) + { + var filters = await _jiraConnector.GetFavoriteFiltersAsync(); + if (filters.Count > 0) + { + foreach (var filter in filters) + { + jiraFilterBox.Items.Add(filter); + } + jiraFilterBox.SelectedIndex = 0; + } + ChangeModus(true); + if (_config.LastUsedJira != null) + { + _selectedIssue = await _jiraConnector.GetIssueAsync(_config.LastUsedJira); + if (_selectedIssue != null) + { + jiraKey.Text = _config.LastUsedJira; + uploadButton.Enabled = true; + } + } + } } private void InitializeComponentText() { @@ -64,26 +100,6 @@ namespace GreenshotJiraPlugin.Forms { label_filename.Text = Language.GetString("jira", LangKey.label_filename); } - private void UpdateForm() { - if (_jiraConnector.IsLoggedIn) { - JiraFilter[] filters = _jiraConnector.GetFilters(); - if (filters.Length > 0) { - foreach (JiraFilter filter in filters) { - jiraFilterBox.Items.Add(filter); - } - jiraFilterBox.SelectedIndex = 0; - } - ChangeModus(true); - if (_config.LastUsedJira != null) { - _selectedIssue = _jiraConnector.GetIssue(_config.LastUsedJira); - if (_selectedIssue != null) { - jiraKey.Text = _config.LastUsedJira; - uploadButton.Enabled = true; - } - } - } - } - private void ChangeModus(bool enabled) { jiraFilterBox.Enabled = enabled; jiraListView.Enabled = enabled; @@ -99,59 +115,67 @@ namespace GreenshotJiraPlugin.Forms { jiraCommentBox.Text = comment; } - public JiraIssue GetJiraIssue() { + public Issue GetJiraIssue() { return _selectedIssue; } - public void Upload(IBinaryContainer attachment) { + public async Task UploadAsync(IBinaryContainer attachment) { _config.LastUsedJira = _selectedIssue.Key; - _jiraConnector.AddAttachment(_selectedIssue.Key, jiraFilenameBox.Text, attachment); - if (!string.IsNullOrEmpty(jiraCommentBox.Text)) { - _jiraConnector.AddComment(_selectedIssue.Key, jiraCommentBox.Text); + using (var memoryStream = new MemoryStream()) + { + attachment.WriteToStream(memoryStream); + memoryStream.Seek(0, SeekOrigin.Begin); + await _jiraConnector.AttachAsync(_selectedIssue.Key, memoryStream, jiraFilenameBox.Text, attachment.ContentType); } - } - public void Logout() { - _jiraConnector.Logout(); + if (!string.IsNullOrEmpty(jiraCommentBox.Text)) { + await _jiraConnector.AddCommentAsync(_selectedIssue.Key, jiraCommentBox.Text); + } } private void selectJiraToolStripMenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender; - _selectedIssue = (JiraIssue)clickedItem.Tag; + _selectedIssue = (Issue)clickedItem.Tag; jiraKey.Text = _selectedIssue.Key; } - private void jiraFilterBox_SelectedIndexChanged(object sender, EventArgs e) { + private async void jiraFilterBox_SelectedIndexChanged(object sender, EventArgs e) { if (_jiraConnector.IsLoggedIn) { - JiraIssue[] issues = null; + uploadButton.Enabled = false; - JiraFilter filter = (JiraFilter)jiraFilterBox.SelectedItem; + var filter = (Filter)jiraFilterBox.SelectedItem; if (filter == null) { return; } - // Run upload in the background - new PleaseWaitForm().ShowAndWait(JiraPlugin.Instance.JiraPluginAttributes.Name, Language.GetString("jira", LangKey.communication_wait), - delegate() { - issues = _jiraConnector.GetIssuesForFilter(filter.Id); - } - ); + IList issues = null; + try + { + var searchResult = await _jiraConnector.SearchAsync(filter.Jql); + issues = searchResult.Issues; + } + catch (Exception ex) + { + Log.Error(ex); + MessageBox.Show(this, ex.Message, "Error in filter", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + jiraListView.BeginUpdate(); jiraListView.Items.Clear(); - if (issues.Length > 0) { + if (issues?.Count > 0) { jiraListView.Columns.Clear(); LangKey[] columns = { LangKey.column_id, LangKey.column_created, LangKey.column_assignee, LangKey.column_reporter, LangKey.column_summary }; foreach (LangKey column in columns) { jiraListView.Columns.Add(Language.GetString("jira", column)); } - foreach (JiraIssue issue in issues) { - ListViewItem item = new ListViewItem(issue.Key) + foreach (var issue in issues) { + var item = new ListViewItem(issue.Key) { Tag = issue }; - item.SubItems.Add(issue.Created.Value.ToString("d", DateTimeFormatInfo.InvariantInfo)); - item.SubItems.Add(issue.Assignee); - item.SubItems.Add(issue.Reporter); - item.SubItems.Add(issue.Summary); + item.SubItems.Add(issue.Fields.Created.ToString("d", DateTimeFormatInfo.InvariantInfo)); + item.SubItems.Add(issue.Fields.Assignee?.DisplayName); + item.SubItems.Add(issue.Fields.Reporter?.DisplayName); + item.SubItems.Add(issue.Fields.Summary); jiraListView.Items.Add(item); } for (int i = 0; i < columns.Length; i++) { @@ -164,8 +188,8 @@ namespace GreenshotJiraPlugin.Forms { } private void jiraListView_SelectedIndexChanged(object sender, EventArgs e) { - if (jiraListView.SelectedItems != null && jiraListView.SelectedItems.Count > 0) { - _selectedIssue = (JiraIssue)jiraListView.SelectedItems[0].Tag; + if (jiraListView.SelectedItems.Count > 0) { + _selectedIssue = (Issue)jiraListView.SelectedItems[0].Tag; jiraKey.Text = _selectedIssue.Key; uploadButton.Enabled = true; } else { @@ -192,12 +216,12 @@ namespace GreenshotJiraPlugin.Forms { jiraListView.Sort(); } - void JiraKeyTextChanged(object sender, EventArgs e) { + private async void JiraKeyTextChanged(object sender, EventArgs e) { string jiranumber = jiraKey.Text; uploadButton.Enabled = false; int dashIndex = jiranumber.IndexOf('-'); if (dashIndex > 0 && jiranumber.Length > dashIndex+1) { - _selectedIssue = _jiraConnector.GetIssue(jiraKey.Text); + _selectedIssue = await _jiraConnector.GetIssueAsync(jiraKey.Text); if (_selectedIssue != null) { uploadButton.Enabled = true; } diff --git a/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj b/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj index 0af0eaeb9..d70a3c9c4 100644 --- a/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj +++ b/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj @@ -6,7 +6,7 @@ Library GreenshotJiraPlugin GreenshotJiraPlugin - v2.0 + v4.5 Properties False False @@ -20,8 +20,36 @@ + + false + + + false + + + false + + + false + + + ..\packages\Dapplo.HttpExtensions.0.5.30\lib\net45\Dapplo.HttpExtensions.dll + True + + + ..\packages\Dapplo.Jira.0.1.56\lib\net45\Dapplo.Jira.dll + True + + + ..\packages\Dapplo.Log.Facade.0.5.4\lib\net45\Dapplo.Log.Facade.dll + True + + + ..\packages\Dapplo.Utils.0.1.113\lib\net45\Dapplo.Utils.dll + True + ..\Greenshot\Lib\log4net.dll @@ -47,18 +75,13 @@ SettingsForm.cs - + - - True - True - Reference.map - Always @@ -72,23 +95,12 @@ Always - - - MSDiscoCodeGenerator - Reference.cs - + JiraPlugin.cs - - - Static - http://jira/rpc/soap/jirasoapservice-v2%3fwsdl - Web References\JiraSoap - Jira - {5B924697-4DCD-4F98-85F1-105CB84B7341} GreenshotPlugin @@ -97,6 +109,7 @@ mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)" copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp" +copy "$(ProjectDir)bin\$(Configuration)\Dapplo.*" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\" copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\" mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)" copy "$(ProjectDir)\Languages\*.xml" "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)\" diff --git a/GreenshotJiraPlugin/Jira.cs b/GreenshotJiraPlugin/Jira.cs deleted file mode 100644 index 8af125b17..000000000 --- a/GreenshotJiraPlugin/Jira.cs +++ /dev/null @@ -1,413 +0,0 @@ - -/* - * Greenshot - a free and open source screenshot tool - * Copyright (C) 2007-2015 Thomas Braun, Jens Klingen, Robin Krom - * - * For more information see: http://getgreenshot.org/ - * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 1 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -using System; -using System.Collections.Generic; -using System.Threading; -using System.Windows.Forms; -using Greenshot.IniFile; -using GreenshotJiraPlugin.Web_References.JiraSoap; -using GreenshotPlugin.Controls; -using GreenshotPlugin.Core; - -namespace GreenshotJiraPlugin { - #region transport classes - public class JiraFilter { - public JiraFilter(string name, string id) { - Name = name; - Id = id; - } - public string Name { - get; - set; - } - public string Id { - get; - set; - } - } - - public class JiraIssue { - public JiraIssue(string key, DateTime? created, string reporter, string assignee, string project, string summary, string description, string environment, string [] attachmentNames) { - Key = key; - Created = created; - Reporter = reporter; - Assignee = assignee; - Project = project; - Summary = summary; - Description = description; - Environment = environment; - AttachmentNames = attachmentNames; - } - public string Key { - get; - set; - } - public DateTime? Created { - get; - private set; - } - public string Reporter { - get; - private set; - } - public string Assignee { - get; - private set; - } - public string Project { - get; - private set; - } - public string Summary { - get; - private set; - } - public string Description { - get; - private set; - } - public string Environment { - get; - private set; - } - public string[] AttachmentNames { - get; - private set; - } - } - #endregion - - public class JiraConnector : IDisposable { - private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraConnector)); - private const string AuthFailedExceptionName = "com.atlassian.jira.rpc.exception.RemoteAuthenticationException"; - private static readonly JiraConfiguration Config = IniConfig.GetIniSection(); - public const string DefaultPostfix = "/rpc/soap/jirasoapservice-v2?wsdl"; - private string _credentials; - private DateTime _loggedInTime = DateTime.Now; - private bool _loggedIn; - private JiraSoapServiceService _jira; - private readonly int _timeout; - private string _url; - private readonly Cache _jiraCache = new Cache(60 * Config.Timeout); - private readonly Cache _userCache = new Cache(60 * Config.Timeout); - private readonly bool _suppressBackgroundForm; - - public void Dispose() { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected void Dispose(bool disposing) { - if (_jira != null) { - Logout(); - } - - if (disposing) { - if (_jira != null) { - _jira.Dispose(); - _jira = null; - } - } - } - - public JiraConnector() : this(false) { - } - - public JiraConnector(bool suppressBackgroundForm) { - _url = Config.Url; - _timeout = Config.Timeout; - _suppressBackgroundForm = suppressBackgroundForm; - CreateService(); - } - - private void CreateService() { - if (!_suppressBackgroundForm) { - new PleaseWaitForm().ShowAndWait(JiraPlugin.Instance.JiraPluginAttributes.Name, Language.GetString("jira", LangKey.communication_wait), - delegate { - _jira = new JiraSoapServiceService(); - } - ); - } else { - _jira = new JiraSoapServiceService(); - } - _jira.Url = _url; - _jira.Proxy = NetworkHelper.CreateProxy(new Uri(_url)); - // Do not use: - //jira.AllowAutoRedirect = true; - _jira.UserAgent = "Greenshot"; - } - - ~JiraConnector() { - Dispose(false); - } - - /// - /// Internal login which catches the exceptions - /// - /// true if login was done sucessfully - private bool DoLogin(string user, string password, bool suppressBackgroundForm) { - - // This is what needs to be done - ThreadStart jiraLogin = delegate { - Log.DebugFormat("Loggin in"); - try { - _credentials = _jira.login(user, password); - } catch (Exception) { - if (!_url.EndsWith("wsdl")) { - _url = _url + "/rpc/soap/jirasoapservice-v2?wsdl"; - // recreate the service with the new url - CreateService(); - _credentials = _jira.login(user, password); - // Worked, store the url in the configuration - Config.Url = _url; - IniConfig.Save(); - } else { - throw; - } - } - - Log.DebugFormat("Logged in"); - _loggedInTime = DateTime.Now; - _loggedIn = true; - - }; - // Here we do it - try { - if (!suppressBackgroundForm) { - new PleaseWaitForm().ShowAndWait(JiraPlugin.Instance.JiraPluginAttributes.Name, Language.GetString("jira", LangKey.communication_wait), jiraLogin); - } else { - jiraLogin.Invoke(); - } - } catch (Exception e) { - // check if auth failed - if (e.Message.Contains(AuthFailedExceptionName)) { - return false; - } - // Not an authentication issue - _loggedIn = false; - _credentials = null; - e.Data.Add("user", user); - e.Data.Add("url", _url); - throw; - } - return true; - } - - public void Login() { - Login(false); - } - public void Login(bool suppressBackgroundForm) { - Logout(); - try { - // Get the system name, so the user knows where to login to - string systemName = _url.Replace(DefaultPostfix,""); - CredentialsDialog dialog = new CredentialsDialog(systemName) - { - Name = null - }; - while (dialog.Show(dialog.Name) == DialogResult.OK) { - if (DoLogin(dialog.Name, dialog.Password, suppressBackgroundForm)) { - if (dialog.SaveChecked) { - dialog.Confirm(true); - } - return; - } - try { - dialog.Confirm(false); - } catch (ApplicationException e) { - // exception handling ... - Log.Error("Problem using the credentials dialog", e); - } - // For every windows version after XP show an incorrect password baloon - dialog.IncorrectPassword = true; - // Make sure the dialog is display, the password was false! - dialog.AlwaysDisplay = true; - } - } catch (ApplicationException e) { - // exception handling ... - Log.Error("Problem using the credentials dialog", e); - } - } - - public void Logout() { - if (_credentials != null) { - _jira.logout(_credentials); - _credentials = null; - _loggedIn = false; - } - } - - private void CheckCredentials() { - if (_loggedIn) { - if (_loggedInTime.AddMinutes(_timeout-1).CompareTo(DateTime.Now) < 0) { - Logout(); - Login(); - } - } else { - Login(); - } - } - - public bool IsLoggedIn { - get { - return _loggedIn; - } - } - - public JiraFilter[] GetFilters() { - List filters = new List(); - CheckCredentials(); - RemoteFilter[] remoteFilters = _jira.getSavedFilters(_credentials); - foreach (RemoteFilter remoteFilter in remoteFilters) { - filters.Add(new JiraFilter(remoteFilter.name, remoteFilter.id)); - } - return filters.ToArray(); - } - - private JiraIssue CreateDummyErrorIssue(Exception e) { - // Creating bogus jira to indicate a problem - return new JiraIssue("error", DateTime.Now, "error", "error", "error", e.Message, "error", "error", null); - } - - public JiraIssue GetIssue(string key) { - JiraIssue jiraIssue = null; - if (_jiraCache.Contains(key)) { - jiraIssue = _jiraCache[key]; - } - if (jiraIssue == null) { - CheckCredentials(); - try { - RemoteIssue issue = _jira.getIssue(_credentials, key); - jiraIssue = new JiraIssue(issue.key, issue.created, GetUserFullName(issue.reporter), GetUserFullName(issue.assignee), issue.project, issue.summary, issue.description, issue.environment, issue.attachmentNames); - _jiraCache.Add(key, jiraIssue); - } catch (Exception e) { - Log.Error("Problem retrieving Jira: " + key, e); - } - } - return jiraIssue; - } - - public JiraIssue[] GetIssuesForFilter(string filterId) { - List issuesToReturn = new List(); - CheckCredentials(); - try { - RemoteIssue[] issues = _jira.getIssuesFromFilter(_credentials, filterId); - - #region Username cache update - List users = new List(); - foreach (RemoteIssue issue in issues) { - if (issue.reporter != null && !HasUser(issue.reporter) && !users.Contains(issue.reporter)) { - users.Add(issue.reporter); - } - if (issue.assignee != null && !HasUser(issue.assignee) && !users.Contains(issue.assignee)) { - users.Add(issue.assignee); - } - } - int taskCount = users.Count; - if (taskCount > 0) { - ManualResetEvent doneEvent = new ManualResetEvent(false); - for (int i = 0; i < users.Count; i++) { - ThreadPool.QueueUserWorkItem(delegate(object name) { - Log.InfoFormat("Retrieving {0}", name); - GetUserFullName((string)name); - if (Interlocked.Decrement(ref taskCount) == 0) { - doneEvent.Set(); - } - }, users[i]); - } - doneEvent.WaitOne(); - } - #endregion - - foreach (RemoteIssue issue in issues) { - try { - JiraIssue jiraIssue = new JiraIssue(issue.key, issue.created, GetUserFullName(issue.reporter), GetUserFullName(issue.assignee), issue.project, issue.summary, issue.description, "", issue.attachmentNames); - issuesToReturn.Add(jiraIssue); - } catch (Exception e) { - Log.Error("Problem retrieving Jira: " + issue.key, e); - JiraIssue jiraIssue = CreateDummyErrorIssue(e); - jiraIssue.Key = issue.key; - issuesToReturn.Add(jiraIssue); - } - } - } catch (Exception e) { - Log.Error("Problem retrieving Jiras for Filter: " + filterId, e); - issuesToReturn.Add(CreateDummyErrorIssue(e)); - } - return issuesToReturn.ToArray(); ; - } - - public string GetUrl(string issueKey) { - return _url.Replace(DefaultPostfix,"") + "/browse/" + issueKey; - } - - public void AddAttachment(string issueKey, string filename, IBinaryContainer attachment) { - CheckCredentials(); - try { - _jira.addBase64EncodedAttachmentsToIssue(_credentials, issueKey, new[] { filename }, new[] { attachment.ToBase64String(Base64FormattingOptions.InsertLineBreaks) }); - } catch (Exception ex1) { - Log.WarnFormat("Failed to upload by using method addBase64EncodedAttachmentsToIssue, error was {0}", ex1.Message); - try { - Log.Warn("Trying addAttachmentsToIssue instead"); - _jira.addAttachmentsToIssue(_credentials, issueKey, new[] { filename }, (sbyte[])(Array)attachment.ToByteArray()); - } catch (Exception ex2) { - Log.WarnFormat("Failed to use alternative method, error was: {0}", ex2.Message); - throw; - } - } - } - - public void AddComment(string issueKey, string commentString) { - RemoteComment comment = new RemoteComment - { - body = commentString - }; - CheckCredentials(); - _jira.addComment(_credentials, issueKey, comment); - } - - private bool HasUser(string user) { - if (user != null) { - return _userCache.Contains(user); - } - return false; - } - - private string GetUserFullName(string user) { - string fullname; - if (user != null) { - if (_userCache.Contains(user)) { - fullname = _userCache[user].fullname; - } else { - CheckCredentials(); - RemoteUser remoteUser = _jira.getUser(_credentials, user); - _userCache.Add(user, remoteUser); - fullname = remoteUser.fullname; - } - } else { - fullname = "Not assigned"; - } - return fullname; - } - } -} \ No newline at end of file diff --git a/GreenshotJiraPlugin/JiraConfiguration.cs b/GreenshotJiraPlugin/JiraConfiguration.cs index 82a4982f8..869f9129a 100644 --- a/GreenshotJiraPlugin/JiraConfiguration.cs +++ b/GreenshotJiraPlugin/JiraConfiguration.cs @@ -29,10 +29,11 @@ namespace GreenshotJiraPlugin { [IniSection("Jira", Description="Greenshot Jira Plugin configuration")] public class JiraConfiguration : IniSection { public const string DefaultPrefix = "http://"; - private const string DefaultUrl = DefaultPrefix + "jira" + JiraConnector.DefaultPostfix; + private const string DefaultUrl = DefaultPrefix + "jira"; - [IniProperty("Url", Description="Url to Jira system, including wsdl.", DefaultValue=DefaultUrl)] + [IniProperty("Url", Description="Base url to Jira system, without anything else", DefaultValue=DefaultUrl)] public string Url { get; set; } + [IniProperty("Timeout", Description="Session timeout in minutes", DefaultValue="30")] public int Timeout { get; set; } diff --git a/GreenshotJiraPlugin/JiraConnector.cs b/GreenshotJiraPlugin/JiraConnector.cs new file mode 100644 index 000000000..bbd791e7b --- /dev/null +++ b/GreenshotJiraPlugin/JiraConnector.cs @@ -0,0 +1,181 @@ + +/* + * Greenshot - a free and open source screenshot tool + * Copyright (C) 2007-2015 Thomas Braun, Jens Klingen, Robin Krom + * + * For more information see: http://getgreenshot.org/ + * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using Dapplo.Jira; +using Dapplo.Jira.Entities; +using Greenshot.IniFile; +using GreenshotPlugin.Core; + +namespace GreenshotJiraPlugin { + public class JiraConnector : IDisposable { + private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraConnector)); + private static readonly JiraConfiguration Config = IniConfig.GetIniSection(); + public const string DefaultPostfix = "/rpc/soap/jirasoapservice-v2?wsdl"; + private DateTime _loggedInTime = DateTime.Now; + private bool _loggedIn; + private readonly int _timeout; + private string _url; + private JiraApi _jiraApi; + + public void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected void Dispose(bool disposing) { + if (_jiraApi != null) + { + Task.Run(async () => await Logout()).Wait(); + } + } + + public JiraConnector() { + _url = Config.Url.Replace(DefaultPostfix, ""); + _timeout = Config.Timeout; + _jiraApi = new JiraApi(new Uri(_url)); + } + + ~JiraConnector() { + Dispose(false); + } + + /// + /// Internal login which catches the exceptions + /// + /// true if login was done sucessfully + private async Task DoLogin(string user, string password) + { + if (_url.EndsWith("wsdl")) + { + _url = _url.Replace(DefaultPostfix, ""); + // recreate the service with the new url + _jiraApi = new JiraApi(new Uri(_url)); + } + + LoginInfo loginInfo; + try + { + loginInfo = await _jiraApi.StartSessionAsync(user, password); + // Worked, store the url in the configuration + Config.Url = _url; + IniConfig.Save(); + } + catch (Exception) + { + return false; + } + return loginInfo != null; + } + + public async Task Login() { + await Logout(); + try { + // Get the system name, so the user knows where to login to + string systemName = _url.Replace(DefaultPostfix,""); + var credentialsDialog = new CredentialsDialog(systemName) + { + Name = null + }; + while (credentialsDialog.Show(credentialsDialog.Name) == DialogResult.OK) { + if (await DoLogin(credentialsDialog.Name, credentialsDialog.Password)) { + if (credentialsDialog.SaveChecked) { + credentialsDialog.Confirm(true); + } + _loggedIn = true; + _loggedInTime = DateTime.Now; + return; + } + try { + credentialsDialog.Confirm(false); + } catch (ApplicationException e) { + // exception handling ... + Log.Error("Problem using the credentials dialog", e); + } + // For every windows version after XP show an incorrect password baloon + credentialsDialog.IncorrectPassword = true; + // Make sure the dialog is display, the password was false! + credentialsDialog.AlwaysDisplay = true; + } + } catch (ApplicationException e) { + // exception handling ... + Log.Error("Problem using the credentials dialog", e); + } + + } + + public async Task Logout() { + if (_jiraApi != null) + { + await _jiraApi.EndSessionAsync(); + _loggedIn = false; + } + } + + private async Task CheckCredentials() { + if (_loggedIn) { + if (_loggedInTime.AddMinutes(_timeout-1).CompareTo(DateTime.Now) < 0) { + await Logout(); + await Login(); + } + } else { + await Login(); + } + } + + public async Task> GetFavoriteFiltersAsync() + { + await CheckCredentials(); + return await _jiraApi.GetFavoriteFiltersAsync(); + } + + public async Task GetIssueAsync(string issueKey) + { + await CheckCredentials(); + return await _jiraApi.GetIssueAsync(issueKey); + } + public async Task AttachAsync(string issueKey, TContent content, string filename, string contentType = null, CancellationToken cancellationToken = default(CancellationToken)) where TContent : class + { + await CheckCredentials(); + return await _jiraApi.AttachAsync(issueKey, content, filename, contentType, cancellationToken); + } + + public async Task AddCommentAsync(string issueKey, string body, string visibility = null, CancellationToken cancellationToken = default(CancellationToken)) + { + await CheckCredentials(); + await _jiraApi.AddCommentAsync(issueKey, body, visibility, cancellationToken); + } + public async Task SearchAsync(string jql, int maxResults = 20, IList fields = null, CancellationToken cancellationToken = default(CancellationToken)) + { + await CheckCredentials(); + return await _jiraApi.SearchAsync(jql, maxResults, fields, cancellationToken); + } + + public Uri JiraBaseUri => _jiraApi.JiraBaseUri; + + public bool IsLoggedIn => _loggedIn; + } +} \ No newline at end of file diff --git a/GreenshotJiraPlugin/JiraDestination.cs b/GreenshotJiraPlugin/JiraDestination.cs index 7d12bf79b..ba78a1fe4 100644 --- a/GreenshotJiraPlugin/JiraDestination.cs +++ b/GreenshotJiraPlugin/JiraDestination.cs @@ -25,6 +25,8 @@ using System.ComponentModel; using System.Drawing; using System.IO; using System.Windows.Forms; +using Dapplo.HttpExtensions; +using Dapplo.Jira.Entities; using Greenshot.IniFile; using Greenshot.Plugin; using GreenshotJiraPlugin.Forms; @@ -39,13 +41,13 @@ namespace GreenshotJiraPlugin { private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraDestination)); private static readonly JiraConfiguration Config = IniConfig.GetIniSection(); private readonly JiraPlugin _jiraPlugin; - private readonly JiraIssue _jira; + private readonly Issue _jira; public JiraDestination(JiraPlugin jiraPlugin) { _jiraPlugin = jiraPlugin; } - public JiraDestination(JiraPlugin jiraPlugin, JiraIssue jira) { + public JiraDestination(JiraPlugin jiraPlugin, Issue jira) { _jiraPlugin = jiraPlugin; _jira = jira; } @@ -56,8 +58,8 @@ namespace GreenshotJiraPlugin { } } - private string FormatUpload(JiraIssue jira) { - return Designation + " - " + jira.Key + ": " + jira.Summary.Substring(0, Math.Min(20, jira.Summary.Length)); + private string FormatUpload(Issue jira) { + return Designation + " - " + jira.Key + ": " + jira.Fields.Summary.Substring(0, Math.Min(20, jira.Fields.Summary.Length)); } public override string Description { @@ -92,7 +94,7 @@ namespace GreenshotJiraPlugin { if (JiraPlugin.Instance.CurrentJiraConnector == null || !JiraPlugin.Instance.CurrentJiraConnector.IsLoggedIn) { yield break; } - List issues = JiraUtils.GetCurrentJiras(); + var issues = JiraUtils.GetCurrentJirasAsync().Result; if (issues != null) { foreach(var jiraIssue in issues) { yield return new JiraDestination(_jiraPlugin, jiraIssue); @@ -108,37 +110,43 @@ namespace GreenshotJiraPlugin { try { // Run upload in the background new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait), - delegate { - _jiraPlugin.JiraConnector.AddAttachment(_jira.Key, filename, new SurfaceContainer(surfaceToUpload, outputSettings, filename)); + async () => + { + var surfaceContainer = new SurfaceContainer(surfaceToUpload, outputSettings, filename); + using (var memoryStream = new MemoryStream()) + { + surfaceContainer.WriteToStream(memoryStream); + memoryStream.Seek(0, SeekOrigin.Begin); + await _jiraPlugin.JiraConnector.AttachAsync(_jira.Key, memoryStream, filename, surfaceContainer.ContentType); + } + surfaceToUpload.UploadURL = _jiraPlugin.JiraConnector.JiraBaseUri.AppendSegments("browse", _jira.Key).AbsoluteUri; } ); - Log.Debug("Uploaded to Jira."); + Log.DebugFormat("Uploaded to Jira {0}", _jira.Key); exportInformation.ExportMade = true; - // TODO: This can't work: exportInformation.Uri = surfaceToUpload.UploadURL; } catch (Exception e) { MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message); } } else { - JiraForm jiraForm = new JiraForm(_jiraPlugin.JiraConnector); - if (_jiraPlugin.JiraConnector.IsLoggedIn) { - jiraForm.SetFilename(filename); - DialogResult result = jiraForm.ShowDialog(); - if (result == DialogResult.OK) { - try { - // Run upload in the background - new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait), - delegate { - jiraForm.Upload(new SurfaceContainer(surfaceToUpload, outputSettings, filename)); - } - ); - Log.Debug("Uploaded to Jira."); - exportInformation.ExportMade = true; - // TODO: This can't work: - exportInformation.Uri = surfaceToUpload.UploadURL; - } catch(Exception e) { - MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message); - } + var jiraForm = new JiraForm(_jiraPlugin.JiraConnector); + jiraForm.SetFilename(filename); + var dialogResult = jiraForm.ShowDialog(); + if (dialogResult == DialogResult.OK) { + try { + surfaceToUpload.UploadURL = _jiraPlugin.JiraConnector.JiraBaseUri.AppendSegments("browse", jiraForm.GetJiraIssue().Key).AbsoluteUri; + // Run upload in the background + new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait), + async () => + { + await jiraForm.UploadAsync(new SurfaceContainer(surfaceToUpload, outputSettings, filename)); + } + ); + Log.DebugFormat("Uploaded to Jira {0}", jiraForm.GetJiraIssue().Key); + exportInformation.ExportMade = true; + exportInformation.Uri = surfaceToUpload.UploadURL; + } catch(Exception e) { + MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message); } } } diff --git a/GreenshotJiraPlugin/JiraPlugin.cs b/GreenshotJiraPlugin/JiraPlugin.cs index 84b81adcd..1133fdca5 100644 --- a/GreenshotJiraPlugin/JiraPlugin.cs +++ b/GreenshotJiraPlugin/JiraPlugin.cs @@ -19,11 +19,11 @@ * along with this program. If not, see . */ using System.Collections.Generic; -using System.ComponentModel; using System.Windows.Forms; using Greenshot.IniFile; using Greenshot.Plugin; using System; +using System.Threading.Tasks; using GreenshotJiraPlugin.Forms; namespace GreenshotJiraPlugin { @@ -42,7 +42,7 @@ namespace GreenshotJiraPlugin { GC.SuppressFinalize(this); } - protected virtual void Dispose(bool disposing) { + protected void Dispose(bool disposing) { if (disposing) { if (_jiraConnector != null) { _jiraConnector.Dispose(); @@ -85,7 +85,7 @@ namespace GreenshotJiraPlugin { public JiraConnector JiraConnector { get { if (_jiraConnector == null) { - _jiraConnector = new JiraConnector(true); + _jiraConnector = new JiraConnector(); } return _jiraConnector; } @@ -97,33 +97,36 @@ namespace GreenshotJiraPlugin { /// Use the IGreenshotPluginHost interface to register events /// My own attributes /// true if plugin is initialized, false if not (doesn't show) - public virtual bool Initialize(IGreenshotHost pluginHost, PluginAttribute myAttributes) { + public bool Initialize(IGreenshotHost pluginHost, PluginAttribute myAttributes) { _jiraPluginAttributes = myAttributes; // Register configuration (don't need the configuration itself) _config = IniConfig.GetIniSection(); - new ComponentResourceManager(typeof(JiraPlugin)); return true; } - public virtual void Shutdown() { + public void Shutdown() { Log.Debug("Jira Plugin shutdown."); - if (_jiraConnector != null) { - _jiraConnector.Logout(); + if (_jiraConnector != null) + { + Task.Run(async () => await _jiraConnector.Logout()); } } /// /// Implementation of the IPlugin.Configure /// - public virtual void Configure() { + public void Configure() { string url = _config.Url; if (ShowConfigDialog()) { // check for re-login if (_jiraConnector != null && _jiraConnector.IsLoggedIn && !string.IsNullOrEmpty(url)) { if (!url.Equals(_config.Url)) { - _jiraConnector.Logout(); - _jiraConnector.Login(); + Task.Run(async () => + { + await _jiraConnector.Logout(); + await _jiraConnector.Login(); + }); } } } @@ -143,15 +146,5 @@ namespace GreenshotJiraPlugin { } return false; } - - /// - /// This will be called when Greenshot is shutting down - /// - /// - /// - public void Closing(object sender, FormClosingEventArgs e) { - Log.Debug("Application closing, calling logout of jira!"); - Shutdown(); - } } } diff --git a/GreenshotJiraPlugin/JiraUtils.cs b/GreenshotJiraPlugin/JiraUtils.cs index 3dcf945c4..1f801ca11 100644 --- a/GreenshotJiraPlugin/JiraUtils.cs +++ b/GreenshotJiraPlugin/JiraUtils.cs @@ -18,8 +18,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + +using System; using System.Collections.Generic; using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Dapplo.Jira.Entities; using Greenshot.IniFile; using GreenshotPlugin.Core; @@ -30,15 +34,16 @@ namespace GreenshotJiraPlugin { public static class JiraUtils { private static readonly Regex JiraKeyRegex = new Regex(@"/browse/([A-Z0-9]+\-[0-9]+)"); private static readonly JiraConfiguration Config = IniConfig.GetIniSection(); + private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraUtils)); - public static List GetCurrentJiras() { + public static async Task> GetCurrentJirasAsync() { // Make sure we suppress the login - List jirakeys = new List(); + var jirakeys = new List(); foreach(string url in IEHelper.GetIEUrls()) { if (url == null) { continue; } - MatchCollection jiraKeyMatch = JiraKeyRegex.Matches(url); + var jiraKeyMatch = JiraKeyRegex.Matches(url); if (jiraKeyMatch.Count > 0) { string jiraKey = jiraKeyMatch[0].Groups[1].Value; jirakeys.Add(jiraKey); @@ -48,19 +53,19 @@ namespace GreenshotJiraPlugin { jirakeys.Add(Config.LastUsedJira); } if (jirakeys.Count > 0) { - List jiraIssues = new List(); + var jiraIssues = new List(); foreach(string jiraKey in jirakeys) { try { - JiraIssue issue = JiraPlugin.Instance.JiraConnector.GetIssue(jiraKey); + var issue = await JiraPlugin.Instance.JiraConnector.GetIssueAsync(jiraKey); if (issue != null) { jiraIssues.Add(issue); } } - catch + catch (Exception ex) { - + Log.Error(ex); } } if (jiraIssues.Count > 0) { diff --git a/GreenshotJiraPlugin/Web References/JiraSoap/Reference.cs b/GreenshotJiraPlugin/Web References/JiraSoap/Reference.cs deleted file mode 100644 index 6633d436c..000000000 --- a/GreenshotJiraPlugin/Web References/JiraSoap/Reference.cs +++ /dev/null @@ -1,3721 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.3620 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.ComponentModel; -using System.Diagnostics; -using System.Web.Services; -using System.Web.Services.Protocols; -using System.Xml.Serialization; - -namespace GreenshotJiraPlugin.Web_References.JiraSoap -{ - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [WebServiceBinding(Name="jirasoapservice-v2SoapBinding", Namespace="http://jira/rpc/soap/jirasoapservice-v2")] - [SoapInclude(typeof(RemoteRoleActor))] - [SoapInclude(typeof(RemoteFieldValue))] - [SoapInclude(typeof(RemoteCustomFieldValue))] - [SoapInclude(typeof(RemotePermissionMapping))] - [SoapInclude(typeof(AbstractRemoteEntity))] - public partial class JiraSoapServiceService : System.Web.Services.Protocols.SoapHttpClientProtocol - { - - /// - public JiraSoapServiceService() - { - this.Url = "http://jira/rpc/soap/jirasoapservice-v2"; - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getCommentReturn")] - public RemoteComment getComment(string in0, long in1) - { - object[] results = this.Invoke("getComment", new object[] { - in0, - in1}); - return ((RemoteComment)(results[0])); - } - - /// - public System.IAsyncResult BegingetComment(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getComment", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteComment EndgetComment(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteComment)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getServerInfoReturn")] - public RemoteServerInfo getServerInfo(string in0) - { - object[] results = this.Invoke("getServerInfo", new object[] { - in0}); - return ((RemoteServerInfo)(results[0])); - } - - /// - public System.IAsyncResult BegingetServerInfo(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getServerInfo", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteServerInfo EndgetServerInfo(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteServerInfo)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getGroupReturn")] - public RemoteGroup getGroup(string in0, string in1) - { - object[] results = this.Invoke("getGroup", new object[] { - in0, - in1}); - return ((RemoteGroup)(results[0])); - } - - /// - public System.IAsyncResult BegingetGroup(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getGroup", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteGroup EndgetGroup(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteGroup)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("loginReturn")] - public string login(string in0, string in1) - { - object[] results = this.Invoke("login", new object[] { - in0, - in1}); - return ((string)(results[0])); - } - - /// - public System.IAsyncResult Beginlogin(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("login", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public string Endlogin(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((string)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getUserReturn")] - public RemoteUser getUser(string in0, string in1) - { - object[] results = this.Invoke("getUser", new object[] { - in0, - in1}); - return ((RemoteUser)(results[0])); - } - - /// - public System.IAsyncResult BegingetUser(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getUser", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteUser EndgetUser(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteUser)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssueReturn")] - public RemoteIssue getIssue(string in0, string in1) - { - object[] results = this.Invoke("getIssue", new object[] { - in0, - in1}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BegingetIssue(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssue", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssue EndgetIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getVersionsReturn")] - public RemoteVersion[] getVersions(string in0, string in1) - { - object[] results = this.Invoke("getVersions", new object[] { - in0, - in1}); - return ((RemoteVersion[])(results[0])); - } - - /// - public System.IAsyncResult BegingetVersions(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getVersions", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteVersion[] EndgetVersions(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteVersion[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getComponentsReturn")] - public RemoteComponent[] getComponents(string in0, string in1) - { - object[] results = this.Invoke("getComponents", new object[] { - in0, - in1}); - return ((RemoteComponent[])(results[0])); - } - - /// - public System.IAsyncResult BegingetComponents(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getComponents", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteComponent[] EndgetComponents(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteComponent[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createGroupReturn")] - public RemoteGroup createGroup(string in0, string in1, RemoteUser in2) - { - object[] results = this.Invoke("createGroup", new object[] { - in0, - in1, - in2}); - return ((RemoteGroup)(results[0])); - } - - /// - public System.IAsyncResult BegincreateGroup(string in0, string in1, RemoteUser in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createGroup", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteGroup EndcreateGroup(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteGroup)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createUserReturn")] - public RemoteUser createUser(string in0, string in1, string in2, string in3, string in4) - { - object[] results = this.Invoke("createUser", new object[] { - in0, - in1, - in2, - in3, - in4}); - return ((RemoteUser)(results[0])); - } - - /// - public System.IAsyncResult BegincreateUser(string in0, string in1, string in2, string in3, string in4, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createUser", new object[] { - in0, - in1, - in2, - in3, - in4}, callback, asyncState); - } - - /// - public RemoteUser EndcreateUser(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteUser)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createIssueReturn")] - public RemoteIssue createIssue(string in0, RemoteIssue in1) - { - object[] results = this.Invoke("createIssue", new object[] { - in0, - in1}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BegincreateIssue(string in0, RemoteIssue in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createIssue", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssue EndcreateIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("updateIssueReturn")] - public RemoteIssue updateIssue(string in0, string in1, RemoteFieldValue[] in2) - { - object[] results = this.Invoke("updateIssue", new object[] { - in0, - in1, - in2}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BeginupdateIssue(string in0, string in1, RemoteFieldValue[] in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateIssue", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteIssue EndupdateIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteIssue(string in0, string in1) - { - this.Invoke("deleteIssue", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteIssue(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteIssue", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteIssue(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getAvailableActionsReturn")] - public RemoteNamedObject[] getAvailableActions(string in0, string in1) - { - object[] results = this.Invoke("getAvailableActions", new object[] { - in0, - in1}); - return ((RemoteNamedObject[])(results[0])); - } - - /// - public System.IAsyncResult BegingetAvailableActions(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getAvailableActions", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteNamedObject[] EndgetAvailableActions(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteNamedObject[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSubTaskIssueTypesReturn")] - public RemoteIssueType[] getSubTaskIssueTypes(string in0) - { - object[] results = this.Invoke("getSubTaskIssueTypes", new object[] { - in0}); - return ((RemoteIssueType[])(results[0])); - } - - /// - public System.IAsyncResult BegingetSubTaskIssueTypes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSubTaskIssueTypes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteIssueType[] EndgetSubTaskIssueTypes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssueType[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getConfigurationReturn")] - public RemoteConfiguration getConfiguration(string in0) - { - object[] results = this.Invoke("getConfiguration", new object[] { - in0}); - return ((RemoteConfiguration)(results[0])); - } - - /// - public System.IAsyncResult BegingetConfiguration(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getConfiguration", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteConfiguration EndgetConfiguration(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteConfiguration)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createProjectReturn")] - public RemoteProject createProject(string in0, string in1, string in2, string in3, string in4, string in5, RemotePermissionScheme in6, RemoteScheme in7, RemoteScheme in8) - { - object[] results = this.Invoke("createProject", new object[] { - in0, - in1, - in2, - in3, - in4, - in5, - in6, - in7, - in8}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BegincreateProject(string in0, string in1, string in2, string in3, string in4, string in5, RemotePermissionScheme in6, RemoteScheme in7, RemoteScheme in8, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createProject", new object[] { - in0, - in1, - in2, - in3, - in4, - in5, - in6, - in7, - in8}, callback, asyncState); - } - - /// - public RemoteProject EndcreateProject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("updateProjectReturn")] - public RemoteProject updateProject(string in0, RemoteProject in1) - { - object[] results = this.Invoke("updateProject", new object[] { - in0, - in1}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BeginupdateProject(string in0, RemoteProject in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateProject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProject EndupdateProject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectByKeyReturn")] - public RemoteProject getProjectByKey(string in0, string in1) - { - object[] results = this.Invoke("getProjectByKey", new object[] { - in0, - in1}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectByKey(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectByKey", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProject EndgetProjectByKey(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void removeAllRoleActorsByProject(string in0, RemoteProject in1) - { - this.Invoke("removeAllRoleActorsByProject", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BeginremoveAllRoleActorsByProject(string in0, RemoteProject in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("removeAllRoleActorsByProject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EndremoveAllRoleActorsByProject(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getPrioritiesReturn")] - public RemotePriority[] getPriorities(string in0) - { - object[] results = this.Invoke("getPriorities", new object[] { - in0}); - return ((RemotePriority[])(results[0])); - } - - /// - public System.IAsyncResult BegingetPriorities(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getPriorities", new object[] { - in0}, callback, asyncState); - } - - /// - public RemotePriority[] EndgetPriorities(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePriority[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getResolutionsReturn")] - public RemoteResolution[] getResolutions(string in0) - { - object[] results = this.Invoke("getResolutions", new object[] { - in0}); - return ((RemoteResolution[])(results[0])); - } - - /// - public System.IAsyncResult BegingetResolutions(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getResolutions", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteResolution[] EndgetResolutions(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteResolution[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssueTypesReturn")] - public RemoteIssueType[] getIssueTypes(string in0) - { - object[] results = this.Invoke("getIssueTypes", new object[] { - in0}); - return ((RemoteIssueType[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssueTypes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssueTypes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteIssueType[] EndgetIssueTypes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssueType[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getStatusesReturn")] - public RemoteStatus[] getStatuses(string in0) - { - object[] results = this.Invoke("getStatuses", new object[] { - in0}); - return ((RemoteStatus[])(results[0])); - } - - /// - public System.IAsyncResult BegingetStatuses(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getStatuses", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteStatus[] EndgetStatuses(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteStatus[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssueTypesForProjectReturn")] - public RemoteIssueType[] getIssueTypesForProject(string in0, string in1) - { - object[] results = this.Invoke("getIssueTypesForProject", new object[] { - in0, - in1}); - return ((RemoteIssueType[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssueTypesForProject(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssueTypesForProject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssueType[] EndgetIssueTypesForProject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssueType[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectRolesReturn")] - public RemoteProjectRole[] getProjectRoles(string in0) - { - object[] results = this.Invoke("getProjectRoles", new object[] { - in0}); - return ((RemoteProjectRole[])(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectRoles(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectRoles", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteProjectRole[] EndgetProjectRoles(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProjectRole[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectRoleReturn")] - public RemoteProjectRole getProjectRole(string in0, long in1) - { - object[] results = this.Invoke("getProjectRole", new object[] { - in0, - in1}); - return ((RemoteProjectRole)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectRole(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectRole", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProjectRole EndgetProjectRole(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProjectRole)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectRoleActorsReturn")] - public RemoteProjectRoleActors getProjectRoleActors(string in0, RemoteProjectRole in1, RemoteProject in2) - { - object[] results = this.Invoke("getProjectRoleActors", new object[] { - in0, - in1, - in2}); - return ((RemoteProjectRoleActors)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectRoleActors(string in0, RemoteProjectRole in1, RemoteProject in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectRoleActors", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteProjectRoleActors EndgetProjectRoleActors(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProjectRoleActors)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getDefaultRoleActorsReturn")] - public RemoteRoleActors getDefaultRoleActors(string in0, RemoteProjectRole in1) - { - object[] results = this.Invoke("getDefaultRoleActors", new object[] { - in0, - in1}); - return ((RemoteRoleActors)(results[0])); - } - - /// - public System.IAsyncResult BegingetDefaultRoleActors(string in0, RemoteProjectRole in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getDefaultRoleActors", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteRoleActors EndgetDefaultRoleActors(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteRoleActors)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void removeAllRoleActorsByNameAndType(string in0, string in1, string in2) - { - this.Invoke("removeAllRoleActorsByNameAndType", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginremoveAllRoleActorsByNameAndType(string in0, string in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("removeAllRoleActorsByNameAndType", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndremoveAllRoleActorsByNameAndType(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteProjectRole(string in0, RemoteProjectRole in1, bool in2) - { - this.Invoke("deleteProjectRole", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BegindeleteProjectRole(string in0, RemoteProjectRole in1, bool in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteProjectRole", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EnddeleteProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void updateProjectRole(string in0, RemoteProjectRole in1) - { - this.Invoke("updateProjectRole", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BeginupdateProjectRole(string in0, RemoteProjectRole in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateProjectRole", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EndupdateProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createProjectRoleReturn")] - public RemoteProjectRole createProjectRole(string in0, RemoteProjectRole in1) - { - object[] results = this.Invoke("createProjectRole", new object[] { - in0, - in1}); - return ((RemoteProjectRole)(results[0])); - } - - /// - public System.IAsyncResult BegincreateProjectRole(string in0, RemoteProjectRole in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createProjectRole", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProjectRole EndcreateProjectRole(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProjectRole)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("isProjectRoleNameUniqueReturn")] - public bool isProjectRoleNameUnique(string in0, string in1) - { - object[] results = this.Invoke("isProjectRoleNameUnique", new object[] { - in0, - in1}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginisProjectRoleNameUnique(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("isProjectRoleNameUnique", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public bool EndisProjectRoleNameUnique(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void addActorsToProjectRole(string in0, string[] in1, RemoteProjectRole in2, RemoteProject in3, string in4) - { - this.Invoke("addActorsToProjectRole", new object[] { - in0, - in1, - in2, - in3, - in4}); - } - - /// - public System.IAsyncResult BeginaddActorsToProjectRole(string in0, string[] in1, RemoteProjectRole in2, RemoteProject in3, string in4, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addActorsToProjectRole", new object[] { - in0, - in1, - in2, - in3, - in4}, callback, asyncState); - } - - /// - public void EndaddActorsToProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void removeActorsFromProjectRole(string in0, string[] in1, RemoteProjectRole in2, RemoteProject in3, string in4) - { - this.Invoke("removeActorsFromProjectRole", new object[] { - in0, - in1, - in2, - in3, - in4}); - } - - /// - public System.IAsyncResult BeginremoveActorsFromProjectRole(string in0, string[] in1, RemoteProjectRole in2, RemoteProject in3, string in4, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("removeActorsFromProjectRole", new object[] { - in0, - in1, - in2, - in3, - in4}, callback, asyncState); - } - - /// - public void EndremoveActorsFromProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void addDefaultActorsToProjectRole(string in0, string[] in1, RemoteProjectRole in2, string in3) - { - this.Invoke("addDefaultActorsToProjectRole", new object[] { - in0, - in1, - in2, - in3}); - } - - /// - public System.IAsyncResult BeginaddDefaultActorsToProjectRole(string in0, string[] in1, RemoteProjectRole in2, string in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addDefaultActorsToProjectRole", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public void EndaddDefaultActorsToProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void removeDefaultActorsFromProjectRole(string in0, string[] in1, RemoteProjectRole in2, string in3) - { - this.Invoke("removeDefaultActorsFromProjectRole", new object[] { - in0, - in1, - in2, - in3}); - } - - /// - public System.IAsyncResult BeginremoveDefaultActorsFromProjectRole(string in0, string[] in1, RemoteProjectRole in2, string in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("removeDefaultActorsFromProjectRole", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public void EndremoveDefaultActorsFromProjectRole(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getAssociatedNotificationSchemesReturn")] - public RemoteScheme[] getAssociatedNotificationSchemes(string in0, RemoteProjectRole in1) - { - object[] results = this.Invoke("getAssociatedNotificationSchemes", new object[] { - in0, - in1}); - return ((RemoteScheme[])(results[0])); - } - - /// - public System.IAsyncResult BegingetAssociatedNotificationSchemes(string in0, RemoteProjectRole in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getAssociatedNotificationSchemes", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteScheme[] EndgetAssociatedNotificationSchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteScheme[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getAssociatedPermissionSchemesReturn")] - public RemoteScheme[] getAssociatedPermissionSchemes(string in0, RemoteProjectRole in1) - { - object[] results = this.Invoke("getAssociatedPermissionSchemes", new object[] { - in0, - in1}); - return ((RemoteScheme[])(results[0])); - } - - /// - public System.IAsyncResult BegingetAssociatedPermissionSchemes(string in0, RemoteProjectRole in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getAssociatedPermissionSchemes", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteScheme[] EndgetAssociatedPermissionSchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteScheme[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteProject(string in0, string in1) - { - this.Invoke("deleteProject", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteProject(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteProject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteProject(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectByIdReturn")] - public RemoteProject getProjectById(string in0, long in1) - { - object[] results = this.Invoke("getProjectById", new object[] { - in0, - in1}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectById(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectById", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProject EndgetProjectById(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getCustomFieldsReturn")] - public RemoteField[] getCustomFields(string in0) - { - object[] results = this.Invoke("getCustomFields", new object[] { - in0}); - return ((RemoteField[])(results[0])); - } - - /// - public System.IAsyncResult BegingetCustomFields(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getCustomFields", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteField[] EndgetCustomFields(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteField[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getCommentsReturn")] - public RemoteComment[] getComments(string in0, string in1) - { - object[] results = this.Invoke("getComments", new object[] { - in0, - in1}); - return ((RemoteComment[])(results[0])); - } - - /// - public System.IAsyncResult BegingetComments(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getComments", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteComment[] EndgetComments(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteComment[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getFavouriteFiltersReturn")] - public RemoteFilter[] getFavouriteFilters(string in0) - { - object[] results = this.Invoke("getFavouriteFilters", new object[] { - in0}); - return ((RemoteFilter[])(results[0])); - } - - /// - public System.IAsyncResult BegingetFavouriteFilters(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getFavouriteFilters", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteFilter[] EndgetFavouriteFilters(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteFilter[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void releaseVersion(string in0, string in1, RemoteVersion in2) - { - this.Invoke("releaseVersion", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginreleaseVersion(string in0, string in1, RemoteVersion in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("releaseVersion", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndreleaseVersion(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void archiveVersion(string in0, string in1, string in2, bool in3) - { - this.Invoke("archiveVersion", new object[] { - in0, - in1, - in2, - in3}); - } - - /// - public System.IAsyncResult BeginarchiveVersion(string in0, string in1, string in2, bool in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("archiveVersion", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public void EndarchiveVersion(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getFieldsForEditReturn")] - public RemoteField[] getFieldsForEdit(string in0, string in1) - { - object[] results = this.Invoke("getFieldsForEdit", new object[] { - in0, - in1}); - return ((RemoteField[])(results[0])); - } - - /// - public System.IAsyncResult BegingetFieldsForEdit(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getFieldsForEdit", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteField[] EndgetFieldsForEdit(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteField[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSubTaskIssueTypesForProjectReturn")] - public RemoteIssueType[] getSubTaskIssueTypesForProject(string in0, string in1) - { - object[] results = this.Invoke("getSubTaskIssueTypesForProject", new object[] { - in0, - in1}); - return ((RemoteIssueType[])(results[0])); - } - - /// - public System.IAsyncResult BegingetSubTaskIssueTypesForProject(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSubTaskIssueTypesForProject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssueType[] EndgetSubTaskIssueTypesForProject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssueType[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void addUserToGroup(string in0, RemoteGroup in1, RemoteUser in2) - { - this.Invoke("addUserToGroup", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginaddUserToGroup(string in0, RemoteGroup in1, RemoteUser in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addUserToGroup", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndaddUserToGroup(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void removeUserFromGroup(string in0, RemoteGroup in1, RemoteUser in2) - { - this.Invoke("removeUserFromGroup", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginremoveUserFromGroup(string in0, RemoteGroup in1, RemoteUser in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("removeUserFromGroup", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndremoveUserFromGroup(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSecurityLevelReturn")] - public RemoteSecurityLevel getSecurityLevel(string in0, string in1) - { - object[] results = this.Invoke("getSecurityLevel", new object[] { - in0, - in1}); - return ((RemoteSecurityLevel)(results[0])); - } - - /// - public System.IAsyncResult BegingetSecurityLevel(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSecurityLevel", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteSecurityLevel EndgetSecurityLevel(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteSecurityLevel)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("logoutReturn")] - public bool logout(string in0) - { - object[] results = this.Invoke("logout", new object[] { - in0}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult Beginlogout(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("logout", new object[] { - in0}, callback, asyncState); - } - - /// - public bool Endlogout(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void addComment(string in0, string in1, RemoteComment in2) - { - this.Invoke("addComment", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginaddComment(string in0, string in1, RemoteComment in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addComment", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndaddComment(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectWithSchemesByIdReturn")] - public RemoteProject getProjectWithSchemesById(string in0, long in1) - { - object[] results = this.Invoke("getProjectWithSchemesById", new object[] { - in0, - in1}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectWithSchemesById(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectWithSchemesById", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProject EndgetProjectWithSchemesById(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSecurityLevelsReturn")] - public RemoteSecurityLevel[] getSecurityLevels(string in0, string in1) - { - object[] results = this.Invoke("getSecurityLevels", new object[] { - in0, - in1}); - return ((RemoteSecurityLevel[])(results[0])); - } - - /// - public System.IAsyncResult BegingetSecurityLevels(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSecurityLevels", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteSecurityLevel[] EndgetSecurityLevels(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteSecurityLevel[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectAvatarsReturn")] - public RemoteAvatar[] getProjectAvatars(string in0, string in1, bool in2) - { - object[] results = this.Invoke("getProjectAvatars", new object[] { - in0, - in1, - in2}); - return ((RemoteAvatar[])(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectAvatars(string in0, string in1, bool in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectAvatars", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteAvatar[] EndgetProjectAvatars(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteAvatar[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void setProjectAvatar(string in0, string in1, long in2) - { - this.Invoke("setProjectAvatar", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginsetProjectAvatar(string in0, string in1, long in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("setProjectAvatar", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndsetProjectAvatar(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectAvatarReturn")] - public RemoteAvatar getProjectAvatar(string in0, string in1) - { - object[] results = this.Invoke("getProjectAvatar", new object[] { - in0, - in1}); - return ((RemoteAvatar)(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectAvatar(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectAvatar", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteAvatar EndgetProjectAvatar(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteAvatar)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteProjectAvatar(string in0, long in1) - { - this.Invoke("deleteProjectAvatar", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteProjectAvatar(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteProjectAvatar", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteProjectAvatar(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getNotificationSchemesReturn")] - public RemoteScheme[] getNotificationSchemes(string in0) - { - object[] results = this.Invoke("getNotificationSchemes", new object[] { - in0}); - return ((RemoteScheme[])(results[0])); - } - - /// - public System.IAsyncResult BegingetNotificationSchemes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getNotificationSchemes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteScheme[] EndgetNotificationSchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteScheme[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getPermissionSchemesReturn")] - public RemotePermissionScheme[] getPermissionSchemes(string in0) - { - object[] results = this.Invoke("getPermissionSchemes", new object[] { - in0}); - return ((RemotePermissionScheme[])(results[0])); - } - - /// - public System.IAsyncResult BegingetPermissionSchemes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getPermissionSchemes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemotePermissionScheme[] EndgetPermissionSchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePermissionScheme[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getAllPermissionsReturn")] - public RemotePermission[] getAllPermissions(string in0) - { - object[] results = this.Invoke("getAllPermissions", new object[] { - in0}); - return ((RemotePermission[])(results[0])); - } - - /// - public System.IAsyncResult BegingetAllPermissions(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getAllPermissions", new object[] { - in0}, callback, asyncState); - } - - /// - public RemotePermission[] EndgetAllPermissions(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePermission[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createPermissionSchemeReturn")] - public RemotePermissionScheme createPermissionScheme(string in0, string in1, string in2) - { - object[] results = this.Invoke("createPermissionScheme", new object[] { - in0, - in1, - in2}); - return ((RemotePermissionScheme)(results[0])); - } - - /// - public System.IAsyncResult BegincreatePermissionScheme(string in0, string in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createPermissionScheme", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemotePermissionScheme EndcreatePermissionScheme(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePermissionScheme)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addPermissionToReturn")] - public RemotePermissionScheme addPermissionTo(string in0, RemotePermissionScheme in1, RemotePermission in2, RemoteEntity in3) - { - object[] results = this.Invoke("addPermissionTo", new object[] { - in0, - in1, - in2, - in3}); - return ((RemotePermissionScheme)(results[0])); - } - - /// - public System.IAsyncResult BeginaddPermissionTo(string in0, RemotePermissionScheme in1, RemotePermission in2, RemoteEntity in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addPermissionTo", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemotePermissionScheme EndaddPermissionTo(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePermissionScheme)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("deletePermissionFromReturn")] - public RemotePermissionScheme deletePermissionFrom(string in0, RemotePermissionScheme in1, RemotePermission in2, RemoteEntity in3) - { - object[] results = this.Invoke("deletePermissionFrom", new object[] { - in0, - in1, - in2, - in3}); - return ((RemotePermissionScheme)(results[0])); - } - - /// - public System.IAsyncResult BegindeletePermissionFrom(string in0, RemotePermissionScheme in1, RemotePermission in2, RemoteEntity in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deletePermissionFrom", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemotePermissionScheme EnddeletePermissionFrom(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemotePermissionScheme)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deletePermissionScheme(string in0, string in1) - { - this.Invoke("deletePermissionScheme", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeletePermissionScheme(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deletePermissionScheme", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeletePermissionScheme(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createIssueWithSecurityLevelReturn")] - public RemoteIssue createIssueWithSecurityLevel(string in0, RemoteIssue in1, long in2) - { - object[] results = this.Invoke("createIssueWithSecurityLevel", new object[] { - in0, - in1, - in2}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BegincreateIssueWithSecurityLevel(string in0, RemoteIssue in1, long in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createIssueWithSecurityLevel", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteIssue EndcreateIssueWithSecurityLevel(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addAttachmentsToIssueReturn")] - public bool addAttachmentsToIssue(string in0, string in1, string[] in2, sbyte[] in3) - { - object[] results = this.Invoke("addAttachmentsToIssue", new object[] { - in0, - in1, - in2, - in3}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginaddAttachmentsToIssue(string in0, string in1, string[] in2, sbyte[] in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addAttachmentsToIssue", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public bool EndaddAttachmentsToIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getAttachmentsFromIssueReturn")] - public RemoteAttachment[] getAttachmentsFromIssue(string in0, string in1) - { - object[] results = this.Invoke("getAttachmentsFromIssue", new object[] { - in0, - in1}); - return ((RemoteAttachment[])(results[0])); - } - - /// - public System.IAsyncResult BegingetAttachmentsFromIssue(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getAttachmentsFromIssue", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteAttachment[] EndgetAttachmentsFromIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteAttachment[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("hasPermissionToEditCommentReturn")] - public bool hasPermissionToEditComment(string in0, RemoteComment in1) - { - object[] results = this.Invoke("hasPermissionToEditComment", new object[] { - in0, - in1}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginhasPermissionToEditComment(string in0, RemoteComment in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("hasPermissionToEditComment", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public bool EndhasPermissionToEditComment(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("editCommentReturn")] - public RemoteComment editComment(string in0, RemoteComment in1) - { - object[] results = this.Invoke("editComment", new object[] { - in0, - in1}); - return ((RemoteComment)(results[0])); - } - - /// - public System.IAsyncResult BegineditComment(string in0, RemoteComment in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("editComment", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteComment EndeditComment(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteComment)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getFieldsForActionReturn")] - public RemoteField[] getFieldsForAction(string in0, string in1, string in2) - { - object[] results = this.Invoke("getFieldsForAction", new object[] { - in0, - in1, - in2}); - return ((RemoteField[])(results[0])); - } - - /// - public System.IAsyncResult BegingetFieldsForAction(string in0, string in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getFieldsForAction", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteField[] EndgetFieldsForAction(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteField[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("progressWorkflowActionReturn")] - public RemoteIssue progressWorkflowAction(string in0, string in1, string in2, RemoteFieldValue[] in3) - { - object[] results = this.Invoke("progressWorkflowAction", new object[] { - in0, - in1, - in2, - in3}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BeginprogressWorkflowAction(string in0, string in1, string in2, RemoteFieldValue[] in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("progressWorkflowAction", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemoteIssue EndprogressWorkflowAction(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssueByIdReturn")] - public RemoteIssue getIssueById(string in0, string in1) - { - object[] results = this.Invoke("getIssueById", new object[] { - in0, - in1}); - return ((RemoteIssue)(results[0])); - } - - /// - public System.IAsyncResult BegingetIssueById(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssueById", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssue EndgetIssueById(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addWorklogWithNewRemainingEstimateReturn")] - public RemoteWorklog addWorklogWithNewRemainingEstimate(string in0, string in1, RemoteWorklog in2, string in3) - { - object[] results = this.Invoke("addWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2, - in3}); - return ((RemoteWorklog)(results[0])); - } - - /// - public System.IAsyncResult BeginaddWorklogWithNewRemainingEstimate(string in0, string in1, RemoteWorklog in2, string in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemoteWorklog EndaddWorklogWithNewRemainingEstimate(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteWorklog)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addWorklogAndAutoAdjustRemainingEstimateReturn")] - public RemoteWorklog addWorklogAndAutoAdjustRemainingEstimate(string in0, string in1, RemoteWorklog in2) - { - object[] results = this.Invoke("addWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1, - in2}); - return ((RemoteWorklog)(results[0])); - } - - /// - public System.IAsyncResult BeginaddWorklogAndAutoAdjustRemainingEstimate(string in0, string in1, RemoteWorklog in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteWorklog EndaddWorklogAndAutoAdjustRemainingEstimate(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteWorklog)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addWorklogAndRetainRemainingEstimateReturn")] - public RemoteWorklog addWorklogAndRetainRemainingEstimate(string in0, string in1, RemoteWorklog in2) - { - object[] results = this.Invoke("addWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1, - in2}); - return ((RemoteWorklog)(results[0])); - } - - /// - public System.IAsyncResult BeginaddWorklogAndRetainRemainingEstimate(string in0, string in1, RemoteWorklog in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteWorklog EndaddWorklogAndRetainRemainingEstimate(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteWorklog)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteWorklogWithNewRemainingEstimate(string in0, string in1, string in2) - { - this.Invoke("deleteWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BegindeleteWorklogWithNewRemainingEstimate(string in0, string in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EnddeleteWorklogWithNewRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteWorklogAndAutoAdjustRemainingEstimate(string in0, string in1) - { - this.Invoke("deleteWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteWorklogAndAutoAdjustRemainingEstimate(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteWorklogAndAutoAdjustRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteWorklogAndRetainRemainingEstimate(string in0, string in1) - { - this.Invoke("deleteWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteWorklogAndRetainRemainingEstimate(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteWorklogAndRetainRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void updateWorklogWithNewRemainingEstimate(string in0, RemoteWorklog in1, string in2) - { - this.Invoke("updateWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BeginupdateWorklogWithNewRemainingEstimate(string in0, RemoteWorklog in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateWorklogWithNewRemainingEstimate", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EndupdateWorklogWithNewRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void updateWorklogAndAutoAdjustRemainingEstimate(string in0, RemoteWorklog in1) - { - this.Invoke("updateWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BeginupdateWorklogAndAutoAdjustRemainingEstimate(string in0, RemoteWorklog in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateWorklogAndAutoAdjustRemainingEstimate", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EndupdateWorklogAndAutoAdjustRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void updateWorklogAndRetainRemainingEstimate(string in0, RemoteWorklog in1) - { - this.Invoke("updateWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BeginupdateWorklogAndRetainRemainingEstimate(string in0, RemoteWorklog in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateWorklogAndRetainRemainingEstimate", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EndupdateWorklogAndRetainRemainingEstimate(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getWorklogsReturn")] - public RemoteWorklog[] getWorklogs(string in0, string in1) - { - object[] results = this.Invoke("getWorklogs", new object[] { - in0, - in1}); - return ((RemoteWorklog[])(results[0])); - } - - /// - public System.IAsyncResult BegingetWorklogs(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getWorklogs", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteWorklog[] EndgetWorklogs(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteWorklog[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("hasPermissionToCreateWorklogReturn")] - public bool hasPermissionToCreateWorklog(string in0, string in1) - { - object[] results = this.Invoke("hasPermissionToCreateWorklog", new object[] { - in0, - in1}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginhasPermissionToCreateWorklog(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("hasPermissionToCreateWorklog", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public bool EndhasPermissionToCreateWorklog(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("hasPermissionToDeleteWorklogReturn")] - public bool hasPermissionToDeleteWorklog(string in0, string in1) - { - object[] results = this.Invoke("hasPermissionToDeleteWorklog", new object[] { - in0, - in1}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginhasPermissionToDeleteWorklog(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("hasPermissionToDeleteWorklog", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public bool EndhasPermissionToDeleteWorklog(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("hasPermissionToUpdateWorklogReturn")] - public bool hasPermissionToUpdateWorklog(string in0, string in1) - { - object[] results = this.Invoke("hasPermissionToUpdateWorklog", new object[] { - in0, - in1}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginhasPermissionToUpdateWorklog(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("hasPermissionToUpdateWorklog", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public bool EndhasPermissionToUpdateWorklog(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getResolutionDateByKeyReturn")] - public System.DateTime getResolutionDateByKey(string in0, string in1) - { - object[] results = this.Invoke("getResolutionDateByKey", new object[] { - in0, - in1}); - return ((System.DateTime)(results[0])); - } - - /// - public System.IAsyncResult BegingetResolutionDateByKey(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getResolutionDateByKey", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public System.DateTime EndgetResolutionDateByKey(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.DateTime)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getResolutionDateByIdReturn")] - public System.DateTime getResolutionDateById(string in0, long in1) - { - object[] results = this.Invoke("getResolutionDateById", new object[] { - in0, - in1}); - return ((System.DateTime)(results[0])); - } - - /// - public System.IAsyncResult BegingetResolutionDateById(string in0, long in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getResolutionDateById", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public System.DateTime EndgetResolutionDateById(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((System.DateTime)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssueCountForFilterReturn")] - public long getIssueCountForFilter(string in0, string in1) - { - object[] results = this.Invoke("getIssueCountForFilter", new object[] { - in0, - in1}); - return ((long)(results[0])); - } - - /// - public System.IAsyncResult BegingetIssueCountForFilter(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssueCountForFilter", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public long EndgetIssueCountForFilter(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((long)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromTextSearchReturn")] - public RemoteIssue[] getIssuesFromTextSearch(string in0, string in1) - { - object[] results = this.Invoke("getIssuesFromTextSearch", new object[] { - in0, - in1}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromTextSearch(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromTextSearch", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromTextSearch(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromTextSearchWithProjectReturn")] - public RemoteIssue[] getIssuesFromTextSearchWithProject(string in0, string[] in1, string in2, int in3) - { - object[] results = this.Invoke("getIssuesFromTextSearchWithProject", new object[] { - in0, - in1, - in2, - in3}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromTextSearchWithProject(string in0, string[] in1, string in2, int in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromTextSearchWithProject", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromTextSearchWithProject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromJqlSearchReturn")] - public RemoteIssue[] getIssuesFromJqlSearch(string in0, string in1, int in2) - { - object[] results = this.Invoke("getIssuesFromJqlSearch", new object[] { - in0, - in1, - in2}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromJqlSearch(string in0, string in1, int in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromJqlSearch", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromJqlSearch(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteUser(string in0, string in1) - { - this.Invoke("deleteUser", new object[] { - in0, - in1}); - } - - /// - public System.IAsyncResult BegindeleteUser(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteUser", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public void EnddeleteUser(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("updateGroupReturn")] - public RemoteGroup updateGroup(string in0, RemoteGroup in1) - { - object[] results = this.Invoke("updateGroup", new object[] { - in0, - in1}); - return ((RemoteGroup)(results[0])); - } - - /// - public System.IAsyncResult BeginupdateGroup(string in0, RemoteGroup in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("updateGroup", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteGroup EndupdateGroup(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteGroup)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void deleteGroup(string in0, string in1, string in2) - { - this.Invoke("deleteGroup", new object[] { - in0, - in1, - in2}); - } - - /// - public System.IAsyncResult BegindeleteGroup(string in0, string in1, string in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("deleteGroup", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public void EnddeleteGroup(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void refreshCustomFields(string in0) - { - this.Invoke("refreshCustomFields", new object[] { - in0}); - } - - /// - public System.IAsyncResult BeginrefreshCustomFields(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("refreshCustomFields", new object[] { - in0}, callback, asyncState); - } - - /// - public void EndrefreshCustomFields(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSavedFiltersReturn")] - public RemoteFilter[] getSavedFilters(string in0) - { - object[] results = this.Invoke("getSavedFilters", new object[] { - in0}); - return ((RemoteFilter[])(results[0])); - } - - /// - public System.IAsyncResult BegingetSavedFilters(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSavedFilters", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteFilter[] EndgetSavedFilters(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteFilter[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addBase64EncodedAttachmentsToIssueReturn")] - public bool addBase64EncodedAttachmentsToIssue(string in0, string in1, string[] in2, string[] in3) - { - object[] results = this.Invoke("addBase64EncodedAttachmentsToIssue", new object[] { - in0, - in1, - in2, - in3}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginaddBase64EncodedAttachmentsToIssue(string in0, string in1, string[] in2, string[] in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addBase64EncodedAttachmentsToIssue", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public bool EndaddBase64EncodedAttachmentsToIssue(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("createProjectFromObjectReturn")] - public RemoteProject createProjectFromObject(string in0, RemoteProject in1) - { - object[] results = this.Invoke("createProjectFromObject", new object[] { - in0, - in1}); - return ((RemoteProject)(results[0])); - } - - /// - public System.IAsyncResult BegincreateProjectFromObject(string in0, RemoteProject in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("createProjectFromObject", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteProject EndcreateProjectFromObject(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getSecuritySchemesReturn")] - public RemoteScheme[] getSecuritySchemes(string in0) - { - object[] results = this.Invoke("getSecuritySchemes", new object[] { - in0}); - return ((RemoteScheme[])(results[0])); - } - - /// - public System.IAsyncResult BegingetSecuritySchemes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getSecuritySchemes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteScheme[] EndgetSecuritySchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteScheme[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("addVersionReturn")] - public RemoteVersion addVersion(string in0, string in1, RemoteVersion in2) - { - object[] results = this.Invoke("addVersion", new object[] { - in0, - in1, - in2}); - return ((RemoteVersion)(results[0])); - } - - /// - public System.IAsyncResult BeginaddVersion(string in0, string in1, RemoteVersion in2, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("addVersion", new object[] { - in0, - in1, - in2}, callback, asyncState); - } - - /// - public RemoteVersion EndaddVersion(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteVersion)(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromFilterReturn")] - public RemoteIssue[] getIssuesFromFilter(string in0, string in1) - { - object[] results = this.Invoke("getIssuesFromFilter", new object[] { - in0, - in1}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromFilter(string in0, string in1, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromFilter", new object[] { - in0, - in1}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromFilter(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromFilterWithLimitReturn")] - public RemoteIssue[] getIssuesFromFilterWithLimit(string in0, string in1, int in2, int in3) - { - object[] results = this.Invoke("getIssuesFromFilterWithLimit", new object[] { - in0, - in1, - in2, - in3}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromFilterWithLimit(string in0, string in1, int in2, int in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromFilterWithLimit", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromFilterWithLimit(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getIssuesFromTextSearchWithLimitReturn")] - public RemoteIssue[] getIssuesFromTextSearchWithLimit(string in0, string in1, int in2, int in3) - { - object[] results = this.Invoke("getIssuesFromTextSearchWithLimit", new object[] { - in0, - in1, - in2, - in3}); - return ((RemoteIssue[])(results[0])); - } - - /// - public System.IAsyncResult BegingetIssuesFromTextSearchWithLimit(string in0, string in1, int in2, int in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getIssuesFromTextSearchWithLimit", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public RemoteIssue[] EndgetIssuesFromTextSearchWithLimit(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteIssue[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - [return: SoapElement("getProjectsNoSchemesReturn")] - public RemoteProject[] getProjectsNoSchemes(string in0) - { - object[] results = this.Invoke("getProjectsNoSchemes", new object[] { - in0}); - return ((RemoteProject[])(results[0])); - } - - /// - public System.IAsyncResult BegingetProjectsNoSchemes(string in0, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("getProjectsNoSchemes", new object[] { - in0}, callback, asyncState); - } - - /// - public RemoteProject[] EndgetProjectsNoSchemes(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((RemoteProject[])(results[0])); - } - - /// - [SoapRpcMethod("", RequestNamespace="http://soap.rpc.jira.atlassian.com", ResponseNamespace="http://jira/rpc/soap/jirasoapservice-v2")] - public void setNewProjectAvatar(string in0, string in1, string in2, string in3) - { - this.Invoke("setNewProjectAvatar", new object[] { - in0, - in1, - in2, - in3}); - } - - /// - public System.IAsyncResult BeginsetNewProjectAvatar(string in0, string in1, string in2, string in3, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("setNewProjectAvatar", new object[] { - in0, - in1, - in2, - in3}, callback, asyncState); - } - - /// - public void EndsetNewProjectAvatar(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteComment - { - - /// - [SoapElement(IsNullable=true)] - public string author; - - /// - [SoapElement(IsNullable=true)] - public string body; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable created; - - /// - [SoapElement(IsNullable=true)] - public string groupLevel; - - /// - [SoapElement(IsNullable=true)] - public string id; - - /// - [SoapElement(IsNullable=true)] - public string roleLevel; - - /// - [SoapElement(IsNullable=true)] - public string updateAuthor; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable updated; - } - - /// - [SoapInclude(typeof(RemoteWorklogImpl))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteWorklog - { - - /// - [SoapElement(IsNullable=true)] - public string author; - - /// - [SoapElement(IsNullable=true)] - public string comment; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable created; - - /// - [SoapElement(IsNullable=true)] - public string groupLevel; - - /// - [SoapElement(IsNullable=true)] - public string id; - - /// - [SoapElement(IsNullable=true)] - public string roleLevelId; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable startDate; - - /// - [SoapElement(IsNullable=true)] - public string timeSpent; - - /// - public long timeSpentInSeconds; - - /// - [SoapElement(IsNullable=true)] - public string updateAuthor; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable updated; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://service.soap.rpc.jira.atlassian.com")] - public partial class RemoteWorklogImpl : RemoteWorklog - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteAvatar - { - - /// - [SoapElement(IsNullable=true)] - public string base64Data; - - /// - [SoapElement(IsNullable=true)] - public string contentType; - - /// - public long id; - - /// - [SoapElement(IsNullable=true)] - public string owner; - - /// - public bool system; - - /// - [SoapElement(IsNullable=true)] - public string type; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteRoleActor - { - - /// - [SoapElement(IsNullable=true)] - public string descriptor; - - /// - [SoapElement(IsNullable=true)] - public string parameter; - - /// - [SoapElement(IsNullable=true)] - public RemoteProjectRole projectRole; - - /// - [SoapElement(IsNullable=true)] - public string type; - - /// - [SoapElement(IsNullable=true)] - public RemoteUser[] users; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteProjectRole - { - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable id; - - /// - [SoapElement(IsNullable=true)] - public string name; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteUser : RemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string email; - - /// - [SoapElement(IsNullable=true)] - public string fullname; - - /// - [SoapElement(IsNullable=true)] - public string name; - } - - /// - [SoapInclude(typeof(RemoteGroup))] - [SoapInclude(typeof(RemoteUser))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteEntity - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteGroup : RemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string name; - - /// - [SoapElement(IsNullable=true)] - public RemoteUser[] users; - } - - /// - [SoapInclude(typeof(RemoteProjectRoleActors))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteRoleActors - { - - /// - [SoapElement(IsNullable=true)] - public RemoteProjectRole projectRole; - - /// - [SoapElement(IsNullable=true)] - public RemoteRoleActor[] roleActors; - - /// - [SoapElement(IsNullable=true)] - public RemoteUser[] users; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteProjectRoleActors : RemoteRoleActors - { - - /// - [SoapElement(IsNullable=true)] - public RemoteProject project; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteProject : AbstractNamedRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public RemoteScheme issueSecurityScheme; - - /// - [SoapElement(IsNullable=true)] - public string key; - - /// - [SoapElement(IsNullable=true)] - public string lead; - - /// - [SoapElement(IsNullable=true)] - public RemoteScheme notificationScheme; - - /// - [SoapElement(IsNullable=true)] - public RemotePermissionScheme permissionScheme; - - /// - [SoapElement(IsNullable=true)] - public string projectUrl; - - /// - [SoapElement(IsNullable=true)] - public string url; - } - - /// - [SoapInclude(typeof(RemotePermissionScheme))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteScheme - { - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable id; - - /// - [SoapElement(IsNullable=true)] - public string name; - - /// - [SoapElement(IsNullable=true)] - public string type; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemotePermissionScheme : RemoteScheme - { - - /// - [SoapElement(IsNullable=true)] - public RemotePermissionMapping[] permissionMappings; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemotePermissionMapping - { - - /// - [SoapElement(IsNullable=true)] - public RemotePermission permission; - - /// - [SoapElement(IsNullable=true)] - public RemoteEntity[] remoteEntities; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemotePermission - { - - /// - [SoapElement(IsNullable=true)] - public string name; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable permission; - } - - /// - [SoapInclude(typeof(RemoteSecurityLevel))] - [SoapInclude(typeof(RemoteFilter))] - [SoapInclude(typeof(RemoteField))] - [SoapInclude(typeof(RemoteProject))] - [SoapInclude(typeof(AbstractRemoteConstant))] - [SoapInclude(typeof(RemoteStatus))] - [SoapInclude(typeof(RemoteResolution))] - [SoapInclude(typeof(RemotePriority))] - [SoapInclude(typeof(RemoteIssueType))] - [SoapInclude(typeof(RemoteNamedObject))] - [SoapInclude(typeof(RemoteComponent))] - [SoapInclude(typeof(RemoteVersion))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public abstract partial class AbstractNamedRemoteEntity : AbstractRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string name; - } - - /// - [SoapInclude(typeof(RemoteAttachment))] - [SoapInclude(typeof(RemoteIssue))] - [SoapInclude(typeof(AbstractNamedRemoteEntity))] - [SoapInclude(typeof(RemoteSecurityLevel))] - [SoapInclude(typeof(RemoteFilter))] - [SoapInclude(typeof(RemoteField))] - [SoapInclude(typeof(RemoteProject))] - [SoapInclude(typeof(AbstractRemoteConstant))] - [SoapInclude(typeof(RemoteStatus))] - [SoapInclude(typeof(RemoteResolution))] - [SoapInclude(typeof(RemotePriority))] - [SoapInclude(typeof(RemoteIssueType))] - [SoapInclude(typeof(RemoteNamedObject))] - [SoapInclude(typeof(RemoteComponent))] - [SoapInclude(typeof(RemoteVersion))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public abstract partial class AbstractRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string id; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteAttachment : AbstractRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string author; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable created; - - /// - [SoapElement(IsNullable=true)] - public string filename; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable filesize; - - /// - [SoapElement(IsNullable=true)] - public string mimetype; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteIssue : AbstractRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public RemoteVersion[] affectsVersions; - - /// - [SoapElement(IsNullable=true)] - public string assignee; - - /// - [SoapElement(IsNullable=true)] - public string[] attachmentNames; - - /// - [SoapElement(IsNullable=true)] - public RemoteComponent[] components; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable created; - - /// - [SoapElement(IsNullable=true)] - public RemoteCustomFieldValue[] customFieldValues; - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable duedate; - - /// - [SoapElement(IsNullable=true)] - public string environment; - - /// - [SoapElement(IsNullable=true)] - public RemoteVersion[] fixVersions; - - /// - [SoapElement(IsNullable=true)] - public string key; - - /// - [SoapElement(IsNullable=true)] - public string priority; - - /// - [SoapElement(IsNullable=true)] - public string project; - - /// - [SoapElement(IsNullable=true)] - public string reporter; - - /// - [SoapElement(IsNullable=true)] - public string resolution; - - /// - [SoapElement(IsNullable=true)] - public string status; - - /// - [SoapElement(IsNullable=true)] - public string summary; - - /// - [SoapElement(IsNullable=true)] - public string type; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable updated; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable votes; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteVersion : AbstractNamedRemoteEntity - { - - /// - public bool archived; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable releaseDate; - - /// - public bool released; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable sequence; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteComponent : AbstractNamedRemoteEntity - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteCustomFieldValue - { - - /// - [SoapElement(IsNullable=true)] - public string customfieldId; - - /// - [SoapElement(IsNullable=true)] - public string key; - - /// - [SoapElement(IsNullable=true)] - public string[] values; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteSecurityLevel : AbstractNamedRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string description; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteFilter : AbstractNamedRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string author; - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public string project; - - /// - [SoapElement(IsNullable=true)] - public string xml; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteField : AbstractNamedRemoteEntity - { - } - - /// - [SoapInclude(typeof(RemoteStatus))] - [SoapInclude(typeof(RemoteResolution))] - [SoapInclude(typeof(RemotePriority))] - [SoapInclude(typeof(RemoteIssueType))] - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public abstract partial class AbstractRemoteConstant : AbstractNamedRemoteEntity - { - - /// - [SoapElement(IsNullable=true)] - public string description; - - /// - [SoapElement(IsNullable=true)] - public string icon; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteStatus : AbstractRemoteConstant - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteResolution : AbstractRemoteConstant - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemotePriority : AbstractRemoteConstant - { - - /// - [SoapElement(IsNullable=true)] - public string color; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteIssueType : AbstractRemoteConstant - { - - /// - public bool subTask; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteNamedObject : AbstractNamedRemoteEntity - { - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteConfiguration - { - - /// - public bool allowAttachments; - - /// - public bool allowExternalUserManagment; - - /// - public bool allowIssueLinking; - - /// - public bool allowSubTasks; - - /// - public bool allowTimeTracking; - - /// - public bool allowUnassignedIssues; - - /// - public bool allowVoting; - - /// - public bool allowWatching; - - /// - public int timeTrackingDaysPerWeek; - - /// - public int timeTrackingHoursPerDay; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteFieldValue - { - - /// - [SoapElement(IsNullable=true)] - public string id; - - /// - [SoapElement(IsNullable=true)] - public string[] values; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteTimeInfo - { - - /// - [SoapElement(IsNullable=true)] - public string serverTime; - - /// - [SoapElement(IsNullable=true)] - public string timeZoneId; - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("SharpDevelop", "3.2.0.5777")] - [Serializable()] - [DebuggerStepThrough()] - [DesignerCategory("code")] - [SoapType(Namespace="http://beans.soap.rpc.jira.atlassian.com")] - public partial class RemoteServerInfo - { - - /// - [SoapElement(IsNullable=true)] - public string baseUrl; - - /// - [SoapElement(IsNullable=true)] - public System.Nullable buildDate; - - /// - [SoapElement(IsNullable=true)] - public string buildNumber; - - /// - [SoapElement(IsNullable=true)] - public string edition; - - /// - [SoapElement(IsNullable=true)] - public RemoteTimeInfo serverTime; - - /// - [SoapElement(IsNullable=true)] - public string version; - } -} diff --git a/GreenshotJiraPlugin/packages.config b/GreenshotJiraPlugin/packages.config new file mode 100644 index 000000000..9baf9d660 --- /dev/null +++ b/GreenshotJiraPlugin/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/GreenshotPlugin/Controls/PleaseWaitForm.cs b/GreenshotPlugin/Controls/PleaseWaitForm.cs index 17978419d..cd2e6b0ba 100644 --- a/GreenshotPlugin/Controls/PleaseWaitForm.cs +++ b/GreenshotPlugin/Controls/PleaseWaitForm.cs @@ -30,8 +30,8 @@ namespace GreenshotPlugin.Controls { /// public partial class PleaseWaitForm : Form { private static readonly ILog LOG = LogManager.GetLogger(typeof(PleaseWaitForm)); - private Thread waitFor; - private string title; + private Thread _waitFor; + private string _title; public PleaseWaitForm() { // // The InitializeComponent() call is required for Windows Forms designer support. @@ -60,7 +60,7 @@ namespace GreenshotPlugin.Controls { /// The text in the form /// delegate { with your code } public void ShowAndWait(string title, string text, ThreadStart waitDelegate) { - this.title = title; + _title = title; Text = title; label_pleasewait.Text = text; cancelButton.Text = Language.GetString("CANCEL"); @@ -72,23 +72,29 @@ namespace GreenshotPlugin.Controls { Exception threadException = null; try { // Wrap the passed delegate in a try/catch which makes it possible to save the exception - waitFor = new Thread(new ThreadStart( - delegate { - try { - waitDelegate.Invoke(); - } catch (Exception ex) { - LOG.Error("invoke error:", ex); - threadException = ex; - } - }) - ); - waitFor.Name = title; - waitFor.IsBackground = true; - waitFor.SetApartmentState(ApartmentState.STA); - waitFor.Start(); + _waitFor = new Thread(new ThreadStart( + delegate + { + try + { + waitDelegate.Invoke(); + } + catch (Exception ex) + { + LOG.Error("invoke error:", ex); + threadException = ex; + } + }) + ) + { + Name = title, + IsBackground = true + }; + _waitFor.SetApartmentState(ApartmentState.STA); + _waitFor.Start(); // Wait until finished - while (!waitFor.Join(TimeSpan.FromMilliseconds(100))) { + while (!_waitFor.Join(TimeSpan.FromMilliseconds(100))) { Application.DoEvents(); } LOG.DebugFormat("Finished {0}", title); @@ -110,9 +116,9 @@ namespace GreenshotPlugin.Controls { /// /// void CancelButtonClick(object sender, EventArgs e) { - LOG.DebugFormat("Cancel clicked on {0}", title); + LOG.DebugFormat("Cancel clicked on {0}", _title); cancelButton.Enabled = false; - waitFor.Abort(); + _waitFor.Abort(); } } } diff --git a/GreenshotPlugin/Core/NetworkHelper.cs b/GreenshotPlugin/Core/NetworkHelper.cs index ff0e43fdb..993e63927 100644 --- a/GreenshotPlugin/Core/NetworkHelper.cs +++ b/GreenshotPlugin/Core/NetworkHelper.cs @@ -555,6 +555,8 @@ namespace GreenshotPlugin.Core { string ToBase64String(Base64FormattingOptions formattingOptions); byte[] ToByteArray(); void Upload(HttpWebRequest webRequest); + + string ContentType { get; } } /// @@ -634,6 +636,8 @@ namespace GreenshotPlugin.Core { WriteToStream(requestStream); } } + + public string ContentType => _contentType; } /// @@ -686,7 +690,7 @@ namespace GreenshotPlugin.Core { boundary, name, _fileName ?? name, - "image/" + _outputSettings.Format); + ContentType); formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header)); ImageOutput.SaveToStream(_bitmap, null, formDataStream, _outputSettings); @@ -711,6 +715,8 @@ namespace GreenshotPlugin.Core { WriteToStream(requestStream); } } + + public string ContentType => "image/" + _outputSettings.Format; } /// @@ -763,7 +769,7 @@ namespace GreenshotPlugin.Core { boundary, name, _fileName ?? name, - "image/" + _outputSettings.Format); + ContentType); formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header)); ImageOutput.SaveToStream(_surface, formDataStream, _outputSettings); @@ -783,10 +789,12 @@ namespace GreenshotPlugin.Core { /// /// public void Upload(HttpWebRequest webRequest) { - webRequest.ContentType = "image/" + _outputSettings.Format.ToString(); + webRequest.ContentType = ContentType; using (var requestStream = webRequest.GetRequestStream()) { WriteToStream(requestStream); } } + + public string ContentType => "image/" + _outputSettings.Format; } } From a38929aa84ced760e937c53b72f17f6aa8a1d693 Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 16 Aug 2016 17:06:09 +0200 Subject: [PATCH 2/5] Finished merge. --- Greenshot/Drawing/TextContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Greenshot/Drawing/TextContainer.cs b/Greenshot/Drawing/TextContainer.cs index 3557bcf52..2fe2e2425 100644 --- a/Greenshot/Drawing/TextContainer.cs +++ b/Greenshot/Drawing/TextContainer.cs @@ -383,7 +383,7 @@ namespace Greenshot.Drawing _font = newFont; _textBox.Font = _font; } - catch (Exception ex2) + catch (Exception) { // When this happens... the PC is broken ex.Data.Add("fontFamily", fontFamily); From 4c7baa94762884335215b416e0643b6a2041d81b Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 16 Aug 2016 17:18:29 +0200 Subject: [PATCH 3/5] Fixing an async issue with the UI [skip ci] --- GreenshotJiraPlugin/JiraConnector.cs | 12 ++++++------ GreenshotJiraPlugin/JiraUtils.cs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GreenshotJiraPlugin/JiraConnector.cs b/GreenshotJiraPlugin/JiraConnector.cs index bbd791e7b..1eb02c3bb 100644 --- a/GreenshotJiraPlugin/JiraConnector.cs +++ b/GreenshotJiraPlugin/JiraConnector.cs @@ -149,29 +149,29 @@ namespace GreenshotJiraPlugin { public async Task> GetFavoriteFiltersAsync() { await CheckCredentials(); - return await _jiraApi.GetFavoriteFiltersAsync(); + return await _jiraApi.GetFavoriteFiltersAsync().ConfigureAwait(false); } public async Task GetIssueAsync(string issueKey) { await CheckCredentials(); - return await _jiraApi.GetIssueAsync(issueKey); + return await _jiraApi.GetIssueAsync(issueKey).ConfigureAwait(false); } public async Task AttachAsync(string issueKey, TContent content, string filename, string contentType = null, CancellationToken cancellationToken = default(CancellationToken)) where TContent : class { - await CheckCredentials(); - return await _jiraApi.AttachAsync(issueKey, content, filename, contentType, cancellationToken); + await CheckCredentials().ConfigureAwait(false); + return await _jiraApi.AttachAsync(issueKey, content, filename, contentType, cancellationToken).ConfigureAwait(false); } public async Task AddCommentAsync(string issueKey, string body, string visibility = null, CancellationToken cancellationToken = default(CancellationToken)) { await CheckCredentials(); - await _jiraApi.AddCommentAsync(issueKey, body, visibility, cancellationToken); + await _jiraApi.AddCommentAsync(issueKey, body, visibility, cancellationToken).ConfigureAwait(false); } public async Task SearchAsync(string jql, int maxResults = 20, IList fields = null, CancellationToken cancellationToken = default(CancellationToken)) { await CheckCredentials(); - return await _jiraApi.SearchAsync(jql, maxResults, fields, cancellationToken); + return await _jiraApi.SearchAsync(jql, maxResults, fields, cancellationToken).ConfigureAwait(false); } public Uri JiraBaseUri => _jiraApi.JiraBaseUri; diff --git a/GreenshotJiraPlugin/JiraUtils.cs b/GreenshotJiraPlugin/JiraUtils.cs index 1f801ca11..30e5df7d6 100644 --- a/GreenshotJiraPlugin/JiraUtils.cs +++ b/GreenshotJiraPlugin/JiraUtils.cs @@ -57,7 +57,7 @@ namespace GreenshotJiraPlugin { foreach(string jiraKey in jirakeys) { try { - var issue = await JiraPlugin.Instance.JiraConnector.GetIssueAsync(jiraKey); + var issue = await JiraPlugin.Instance.JiraConnector.GetIssueAsync(jiraKey).ConfigureAwait(false); if (issue != null) { jiraIssues.Add(issue); From 56855317707a0889ac9e59011339cd5e43ece103 Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 16 Aug 2016 17:39:56 +0200 Subject: [PATCH 4/5] cleanup [skip ci] --- GreenshotJiraPlugin/JiraConnector.cs | 9 --------- GreenshotJiraPlugin/JiraDestination.cs | 19 ++++--------------- GreenshotJiraPlugin/JiraPlugin.cs | 23 +++-------------------- 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/GreenshotJiraPlugin/JiraConnector.cs b/GreenshotJiraPlugin/JiraConnector.cs index 1eb02c3bb..cc4e980de 100644 --- a/GreenshotJiraPlugin/JiraConnector.cs +++ b/GreenshotJiraPlugin/JiraConnector.cs @@ -42,11 +42,6 @@ namespace GreenshotJiraPlugin { private JiraApi _jiraApi; public void Dispose() { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected void Dispose(bool disposing) { if (_jiraApi != null) { Task.Run(async () => await Logout()).Wait(); @@ -59,10 +54,6 @@ namespace GreenshotJiraPlugin { _jiraApi = new JiraApi(new Uri(_url)); } - ~JiraConnector() { - Dispose(false); - } - /// /// Internal login which catches the exceptions /// diff --git a/GreenshotJiraPlugin/JiraDestination.cs b/GreenshotJiraPlugin/JiraDestination.cs index ba78a1fe4..8326e320c 100644 --- a/GreenshotJiraPlugin/JiraDestination.cs +++ b/GreenshotJiraPlugin/JiraDestination.cs @@ -52,11 +52,7 @@ namespace GreenshotJiraPlugin { _jira = jira; } - public override string Designation { - get { - return "Jira"; - } - } + public override string Designation => "Jira"; private string FormatUpload(Issue jira) { return Designation + " - " + jira.Key + ": " + jira.Fields.Summary.Substring(0, Math.Min(20, jira.Fields.Summary.Length)); @@ -72,17 +68,10 @@ namespace GreenshotJiraPlugin { } } - public override bool isActive { - get { - return base.isActive && !string.IsNullOrEmpty(Config.Url); - } - } + public override bool isActive => base.isActive && !string.IsNullOrEmpty(Config.Url); + + public override bool isDynamic => true; - public override bool isDynamic { - get { - return true; - } - } public override Image DisplayIcon { get { var resources = new ComponentResourceManager(typeof(JiraPlugin)); diff --git a/GreenshotJiraPlugin/JiraPlugin.cs b/GreenshotJiraPlugin/JiraPlugin.cs index 1133fdca5..3f2cdc969 100644 --- a/GreenshotJiraPlugin/JiraPlugin.cs +++ b/GreenshotJiraPlugin/JiraPlugin.cs @@ -32,7 +32,6 @@ namespace GreenshotJiraPlugin { /// public class JiraPlugin : IGreenshotPlugin { private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraPlugin)); - private PluginAttribute _jiraPluginAttributes; private JiraConnector _jiraConnector; private JiraConfiguration _config; private static JiraPlugin _instance; @@ -51,21 +50,11 @@ namespace GreenshotJiraPlugin { } } - public static JiraPlugin Instance { - get { - return _instance; - } - } + public static JiraPlugin Instance => _instance; public JiraPlugin() { _instance = this; } - - public PluginAttribute JiraPluginAttributes { - get { - return _jiraPluginAttributes; - } - } public IEnumerable Destinations() { yield return new JiraDestination(this); @@ -76,12 +65,8 @@ namespace GreenshotJiraPlugin { } //Needed for a fail-fast - public JiraConnector CurrentJiraConnector { - get { - return _jiraConnector; - } - } - + public JiraConnector CurrentJiraConnector => _jiraConnector; + public JiraConnector JiraConnector { get { if (_jiraConnector == null) { @@ -98,8 +83,6 @@ namespace GreenshotJiraPlugin { /// My own attributes /// true if plugin is initialized, false if not (doesn't show) public bool Initialize(IGreenshotHost pluginHost, PluginAttribute myAttributes) { - _jiraPluginAttributes = myAttributes; - // Register configuration (don't need the configuration itself) _config = IniConfig.GetIniSection(); return true; From 669ab696cfe33c5903e6d17f5373a1325556b31e Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 17 Aug 2016 14:26:56 +0200 Subject: [PATCH 5/5] Missing Log4NetLogger updated the inno setup script for Jira, so it can only install when .NET 4.5 is available. [skip ci] --- .../innosetup/scripts/isxdl/dutch.ini | 49 +++++++ .../innosetup/scripts/isxdl/english.ini | 4 +- .../innosetup/scripts/isxdl/french.ini | 4 +- .../innosetup/scripts/isxdl/french2.ini | 4 +- .../innosetup/scripts/isxdl/german.ini | 35 ++--- .../innosetup/scripts/isxdl/isxdl.iss | 4 +- .../innosetup/scripts/isxdl/italian.ini | 49 +++++++ .../innosetup/scripts/isxdl/japanese.ini | 49 +++++++ .../innosetup/scripts/isxdl/korean.ini | 49 +++++++ .../innosetup/scripts/isxdl/portuguese.ini | 4 +- .../releases/innosetup/scripts/products.iss | 115 ++++++++++++----- .../scripts/products/directxruntime.iss | 31 +++++ .../innosetup/scripts/products/dotnetfx11.iss | 11 +- .../scripts/products/dotnetfx11lp.iss | 5 +- .../scripts/products/dotnetfx11sp1.iss | 13 +- .../innosetup/scripts/products/dotnetfx20.iss | 17 +-- .../scripts/products/dotnetfx20lp.iss | 9 +- .../scripts/products/dotnetfx20sp1.iss | 13 +- .../scripts/products/dotnetfx20sp1lp.iss | 9 +- .../scripts/products/dotnetfx20sp2.iss | 9 +- .../scripts/products/dotnetfx20sp2lp.iss | 9 +- .../innosetup/scripts/products/dotnetfx35.iss | 17 +-- .../scripts/products/dotnetfx35lp.iss | 7 +- .../scripts/products/dotnetfx35sp1.iss | 17 +-- .../scripts/products/dotnetfx35sp1lp.iss | 9 +- .../scripts/products/dotnetfx40client.iss | 23 ++-- .../scripts/products/dotnetfx40full.iss | 23 ++-- .../innosetup/scripts/products/dotnetfx46.iss | 29 +++++ .../scripts/products/dotnetfxversion.iss | 27 +++- .../scripts/products/fileversion.iss | 2 + .../innosetup/scripts/products/ie6.iss | 17 +-- .../innosetup/scripts/products/iis.iss | 5 +- .../innosetup/scripts/products/jet4sp8.iss | 13 +- .../innosetup/scripts/products/kb835732.iss | 15 ++- .../innosetup/scripts/products/mdac28.iss | 11 +- .../innosetup/scripts/products/msi20.iss | 11 +- .../innosetup/scripts/products/msi31.iss | 11 +- .../innosetup/scripts/products/msi45.iss | 15 ++- .../innosetup/scripts/products/msiproduct.iss | 25 ++++ .../scripts/products/sql2005express.iss | 17 +-- .../scripts/products/sql2008express.iss | 21 +-- .../scripts/products/sqlcompact35sp2.iss | 5 +- .../scripts/products/stringversion.iss | 12 +- .../scripts/products/vcredist2005.iss | 40 ++++++ .../scripts/products/vcredist2008.iss | 40 ++++++ .../scripts/products/vcredist2010.iss | 35 +++-- .../scripts/products/vcredist2010sp1.iss | 41 ++++++ .../scripts/products/vcredist2012.iss | 35 +++++ .../scripts/products/vcredist2013.iss | 35 +++++ .../scripts/products/vcredist2015.iss | 35 +++++ .../innosetup/scripts/products/wic.iss | 11 +- .../innosetup/scripts/products/winversion.iss | 4 +- GreenshotJiraPlugin/Log4NetLogger.cs | 120 ++++++++++++++++++ 53 files changed, 980 insertions(+), 240 deletions(-) create mode 100644 Greenshot/releases/innosetup/scripts/isxdl/dutch.ini create mode 100644 Greenshot/releases/innosetup/scripts/isxdl/italian.ini create mode 100644 Greenshot/releases/innosetup/scripts/isxdl/japanese.ini create mode 100644 Greenshot/releases/innosetup/scripts/isxdl/korean.ini create mode 100644 Greenshot/releases/innosetup/scripts/products/directxruntime.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/msiproduct.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2005.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2008.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2010sp1.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2012.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2013.iss create mode 100644 Greenshot/releases/innosetup/scripts/products/vcredist2015.iss create mode 100644 GreenshotJiraPlugin/Log4NetLogger.cs diff --git a/Greenshot/releases/innosetup/scripts/isxdl/dutch.ini b/Greenshot/releases/innosetup/scripts/isxdl/dutch.ini new file mode 100644 index 000000000..6fe8ca75b --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/isxdl/dutch.ini @@ -0,0 +1,49 @@ +[strings] +; Algemeen +100=Bestand downloaden +101=Wilt u de download annuleren? +102=1% (%2 van %3) +103=%1 KB +104=%1 KB van %2 KB (%3%) + +; Status informatie +110=Bestandsinformatie ophalen ... +111=omgeleid naar %1 +112=Verzoek verzenden ... +113=oplossen %1 +114=Verbonden met 1% +115=Het ontvangen ... +116=Verbinden met %1 + +; foutmeldingen +120=Fout bij het verbinden met Internet. \n\n%1 +121=Fout bij het openen van %1.\n\nDe server terug statuscode %2. +122=Fout bij het lezen URL.\n\n%1 +123=Fout bij het schrijven bestand %1.\n\n%2 +124=Fout bij openen bestand %1.\n\n%2 +125='%1' is een ongeldige URL. +126=Fout bij openen %1.\n\n%2 +127=Fout bij het verzenden verzoek.\n\n%1 +128=Niet ondersteund protocol. Alleen HTTP en FTP-protocollen worden ondersteund. +129=Kan geen verbinding maken %1.\n\n%2 +130=Kan de status code opvragen.\n\n%1 +131=Fout bij het aanvragen van het bestand.\n\n%1 + +; anders +144=Over ... +146=Download +147=Setup is nu het downloaden van extra bestanden naar uw computer. + +; etiket +160=Bestand: +161=Speed: +162=Status: +163=Verstreken tijd: +164=Resterende tijd: +165=Huidige File: +166=Algemeen Voortgang: +167=Annuleren +168=OK +169=gebruikersnaam en wachtwoord +170=Gebruikersnaam: +171=Wachtwoord: diff --git a/Greenshot/releases/innosetup/scripts/isxdl/english.ini b/Greenshot/releases/innosetup/scripts/isxdl/english.ini index 03176edde..0546ae49a 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/english.ini +++ b/Greenshot/releases/innosetup/scripts/isxdl/english.ini @@ -1,6 +1,6 @@ [strings] ; General -100=File Download +100=File download 101=Do you want to cancel the download? 102=%1 (%2 of %3) 103=%1 KB @@ -16,7 +16,7 @@ 116=Connecting to %1 ; Error messages -120=Error connecting to Internet.\n\n%1 +120=Error connecting to the internet.\n\n%1 121=Error opening %1.\n\nThe server returned status code %2. 122=Error reading URL.\n\n%1 123=Error writing file %1.\n\n%2 diff --git a/Greenshot/releases/innosetup/scripts/isxdl/french.ini b/Greenshot/releases/innosetup/scripts/isxdl/french.ini index db802535e..d44ea12d6 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/french.ini +++ b/Greenshot/releases/innosetup/scripts/isxdl/french.ini @@ -1,6 +1,6 @@ [strings] ; General -100=Tlchargement des fichiers... +100=Tlchargement des fichiers 101=Souhaitez-vous annuler le tlchargement ? 102=%1 (%2 / %3) 103=%1 Ko @@ -16,7 +16,7 @@ 116=Connexion %1 ; Messages d'erreur -120=Impossible de se connecter Internet.\n\n%1 +120=Impossible de se connecter internet.\n\n%1 121=Impossible d'ouvrir %1.\n\nLe serveur a renvoy le code d'erreur %2. 122=Impossible de lire l'adresse.\n\n%1 123=Impossible de crer le fichier %1.\n\n%2 diff --git a/Greenshot/releases/innosetup/scripts/isxdl/french2.ini b/Greenshot/releases/innosetup/scripts/isxdl/french2.ini index b850990fb..5b8bb04f0 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/french2.ini +++ b/Greenshot/releases/innosetup/scripts/isxdl/french2.ini @@ -3,8 +3,8 @@ 100=Tlchargement de fichier 101=Voulez vous annuler le tlchargement ? 102=%1 (%2 de %3) -103=%1 KB -104=%1 KB de %2 KB (%3%) +103=%1 Ko +104=%1 Ko de %2 Ko (%3%) ; Status information 110=Rception des informations du fichier... diff --git a/Greenshot/releases/innosetup/scripts/isxdl/german.ini b/Greenshot/releases/innosetup/scripts/isxdl/german.ini index 77f443966..447869c21 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/german.ini +++ b/Greenshot/releases/innosetup/scripts/isxdl/german.ini @@ -1,46 +1,49 @@ -;by E. Wrner [strings] ; General -100=Dateidownload -101=Mchten Sie den Download der Dateien abbrechen? +100=Datei herunterladen +101=Mchten Sie das Herunterladen der Datei abbrechen? 102=%1 (%2 von %3) 103=%1 KB 104=%1 KB von %2 KB (%3%) ; Status information -110=Empfang von Dateiinformationen... +110=Dateiinformationen werden ermittelt... 111=Weiterleitung zu %1 -112=Senden der Anfrage... +112=Anforderung wird gesendet... 113=Auflsen von %1 114=Verbunden mit %1 -115=Empfang... +115=Empfange... 116=Verbinden mit %1 ; Error messages -120=Fehler bei der Herstellung einer Verbindung ins Internet.\n\n%1 -121=Fehler beim ffnen von %1.\n\nDer Server sendete Code %2. +120=Fehler beim Verbinden mit dem Internet.\n\n%1 +121=Fehler beim ffnen von %1.\n\nDer Server meldet Statuscode %2. 122=Fehler beim Lesen der URL.\n\n%1 123=Fehler beim Schreiben der Datei %1.\n\n%2 124=Fehler beim ffnen der Datei %1.\n\n%2 125='%1' ist eine ungltige URL. 126=Fehler beim ffnen von %1.\n\n%2 -127=Fehler beim Senden der Anfrage.\n\n%1 -128=Nicht untersttztes Protokoll. FTP und HTTP sind die einzigen untersttzten Protokolle. -129=Fehler beim Verbinden mit %1.\n\n%2 -130=Fehler beim Auflsen des Statuscodes.\n\n%1 -131=Fehler beim Anfordern einer Datei.\n\n%1 +127=Fehler beim Senden der Anforderung.\n\n%1 +128=Protokoll wird nicht untersttzt. Nur HTTP und FTP werden untersttzt. +129=Verbindung zu %1 fehlgeschlagen.\n\n%2 +130=Fehler bei der Abfrage des Statuscodes.\n\n%1 +131=Fehler bei der Anforderung der Datei.\n\n%1 ; Other 144=ber... 146=Download -147=Setup ldt jetzt zustzliche Dateien fr das Setup. +147=Das Setup ldt nun zustzliche Dateien auf Ihren Computer. ; labels 160=Datei: 161=Geschwindigkeit: 162=Status: -163=Vergangene Zeit: +163=Bisherige Zeit: 164=Verbleibende Zeit: 165=Aktuelle Datei: -166=Gesamter Fortschritt: +166=Gesamter Vorgang: 167=Abbrechen +168=OK +169=Benutzername und Kennwort +170=Benutzername: +171=Kennwort: diff --git a/Greenshot/releases/innosetup/scripts/isxdl/isxdl.iss b/Greenshot/releases/innosetup/scripts/isxdl/isxdl.iss index 513ba5f85..3c25d6d58 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/isxdl.iss +++ b/Greenshot/releases/innosetup/scripts/isxdl/isxdl.iss @@ -2,13 +2,13 @@ Source: "scripts\isxdl\isxdl.dll"; Flags: dontcopy [Code] -//replace PAnsiChar with PChar on non-unicode Inno Setup procedure isxdl_AddFile(URL, Filename: PAnsiChar); external 'isxdl_AddFile@files:isxdl.dll stdcall'; function isxdl_DownloadFiles(hWnd: Integer): Integer; external 'isxdl_DownloadFiles@files:isxdl.dll stdcall'; -//replace PAnsiChar with PChar on non-unicode Inno Setup function isxdl_SetOption(Option, Value: PAnsiChar): Integer; external 'isxdl_SetOption@files:isxdl.dll stdcall'; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/isxdl/italian.ini b/Greenshot/releases/innosetup/scripts/isxdl/italian.ini new file mode 100644 index 000000000..7729f3ac4 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/isxdl/italian.ini @@ -0,0 +1,49 @@ +[strings] +; Generale +100=Download del file +101=Vuoi annullare il download? +102=%1 (%2 di %3) +103=%1 KB +104=%1 KB di %2 KB (%3%) + +; informazioni di stato +110=Ottenere informazioni sul file ... +111=reindirizzamento a %1 +112=Invio richiesta... +113=Risoluzione %1 +114=Connesso al %1 +115=Ricezione... +116=Collegamento a %1 + +; Messaggio di errore +120=Errore di connessione a Internet.\n\n%1 +121=Errore di apertura %1.\n\nIl server ha restituito codice di stato %2. +122=Errore di lettura del URL.\n\n%1 +123=Errore scrittura del file %1.\n\n%2 +124=Errore apertura del file %1.\n\n%2 +125='%1' è un URL non valido. +126=Errore d'apertura %1.\n\n%2 +127=Errore d'invio richiesta.\n\n%1 +128=Protocollo non supportato. Sono supportati solo i protocolli HTTP e FTP. +129=Connessione non riuscita a %1.\n\n%2 +130=Impossibile eseguire la query codice di stato.\n\n%1 +131=Errore file di richiedente.\n\n%1 + +; Altro +144=A proposito di ... +146=Download +147=L'installazione è ora scaricando i file aggiuntive al computer. + +; etichette +160=File: +161=Velocità: +162=Stato: +163=Tempo trascorso: +164=Tempo rimanente: +165=File corrente: +166=Avanzamento generale: +167=Annulla +168=OK +169=Nome utente e password +170=Nome Utente: +171=Password: diff --git a/Greenshot/releases/innosetup/scripts/isxdl/japanese.ini b/Greenshot/releases/innosetup/scripts/isxdl/japanese.ini new file mode 100644 index 000000000..6638d1f32 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/isxdl/japanese.ini @@ -0,0 +1,49 @@ +[strings] +; General +100=t@C_E[h +101=_E[hLZ܂H +102=%1 (%2 of %3) +103=%1 KB +104=%1 KB of %2 KB (%3%) + +; Status information +110=t@C擾... +111=_CNg %1 +112=NGXgM... +113= %1 +114=ڑ %1 +115=M... +116=ڑ %1 + +; Error messages +120=C^[lbgڑG[.\n\n%1 +121=JnG[ %1.\n\nT[o[̃Xe[^XR[h %2. +122=URLǂݎG[.\n\n%1 +123=t@C݃G[ %1.\n\n%2 +124=t@CI[vG[ %1.\n\n%2 +125='%1' ͕sURLł. +126=I[vG[ %1.\n\n%2 +127=NGXgMG[.\n\n%1 +128=T|[gĂȂvgRł. HTTPFTPvgRT|[gĂ܂. +129=ڑɎs܂ %1.\n\n%2 +130=Xe[^XR[h̖₢킹s.\n\n%1 +131=t@CNGXgG[.\n\n%1 + +; Other +144=About... +146=_E[h +147=ZbgAbv̓Rs[^[ɒlj̃t@C_E[hĂ܂. + +; labels +160=t@C: +161=x: +162=: +163=oߎ: +164=c莞: +165=݂̃t@C: +166=Ŝ̐i: +167=LZ +168=OK +169=[U[ƃpX[h +170=[U[: +171=pX[h: diff --git a/Greenshot/releases/innosetup/scripts/isxdl/korean.ini b/Greenshot/releases/innosetup/scripts/isxdl/korean.ini new file mode 100644 index 000000000..ba8e6cb61 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/isxdl/korean.ini @@ -0,0 +1,49 @@ +[strings] +; General +100= ٿε +101=ٿε带 Ͻðڽϱ? +102=%1 (%2 %3) +103=%1 KB +104=%1 KB %2 KB (%3%) + +; Status information +110= ް ֽϴ... +111=Redirecting to %1 +112=û ֽϴ... +113= %1 +114=%1() Ǿϴ. +115=޴... +116=%1() Դϴ. + +; Error messages +120=ͳ ߻߽ϴ.\n\n%1 +121=µ ַ ߻ %1.\n\n ޽ %2. +122=URL д ߻߽ϴ.\n\n%1 +123= ߻߽ϴ %1.\n\n%2 +124= ߻߽ϴ %1.\n\n%2 +125='%1' ߸ URLԴϴ. +126= ߻߽ϴ %1.\n\n%2 +127=û ߻߽ϴ\n\n%1 +128= ʴ Դϴ. HTTP FTP մϴ. +129=%1 Ͽϴ.\n\n%2 +130= ߽ϴ. ڵ ϴ.\n\n%1 +131= û ߻߽ϴ.\n\n%1 + +; Other +144=About... +146=ٿε +147= ġ α׷ ߰ ϵ ٿε ϰ ˴ϴ. + +; labels +160=: +161=ӵ: +162=: +163= ð: +164= ð: +165= : +166=ü ൵: +167= +168=Ȯ +169=ڸ н +170=ڸ: +171=н: diff --git a/Greenshot/releases/innosetup/scripts/isxdl/portuguese.ini b/Greenshot/releases/innosetup/scripts/isxdl/portuguese.ini index 84f9da483..d729484d6 100644 --- a/Greenshot/releases/innosetup/scripts/isxdl/portuguese.ini +++ b/Greenshot/releases/innosetup/scripts/isxdl/portuguese.ini @@ -4,8 +4,8 @@ 100=Download 101=Deseja cancelar o download? 102=%1 (%2 de %3) -103=%1 Kb -104=%1 Kb de %2 Kb (%3%) +103=%1 KB +104=%1 KB de %2 KB (%3%) ; Status information 110=A receber informao do ficheiro... diff --git a/Greenshot/releases/innosetup/scripts/products.iss b/Greenshot/releases/innosetup/scripts/products.iss index 6beaa2e62..f614f791a 100644 --- a/Greenshot/releases/innosetup/scripts/products.iss +++ b/Greenshot/releases/innosetup/scripts/products.iss @@ -5,34 +5,73 @@ DependenciesDir=MyProgramDependencies en.depdownload_msg=The following applications are required before setup can continue:%n%n%1%nDownload and install now? de.depdownload_msg=Die folgenden Programme werden bentigt bevor das Setup fortfahren kann:%n%n%1%nJetzt downloaden und installieren? +fr.depdownload_msg=Les applications suivantes sont ncessaires avant l'installation peut continuer:%n%n%1%nTlchargement et installer maintenant? +it.depdownload_msg=Le seguenti applicazioni sono necessari per continuare l'installazione:%n%n%1%nScarica ed installare ora? +nl.depdownload_msg=De volgende toepassingen zijn nodig vr de installatie kunt doorgaan:%n%n%1%nDownload en installeer nu? +pl.depdownload_msg=Ponisze aplikacje s wymagane przed instalacj aby mc kontynuowa:%n%n%1%nCzy pobra je i zainstalowa teraz? en.depdownload_memo_title=Download dependencies de.depdownload_memo_title=Abhngigkeiten downloaden +fr.depdownload_memo_title=Tlcharger les dpendances +it.depdownload_memo_title=Scarica le dipendenze +nl.depdownload_memo_title=Download afhankelijkheden +pl.depdownload_memo_title=Pobierz zalenoci en.depinstall_memo_title=Install dependencies de.depinstall_memo_title=Abhngigkeiten installieren +fr.depinstall_memo_title=Installez les dpendances +it.depinstall_memo_title=installare le dipendenze +nl.depinstall_memo_title=Installeer afhankelijkheden +pl.depinstall_memo_title=Zainstaluj zalenoci en.depinstall_title=Installing dependencies de.depinstall_title=Installiere Abhngigkeiten +fr.depinstall_title=Installation des dpendances +it.depinstall_title=installare le dipendenze +nl.depinstall_title=Installeer afhankelijkheden +pl.depinstall_title=Instalowanie zalenoci en.depinstall_description=Please wait while Setup installs dependencies on your computer. de.depinstall_description=Warten Sie bitte whrend Abhngigkeiten auf Ihrem Computer installiert wird. +fr.depinstall_description=S'il vous plat patienter pendant que le programme d'installation installe les dpendances sur votre ordinateur. +it.depinstall_description=Per favore attendi che viene installato sul computer dipendenze. +nl.depinstall_description=Een moment geduld aub Setup installeert afhankelijkheden op uw computer. +pl.depinstall_description=Instalator instaluje zalenoci na komputerze, czekaj. en.depinstall_status=Installing %1... de.depinstall_status=Installiere %1... +fr.depinstall_status=Installation %1... +it.depinstall_status=installazione %1... +nl.depinstall_status=Installeren %1... +pl.depinstall_status=Instalowanie %1.... en.depinstall_missing=%1 must be installed before setup can continue. Please install %1 and run Setup again. de.depinstall_missing=%1 muss installiert werden bevor das Setup fortfahren kann. Bitte installieren Sie %1 und starten Sie das Setup erneut. +fr.depinstall_missing=%1 doit tre install avant l'installation peut continuer. S'il vous plat installer %1 et excutez nouveau le programme d'installation. +it.depinstall_missing=%1 deve essere installato per continuare l'installazione. Si prega di installare %1 ed eseguire nuovamente l'installazione. +nl.depinstall_missing=%1 moet worden genstalleerd vr de installatie kan worden voortgezet. Installeer %1 en voer Setup opnieuw uit. +pl.depinstall_missing=%1 musi by zainstalowany przed instalacj, aby moga ona by kontynuowana. Zainstaluj %1 i ponownie uruchom program instalacyjny. en.depinstall_error=An error occured while installing the dependencies. Please restart the computer and run the setup again or install the following dependencies manually:%n de.depinstall_error=Ein Fehler ist whrend der Installation der Abghngigkeiten aufgetreten. Bitte starten Sie den Computer neu und fhren Sie das Setup erneut aus oder installieren Sie die folgenden Abhngigkeiten per Hand:%n +fr.depinstall_error=Une erreur est survenue lors de l'installation des dpendances . S'il vous plat redmarrer l'ordinateur et excuter nouveau le programme d'installation ou installer les dpendances suivantes manuellement:%n +it.depinstall_error= verificato un errore durante l'installazione le dipendenze . Si prega di riavviare il computer ed eseguire nuovamente la configurazione o installare le seguenti dipendenze manualmente:%n +nl.depinstall_error=Er is een fout opgetreden tijdens het installeren van de afhankelijkheden. Gelieve de computer opnieuw op en voer de installatie opnieuw uit of de volgende afhankelijkheden handmatig installeren:%n +pl.depinstall_error=Wystpi bd podczas instalowania zalenoci. Uruchom ponownie komputer, a nastpnie ponownie uruchom program instalacyjny lub rcznie zainstaluj nastpujce programy:%n en.isxdl_langfile= -de.isxdl_langfile=german2.ini - +de.isxdl_langfile=german.ini +fr.isxdl_langfile=french3.ini +it.isxdl_langfile=italian.ini +nl.isxdl_langfile=dutch.ini +pl.isxdl_langfile=polish.ini [Files] -Source: "scripts\isxdl\german2.ini"; Flags: dontcopy +Source: "scripts\isxdl\german.ini"; Flags: dontcopy +Source: "scripts\isxdl\french3.ini"; Flags: dontcopy +Source: "scripts\isxdl\italian.ini"; Flags: dontcopy +Source: "scripts\isxdl\dutch.ini"; Flags: dontcopy +Source: "scripts\isxdl\polish.ini"; Flags: dontcopy [Code] type @@ -40,6 +79,7 @@ type File: String; Title: String; Parameters: String; + ForceSuccess : boolean; InstallClean : boolean; MustRebootAfter : boolean; end; @@ -49,46 +89,49 @@ type var installMemo, downloadMemo, downloadMessage: string; products: array of TProduct; - delayedReboot: boolean; + delayedReboot, isForcedX86: boolean; DependencyPage: TOutputProgressWizardPage; -procedure AddProduct(FileName, Parameters, Title, Size, URL: string; InstallClean : boolean; MustRebootAfter : boolean); +procedure AddProduct(filename, parameters, title, size, url: string; forceSuccess, installClean, mustRebootAfter : boolean); var path: string; i: Integer; begin - installMemo := installMemo + '%1' + Title + #13; + installMemo := installMemo + '%1' + title + #13; - path := ExpandConstant('{src}{\}') + CustomMessage('DependenciesDir') + '\' + FileName; + path := ExpandConstant('{src}{\}') + CustomMessage('DependenciesDir') + '\' + filename; if not FileExists(path) then begin - path := ExpandConstant('{tmp}{\}') + FileName; + path := ExpandConstant('{tmp}{\}') + filename; - isxdl_AddFile(URL, path); + if not FileExists(path) then begin + isxdl_AddFile(url, path); - downloadMemo := downloadMemo + '%1' + Title + #13; - downloadMessage := downloadMessage + ' ' + Title + ' (' + Size + ')' + #13; + downloadMemo := downloadMemo + '%1' + title + #13; + downloadMessage := downloadMessage + ' ' + title + ' (' + size + ')' + #13; + end; end; i := GetArrayLength(products); SetArrayLength(products, i + 1); products[i].File := path; - products[i].Title := Title; - products[i].Parameters := Parameters; - products[i].InstallClean := InstallClean; - products[i].MustRebootAfter := MustRebootAfter; + products[i].Title := title; + products[i].Parameters := parameters; + products[i].ForceSuccess := forceSuccess; + products[i].InstallClean := installClean; + products[i].MustRebootAfter := mustRebootAfter; end; -function SmartExec(prod : TProduct; var ResultCode : Integer) : boolean; +function SmartExec(product : TProduct; var resultcode : Integer): boolean; begin - if (LowerCase(Copy(prod.File,Length(prod.File)-2,3)) = 'exe') then begin - Result := Exec(prod.File, prod.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); + if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'exe') then begin + Result := Exec(product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode); end else begin - Result := ShellExec('', prod.File, prod.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); + Result := ShellExec('', product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode); end; end; -function PendingReboot : boolean; +function PendingReboot: boolean; var names: String; begin if (RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'PendingFileRenameOperations', names)) then begin @@ -102,7 +145,7 @@ end; function InstallProducts: InstallResult; var - ResultCode, i, productCount, finishCount: Integer; + resultCode, i, productCount, finishCount: Integer; begin Result := InstallSuccessful; productCount := GetArrayLength(products); @@ -120,9 +163,8 @@ begin DependencyPage.SetText(FmtMessage(CustomMessage('depinstall_status'), [products[i].Title]), ''); DependencyPage.SetProgress(i, productCount); - if SmartExec(products[i], ResultCode) then begin - //setup executed; ResultCode contains the exit code - //MsgBox(products[i].Title + ' install executed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK); + if SmartExec(products[i], resultCode) then begin + //setup executed; resultCode contains the exit code if (products[i].MustRebootAfter) then begin //delay reboot after install if we installed the last dependency anyways if (i = productCount - 1) then begin @@ -131,10 +173,10 @@ begin Result := InstallRebootRequired; end; break; - end else if (ResultCode = 0) then begin + end else if (resultCode = 0) or (products[i].ForceSuccess) then begin finishCount := finishCount + 1; - end else if (ResultCode = 3010) then begin - //ResultCode 3010: A restart is required to complete the installation. This message indicates success. + end else if (resultCode = 3010) then begin + //Windows Installer resultCode 3010: ERROR_SUCCESS_REBOOT_REQUIRED delayedReboot := true; finishCount := finishCount + 1; end else begin @@ -142,7 +184,6 @@ begin break; end; end else begin - //MsgBox(products[i].Title + ' install failed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK); Result := InstallError; break; end; @@ -187,8 +228,7 @@ end; function NeedRestart : boolean; begin - if (delayedReboot) then - Result := true; + Result := delayedReboot; end; function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; @@ -231,17 +271,17 @@ end; function IsX86: boolean; begin - Result := (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown); + Result := isForcedX86 or (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown); end; function IsX64: boolean; begin - Result := Is64BitInstallMode and (ProcessorArchitecture = paX64); + Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paX64); end; function IsIA64: boolean; begin - Result := Is64BitInstallMode and (ProcessorArchitecture = paIA64); + Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paIA64); end; function GetString(x86, x64, ia64: String): String; @@ -264,4 +304,11 @@ begin end else begin Result := ''; end; -end; \ No newline at end of file +end; + +procedure SetForceX86(value: boolean); +begin + isForcedX86 := value; +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/directxruntime.iss b/Greenshot/releases/innosetup/scripts/products/directxruntime.iss new file mode 100644 index 000000000..7e8811283 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/directxruntime.iss @@ -0,0 +1,31 @@ +; requires Windows 7, Windows Server 2003 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Vista, Windows XP Service Pack 2, Windows XP Service Pack 3 +; http://www.microsoft.com/en-US/download/details.aspx?id=35 + +[CustomMessages] +en.directxruntime_title=DirectX End-User Runtime +de.directxruntime_title=DirectX Endbenutzer Runtime + +en.directxruntime_size=1 MB - 95.6 MB +de.directxruntime_size=1 MB - 95,6 MB + +[Files] +;includes dxwebsetup.exe in setup executable so that we don't need to download it +Source: "src\dxwebsetup.exe"; Flags: dontcopy + +[Code] +const + directxruntime_url = 'http://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe'; + +procedure directxruntime(); +begin + ExtractTemporaryFile('dxwebsetup.exe'); + + AddProduct('dxwebsetup.exe', + '/Q', + CustomMessage('directxruntime_title'), + CustomMessage('directxruntime_size'), + directxruntime_url, + true, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx11.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx11.iss index 4f1fe7490..955469b6a 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx11.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx11.iss @@ -1,6 +1,6 @@ -// requires Windows 2000; Windows Server 2003 Service Pack 1 for Itanium-based Systems; Windows Server 2003 x64 editions; Windows Server 2008 Datacenter; Windows Server 2008 Enterprise; Windows Server 2008 for Itanium-based Systems; Windows Server 2008 Standard; Windows Vista Business; Windows Vista Enterprise; Windows Vista Home Basic; Windows Vista Home Premium; Windows Vista Starter; Windows Vista Ultimate; Windows XP; Windows XP Professional x64 Edition; Windows NT 4.0 Service Pack 6a -// requires internet explorer 5.0.1 or higher -// http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3 +; requires Windows 2000; Windows Server 2003 Service Pack 1 for Itanium-based Systems; Windows Server 2003 x64 editions; Windows Server 2008 Datacenter; Windows Server 2008 Enterprise; Windows Server 2008 for Itanium-based Systems; Windows Server 2008 Standard; Windows Vista Business; Windows Vista Enterprise; Windows Vista Home Basic; Windows Vista Home Premium; Windows Vista Starter; Windows Vista Ultimate; Windows XP; Windows XP Professional x64 Edition; Windows NT 4.0 Service Pack 6a +; requires internet explorer 5.0.1 or higher +; http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3 [CustomMessages] dotnetfx11_title=.NET Framework 1.1 @@ -8,7 +8,6 @@ dotnetfx11_title=.NET Framework 1.1 en.dotnetfx11_size=23.1 MB de.dotnetfx11_size=23,1 MB - [Code] const dotnetfx11_url = 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe'; @@ -21,5 +20,7 @@ begin CustomMessage('dotnetfx11_title'), CustomMessage('dotnetfx11_size'), dotnetfx11_url, - false, false); + false, false, false); end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx11lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx11lp.iss index 656e301be..a2415cfa2 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx11lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx11lp.iss @@ -8,7 +8,6 @@ de.dotnetfx11lp_lcid=1031 de.dotnetfx11lp_url=http://download.microsoft.com/download/6/8/2/6821e687-526a-4ef8-9a67-9a402ec5ac9e/langpack.exe - [Code] procedure dotnetfx11lp(); begin @@ -19,6 +18,8 @@ begin CustomMessage('dotnetfx11lp_title'), CustomMessage('dotnetfx11lp_size'), CustomMessage('dotnetfx11lp_url'), - false, false); + false, false, false); end; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx11sp1.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx11sp1.iss index de8296247..f7197d67e 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx11sp1.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx11sp1.iss @@ -1,6 +1,6 @@ -// requires TabletPC, Windows 2000, Windows 2000 Advanced Server, Windows 2000 Professional Edition , Windows 2000 Server, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows 2000 Service Pack 4, Windows Server 2003 Service Pack 1 for Itanium-based Systems, Windows Server 2003 x64 editions, Windows Server 2003, Datacenter Edition for 64-Bit Itanium-Based Systems, Windows Server 2003, Datacenter x64 Edition, Windows Server 2003, Enterprise Edition for Itanium-based Systems, Windows Server 2003, Enterprise x64 Edition, Windows Server 2003, Standard x64 Edition, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 for Itanium-based Systems, Windows Server 2008 Standard, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Enterprise, Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium, Windows Vista Home Premium 64-bit edition, Windows Vista Starter, Windows Vista Ultimate, Windows Vista Ultimate 64-bit edition, Windows XP, Windows XP Home Edition , Windows XP Media Center Edition, Windows XP Professional Edition , Windows XP Professional x64 Edition , Windows XP Service Pack 1, Windows XP Service Pack 2 -// requires internet explorer 5.0.1 or higher -// http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38 +; requires TabletPC, Windows 2000, Windows 2000 Advanced Server, Windows 2000 Professional Edition , Windows 2000 Server, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows 2000 Service Pack 4, Windows Server 2003 Service Pack 1 for Itanium-based Systems, Windows Server 2003 x64 editions, Windows Server 2003, Datacenter Edition for 64-Bit Itanium-Based Systems, Windows Server 2003, Datacenter x64 Edition, Windows Server 2003, Enterprise Edition for Itanium-based Systems, Windows Server 2003, Enterprise x64 Edition, Windows Server 2003, Standard x64 Edition, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 for Itanium-based Systems, Windows Server 2008 Standard, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Enterprise, Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium, Windows Vista Home Premium 64-bit edition, Windows Vista Starter, Windows Vista Ultimate, Windows Vista Ultimate 64-bit edition, Windows XP, Windows XP Home Edition , Windows XP Media Center Edition, Windows XP Professional Edition , Windows XP Professional x64 Edition , Windows XP Service Pack 1, Windows XP Service Pack 2 +; requires internet explorer 5.0.1 or higher +; http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38 [CustomMessages] dotnetfx11sp1_title=.NET Framework 1.1 Service Pack 1 @@ -8,7 +8,6 @@ dotnetfx11sp1_title=.NET Framework 1.1 Service Pack 1 en.dotnetfx11sp1_size=10.5 MB de.dotnetfx11sp1_size=10,5 MB - [Code] const dotnetfx11sp1_url = 'http://download.microsoft.com/download/8/b/4/8b4addd8-e957-4dea-bdb8-c4e00af5b94b/NDP1.1sp1-KB867460-X86.exe'; @@ -21,5 +20,7 @@ begin CustomMessage('dotnetfx11sp1_title'), CustomMessage('dotnetfx11sp1_size'), dotnetfx11sp1_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20.iss index d6deb7576..b87de5c9b 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20.iss @@ -1,15 +1,14 @@ -// requires Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2 -// requires internet explorer 5.0.1 or higher -// requires windows installer 2.0 on windows 98, ME -// requires Windows Installer 3.1 on windows 2000 or higher -// http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5 +; requires Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2 +; requires internet explorer 5.0.1 or higher +; requires windows installer 2.0 on windows 98, ME +; requires Windows Installer 3.1 on windows 2000 or higher +; http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5 [CustomMessages] dotnetfx20_title=.NET Framework 2.0 dotnetfx20_size=23 MB - [Code] const dotnetfx20_url = 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe'; @@ -24,5 +23,7 @@ begin CustomMessage('dotnetfx20_title'), CustomMessage('dotnetfx20_size'), GetString(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64), - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20lp.iss index a9b16ef9a..fb13e4103 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20lp.iss @@ -1,4 +1,4 @@ -//http://www.microsoft.com/downloads/details.aspx?familyid=92E0E1CE-8693-4480-84FA-7D85EEF59016 +; http://www.microsoft.com/downloads/details.aspx?familyid=92E0E1CE-8693-4480-84FA-7D85EEF59016 [CustomMessages] de.dotnetfx20lp_title=.NET Framework 2.0 Sprachpaket: Deutsch @@ -12,7 +12,6 @@ de.dotnetfx20lp_url=http://download.microsoft.com/download/2/9/7/29768238-56c3-4 de.dotnetfx20lp_url_x64=http://download.microsoft.com/download/2/e/f/2ef250ba-a868-4074-a4c9-249004866f87/langpack.exe de.dotnetfx20lp_url_ia64=http://download.microsoft.com/download/8/9/8/898c5670-5e74-41c4-82fc-68dd837af627/langpack.exe - [Code] procedure dotnetfx20lp(); begin @@ -23,6 +22,8 @@ begin CustomMessage('dotnetfx20lp_title'), CustomMessage('dotnetfx20lp_size'), CustomMessage('dotnetfx20lp_url' + GetArchitectureString()), - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1.iss index 5140c7ce6..6ee4ef540 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1.iss @@ -1,6 +1,6 @@ -// requires Windows 2000 Service Pack 4, Windows Server 2003, Windows XP Service Pack 2 -// requires KB 835732 on Windows 2000 Service Pack 4 -// http://www.microsoft.com/downloads/details.aspx?FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5 +; requires Windows 2000 Service Pack 4, Windows Server 2003, Windows XP Service Pack 2 +; requires KB 835732 on Windows 2000 Service Pack 4 +; http://www.microsoft.com/downloads/details.aspx?FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5 [CustomMessages] dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1 @@ -8,7 +8,6 @@ dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1 en.dotnetfx20sp1_size=23.6 MB de.dotnetfx20sp1_size=23,6 MB - [Code] const dotnetfx20sp1_url = 'http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe'; @@ -23,5 +22,7 @@ begin CustomMessage('dotnetfx20sp1_title'), CustomMessage('dotnetfx20sp1_size'), GetString(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64), - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1lp.iss index 3ba9ec92f..67111c59f 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp1lp.iss @@ -1,4 +1,4 @@ -//http://www.microsoft.com/downloads/details.aspx?FamilyID=1cc39ffe-a2aa-4548-91b3-855a2de99304 +; http://www.microsoft.com/downloads/details.aspx?FamilyID=1cc39ffe-a2aa-4548-91b3-855a2de99304 [CustomMessages] de.dotnetfx20sp1lp_title=.NET Framework 2.0 SP1 Sprachpaket: Deutsch @@ -12,7 +12,6 @@ de.dotnetfx20sp1lp_url=http://download.microsoft.com/download/8/a/a/8aab7e6a-5e5 de.dotnetfx20sp1lp_url_x64=http://download.microsoft.com/download/1/4/2/1425872f-c564-4ab2-8c9e-344afdaecd44/NetFx20SP1_x64de.exe de.dotnetfx20sp1lp_url_ia64=http://download.microsoft.com/download/a/0/b/a0bef431-19d8-433c-9f42-6e2824a8cb90/NetFx20SP1_ia64de.exe - [Code] procedure dotnetfx20sp1lp(); begin @@ -23,6 +22,8 @@ begin CustomMessage('dotnetfx20sp1lp_title'), CustomMessage('dotnetfx20sp1lp_size'), CustomMessage('dotnetfx20sp1lp_url' + GetArchitectureString()), - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2.iss index 2d5b45dde..0a9e48e5a 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2.iss @@ -1,4 +1,4 @@ -//http://www.microsoft.com/downloads/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F +; http://www.microsoft.com/downloads/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F [CustomMessages] dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2 @@ -6,7 +6,6 @@ dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2 en.dotnetfx20sp2_size=24 MB - 52 MB de.dotnetfx20sp2_size=24 MB - 52 MB - [Code] const dotnetfx20sp2_url = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe'; @@ -21,5 +20,7 @@ begin CustomMessage('dotnetfx20sp2_title'), CustomMessage('dotnetfx20sp2_size'), GetString(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64), - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2lp.iss index 86771bdca..b8aad1565 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx20sp2lp.iss @@ -1,4 +1,4 @@ -//http://www.microsoft.com/downloads/details.aspx?FamilyID=c69789e0-a4fa-4b2e-a6b5-3b3695825992 +; http://www.microsoft.com/downloads/details.aspx?FamilyID=c69789e0-a4fa-4b2e-a6b5-3b3695825992 [CustomMessages] de.dotnetfx20sp2lp_title=.NET Framework 2.0 SP2 Sprachpaket: Deutsch @@ -12,7 +12,6 @@ de.dotnetfx20sp2lp_url=http://download.microsoft.com/download/0/b/1/0b175c8e-34b de.dotnetfx20sp2lp_url_x64=http://download.microsoft.com/download/4/e/c/4ec67a11-879d-4550-9c25-fd9ab4261b46/netfx20sp2_x64de.exe de.dotnetfx20sp2lp_url_ia64=http://download.microsoft.com/download/a/3/3/a3349a2d-36e4-4797-8297-4394e6fbd677/NetFx20SP2_ia64de.exe - [Code] procedure dotnetfx20sp2lp(); begin @@ -23,6 +22,8 @@ begin CustomMessage('dotnetfx20sp2lp_title'), CustomMessage('dotnetfx20sp2lp_size'), CustomMessage('dotnetfx20sp2lp_url' + GetArchitectureString()), - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx35.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx35.iss index ed757b2fd..0af1bb6e3 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx35.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx35.iss @@ -1,14 +1,13 @@ -// requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 -// requires Windows Installer 3.1 -// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below -// http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6 +; requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 +; requires Windows Installer 3.1 +; WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below +; http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6 [CustomMessages] dotnetfx35_title=.NET Framework 3.5 dotnetfx35_size=3 MB - 197 MB - [Code] const dotnetfx35_url = 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe'; @@ -16,10 +15,12 @@ const procedure dotnetfx35(); begin if (netfxinstalled(NetFx35, '') = false) then - AddProduct('dotnetfx35' + GetArchitectureString() + '.exe', + AddProduct('dotnetfx35.exe', '/lang:enu /passive /norestart', CustomMessage('dotnetfx35_title'), CustomMessage('dotnetfx35_size'), dotnetfx35_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx35lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx35lp.iss index 38a036c54..818e7eebb 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx35lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx35lp.iss @@ -8,17 +8,18 @@ de.dotnetfx35lp_lcid=1031 de.dotnetfx35lp_url=http://download.microsoft.com/download/d/1/e/d1e617c3-c7f4-467e-a7de-af832450efd3/dotnetfx35langpack_x86de.exe - [Code] procedure dotnetfx35lp(); begin if (ActiveLanguage() <> 'en') then begin if (not netfxinstalled(NetFx35, CustomMessage('dotnetfx35lp_lcid'))) then - AddProduct('dotnetfx35' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe', + AddProduct('dotnetfx35_' + ActiveLanguage() + '.exe', '/lang:enu /passive /norestart', CustomMessage('dotnetfx35lp_title'), CustomMessage('dotnetfx35lp_size'), CustomMessage('dotnetfx35lp_url'), - false, false); + false, false, false); end; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1.iss index 3574d51c4..5eee9f7c7 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1.iss @@ -1,7 +1,7 @@ -// requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 -// requires Windows Installer 3.1 -// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below -// http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7 +; requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 +; requires Windows Installer 3.1 +; WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below +; http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7 [CustomMessages] dotnetfx35sp1_title=.NET Framework 3.5 Service Pack 1 @@ -9,7 +9,6 @@ dotnetfx35sp1_title=.NET Framework 3.5 Service Pack 1 en.dotnetfx35sp1_size=3 MB - 232 MB de.dotnetfx35sp1_size=3 MB - 232 MB - [Code] const dotnetfx35sp1_url = 'http://download.microsoft.com/download/0/6/1/061f001c-8752-4600-a198-53214c69b51f/dotnetfx35setup.exe'; @@ -17,10 +16,12 @@ const procedure dotnetfx35sp1(); begin if (netfxspversion(NetFx35, '') < 1) then - AddProduct('dotnetfx35sp1' + GetArchitectureString() + '.exe', + AddProduct('dotnetfx35sp1.exe', '/lang:enu /passive /norestart', CustomMessage('dotnetfx35sp1_title'), CustomMessage('dotnetfx35sp1_size'), dotnetfx35sp1_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1lp.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1lp.iss index 518cd22ed..38319504e 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1lp.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx35sp1lp.iss @@ -8,17 +8,18 @@ de.dotnetfx35sp1lp_lcid=1031 de.dotnetfx35sp1lp_url=http://download.microsoft.com/download/d/7/2/d728b7b9-454b-4b57-8270-45dac441b0ec/dotnetfx35langpack_x86de.exe - [Code] procedure dotnetfx35sp1lp(); begin if (ActiveLanguage() <> 'en') then begin if (netfxspversion(NetFx35, CustomMessage('dotnetfx35sp1lp_lcid')) < 1) then - AddProduct('dotnetfx35sp1' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe', + AddProduct('dotnetfx35sp1_' + ActiveLanguage() + '.exe', '/lang:enu /passive /norestart', CustomMessage('dotnetfx35sp1lp_title'), CustomMessage('dotnetfx35sp1lp_size'), CustomMessage('dotnetfx35sp1lp_url'), - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx40client.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx40client.iss index 05058a99e..db6441cb4 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx40client.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx40client.iss @@ -1,8 +1,8 @@ -// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3 -// requires Windows Installer 3.1 -// requires Internet Explorer 5.01 -// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below -// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab +; requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3 +; requires Windows Installer 3.1 +; requires Internet Explorer 5.01 +; WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below +; http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab [CustomMessages] dotnetfx40client_title=.NET Framework 4.0 Client @@ -10,9 +10,8 @@ dotnetfx40client_title=.NET Framework 4.0 Client dotnetfx40client_size=3 MB - 197 MB ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx -en.dotnetfx40client_lcid='' -de.dotnetfx40client_lcid='/lcid 1031 ' - +en.dotnetfx40client_lcid= +de.dotnetfx40client_lcid=/lcid 1031 [Code] const @@ -22,9 +21,11 @@ procedure dotnetfx40client(); begin if (not netfxinstalled(NetFx40Client, '')) then AddProduct('dotNetFx40_Client_setup.exe', - CustomMessage('dotnetfx40client_lcid') + '/passive /norestart', + CustomMessage('dotnetfx40client_lcid') + ' /passive /norestart', CustomMessage('dotnetfx40client_title'), CustomMessage('dotnetfx40client_size'), dotnetfx40client_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx40full.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx40full.iss index c0d752812..917bc2c5b 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfx40full.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx40full.iss @@ -1,8 +1,8 @@ -// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3 -// requires Windows Installer 3.1 -// requires Internet Explorer 5.01 -// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below -// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992 +; requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3 +; requires Windows Installer 3.1 +; requires Internet Explorer 5.01 +; WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below +; http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992 [CustomMessages] dotnetfx40full_title=.NET Framework 4.0 Full @@ -10,9 +10,8 @@ dotnetfx40full_title=.NET Framework 4.0 Full dotnetfx40full_size=3 MB - 197 MB ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx -en.dotnetfx40full_lcid='' -de.dotnetfx40full_lcid='/lcid 1031 ' - +en.dotnetfx40full_lcid= +de.dotnetfx40full_lcid=/lcid 1031 [Code] const @@ -22,9 +21,11 @@ procedure dotnetfx40full(); begin if (not netfxinstalled(NetFx40Full, '')) then AddProduct('dotNetFx40_Full_setup.exe', - CustomMessage('dotnetfx40full_lcid') + '/q /passive /norestart', + CustomMessage('dotnetfx40full_lcid') + ' /passive /norestart', CustomMessage('dotnetfx40full_title'), CustomMessage('dotnetfx40full_size'), dotnetfx40full_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss new file mode 100644 index 000000000..25ff2029a --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss @@ -0,0 +1,29 @@ +; requires Windows 10, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Server 2012 R2, Windows Vista Service Pack 2 +; WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below +; https://www.microsoft.com/en-US/download/details.aspx?id=49982 + +[CustomMessages] +dotnetfx46_title=.NET Framework 4.6.1 + +dotnetfx46_size=1 MB - 65 MB + +;http://www.microsoft.com/globaldev/reference/lcid-all.mspx +en.dotnetfx46_lcid= +de.dotnetfx46_lcid=/lcid 1031 + +[Code] +const + dotnetfx461_url = 'http://download.microsoft.com/download/3/5/9/35980F81-60F4-4DE3-88FC-8F962B97253B/NDP461-KB3102438-Web.exe'; + +procedure dotnetfx46(minVersion: integer); +begin + if (not netfxinstalled(NetFx4x, '') or (netfxspversion(NetFx4x, '') < minVersion)) then + AddProduct('dotnetfx46.exe', + CustomMessage('dotnetfx46_lcid') + ' /passive /norestart', + CustomMessage('dotnetfx46_title'), + CustomMessage('dotnetfx46_size'), + dotnetfx461_url, + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/dotnetfxversion.iss b/Greenshot/releases/innosetup/scripts/products/dotnetfxversion.iss index 25c3433f6..613fdf19a 100644 --- a/Greenshot/releases/innosetup/scripts/products/dotnetfxversion.iss +++ b/Greenshot/releases/innosetup/scripts/products/dotnetfxversion.iss @@ -1,6 +1,6 @@ [Code] type - NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full); + NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full, NetFx4x); const netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\'; @@ -30,6 +30,12 @@ begin RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion); NetFx40Full: RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion); + NetFx4x: + begin + RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion); + Result := (regVersion >= 378389); // 4.5.0+ + Exit; + end; end; Result := (regVersion <> 0); end; @@ -64,6 +70,25 @@ begin NetFx40Full: if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then regVersion := -1; + NetFx4x: + if (RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion)) then begin + if (regVersion >= 394747) then + regVersion := 62 // 4.6.2+ + else if (regVersion >= 394254) then + regVersion := 61 // 4.6.1+ + else if (regVersion >= 393295) then + regVersion := 60 // 4.6+ + else if (regVersion >= 379893) then + regVersion := 52 // 4.5.2+ + else if (regVersion >= 378675) then + regVersion := 51 // 4.5.1+ + else if (regVersion >= 378389) then + regVersion := 50 // 4.5.0+ + else + regVersion := -1; + end; end; Result := regVersion; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/fileversion.iss b/Greenshot/releases/innosetup/scripts/products/fileversion.iss index 672486237..66d5c912b 100644 --- a/Greenshot/releases/innosetup/scripts/products/fileversion.iss +++ b/Greenshot/releases/innosetup/scripts/products/fileversion.iss @@ -21,3 +21,5 @@ begin else Result := '0'; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/ie6.iss b/Greenshot/releases/innosetup/scripts/products/ie6.iss index 99486c23e..954940b7e 100644 --- a/Greenshot/releases/innosetup/scripts/products/ie6.iss +++ b/Greenshot/releases/innosetup/scripts/products/ie6.iss @@ -1,6 +1,6 @@ -// requires Windows 2000; Windows 98; Windows ME; Windows NT; Windows XP Service Pack 1 -// WARNING: express setup (downloads and installs the components depending on your OS) -// http://www.microsoft.com/downloads/details.aspx?familyid=1E1550CB-5E5D-48F5-B02B-20B602228DE6 +; requires Windows 2000; Windows 98; Windows ME; Windows NT; Windows XP Service Pack 1 +; WARNING: express setup (downloads and installs the components depending on your OS) +; http://www.microsoft.com/downloads/details.aspx?familyid=1E1550CB-5E5D-48F5-B02B-20B602228DE6 [CustomMessages] ie6_title=Internet Explorer 6 @@ -8,21 +8,22 @@ ie6_title=Internet Explorer 6 en.ie6_size=1 MB - 77.5 MB de.ie6_size=1 MB - 77,5 MB - [Code] const ie6_url = 'http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/ie6setup.exe'; -procedure ie6(MinVersion: string); +procedure ie6(minVersion: string); var version: string; begin RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version); - if (compareversion(version, MinVersion) < 0) then + if (compareversion(version, minVersion) < 0) then AddProduct('ie6.exe', '/q:a /C:"setup /QNT"', CustomMessage('ie6_title'), CustomMessage('ie6_size'), ie6_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/iis.iss b/Greenshot/releases/innosetup/scripts/products/iis.iss index 6a8f973ae..0e4c31d47 100644 --- a/Greenshot/releases/innosetup/scripts/products/iis.iss +++ b/Greenshot/releases/innosetup/scripts/products/iis.iss @@ -1,7 +1,6 @@ [CustomMessages] iis_title=Internet Information Services (IIS) - [Code] function iis(): boolean; begin @@ -9,4 +8,6 @@ begin MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('iis_title')]), mbError, MB_OK) else Result := true; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/jet4sp8.iss b/Greenshot/releases/innosetup/scripts/products/jet4sp8.iss index 682a3d98b..5b76e5ab8 100644 --- a/Greenshot/releases/innosetup/scripts/products/jet4sp8.iss +++ b/Greenshot/releases/innosetup/scripts/products/jet4sp8.iss @@ -1,4 +1,4 @@ -// http://support.microsoft.com/kb/239114 +; http://support.microsoft.com/kb/239114 [CustomMessages] jet4sp8_title=Jet 4 @@ -6,19 +6,20 @@ jet4sp8_title=Jet 4 en.jet4sp8_size=3.7 MB de.jet4sp8_size=3,7 MB - [Code] const jet4sp8_url = 'http://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/Jet40SP8_9xNT.exe'; -procedure jet4sp8(MinVersion: string); +procedure jet4sp8(minVersion: string); begin //check for Jet4 Service Pack 8 installation - if (compareversion(fileversion(ExpandConstant('{sys}{\}msjet40.dll')), MinVersion) < 0) then + if (compareversion(fileversion(ExpandConstant('{sys}{\}msjet40.dll')), minVersion) < 0) then AddProduct('jet4sp8.exe', '/q:a /c:"install /qb /l"', CustomMessage('jet4sp8_title'), CustomMessage('jet4sp8_size'), jet4sp8_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/kb835732.iss b/Greenshot/releases/innosetup/scripts/products/kb835732.iss index af0ea162d..13a0a183d 100644 --- a/Greenshot/releases/innosetup/scripts/products/kb835732.iss +++ b/Greenshot/releases/innosetup/scripts/products/kb835732.iss @@ -1,6 +1,6 @@ -// required by .NET Framework 2.0 Service Pack 1 on Windows 2000 Service Pack 2-4 -// http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx -// http://www.microsoft.com/downloads/details.aspx?FamilyId=0692C27E-F63A-414C-B3EB-D2342FBB6C00 +; required by .NET Framework 2.0 Service Pack 1 on Windows 2000 Service Pack 2-4 +; http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx +; http://www.microsoft.com/downloads/details.aspx?FamilyId=0692C27E-F63A-414C-B3EB-D2342FBB6C00 [CustomMessages] en.kb835732_title=Windows 2000 Security Update (KB835732) @@ -9,7 +9,6 @@ de.kb835732_title=Windows 2000 Sicherheitsupdate (KB835732) en.kb835732_size=6.8 MB de.kb835732_size=6,8 MB - [Code] const kb835732_url = 'http://download.microsoft.com/download/f/a/a/faa796aa-399d-437a-9284-c3536e9f2e6e/Windows2000-KB835732-x86-ENU.EXE'; @@ -19,10 +18,12 @@ begin if (exactwinversion(5, 0) and (minwinspversion(5, 0, 2) and maxwinspversion(5, 0, 4))) then begin if (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB835732\Filelist')) then AddProduct('kb835732.exe', - '/q:a /c:"install /q"', + '/passive /norestart', CustomMessage('kb835732_title'), CustomMessage('kb835732_size'), kb835732_url, - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/mdac28.iss b/Greenshot/releases/innosetup/scripts/products/mdac28.iss index dfd3191d9..63d5b88ba 100644 --- a/Greenshot/releases/innosetup/scripts/products/mdac28.iss +++ b/Greenshot/releases/innosetup/scripts/products/mdac28.iss @@ -4,22 +4,23 @@ mdac28_title=Microsoft Data Access Components 2.8 en.mdac28_size=5.4 MB de.mdac28_size=5,4 MB - [Code] const mdac28_url = 'http://download.microsoft.com/download/c/d/f/cdfd58f1-3973-4c51-8851-49ae3777586f/MDAC_TYP.EXE'; -procedure mdac28(MinVersion: string); +procedure mdac28(minVersion: string); var version: string; begin //check for MDAC installation RegQueryStringValue(HKLM, 'Software\Microsoft\DataAccess', 'FullInstallVer', version); - if (compareversion(version, MinVersion) < 0) then + if (compareversion(version, minVersion) < 0) then AddProduct('mdac28.exe', '/q:a /c:"install /qb /l"', CustomMessage('mdac28_title'), CustomMessage('mdac28_size'), mdac28_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/msi20.iss b/Greenshot/releases/innosetup/scripts/products/msi20.iss index a66965a65..e44f74b3d 100644 --- a/Greenshot/releases/innosetup/scripts/products/msi20.iss +++ b/Greenshot/releases/innosetup/scripts/products/msi20.iss @@ -4,19 +4,20 @@ msi20_title=Windows Installer 2.0 en.msi20_size=1.7 MB de.msi20_size=1,7 MB - [Code] const msi20_url = 'http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe'; -procedure msi20(MinVersion: string); +procedure msi20(minVersion: string); begin // Check for required Windows Installer 2.0 on Windows 98 and ME - if (IsX86() and maxwinversion(4, 9) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then + if (IsX86() and maxwinversion(4, 9) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), minVersion) < 0)) then AddProduct('msi20.exe', '/q:a /c:"msiinst /delayrebootq"', CustomMessage('msi20_title'), CustomMessage('msi20_size'), msi20_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/msi31.iss b/Greenshot/releases/innosetup/scripts/products/msi31.iss index 13efb89ec..0ea175dd9 100644 --- a/Greenshot/releases/innosetup/scripts/products/msi31.iss +++ b/Greenshot/releases/innosetup/scripts/products/msi31.iss @@ -4,19 +4,20 @@ msi31_title=Windows Installer 3.1 en.msi31_size=2.5 MB de.msi31_size=2,5 MB - [Code] const msi31_url = 'http://download.microsoft.com/download/1/4/7/147ded26-931c-4daf-9095-ec7baf996f46/WindowsInstaller-KB893803-v2-x86.exe'; -procedure msi31(MinVersion: string); +procedure msi31(minVersion: string); begin // Check for required Windows Installer 3.0 on Windows 2000 or higher - if (IsX86() and minwinversion(5, 0) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then + if (IsX86() and minwinversion(5, 0) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), minVersion) < 0)) then AddProduct('msi31.exe', '/passive /norestart', CustomMessage('msi31_title'), CustomMessage('msi31_size'), msi31_url, - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/msi45.iss b/Greenshot/releases/innosetup/scripts/products/msi45.iss index 8ed7932fb..e97de18a9 100644 --- a/Greenshot/releases/innosetup/scripts/products/msi45.iss +++ b/Greenshot/releases/innosetup/scripts/products/msi45.iss @@ -10,36 +10,37 @@ de.msi45win52_size=3,0 MB en.msi45win51_size=3.2 MB de.msi45win51_size=3,2 MB - [Code] const msi45win60_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x86.msu'; msi45win52_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x86.exe'; msi45win51_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe'; -procedure msi45(MinVersion: string); +procedure msi45(minVersion: string); begin - if (IsX86() and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then begin + if (IsX86() and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), minVersion) < 0)) then begin if minwinversion(6, 0) then AddProduct('msi45_60.msu', '/quiet /norestart', CustomMessage('msi45_title'), CustomMessage('msi45win60_size'), msi45win60_url, - false, false) + false, false, false) else if minwinversion(5, 2) then AddProduct('msi45_52.exe', '/quiet /norestart', CustomMessage('msi45_title'), CustomMessage('msi45win52_size'), msi45win52_url, - false, false) + false, false, false) else if minwinversion(5, 1) then AddProduct('msi45_51.exe', '/quiet /norestart', CustomMessage('msi45_title'), CustomMessage('msi45win51_size'), msi45win51_url, - false, false); + false, false, false); end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/msiproduct.iss b/Greenshot/releases/innosetup/scripts/products/msiproduct.iss new file mode 100644 index 000000000..b5135c6fb --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/msiproduct.iss @@ -0,0 +1,25 @@ +[Code] +#IFDEF UNICODE + #DEFINE AW "W" +#ELSE + #DEFINE AW "A" +#ENDIF + +type + INSTALLSTATE = Longint; +const + INSTALLSTATE_INVALIDARG = -2; // An invalid parameter was passed to the function. + INSTALLSTATE_UNKNOWN = -1; // The product is neither advertised or installed. + INSTALLSTATE_ADVERTISED = 1; // The product is advertised but not installed. + INSTALLSTATE_ABSENT = 2; // The product is installed for a different user. + INSTALLSTATE_DEFAULT = 5; // The product is installed for the current user. + +function MsiQueryProductState(szProduct: string): INSTALLSTATE; +external 'MsiQueryProductState{#AW}@msi.dll stdcall'; + +function msiproduct(const ProductID: string): boolean; +begin + Result := MsiQueryProductState(ProductID) = INSTALLSTATE_DEFAULT; +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/sql2005express.iss b/Greenshot/releases/innosetup/scripts/products/sql2005express.iss index 9a6f626aa..626aebeca 100644 --- a/Greenshot/releases/innosetup/scripts/products/sql2005express.iss +++ b/Greenshot/releases/innosetup/scripts/products/sql2005express.iss @@ -1,7 +1,7 @@ -// SQL Server Express is supported on x64 and EMT64 systems in Windows On Windows (WOW). SQL Server Express is not supported on IA64 systems -// requires Microsoft .NET Framework 2.0 or later -// SQLEXPR32.EXE is a smaller package that can be used to install SQL Server Express on 32-bit operating systems only. The larger SQLEXPR.EXE package supports installing onto both 32-bit and 64-bit (WOW install) operating systems. There is no other difference between these packages. -// http://www.microsoft.com/download/en/details.aspx?id=15291 +; SQL Server Express is supported on x64 and EMT64 systems in Windows On Windows (WOW). SQL Server Express is not supported on IA64 systems +; requires Microsoft .NET Framework 2.0 or later +; SQLEXPR32.EXE is a smaller package that can be used to install SQL Server Express on 32-bit operating systems only. The larger SQLEXPR.EXE package supports installing onto both 32-bit and 64-bit (WOW install) operating systems. There is no other difference between these packages. +; http://www.microsoft.com/download/en/details.aspx?id=15291 [CustomMessages] sql2005express_title=SQL Server 2005 Express SP3 @@ -12,7 +12,6 @@ de.sql2005express_size=38,1 MB en.sql2005express_size_x64=58.1 MB de.sql2005express_size_x64=58,1 MB - [Code] const sql2005express_url = 'http://download.microsoft.com/download/4/B/E/4BED5810-C8C0-4697-BDC3-DBC114B8FF6D/SQLEXPR32_NLA.EXE'; @@ -26,17 +25,19 @@ begin //RTM: 9.00.1399.06 //Service Pack 1: 9.1.2047.00 //Service Pack 2: 9.2.3042.00 - // Newer detection method required for SP3 and x64 + // TODO: Newer detection method required for SP3 and x64 //Service Pack 3: 9.00.4035.00 //RegQueryDWordValue(HKLM, 'Software\Microsoft\Microsoft SQL Server\90\DTS\Setup', 'Install', version); RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version); if (version < '9.00.4035') then begin - if (not isIA64()) then + if (not IsIA64()) then AddProduct('sql2005express' + GetArchitectureString() + '.exe', '/qb ADDLOCAL=ALL INSTANCENAME=SQLEXPRESS', CustomMessage('sql2005express_title'), CustomMessage('sql2005express_size' + GetArchitectureString()), GetString(sql2005express_url, sql2005express_url_x64, ''), - false, false); + false, false, false); end; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/sql2008express.iss b/Greenshot/releases/innosetup/scripts/products/sql2008express.iss index 154d1fd5c..9e59b4a09 100644 --- a/Greenshot/releases/innosetup/scripts/products/sql2008express.iss +++ b/Greenshot/releases/innosetup/scripts/products/sql2008express.iss @@ -1,9 +1,9 @@ -// requires Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP -// requires Microsoft .NET Framework 3.5 SP 1 or later -// requires Windows Installer 4.5 or later -// SQL Server Express is supported on x64 and EMT64 systems in Windows On Windows (WOW). SQL Server Express is not supported on IA64 systems -// SQLEXPR32.EXE is a smaller package that can be used to install SQL Server Express on 32-bit operating systems only. The larger SQLEXPR.EXE package supports installing onto both 32-bit and 64-bit (WOW install) operating systems. There is no other difference between these packages. -// http://www.microsoft.com/download/en/details.aspx?id=3743 +; requires Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP +; requires Microsoft .NET Framework 3.5 SP 1 or later +; requires Windows Installer 4.5 or later +; SQL Server Express is supported on x64 and EMT64 systems in Windows On Windows (WOW). SQL Server Express is not supported on IA64 systems +; SQLEXPR32.EXE is a smaller package that can be used to install SQL Server Express on 32-bit operating systems only. The larger SQLEXPR.EXE package supports installing onto both 32-bit and 64-bit (WOW install) operating systems. There is no other difference between these packages. +; http://www.microsoft.com/download/en/details.aspx?id=3743 [CustomMessages] sql2008expressr2_title=SQL Server 2008 Express R2 @@ -14,7 +14,6 @@ de.sql2008expressr2_size=58,2 MB en.sql2008expressr2_size_x64=74.1 MB de.sql2008expressr2_size_x64=74,1 MB - [Code] const sql2008expressr2_url = 'http://download.microsoft.com/download/5/1/A/51A153F6-6B08-4F94-A7B2-BA1AD482BC75/SQLEXPR32_x86_ENU.exe'; @@ -28,12 +27,14 @@ begin // making Express unnecessary. RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version); if (compareversion(version, '10.5') < 0) then begin - if (not isIA64()) then + if (not IsIA64()) then AddProduct('sql2008expressr2' + GetArchitectureString() + '.exe', - '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=All /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="builtin\administrators"', + '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=All /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="builtin\administrators"', CustomMessage('sql2008expressr2_title'), CustomMessage('sql2008expressr2_size' + GetArchitectureString()), GetString(sql2008expressr2_url, sql2008expressr2_url_x64, ''), - false, false); + false, false, false); end; end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/sqlcompact35sp2.iss b/Greenshot/releases/innosetup/scripts/products/sqlcompact35sp2.iss index 74762ae3a..b1b889def 100644 --- a/Greenshot/releases/innosetup/scripts/products/sqlcompact35sp2.iss +++ b/Greenshot/releases/innosetup/scripts/products/sqlcompact35sp2.iss @@ -4,7 +4,6 @@ sqlcompact35sp2_title=SQL Server Compact 3.5 Service Pack 2 en.sqlcompact35sp2_size=5.3 MB de.sqlcompact35sp2_size=5,3 MB - [Code] const sqlcompact35sp2_url = 'http://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe'; @@ -17,5 +16,7 @@ begin CustomMessage('sqlcompact35sp2_title'), CustomMessage('sqlcompact35sp2_size'), sqlcompact35sp2_url, - false, false); + false, false, false); end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/stringversion.iss b/Greenshot/releases/innosetup/scripts/products/stringversion.iss index 7ee85821e..9379d1136 100644 --- a/Greenshot/releases/innosetup/scripts/products/stringversion.iss +++ b/Greenshot/releases/innosetup/scripts/products/stringversion.iss @@ -1,3 +1,4 @@ +[Code] function stringtoversion(var temp: String): Integer; var part: String; @@ -27,11 +28,18 @@ var begin num1 := stringtoversion(x); num2 := stringtoversion(y); - if (num1 = -1) or (num2 = -1) then begin + if (num1 = -1) and (num2 = -1) then begin Result := 0; Exit; end; + if (num1 < 0) then begin + num1 := 0; + end; + if (num2 < 0) then begin + num2 := 0; + end; + if (num1 < num2) then begin Result := -1; end else if (num1 > num2) then begin @@ -50,3 +58,5 @@ begin temp2 := versionB; Result := compareinnerversion(temp1, temp2); end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2005.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2005.iss new file mode 100644 index 000000000..0425d9777 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2005.iss @@ -0,0 +1,40 @@ +; requires Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2 +; requires Windows Installer 3.0 +; http://www.microsoft.com/en-us/download/details.aspx?id=3387 + +[CustomMessages] +vcredist2005_title=Visual C++ 2005 Redistributable +vcredist2005_title_x64=Visual C++ 2005 64-Bit Redistributable +vcredist2005_title_ia64=Visual C++ 2005 Itanium Redistributable + +en.vcredist2005_size=2.6 MB +de.vcredist2005_size=2,6 MB + +en.vcredist2005_size_x64=4.1 MB +de.vcredist2005_size_x64=4,1 MB + +en.vcredist2005_size_ia64=8.8 MB +de.vcredist2005_size_ia64=8,8 MB + +[Code] +const + vcredist2005_url = 'http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe'; + vcredist2005_url_x64 = 'http://download.microsoft.com/download/9/1/4/914851c6-9141-443b-bdb4-8bad3a57bea9/vcredist_x64.exe'; + vcredist2005_url_ia64 = 'http://download.microsoft.com/download/8/1/6/816129e4-7f2f-4ba6-b065-684223e2fe1e/vcredist_IA64.exe'; + + vcredist2005_productcode = '{A49F249F-0C91-497F-86DF-B2585E8E76B7}'; + vcredist2005_productcode_x64 = '{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}'; + vcredist2005_productcode_ia64 = '{03ED71EA-F531-4927-AABD-1C31BCE8E187}'; + +procedure vcredist2005(); +begin + if (not msiproduct(GetString(vcredist2005_productcode, vcredist2005_productcode_x64, vcredist2005_productcode_ia64))) then + AddProduct('vcredist2005' + GetArchitectureString() + '.exe', + '/q:a /c:"install /qb /l', + CustomMessage('vcredist2005_title' + GetArchitectureString()), + CustomMessage('vcredist2005_size' + GetArchitectureString()), + GetString(vcredist2005_url, vcredist2005_url_x64, vcredist2005_url_ia64), + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2008.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2008.iss new file mode 100644 index 000000000..b29ba0b73 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2008.iss @@ -0,0 +1,40 @@ +; requires Windows 2000 Service Pack 4, Windows Server 2003, Windows Vista, Windows XP +; requires Windows Installer 3.0 +; http://www.microsoft.com/en-us/download/details.aspx?id=29 + +[CustomMessages] +vcredist2008_title=Visual C++ 2008 Redistributable +vcredist2008_title_x64=Visual C++ 2008 64-Bit Redistributable +vcredist2008_title_ia64=Visual C++ 2008 Itanium Redistributable + +en.vcredist2008_size=1.7 MB +de.vcredist2008_size=1,7 MB + +en.vcredist2008_size_x64=2.3 MB +de.vcredist2008_size_x64=2,3 MB + +en.vcredist2008_size_ia64=4.0 MB +de.vcredist2008_size_ia64=4,0 MB + +[Code] +const + vcredist2008_url = 'http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe'; + vcredist2008_url_x64 = 'http://download.microsoft.com/download/d/2/4/d242c3fb-da5a-4542-ad66-f9661d0a8d19/vcredist_x64.exe'; + vcredist2008_url_ia64 = 'http://download.microsoft.com/download/a/1/a/a1a4996b-ed78-4c2b-9589-8edd81b8df39/vcredist_IA64.exe'; + + vcredist2008_productcode = '{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}'; + vcredist2008_productcode_x64 = '{350AA351-21FA-3270-8B7A-835434E766AD}'; + vcredist2008_productcode_ia64 = '{2B547B43-DB50-3139-9EBE-37D419E0F5FA}'; + +procedure vcredist2008(); +begin + if (not msiproduct(GetString(vcredist2008_productcode, vcredist2008_productcode_x64, vcredist2008_productcode_ia64))) then + AddProduct('vcredist2008' + GetArchitectureString() + '.exe', + '/q', + CustomMessage('vcredist2008_title' + GetArchitectureString()), + CustomMessage('vcredist2008_size' + GetArchitectureString()), + GetString(vcredist2008_url, vcredist2008_url_x64, vcredist2008_url_ia64), + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2010.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2010.iss index 5732fff76..3d7e58a7e 100644 --- a/Greenshot/releases/innosetup/scripts/products/vcredist2010.iss +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2010.iss @@ -1,10 +1,10 @@ -// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3 -// requires Windows Installer 3.1 or later -// requires Internet Explorer 5.01 or later -// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992 +; requires Windows 7, Windows Server 2003 R2 (32-Bit x86), Windows Server 2003 Service Pack 2, Windows Server 2008 R2, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2, Windows XP Service Pack 3 +; http://www.microsoft.com/en-us/download/details.aspx?id=5555 [CustomMessages] vcredist2010_title=Visual C++ 2010 Redistributable +vcredist2010_title_x64=Visual C++ 2010 64-Bit Redistributable +vcredist2010_title_ia64=Visual C++ 2010 Itanium Redistributable en.vcredist2010_size=4.8 MB de.vcredist2010_size=4,8 MB @@ -15,28 +15,25 @@ de.vcredist2010_size_x64=5,5 MB en.vcredist2010_size_ia64=2.2 MB de.vcredist2010_size_ia64=2,2 MB -;http://www.microsoft.com/globaldev/reference/lcid-all.mspx -en.vcredist2010_lcid='' -de.vcredist2010_lcid='/lcid 1031 ' - - [Code] const vcredist2010_url = 'http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe'; vcredist2010_url_x64 = 'http://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe'; vcredist2010_url_ia64 = 'http://download.microsoft.com/download/3/3/A/33A75193-2CBC-424E-A886-287551FF1EB5/vcredist_IA64.exe'; -procedure vcredist2010(); -var - version: cardinal; -begin - RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version); + vcredist2010_productcode = '{196BB40D-1578-3D01-B289-BEFC77A11A1E}'; + vcredist2010_productcode_x64 = '{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}'; + vcredist2010_productcode_ia64 = '{C1A35166-4301-38E9-BA67-02823AD72A1B}'; - if (version <> 1) then +procedure vcredist2010(); +begin + if (not msiproduct(GetString(vcredist2010_productcode, vcredist2010_productcode_x64, vcredist2010_productcode_ia64))) then AddProduct('vcredist2010' + GetArchitectureString() + '.exe', - CustomMessage('vcredist2010_lcid') + '/passive /norestart', - CustomMessage('vcredist2010_title'), + '/passive /norestart', + CustomMessage('vcredist2010_title' + GetArchitectureString()), CustomMessage('vcredist2010_size' + GetArchitectureString()), GetString(vcredist2010_url, vcredist2010_url_x64, vcredist2010_url_ia64), - false, false); -end; \ No newline at end of file + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2010sp1.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2010sp1.iss new file mode 100644 index 000000000..91dc8ed7e --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2010sp1.iss @@ -0,0 +1,41 @@ +; Requires Windows 7, Windows Server 2003 R2 (32-bit x86), Windows Server 2003 Service Pack 2, Windows Server 2008 R2, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2, Windows XP Service Pack 3 +; x86 download page: https://www.microsoft.com/en-us/download/details.aspx?id=8328 +; x64 download page: https://www.microsoft.com/en-us/download/details.aspx?id=13523 +; IA64 download page: https://www.microsoft.com/en-us/download/details.aspx?id=21051 + +[CustomMessages] +vcredist2010_title=Visual C++ 2010 SP1 Redistributable +vcredist2010_title_x64=Visual C++ 2010 SP1 64-Bit Redistributable +vcredist2010_title_ia64=Visual C++ 2010 SP1 Itanium Redistributable + +en.vcredist2010_size=4.8 MB +de.vcredist2010_size=4,8 MB + +en.vcredist2010_size_x64=5.4 MB +de.vcredist2010_size_x64=5,4 MB + +en.vcredist2010_size_ia64=2.2 MB +de.vcredist2010_size_ia64=2,2 MB + +[Code] +const + vcredist2010_url_x86 = 'http://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe'; + vcredist2010_url_x64 = 'http://download.microsoft.com/download/A/8/0/A80747C3-41BD-45DF-B505-E9710D2744E0/vcredist_x64.exe'; + vcredist2010_url_ia64 = 'http://download.microsoft.com/download/7/7/3/77332C03-CC6C-45E5-A7B6-E02504B93847/vcredist_IA64.exe'; + + vcredist2010_productcode_x86 = '{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}'; + vcredist2010_productcode_x64 = '{1D8E6291-B0D5-35EC-8441-6616F567A0F7}'; + vcredist2010_productcode_ia64 = '{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}'; + +procedure vcredist2010(); +begin + if (not msiproduct(GetString(vcredist2010_productcode_x86, vcredist2010_productcode_x64, vcredist2010_productcode_ia64))) then + AddProduct('vcredist2010' + GetArchitectureString() + '.exe', + '/passive /norestart', + CustomMessage('vcredist2010_title' + GetArchitectureString()), + CustomMessage('vcredist2010_size' + GetArchitectureString()), + GetString(vcredist2010_url_x86, vcredist2010_url_x64, vcredist2010_url_ia64), + false, false, false); +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2012.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2012.iss new file mode 100644 index 000000000..9f2ea00da --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2012.iss @@ -0,0 +1,35 @@ +; requires Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2003, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Vista Service Pack 2, Windows XP +; http://www.microsoft.com/en-us/download/details.aspx?id=30679 + +[CustomMessages] +vcredist2012_title=Visual C++ 2012 Redistributable +vcredist2012_title_x64=Visual C++ 2012 64-Bit Redistributable + +en.vcredist2012_size=6.3 MB +de.vcredist2012_size=6,3 MB + +en.vcredist2012_size_x64=6.4 MB +de.vcredist2012_size_x64=6,4 MB + +[Code] +const + vcredist2012_url = 'http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe'; + vcredist2012_url_x64 = 'http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe'; + + vcredist2012_productcode = '{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}'; + vcredist2012_productcode_x64 = '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}'; + +procedure vcredist2012(); +begin + if (not IsIA64()) then begin + if (not msiproduct(GetString(vcredist2012_productcode, vcredist2012_productcode_x64, ''))) then + AddProduct('vcredist2012' + GetArchitectureString() + '.exe', + '/passive /norestart', + CustomMessage('vcredist2012_title' + GetArchitectureString()), + CustomMessage('vcredist2012_size' + GetArchitectureString()), + GetString(vcredist2012_url, vcredist2012_url_x64, ''), + false, false, false); + end; +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2013.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2013.iss new file mode 100644 index 000000000..d55b3651b --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2013.iss @@ -0,0 +1,35 @@ +; requires Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2003, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Server 2012 R2, Windows Vista Service Pack 2, Windows XP +; http://www.microsoft.com/en-US/download/details.aspx?id=40784 + +[CustomMessages] +vcredist2013_title=Visual C++ 2013 Redistributable +vcredist2013_title_x64=Visual C++ 2013 64-Bit Redistributable + +en.vcredist2013_size=6.2 MB +de.vcredist2013_size=6,2 MB + +en.vcredist2013_size_x64=6.9 MB +de.vcredist2013_size_x64=6,9 MB + +[Code] +const + vcredist2013_url = 'http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe'; + vcredist2013_url_x64 = 'http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe'; + + vcredist2013_productcode = '{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}'; + vcredist2013_productcode_x64 = '{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}'; + +procedure vcredist2013(); +begin + if (not IsIA64()) then begin + if (not msiproduct(GetString(vcredist2013_productcode, vcredist2013_productcode_x64, ''))) then + AddProduct('vcredist2013' + GetArchitectureString() + '.exe', + '/passive /norestart', + CustomMessage('vcredist2013_title' + GetArchitectureString()), + CustomMessage('vcredist2013_size' + GetArchitectureString()), + GetString(vcredist2013_url, vcredist2013_url_x64, ''), + false, false, false); + end; +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/vcredist2015.iss b/Greenshot/releases/innosetup/scripts/products/vcredist2015.iss new file mode 100644 index 000000000..e98b268f6 --- /dev/null +++ b/Greenshot/releases/innosetup/scripts/products/vcredist2015.iss @@ -0,0 +1,35 @@ +; requires Windows 10, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2003 Service Pack 2, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Vista Service Pack 2, Windows XP Service Pack 3 +; http://www.microsoft.com/en-US/download/details.aspx?id=48145 + +[CustomMessages] +vcredist2015_title=Visual C++ 2015 Redistributable +vcredist2015_title_x64=Visual C++ 2015 64-Bit Redistributable + +en.vcredist2015_size=12.8 MB +de.vcredist2015_size=12,8 MB + +en.vcredist2015_size_x64=13.9 MB +de.vcredist2015_size_x64=13,9 MB + +[Code] +const + vcredist2015_url = 'http://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe'; + vcredist2015_url_x64 = 'http://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe'; + + vcredist2015_productcode = '{74D0E5DB-B326-4DAE-A6B2-445B9DE1836E}'; + vcredist2015_productcode_x64 = '{0D3E9E15-DE7A-300B-96F1-B4AF12B96488}'; + +procedure vcredist2015(); +begin + if (not IsIA64()) then begin + if (not msiproduct(GetString(vcredist2015_productcode, vcredist2015_productcode_x64, ''))) then + AddProduct('vcredist2015' + GetArchitectureString() + '.exe', + '/passive /norestart', + CustomMessage('vcredist2015_title' + GetArchitectureString()), + CustomMessage('vcredist2015_size' + GetArchitectureString()), + GetString(vcredist2015_url, vcredist2015_url_x64, ''), + false, false, false); + end; +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/wic.iss b/Greenshot/releases/innosetup/scripts/products/wic.iss index 7dd9ed060..bd1abb7d8 100644 --- a/Greenshot/releases/innosetup/scripts/products/wic.iss +++ b/Greenshot/releases/innosetup/scripts/products/wic.iss @@ -1,11 +1,10 @@ -//requires Windows Server 2003, Windows Server 2003 R2 Datacenter Edition (32-Bit x86), Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Windows Server 2003 R2 Standard Edition (32-bit x86), Windows XP Service Pack 2 +; requires Windows Server 2003, Windows Server 2003 R2 Datacenter Edition (32-Bit x86), Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Windows Server 2003 R2 Standard Edition (32-bit x86), Windows XP Service Pack 2 [CustomMessages] wic_title=Windows Imaging Component en.wic_size=1.2 MB de.wic_size=1,2 MB - [Code] const @@ -40,7 +39,7 @@ end; procedure wic(); begin - if (not isIA64()) then begin + if (not IsIA64()) then begin //only needed on Windows XP SP2 or Windows Server 2003 if ((exactwinversion(5, 1) and exactwinspversion(5, 1, 2)) or (exactwinversion(5, 2))) then begin if (not FileExists(GetEnv('windir') + '\system32\windowscodecs.dll')) then @@ -49,7 +48,9 @@ begin CustomMessage('wic_title'), CustomMessage('wic_size'), GetString(wic_url, wic_url_x64, '') + GetConvertedLanguageID() + '.exe', - false, false); + false, false, false); end; end; -end; \ No newline at end of file +end; + +[Setup] diff --git a/Greenshot/releases/innosetup/scripts/products/winversion.iss b/Greenshot/releases/innosetup/scripts/products/winversion.iss index 655f7f560..e1aff98b1 100644 --- a/Greenshot/releases/innosetup/scripts/products/winversion.iss +++ b/Greenshot/releases/innosetup/scripts/products/winversion.iss @@ -44,4 +44,6 @@ begin Result := WindowsVersion.ServicePackMajor <= SpVersion else Result := true; -end; \ No newline at end of file +end; + +[Setup] diff --git a/GreenshotJiraPlugin/Log4NetLogger.cs b/GreenshotJiraPlugin/Log4NetLogger.cs new file mode 100644 index 000000000..24cea3caf --- /dev/null +++ b/GreenshotJiraPlugin/Log4NetLogger.cs @@ -0,0 +1,120 @@ +/* + * Greenshot - a free and open source screenshot tool + * Copyright (C) 2007-2015 Thomas Braun, Jens Klingen, Robin Krom + * + * For more information see: http://getgreenshot.org/ + * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using Dapplo.Log.Facade; +using log4net; + +namespace GreenshotJiraPlugin +{ + /// + /// Used to make Dapplo.Log, used in Dapplo.Jira, write to Log4net + /// + public class Log4NetLogger : AbstractLogger + { + private ILog GetLogger(LogSource logSource) + { + return logSource.SourceType != null ? LogManager.GetLogger(logSource.SourceType) : LogManager.GetLogger(logSource.Source); + } + + /// + /// Write the supplied information to a log4net.ILog + /// + /// LogInfo + /// string + /// params object[] + public override void Write(LogInfo logInfo, string messageTemplate, params object[] propertyValues) + { + var log = GetLogger(logInfo.Source); + + switch (logInfo.LogLevel) + { + case LogLevels.Verbose: + case LogLevels.Debug: + if (propertyValues != null) + log.DebugFormat(messageTemplate, propertyValues); + else + log.Debug(messageTemplate); + break; + case LogLevels.Error: + if (propertyValues != null) + log.ErrorFormat(messageTemplate, propertyValues); + else + log.Error(messageTemplate); + break; + case LogLevels.Fatal: + if (propertyValues != null) + log.FatalFormat(messageTemplate, propertyValues); + else + log.Fatal(messageTemplate); + break; + case LogLevels.Info: + if (propertyValues != null) + log.InfoFormat(messageTemplate, propertyValues); + else + log.Info(messageTemplate); + break; + case LogLevels.Warn: + if (propertyValues != null) + log.WarnFormat(messageTemplate, propertyValues); + else + log.Warn(messageTemplate); + break; + } + } + + /// + /// Make sure there are no newlines passed + /// + /// + /// + /// + public override void WriteLine(LogInfo logInfo, string messageTemplate, params object[] logParameters) + { + Write(logInfo, messageTemplate, logParameters); + } + + /// + /// Test if a certain LogLevels enum is enabled + /// + /// LogLevels value + /// LogSource to check for + /// bool true if the LogLevels enum is enabled + public override bool IsLogLevelEnabled(LogLevels level, LogSource logSource = null) + { + var log = GetLogger(logSource); + switch (level) + { + case LogLevels.Verbose: + case LogLevels.Debug: + return log.IsDebugEnabled; + case LogLevels.Error: + return log.IsErrorEnabled; + case LogLevels.Fatal: + return log.IsFatalEnabled; + case LogLevels.Info: + return log.IsInfoEnabled; + case LogLevels.Warn: + return log.IsWarnEnabled; + } + return false; + } + } +}