mirror of
https://github.com/greenshot/greenshot
synced 2025-08-20 21:43:24 -07:00
Merge pull request #31 from greenshot/feature/jiranew
Added a backport from 1.3 to 1.2.9 to fix the JIRA integration
This commit is contained in:
commit
2a15a5e270
66 changed files with 1381 additions and 4566 deletions
|
@ -383,7 +383,7 @@ namespace Greenshot.Drawing
|
||||||
_font = newFont;
|
_font = newFont;
|
||||||
_textBox.Font = _font;
|
_textBox.Font = _font;
|
||||||
}
|
}
|
||||||
catch (Exception ex2)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
// When this happens... the PC is broken
|
// When this happens... the PC is broken
|
||||||
ex.Data.Add("fontFamily", fontFamily);
|
ex.Data.Add("fontFamily", fontFamily);
|
||||||
|
|
49
Greenshot/releases/innosetup/scripts/isxdl/dutch.ini
Normal file
49
Greenshot/releases/innosetup/scripts/isxdl/dutch.ini
Normal file
|
@ -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:
|
|
@ -1,6 +1,6 @@
|
||||||
[strings]
|
[strings]
|
||||||
; General
|
; General
|
||||||
100=File Download
|
100=File download
|
||||||
101=Do you want to cancel the download?
|
101=Do you want to cancel the download?
|
||||||
102=%1 (%2 of %3)
|
102=%1 (%2 of %3)
|
||||||
103=%1 KB
|
103=%1 KB
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
116=Connecting to %1
|
116=Connecting to %1
|
||||||
|
|
||||||
; Error messages
|
; 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.
|
121=Error opening %1.\n\nThe server returned status code %2.
|
||||||
122=Error reading URL.\n\n%1
|
122=Error reading URL.\n\n%1
|
||||||
123=Error writing file %1.\n\n%2
|
123=Error writing file %1.\n\n%2
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[strings]
|
[strings]
|
||||||
; General
|
; General
|
||||||
100=Téléchargement des fichiers...
|
100=Téléchargement des fichiers
|
||||||
101=Souhaitez-vous annuler le téléchargement ?
|
101=Souhaitez-vous annuler le téléchargement ?
|
||||||
102=%1 (%2 / %3)
|
102=%1 (%2 / %3)
|
||||||
103=%1 Ko
|
103=%1 Ko
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
116=Connexion à %1
|
116=Connexion à %1
|
||||||
|
|
||||||
; Messages d'erreur
|
; 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.
|
121=Impossible d'ouvrir %1.\n\nLe serveur a renvoyé le code d'erreur %2.
|
||||||
122=Impossible de lire l'adresse.\n\n%1
|
122=Impossible de lire l'adresse.\n\n%1
|
||||||
123=Impossible de créer le fichier %1.\n\n%2
|
123=Impossible de créer le fichier %1.\n\n%2
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
100=Téléchargement de fichier
|
100=Téléchargement de fichier
|
||||||
101=Voulez vous annuler le téléchargement ?
|
101=Voulez vous annuler le téléchargement ?
|
||||||
102=%1 (%2 de %3)
|
102=%1 (%2 de %3)
|
||||||
103=%1 KB
|
103=%1 Ko
|
||||||
104=%1 KB de %2 KB (%3%)
|
104=%1 Ko de %2 Ko (%3%)
|
||||||
|
|
||||||
; Status information
|
; Status information
|
||||||
110=Réception des informations du fichier...
|
110=Réception des informations du fichier...
|
||||||
|
|
|
@ -1,46 +1,49 @@
|
||||||
;by E. Wörner
|
|
||||||
[strings]
|
[strings]
|
||||||
; General
|
; General
|
||||||
100=Dateidownload
|
100=Datei herunterladen
|
||||||
101=Möchten Sie den Download der Dateien abbrechen?
|
101=Möchten Sie das Herunterladen der Datei abbrechen?
|
||||||
102=%1 (%2 von %3)
|
102=%1 (%2 von %3)
|
||||||
103=%1 KB
|
103=%1 KB
|
||||||
104=%1 KB von %2 KB (%3%)
|
104=%1 KB von %2 KB (%3%)
|
||||||
|
|
||||||
; Status information
|
; Status information
|
||||||
110=Empfang von Dateiinformationen...
|
110=Dateiinformationen werden ermittelt...
|
||||||
111=Weiterleitung zu %1
|
111=Weiterleitung zu %1
|
||||||
112=Senden der Anfrage...
|
112=Anforderung wird gesendet...
|
||||||
113=Auflösen von %1
|
113=Auflösen von %1
|
||||||
114=Verbunden mit %1
|
114=Verbunden mit %1
|
||||||
115=Empfang...
|
115=Empfange...
|
||||||
116=Verbinden mit %1
|
116=Verbinden mit %1
|
||||||
|
|
||||||
; Error messages
|
; Error messages
|
||||||
120=Fehler bei der Herstellung einer Verbindung ins Internet.\n\n%1
|
120=Fehler beim Verbinden mit dem Internet.\n\n%1
|
||||||
121=Fehler beim Öffnen von %1.\n\nDer Server sendete Code %2.
|
121=Fehler beim Öffnen von %1.\n\nDer Server meldet Statuscode %2.
|
||||||
122=Fehler beim Lesen der URL.\n\n%1
|
122=Fehler beim Lesen der URL.\n\n%1
|
||||||
123=Fehler beim Schreiben der Datei %1.\n\n%2
|
123=Fehler beim Schreiben der Datei %1.\n\n%2
|
||||||
124=Fehler beim Öffnen der Datei %1.\n\n%2
|
124=Fehler beim Öffnen der Datei %1.\n\n%2
|
||||||
125='%1' ist eine ungültige URL.
|
125='%1' ist eine ungültige URL.
|
||||||
126=Fehler beim Öffnen von %1.\n\n%2
|
126=Fehler beim Öffnen von %1.\n\n%2
|
||||||
127=Fehler beim Senden der Anfrage.\n\n%1
|
127=Fehler beim Senden der Anforderung.\n\n%1
|
||||||
128=Nicht unterstütztes Protokoll. FTP und HTTP sind die einzigen unterstützten Protokolle.
|
128=Protokoll wird nicht unterstützt. Nur HTTP und FTP werden unterstützt.
|
||||||
129=Fehler beim Verbinden mit %1.\n\n%2
|
129=Verbindung zu %1 fehlgeschlagen.\n\n%2
|
||||||
130=Fehler beim Auflösen des Statuscodes.\n\n%1
|
130=Fehler bei der Abfrage des Statuscodes.\n\n%1
|
||||||
131=Fehler beim Anfordern einer Datei.\n\n%1
|
131=Fehler bei der Anforderung der Datei.\n\n%1
|
||||||
|
|
||||||
; Other
|
; Other
|
||||||
144=Über...
|
144=Über...
|
||||||
146=Download
|
146=Download
|
||||||
147=Setup lädt jetzt zusätzliche Dateien für das Setup.
|
147=Das Setup lädt nun zusätzliche Dateien auf Ihren Computer.
|
||||||
|
|
||||||
; labels
|
; labels
|
||||||
160=Datei:
|
160=Datei:
|
||||||
161=Geschwindigkeit:
|
161=Geschwindigkeit:
|
||||||
162=Status:
|
162=Status:
|
||||||
163=Vergangene Zeit:
|
163=Bisherige Zeit:
|
||||||
164=Verbleibende Zeit:
|
164=Verbleibende Zeit:
|
||||||
165=Aktuelle Datei:
|
165=Aktuelle Datei:
|
||||||
166=Gesamter Fortschritt:
|
166=Gesamter Vorgang:
|
||||||
167=Abbrechen
|
167=Abbrechen
|
||||||
|
168=OK
|
||||||
|
169=Benutzername und Kennwort
|
||||||
|
170=Benutzername:
|
||||||
|
171=Kennwort:
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
Source: "scripts\isxdl\isxdl.dll"; Flags: dontcopy
|
Source: "scripts\isxdl\isxdl.dll"; Flags: dontcopy
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
//replace PAnsiChar with PChar on non-unicode Inno Setup
|
|
||||||
procedure isxdl_AddFile(URL, Filename: PAnsiChar);
|
procedure isxdl_AddFile(URL, Filename: PAnsiChar);
|
||||||
external 'isxdl_AddFile@files:isxdl.dll stdcall';
|
external 'isxdl_AddFile@files:isxdl.dll stdcall';
|
||||||
|
|
||||||
function isxdl_DownloadFiles(hWnd: Integer): Integer;
|
function isxdl_DownloadFiles(hWnd: Integer): Integer;
|
||||||
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
|
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
|
||||||
|
|
||||||
//replace PAnsiChar with PChar on non-unicode Inno Setup
|
|
||||||
function isxdl_SetOption(Option, Value: PAnsiChar): Integer;
|
function isxdl_SetOption(Option, Value: PAnsiChar): Integer;
|
||||||
external 'isxdl_SetOption@files:isxdl.dll stdcall';
|
external 'isxdl_SetOption@files:isxdl.dll stdcall';
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
49
Greenshot/releases/innosetup/scripts/isxdl/italian.ini
Normal file
49
Greenshot/releases/innosetup/scripts/isxdl/italian.ini
Normal file
|
@ -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:
|
49
Greenshot/releases/innosetup/scripts/isxdl/japanese.ini
Normal file
49
Greenshot/releases/innosetup/scripts/isxdl/japanese.ini
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
[strings]
|
||||||
|
; General
|
||||||
|
100=ファイルダウンロード
|
||||||
|
101=ダウンロードをキャンセルしますか?
|
||||||
|
102=%1 (%2 of %3)
|
||||||
|
103=%1 KB
|
||||||
|
104=%1 KB of %2 KB (%3%)
|
||||||
|
|
||||||
|
; Status information
|
||||||
|
110=ファイル情報を取得中...
|
||||||
|
111=リダイレクト %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=OK
|
||||||
|
169=ユーザーとパスワード
|
||||||
|
170=ユーザー:
|
||||||
|
171=パスワード:
|
49
Greenshot/releases/innosetup/scripts/isxdl/korean.ini
Normal file
49
Greenshot/releases/innosetup/scripts/isxdl/korean.ini
Normal file
|
@ -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=패스워드:
|
|
@ -4,8 +4,8 @@
|
||||||
100=Download
|
100=Download
|
||||||
101=Deseja cancelar o download?
|
101=Deseja cancelar o download?
|
||||||
102=%1 (%2 de %3)
|
102=%1 (%2 de %3)
|
||||||
103=%1 Kb
|
103=%1 KB
|
||||||
104=%1 Kb de %2 Kb (%3%)
|
104=%1 KB de %2 KB (%3%)
|
||||||
|
|
||||||
; Status information
|
; Status information
|
||||||
110=A receber informação do ficheiro...
|
110=A receber informação do ficheiro...
|
||||||
|
|
|
@ -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?
|
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 benötigt bevor das Setup fortfahren kann:%n%n%1%nJetzt downloaden und installieren?
|
de.depdownload_msg=Die folgenden Programme werden benötigt bevor das Setup fortfahren kann:%n%n%1%nJetzt downloaden und installieren?
|
||||||
|
fr.depdownload_msg=Les applications suivantes sont nécessaires avant l'installation peut continuer:%n%n%1%nTéléchargement 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 vóór de installatie kunt doorgaan:%n%n%1%nDownload en installeer nu?
|
||||||
|
pl.depdownload_msg=Poni¿sze aplikacje s¹ wymagane przed instalacj¹ aby móc kontynuowaæ:%n%n%1%nCzy pobraæ je i zainstalowaæ teraz?
|
||||||
|
|
||||||
en.depdownload_memo_title=Download dependencies
|
en.depdownload_memo_title=Download dependencies
|
||||||
de.depdownload_memo_title=Abhängigkeiten downloaden
|
de.depdownload_memo_title=Abhängigkeiten downloaden
|
||||||
|
fr.depdownload_memo_title=Télécharger les dépendances
|
||||||
|
it.depdownload_memo_title=Scarica le dipendenze
|
||||||
|
nl.depdownload_memo_title=Download afhankelijkheden
|
||||||
|
pl.depdownload_memo_title=Pobierz zale¿noœci
|
||||||
|
|
||||||
en.depinstall_memo_title=Install dependencies
|
en.depinstall_memo_title=Install dependencies
|
||||||
de.depinstall_memo_title=Abhängigkeiten installieren
|
de.depinstall_memo_title=Abhängigkeiten installieren
|
||||||
|
fr.depinstall_memo_title=Installez les dépendances
|
||||||
|
it.depinstall_memo_title=installare le dipendenze
|
||||||
|
nl.depinstall_memo_title=Installeer afhankelijkheden
|
||||||
|
pl.depinstall_memo_title=Zainstaluj zale¿noœci
|
||||||
|
|
||||||
en.depinstall_title=Installing dependencies
|
en.depinstall_title=Installing dependencies
|
||||||
de.depinstall_title=Installiere Abhängigkeiten
|
de.depinstall_title=Installiere Abhängigkeiten
|
||||||
|
fr.depinstall_title=Installation des dépendances
|
||||||
|
it.depinstall_title=installare le dipendenze
|
||||||
|
nl.depinstall_title=Installeer afhankelijkheden
|
||||||
|
pl.depinstall_title=Instalowanie zale¿noœci
|
||||||
|
|
||||||
en.depinstall_description=Please wait while Setup installs dependencies on your computer.
|
en.depinstall_description=Please wait while Setup installs dependencies on your computer.
|
||||||
de.depinstall_description=Warten Sie bitte während Abhängigkeiten auf Ihrem Computer installiert wird.
|
de.depinstall_description=Warten Sie bitte während Abhängigkeiten auf Ihrem Computer installiert wird.
|
||||||
|
fr.depinstall_description=S'il vous plaît patienter pendant que le programme d'installation installe les dépendances 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 zale¿noœci na komputerze, czekaj.
|
||||||
|
|
||||||
en.depinstall_status=Installing %1...
|
en.depinstall_status=Installing %1...
|
||||||
de.depinstall_status=Installiere %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.
|
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.
|
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 plaît installer %1 et exécutez à 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 geïnstalleerd vóór de installatie kan worden voortgezet. Installeer %1 en voer Setup opnieuw uit.
|
||||||
|
pl.depinstall_missing=%1 musi byæ zainstalowany przed instalacj¹, aby mog³a 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
|
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 während der Installation der Abghängigkeiten aufgetreten. Bitte starten Sie den Computer neu und führen Sie das Setup erneut aus oder installieren Sie die folgenden Abhängigkeiten per Hand:%n
|
de.depinstall_error=Ein Fehler ist während der Installation der Abghängigkeiten aufgetreten. Bitte starten Sie den Computer neu und führen Sie das Setup erneut aus oder installieren Sie die folgenden Abhängigkeiten per Hand:%n
|
||||||
|
fr.depinstall_error=Une erreur est survenue lors de l'installation des dépendances . S'il vous plaît redémarrer l'ordinateur et exécuter à nouveau le programme d'installation ou installer les dépendances 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=Wyst¹pi³ b³¹d podczas instalowania zale¿noœci. Uruchom ponownie komputer, a nastêpnie ponownie uruchom program instalacyjny lub rêcznie zainstaluj nastêpuj¹ce programy:%n
|
||||||
|
|
||||||
en.isxdl_langfile=
|
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]
|
[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]
|
[Code]
|
||||||
type
|
type
|
||||||
|
@ -40,6 +79,7 @@ type
|
||||||
File: String;
|
File: String;
|
||||||
Title: String;
|
Title: String;
|
||||||
Parameters: String;
|
Parameters: String;
|
||||||
|
ForceSuccess : boolean;
|
||||||
InstallClean : boolean;
|
InstallClean : boolean;
|
||||||
MustRebootAfter : boolean;
|
MustRebootAfter : boolean;
|
||||||
end;
|
end;
|
||||||
|
@ -49,46 +89,49 @@ type
|
||||||
var
|
var
|
||||||
installMemo, downloadMemo, downloadMessage: string;
|
installMemo, downloadMemo, downloadMessage: string;
|
||||||
products: array of TProduct;
|
products: array of TProduct;
|
||||||
delayedReboot: boolean;
|
delayedReboot, isForcedX86: boolean;
|
||||||
DependencyPage: TOutputProgressWizardPage;
|
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
|
var
|
||||||
path: string;
|
path: string;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
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
|
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;
|
downloadMemo := downloadMemo + '%1' + title + #13;
|
||||||
downloadMessage := downloadMessage + ' ' + Title + ' (' + Size + ')' + #13;
|
downloadMessage := downloadMessage + ' ' + title + ' (' + size + ')' + #13;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
i := GetArrayLength(products);
|
i := GetArrayLength(products);
|
||||||
SetArrayLength(products, i + 1);
|
SetArrayLength(products, i + 1);
|
||||||
products[i].File := path;
|
products[i].File := path;
|
||||||
products[i].Title := Title;
|
products[i].Title := title;
|
||||||
products[i].Parameters := Parameters;
|
products[i].Parameters := parameters;
|
||||||
products[i].InstallClean := InstallClean;
|
products[i].ForceSuccess := forceSuccess;
|
||||||
products[i].MustRebootAfter := MustRebootAfter;
|
products[i].InstallClean := installClean;
|
||||||
|
products[i].MustRebootAfter := mustRebootAfter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function SmartExec(prod : TProduct; var ResultCode : Integer) : boolean;
|
function SmartExec(product : TProduct; var resultcode : Integer): boolean;
|
||||||
begin
|
begin
|
||||||
if (LowerCase(Copy(prod.File,Length(prod.File)-2,3)) = 'exe') then begin
|
if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'exe') then begin
|
||||||
Result := Exec(prod.File, prod.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
|
Result := Exec(product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
|
||||||
end else begin
|
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;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function PendingReboot : boolean;
|
function PendingReboot: boolean;
|
||||||
var names: String;
|
var names: String;
|
||||||
begin
|
begin
|
||||||
if (RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'PendingFileRenameOperations', names)) then begin
|
if (RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'PendingFileRenameOperations', names)) then begin
|
||||||
|
@ -102,7 +145,7 @@ end;
|
||||||
|
|
||||||
function InstallProducts: InstallResult;
|
function InstallProducts: InstallResult;
|
||||||
var
|
var
|
||||||
ResultCode, i, productCount, finishCount: Integer;
|
resultCode, i, productCount, finishCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result := InstallSuccessful;
|
Result := InstallSuccessful;
|
||||||
productCount := GetArrayLength(products);
|
productCount := GetArrayLength(products);
|
||||||
|
@ -120,9 +163,8 @@ begin
|
||||||
DependencyPage.SetText(FmtMessage(CustomMessage('depinstall_status'), [products[i].Title]), '');
|
DependencyPage.SetText(FmtMessage(CustomMessage('depinstall_status'), [products[i].Title]), '');
|
||||||
DependencyPage.SetProgress(i, productCount);
|
DependencyPage.SetProgress(i, productCount);
|
||||||
|
|
||||||
if SmartExec(products[i], ResultCode) then begin
|
if SmartExec(products[i], resultCode) then begin
|
||||||
//setup executed; ResultCode contains the exit code
|
//setup executed; resultCode contains the exit code
|
||||||
//MsgBox(products[i].Title + ' install executed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK);
|
|
||||||
if (products[i].MustRebootAfter) then begin
|
if (products[i].MustRebootAfter) then begin
|
||||||
//delay reboot after install if we installed the last dependency anyways
|
//delay reboot after install if we installed the last dependency anyways
|
||||||
if (i = productCount - 1) then begin
|
if (i = productCount - 1) then begin
|
||||||
|
@ -131,10 +173,10 @@ begin
|
||||||
Result := InstallRebootRequired;
|
Result := InstallRebootRequired;
|
||||||
end;
|
end;
|
||||||
break;
|
break;
|
||||||
end else if (ResultCode = 0) then begin
|
end else if (resultCode = 0) or (products[i].ForceSuccess) then begin
|
||||||
finishCount := finishCount + 1;
|
finishCount := finishCount + 1;
|
||||||
end else if (ResultCode = 3010) then begin
|
end else if (resultCode = 3010) then begin
|
||||||
//ResultCode 3010: A restart is required to complete the installation. This message indicates success.
|
//Windows Installer resultCode 3010: ERROR_SUCCESS_REBOOT_REQUIRED
|
||||||
delayedReboot := true;
|
delayedReboot := true;
|
||||||
finishCount := finishCount + 1;
|
finishCount := finishCount + 1;
|
||||||
end else begin
|
end else begin
|
||||||
|
@ -142,7 +184,6 @@ begin
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
//MsgBox(products[i].Title + ' install failed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK);
|
|
||||||
Result := InstallError;
|
Result := InstallError;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
|
@ -187,8 +228,7 @@ end;
|
||||||
|
|
||||||
function NeedRestart : boolean;
|
function NeedRestart : boolean;
|
||||||
begin
|
begin
|
||||||
if (delayedReboot) then
|
Result := delayedReboot;
|
||||||
Result := true;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
||||||
|
@ -231,17 +271,17 @@ end;
|
||||||
|
|
||||||
function IsX86: boolean;
|
function IsX86: boolean;
|
||||||
begin
|
begin
|
||||||
Result := (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown);
|
Result := isForcedX86 or (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function IsX64: boolean;
|
function IsX64: boolean;
|
||||||
begin
|
begin
|
||||||
Result := Is64BitInstallMode and (ProcessorArchitecture = paX64);
|
Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paX64);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function IsIA64: boolean;
|
function IsIA64: boolean;
|
||||||
begin
|
begin
|
||||||
Result := Is64BitInstallMode and (ProcessorArchitecture = paIA64);
|
Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paIA64);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetString(x86, x64, ia64: String): String;
|
function GetString(x86, x64, ia64: String): String;
|
||||||
|
@ -265,3 +305,10 @@ begin
|
||||||
Result := '';
|
Result := '';
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure SetForceX86(value: boolean);
|
||||||
|
begin
|
||||||
|
isForcedX86 := value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
|
@ -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 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
|
; requires internet explorer 5.0.1 or higher
|
||||||
// http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3
|
; http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx11_title=.NET Framework 1.1
|
dotnetfx11_title=.NET Framework 1.1
|
||||||
|
@ -8,7 +8,6 @@ dotnetfx11_title=.NET Framework 1.1
|
||||||
en.dotnetfx11_size=23.1 MB
|
en.dotnetfx11_size=23.1 MB
|
||||||
de.dotnetfx11_size=23,1 MB
|
de.dotnetfx11_size=23,1 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx11_url = 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe';
|
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_title'),
|
||||||
CustomMessage('dotnetfx11_size'),
|
CustomMessage('dotnetfx11_size'),
|
||||||
dotnetfx11_url,
|
dotnetfx11_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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
|
de.dotnetfx11lp_url=http://download.microsoft.com/download/6/8/2/6821e687-526a-4ef8-9a67-9a402ec5ac9e/langpack.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx11lp();
|
procedure dotnetfx11lp();
|
||||||
begin
|
begin
|
||||||
|
@ -19,6 +18,8 @@ begin
|
||||||
CustomMessage('dotnetfx11lp_title'),
|
CustomMessage('dotnetfx11lp_title'),
|
||||||
CustomMessage('dotnetfx11lp_size'),
|
CustomMessage('dotnetfx11lp_size'),
|
||||||
CustomMessage('dotnetfx11lp_url'),
|
CustomMessage('dotnetfx11lp_url'),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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 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
|
; requires internet explorer 5.0.1 or higher
|
||||||
// http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38
|
; http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx11sp1_title=.NET Framework 1.1 Service Pack 1
|
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
|
en.dotnetfx11sp1_size=10.5 MB
|
||||||
de.dotnetfx11sp1_size=10,5 MB
|
de.dotnetfx11sp1_size=10,5 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx11sp1_url = 'http://download.microsoft.com/download/8/b/4/8b4addd8-e957-4dea-bdb8-c4e00af5b94b/NDP1.1sp1-KB867460-X86.exe';
|
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_title'),
|
||||||
CustomMessage('dotnetfx11sp1_size'),
|
CustomMessage('dotnetfx11sp1_size'),
|
||||||
dotnetfx11sp1_url,
|
dotnetfx11sp1_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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 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 internet explorer 5.0.1 or higher
|
||||||
// requires windows installer 2.0 on windows 98, ME
|
; requires windows installer 2.0 on windows 98, ME
|
||||||
// requires Windows Installer 3.1 on windows 2000 or higher
|
; requires Windows Installer 3.1 on windows 2000 or higher
|
||||||
// http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
|
; http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx20_title=.NET Framework 2.0
|
dotnetfx20_title=.NET Framework 2.0
|
||||||
|
|
||||||
dotnetfx20_size=23 MB
|
dotnetfx20_size=23 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx20_url = 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
|
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_title'),
|
||||||
CustomMessage('dotnetfx20_size'),
|
CustomMessage('dotnetfx20_size'),
|
||||||
GetString(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64),
|
GetString(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
[CustomMessages]
|
||||||
de.dotnetfx20lp_title=.NET Framework 2.0 Sprachpaket: Deutsch
|
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_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
|
de.dotnetfx20lp_url_ia64=http://download.microsoft.com/download/8/9/8/898c5670-5e74-41c4-82fc-68dd837af627/langpack.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx20lp();
|
procedure dotnetfx20lp();
|
||||||
begin
|
begin
|
||||||
|
@ -23,6 +22,8 @@ begin
|
||||||
CustomMessage('dotnetfx20lp_title'),
|
CustomMessage('dotnetfx20lp_title'),
|
||||||
CustomMessage('dotnetfx20lp_size'),
|
CustomMessage('dotnetfx20lp_size'),
|
||||||
CustomMessage('dotnetfx20lp_url' + GetArchitectureString()),
|
CustomMessage('dotnetfx20lp_url' + GetArchitectureString()),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// requires Windows 2000 Service Pack 4, Windows Server 2003, Windows XP Service Pack 2
|
; requires Windows 2000 Service Pack 4, Windows Server 2003, Windows XP Service Pack 2
|
||||||
// requires KB 835732 on Windows 2000 Service Pack 4
|
; requires KB 835732 on Windows 2000 Service Pack 4
|
||||||
// http://www.microsoft.com/downloads/details.aspx?FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5
|
; http://www.microsoft.com/downloads/details.aspx?FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1
|
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
|
en.dotnetfx20sp1_size=23.6 MB
|
||||||
de.dotnetfx20sp1_size=23,6 MB
|
de.dotnetfx20sp1_size=23,6 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx20sp1_url = 'http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe';
|
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_title'),
|
||||||
CustomMessage('dotnetfx20sp1_size'),
|
CustomMessage('dotnetfx20sp1_size'),
|
||||||
GetString(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64),
|
GetString(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
[CustomMessages]
|
||||||
de.dotnetfx20sp1lp_title=.NET Framework 2.0 SP1 Sprachpaket: Deutsch
|
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_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
|
de.dotnetfx20sp1lp_url_ia64=http://download.microsoft.com/download/a/0/b/a0bef431-19d8-433c-9f42-6e2824a8cb90/NetFx20SP1_ia64de.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx20sp1lp();
|
procedure dotnetfx20sp1lp();
|
||||||
begin
|
begin
|
||||||
|
@ -23,6 +22,8 @@ begin
|
||||||
CustomMessage('dotnetfx20sp1lp_title'),
|
CustomMessage('dotnetfx20sp1lp_title'),
|
||||||
CustomMessage('dotnetfx20sp1lp_size'),
|
CustomMessage('dotnetfx20sp1lp_size'),
|
||||||
CustomMessage('dotnetfx20sp1lp_url' + GetArchitectureString()),
|
CustomMessage('dotnetfx20sp1lp_url' + GetArchitectureString()),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
[CustomMessages]
|
||||||
dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2
|
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
|
en.dotnetfx20sp2_size=24 MB - 52 MB
|
||||||
de.dotnetfx20sp2_size=24 MB - 52 MB
|
de.dotnetfx20sp2_size=24 MB - 52 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx20sp2_url = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe';
|
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_title'),
|
||||||
CustomMessage('dotnetfx20sp2_size'),
|
CustomMessage('dotnetfx20sp2_size'),
|
||||||
GetString(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64),
|
GetString(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
[CustomMessages]
|
||||||
de.dotnetfx20sp2lp_title=.NET Framework 2.0 SP2 Sprachpaket: Deutsch
|
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_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
|
de.dotnetfx20sp2lp_url_ia64=http://download.microsoft.com/download/a/3/3/a3349a2d-36e4-4797-8297-4394e6fbd677/NetFx20SP2_ia64de.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx20sp2lp();
|
procedure dotnetfx20sp2lp();
|
||||||
begin
|
begin
|
||||||
|
@ -23,6 +22,8 @@ begin
|
||||||
CustomMessage('dotnetfx20sp2lp_title'),
|
CustomMessage('dotnetfx20sp2lp_title'),
|
||||||
CustomMessage('dotnetfx20sp2lp_size'),
|
CustomMessage('dotnetfx20sp2lp_size'),
|
||||||
CustomMessage('dotnetfx20sp2lp_url' + GetArchitectureString()),
|
CustomMessage('dotnetfx20sp2lp_url' + GetArchitectureString()),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
// requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2
|
; requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2
|
||||||
// requires Windows Installer 3.1
|
; 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
|
; 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
|
; http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx35_title=.NET Framework 3.5
|
dotnetfx35_title=.NET Framework 3.5
|
||||||
|
|
||||||
dotnetfx35_size=3 MB - 197 MB
|
dotnetfx35_size=3 MB - 197 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx35_url = 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
|
dotnetfx35_url = 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
|
||||||
|
@ -16,10 +15,12 @@ const
|
||||||
procedure dotnetfx35();
|
procedure dotnetfx35();
|
||||||
begin
|
begin
|
||||||
if (netfxinstalled(NetFx35, '') = false) then
|
if (netfxinstalled(NetFx35, '') = false) then
|
||||||
AddProduct('dotnetfx35' + GetArchitectureString() + '.exe',
|
AddProduct('dotnetfx35.exe',
|
||||||
'/lang:enu /passive /norestart',
|
'/lang:enu /passive /norestart',
|
||||||
CustomMessage('dotnetfx35_title'),
|
CustomMessage('dotnetfx35_title'),
|
||||||
CustomMessage('dotnetfx35_size'),
|
CustomMessage('dotnetfx35_size'),
|
||||||
dotnetfx35_url,
|
dotnetfx35_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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
|
de.dotnetfx35lp_url=http://download.microsoft.com/download/d/1/e/d1e617c3-c7f4-467e-a7de-af832450efd3/dotnetfx35langpack_x86de.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx35lp();
|
procedure dotnetfx35lp();
|
||||||
begin
|
begin
|
||||||
if (ActiveLanguage() <> 'en') then begin
|
if (ActiveLanguage() <> 'en') then begin
|
||||||
if (not netfxinstalled(NetFx35, CustomMessage('dotnetfx35lp_lcid'))) then
|
if (not netfxinstalled(NetFx35, CustomMessage('dotnetfx35lp_lcid'))) then
|
||||||
AddProduct('dotnetfx35' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
|
AddProduct('dotnetfx35_' + ActiveLanguage() + '.exe',
|
||||||
'/lang:enu /passive /norestart',
|
'/lang:enu /passive /norestart',
|
||||||
CustomMessage('dotnetfx35lp_title'),
|
CustomMessage('dotnetfx35lp_title'),
|
||||||
CustomMessage('dotnetfx35lp_size'),
|
CustomMessage('dotnetfx35lp_size'),
|
||||||
CustomMessage('dotnetfx35lp_url'),
|
CustomMessage('dotnetfx35lp_url'),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2
|
; requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2
|
||||||
// requires Windows Installer 3.1
|
; 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
|
; 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
|
; http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx35sp1_title=.NET Framework 3.5 Service Pack 1
|
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
|
en.dotnetfx35sp1_size=3 MB - 232 MB
|
||||||
de.dotnetfx35sp1_size=3 MB - 232 MB
|
de.dotnetfx35sp1_size=3 MB - 232 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
dotnetfx35sp1_url = 'http://download.microsoft.com/download/0/6/1/061f001c-8752-4600-a198-53214c69b51f/dotnetfx35setup.exe';
|
dotnetfx35sp1_url = 'http://download.microsoft.com/download/0/6/1/061f001c-8752-4600-a198-53214c69b51f/dotnetfx35setup.exe';
|
||||||
|
@ -17,10 +16,12 @@ const
|
||||||
procedure dotnetfx35sp1();
|
procedure dotnetfx35sp1();
|
||||||
begin
|
begin
|
||||||
if (netfxspversion(NetFx35, '') < 1) then
|
if (netfxspversion(NetFx35, '') < 1) then
|
||||||
AddProduct('dotnetfx35sp1' + GetArchitectureString() + '.exe',
|
AddProduct('dotnetfx35sp1.exe',
|
||||||
'/lang:enu /passive /norestart',
|
'/lang:enu /passive /norestart',
|
||||||
CustomMessage('dotnetfx35sp1_title'),
|
CustomMessage('dotnetfx35sp1_title'),
|
||||||
CustomMessage('dotnetfx35sp1_size'),
|
CustomMessage('dotnetfx35sp1_size'),
|
||||||
dotnetfx35sp1_url,
|
dotnetfx35sp1_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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
|
de.dotnetfx35sp1lp_url=http://download.microsoft.com/download/d/7/2/d728b7b9-454b-4b57-8270-45dac441b0ec/dotnetfx35langpack_x86de.exe
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
procedure dotnetfx35sp1lp();
|
procedure dotnetfx35sp1lp();
|
||||||
begin
|
begin
|
||||||
if (ActiveLanguage() <> 'en') then begin
|
if (ActiveLanguage() <> 'en') then begin
|
||||||
if (netfxspversion(NetFx35, CustomMessage('dotnetfx35sp1lp_lcid')) < 1) then
|
if (netfxspversion(NetFx35, CustomMessage('dotnetfx35sp1lp_lcid')) < 1) then
|
||||||
AddProduct('dotnetfx35sp1' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
|
AddProduct('dotnetfx35sp1_' + ActiveLanguage() + '.exe',
|
||||||
'/lang:enu /passive /norestart',
|
'/lang:enu /passive /norestart',
|
||||||
CustomMessage('dotnetfx35sp1lp_title'),
|
CustomMessage('dotnetfx35sp1lp_title'),
|
||||||
CustomMessage('dotnetfx35sp1lp_size'),
|
CustomMessage('dotnetfx35sp1lp_size'),
|
||||||
CustomMessage('dotnetfx35sp1lp_url'),
|
CustomMessage('dotnetfx35sp1lp_url'),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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 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 Windows Installer 3.1
|
||||||
// requires Internet Explorer 5.01
|
; 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
|
; 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
|
; http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx40client_title=.NET Framework 4.0 Client
|
dotnetfx40client_title=.NET Framework 4.0 Client
|
||||||
|
@ -10,9 +10,8 @@ dotnetfx40client_title=.NET Framework 4.0 Client
|
||||||
dotnetfx40client_size=3 MB - 197 MB
|
dotnetfx40client_size=3 MB - 197 MB
|
||||||
|
|
||||||
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
|
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
|
||||||
en.dotnetfx40client_lcid=''
|
en.dotnetfx40client_lcid=
|
||||||
de.dotnetfx40client_lcid='/lcid 1031 '
|
de.dotnetfx40client_lcid=/lcid 1031
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
|
@ -22,9 +21,11 @@ procedure dotnetfx40client();
|
||||||
begin
|
begin
|
||||||
if (not netfxinstalled(NetFx40Client, '')) then
|
if (not netfxinstalled(NetFx40Client, '')) then
|
||||||
AddProduct('dotNetFx40_Client_setup.exe',
|
AddProduct('dotNetFx40_Client_setup.exe',
|
||||||
CustomMessage('dotnetfx40client_lcid') + '/passive /norestart',
|
CustomMessage('dotnetfx40client_lcid') + ' /passive /norestart',
|
||||||
CustomMessage('dotnetfx40client_title'),
|
CustomMessage('dotnetfx40client_title'),
|
||||||
CustomMessage('dotnetfx40client_size'),
|
CustomMessage('dotnetfx40client_size'),
|
||||||
dotnetfx40client_url,
|
dotnetfx40client_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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 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 Windows Installer 3.1
|
||||||
// requires Internet Explorer 5.01
|
; 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
|
; 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
|
; http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
dotnetfx40full_title=.NET Framework 4.0 Full
|
dotnetfx40full_title=.NET Framework 4.0 Full
|
||||||
|
@ -10,9 +10,8 @@ dotnetfx40full_title=.NET Framework 4.0 Full
|
||||||
dotnetfx40full_size=3 MB - 197 MB
|
dotnetfx40full_size=3 MB - 197 MB
|
||||||
|
|
||||||
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
|
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
|
||||||
en.dotnetfx40full_lcid=''
|
en.dotnetfx40full_lcid=
|
||||||
de.dotnetfx40full_lcid='/lcid 1031 '
|
de.dotnetfx40full_lcid=/lcid 1031
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
|
@ -22,9 +21,11 @@ procedure dotnetfx40full();
|
||||||
begin
|
begin
|
||||||
if (not netfxinstalled(NetFx40Full, '')) then
|
if (not netfxinstalled(NetFx40Full, '')) then
|
||||||
AddProduct('dotNetFx40_Full_setup.exe',
|
AddProduct('dotNetFx40_Full_setup.exe',
|
||||||
CustomMessage('dotnetfx40full_lcid') + '/q /passive /norestart',
|
CustomMessage('dotnetfx40full_lcid') + ' /passive /norestart',
|
||||||
CustomMessage('dotnetfx40full_title'),
|
CustomMessage('dotnetfx40full_title'),
|
||||||
CustomMessage('dotnetfx40full_size'),
|
CustomMessage('dotnetfx40full_size'),
|
||||||
dotnetfx40full_url,
|
dotnetfx40full_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
29
Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss
Normal file
29
Greenshot/releases/innosetup/scripts/products/dotnetfx46.iss
Normal file
|
@ -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]
|
|
@ -1,6 +1,6 @@
|
||||||
[Code]
|
[Code]
|
||||||
type
|
type
|
||||||
NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full);
|
NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full, NetFx4x);
|
||||||
|
|
||||||
const
|
const
|
||||||
netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\';
|
netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\';
|
||||||
|
@ -30,6 +30,12 @@ begin
|
||||||
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion);
|
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion);
|
||||||
NetFx40Full:
|
NetFx40Full:
|
||||||
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion);
|
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;
|
end;
|
||||||
Result := (regVersion <> 0);
|
Result := (regVersion <> 0);
|
||||||
end;
|
end;
|
||||||
|
@ -64,6 +70,25 @@ begin
|
||||||
NetFx40Full:
|
NetFx40Full:
|
||||||
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
|
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
|
||||||
regVersion := -1;
|
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;
|
end;
|
||||||
Result := regVersion;
|
Result := regVersion;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -21,3 +21,5 @@ begin
|
||||||
else
|
else
|
||||||
Result := '0';
|
Result := '0';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// requires Windows 2000; Windows 98; Windows ME; Windows NT; Windows XP Service Pack 1
|
; 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)
|
; 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
|
; http://www.microsoft.com/downloads/details.aspx?familyid=1E1550CB-5E5D-48F5-B02B-20B602228DE6
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
ie6_title=Internet Explorer 6
|
ie6_title=Internet Explorer 6
|
||||||
|
@ -8,21 +8,22 @@ ie6_title=Internet Explorer 6
|
||||||
en.ie6_size=1 MB - 77.5 MB
|
en.ie6_size=1 MB - 77.5 MB
|
||||||
de.ie6_size=1 MB - 77,5 MB
|
de.ie6_size=1 MB - 77,5 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
ie6_url = 'http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/ie6setup.exe';
|
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
|
var
|
||||||
version: string;
|
version: string;
|
||||||
begin
|
begin
|
||||||
RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version);
|
RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version);
|
||||||
if (compareversion(version, MinVersion) < 0) then
|
if (compareversion(version, minVersion) < 0) then
|
||||||
AddProduct('ie6.exe',
|
AddProduct('ie6.exe',
|
||||||
'/q:a /C:"setup /QNT"',
|
'/q:a /C:"setup /QNT"',
|
||||||
CustomMessage('ie6_title'),
|
CustomMessage('ie6_title'),
|
||||||
CustomMessage('ie6_size'),
|
CustomMessage('ie6_size'),
|
||||||
ie6_url,
|
ie6_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
iis_title=Internet Information Services (IIS)
|
iis_title=Internet Information Services (IIS)
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
function iis(): boolean;
|
function iis(): boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -10,3 +9,5 @@ begin
|
||||||
else
|
else
|
||||||
Result := true;
|
Result := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// http://support.microsoft.com/kb/239114
|
; http://support.microsoft.com/kb/239114
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
jet4sp8_title=Jet 4
|
jet4sp8_title=Jet 4
|
||||||
|
@ -6,19 +6,20 @@ jet4sp8_title=Jet 4
|
||||||
en.jet4sp8_size=3.7 MB
|
en.jet4sp8_size=3.7 MB
|
||||||
de.jet4sp8_size=3,7 MB
|
de.jet4sp8_size=3,7 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
jet4sp8_url = 'http://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/Jet40SP8_9xNT.exe';
|
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
|
begin
|
||||||
//check for Jet4 Service Pack 8 installation
|
//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',
|
AddProduct('jet4sp8.exe',
|
||||||
'/q:a /c:"install /qb /l"',
|
'/q:a /c:"install /qb /l"',
|
||||||
CustomMessage('jet4sp8_title'),
|
CustomMessage('jet4sp8_title'),
|
||||||
CustomMessage('jet4sp8_size'),
|
CustomMessage('jet4sp8_size'),
|
||||||
jet4sp8_url,
|
jet4sp8_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// required by .NET Framework 2.0 Service Pack 1 on Windows 2000 Service Pack 2-4
|
; 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/technet/security/bulletin/ms04-011.mspx
|
||||||
// http://www.microsoft.com/downloads/details.aspx?FamilyId=0692C27E-F63A-414C-B3EB-D2342FBB6C00
|
; http://www.microsoft.com/downloads/details.aspx?FamilyId=0692C27E-F63A-414C-B3EB-D2342FBB6C00
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
en.kb835732_title=Windows 2000 Security Update (KB835732)
|
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
|
en.kb835732_size=6.8 MB
|
||||||
de.kb835732_size=6,8 MB
|
de.kb835732_size=6,8 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
kb835732_url = 'http://download.microsoft.com/download/f/a/a/faa796aa-399d-437a-9284-c3536e9f2e6e/Windows2000-KB835732-x86-ENU.EXE';
|
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 (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
|
if (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB835732\Filelist')) then
|
||||||
AddProduct('kb835732.exe',
|
AddProduct('kb835732.exe',
|
||||||
'/q:a /c:"install /q"',
|
'/passive /norestart',
|
||||||
CustomMessage('kb835732_title'),
|
CustomMessage('kb835732_title'),
|
||||||
CustomMessage('kb835732_size'),
|
CustomMessage('kb835732_size'),
|
||||||
kb835732_url,
|
kb835732_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -4,22 +4,23 @@ mdac28_title=Microsoft Data Access Components 2.8
|
||||||
en.mdac28_size=5.4 MB
|
en.mdac28_size=5.4 MB
|
||||||
de.mdac28_size=5,4 MB
|
de.mdac28_size=5,4 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
mdac28_url = 'http://download.microsoft.com/download/c/d/f/cdfd58f1-3973-4c51-8851-49ae3777586f/MDAC_TYP.EXE';
|
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
|
var
|
||||||
version: string;
|
version: string;
|
||||||
begin
|
begin
|
||||||
//check for MDAC installation
|
//check for MDAC installation
|
||||||
RegQueryStringValue(HKLM, 'Software\Microsoft\DataAccess', 'FullInstallVer', version);
|
RegQueryStringValue(HKLM, 'Software\Microsoft\DataAccess', 'FullInstallVer', version);
|
||||||
if (compareversion(version, MinVersion) < 0) then
|
if (compareversion(version, minVersion) < 0) then
|
||||||
AddProduct('mdac28.exe',
|
AddProduct('mdac28.exe',
|
||||||
'/q:a /c:"install /qb /l"',
|
'/q:a /c:"install /qb /l"',
|
||||||
CustomMessage('mdac28_title'),
|
CustomMessage('mdac28_title'),
|
||||||
CustomMessage('mdac28_size'),
|
CustomMessage('mdac28_size'),
|
||||||
mdac28_url,
|
mdac28_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -4,19 +4,20 @@ msi20_title=Windows Installer 2.0
|
||||||
en.msi20_size=1.7 MB
|
en.msi20_size=1.7 MB
|
||||||
de.msi20_size=1,7 MB
|
de.msi20_size=1,7 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
msi20_url = 'http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe';
|
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
|
begin
|
||||||
// Check for required Windows Installer 2.0 on Windows 98 and ME
|
// 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',
|
AddProduct('msi20.exe',
|
||||||
'/q:a /c:"msiinst /delayrebootq"',
|
'/q:a /c:"msiinst /delayrebootq"',
|
||||||
CustomMessage('msi20_title'),
|
CustomMessage('msi20_title'),
|
||||||
CustomMessage('msi20_size'),
|
CustomMessage('msi20_size'),
|
||||||
msi20_url,
|
msi20_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -4,19 +4,20 @@ msi31_title=Windows Installer 3.1
|
||||||
en.msi31_size=2.5 MB
|
en.msi31_size=2.5 MB
|
||||||
de.msi31_size=2,5 MB
|
de.msi31_size=2,5 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
msi31_url = 'http://download.microsoft.com/download/1/4/7/147ded26-931c-4daf-9095-ec7baf996f46/WindowsInstaller-KB893803-v2-x86.exe';
|
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
|
begin
|
||||||
// Check for required Windows Installer 3.0 on Windows 2000 or higher
|
// 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',
|
AddProduct('msi31.exe',
|
||||||
'/passive /norestart',
|
'/passive /norestart',
|
||||||
CustomMessage('msi31_title'),
|
CustomMessage('msi31_title'),
|
||||||
CustomMessage('msi31_size'),
|
CustomMessage('msi31_size'),
|
||||||
msi31_url,
|
msi31_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -10,36 +10,37 @@ de.msi45win52_size=3,0 MB
|
||||||
en.msi45win51_size=3.2 MB
|
en.msi45win51_size=3.2 MB
|
||||||
de.msi45win51_size=3,2 MB
|
de.msi45win51_size=3,2 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
msi45win60_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x86.msu';
|
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';
|
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';
|
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
|
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
|
if minwinversion(6, 0) then
|
||||||
AddProduct('msi45_60.msu',
|
AddProduct('msi45_60.msu',
|
||||||
'/quiet /norestart',
|
'/quiet /norestart',
|
||||||
CustomMessage('msi45_title'),
|
CustomMessage('msi45_title'),
|
||||||
CustomMessage('msi45win60_size'),
|
CustomMessage('msi45win60_size'),
|
||||||
msi45win60_url,
|
msi45win60_url,
|
||||||
false, false)
|
false, false, false)
|
||||||
else if minwinversion(5, 2) then
|
else if minwinversion(5, 2) then
|
||||||
AddProduct('msi45_52.exe',
|
AddProduct('msi45_52.exe',
|
||||||
'/quiet /norestart',
|
'/quiet /norestart',
|
||||||
CustomMessage('msi45_title'),
|
CustomMessage('msi45_title'),
|
||||||
CustomMessage('msi45win52_size'),
|
CustomMessage('msi45win52_size'),
|
||||||
msi45win52_url,
|
msi45win52_url,
|
||||||
false, false)
|
false, false, false)
|
||||||
else if minwinversion(5, 1) then
|
else if minwinversion(5, 1) then
|
||||||
AddProduct('msi45_51.exe',
|
AddProduct('msi45_51.exe',
|
||||||
'/quiet /norestart',
|
'/quiet /norestart',
|
||||||
CustomMessage('msi45_title'),
|
CustomMessage('msi45_title'),
|
||||||
CustomMessage('msi45win51_size'),
|
CustomMessage('msi45win51_size'),
|
||||||
msi45win51_url,
|
msi45win51_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
25
Greenshot/releases/innosetup/scripts/products/msiproduct.iss
Normal file
25
Greenshot/releases/innosetup/scripts/products/msiproduct.iss
Normal file
|
@ -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]
|
|
@ -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
|
; 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
|
; 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.
|
; 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
|
; http://www.microsoft.com/download/en/details.aspx?id=15291
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
sql2005express_title=SQL Server 2005 Express SP3
|
sql2005express_title=SQL Server 2005 Express SP3
|
||||||
|
@ -12,7 +12,6 @@ de.sql2005express_size=38,1 MB
|
||||||
en.sql2005express_size_x64=58.1 MB
|
en.sql2005express_size_x64=58.1 MB
|
||||||
de.sql2005express_size_x64=58,1 MB
|
de.sql2005express_size_x64=58,1 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
sql2005express_url = 'http://download.microsoft.com/download/4/B/E/4BED5810-C8C0-4697-BDC3-DBC114B8FF6D/SQLEXPR32_NLA.EXE';
|
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
|
//RTM: 9.00.1399.06
|
||||||
//Service Pack 1: 9.1.2047.00
|
//Service Pack 1: 9.1.2047.00
|
||||||
//Service Pack 2: 9.2.3042.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
|
//Service Pack 3: 9.00.4035.00
|
||||||
//RegQueryDWordValue(HKLM, 'Software\Microsoft\Microsoft SQL Server\90\DTS\Setup', 'Install', version);
|
//RegQueryDWordValue(HKLM, 'Software\Microsoft\Microsoft SQL Server\90\DTS\Setup', 'Install', version);
|
||||||
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
|
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
|
||||||
if (version < '9.00.4035') then begin
|
if (version < '9.00.4035') then begin
|
||||||
if (not isIA64()) then
|
if (not IsIA64()) then
|
||||||
AddProduct('sql2005express' + GetArchitectureString() + '.exe',
|
AddProduct('sql2005express' + GetArchitectureString() + '.exe',
|
||||||
'/qb ADDLOCAL=ALL INSTANCENAME=SQLEXPRESS',
|
'/qb ADDLOCAL=ALL INSTANCENAME=SQLEXPRESS',
|
||||||
CustomMessage('sql2005express_title'),
|
CustomMessage('sql2005express_title'),
|
||||||
CustomMessage('sql2005express_size' + GetArchitectureString()),
|
CustomMessage('sql2005express_size' + GetArchitectureString()),
|
||||||
GetString(sql2005express_url, sql2005express_url_x64, ''),
|
GetString(sql2005express_url, sql2005express_url_x64, ''),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
// requires Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP
|
; 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 Microsoft .NET Framework 3.5 SP 1 or later
|
||||||
// requires Windows Installer 4.5 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
|
; 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.
|
; 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
|
; http://www.microsoft.com/download/en/details.aspx?id=3743
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
sql2008expressr2_title=SQL Server 2008 Express R2
|
sql2008expressr2_title=SQL Server 2008 Express R2
|
||||||
|
@ -14,7 +14,6 @@ de.sql2008expressr2_size=58,2 MB
|
||||||
en.sql2008expressr2_size_x64=74.1 MB
|
en.sql2008expressr2_size_x64=74.1 MB
|
||||||
de.sql2008expressr2_size_x64=74,1 MB
|
de.sql2008expressr2_size_x64=74,1 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
sql2008expressr2_url = 'http://download.microsoft.com/download/5/1/A/51A153F6-6B08-4F94-A7B2-BA1AD482BC75/SQLEXPR32_x86_ENU.exe';
|
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.
|
// making Express unnecessary.
|
||||||
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
|
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
|
||||||
if (compareversion(version, '10.5') < 0) then begin
|
if (compareversion(version, '10.5') < 0) then begin
|
||||||
if (not isIA64()) then
|
if (not IsIA64()) then
|
||||||
AddProduct('sql2008expressr2' + GetArchitectureString() + '.exe',
|
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_title'),
|
||||||
CustomMessage('sql2008expressr2_size' + GetArchitectureString()),
|
CustomMessage('sql2008expressr2_size' + GetArchitectureString()),
|
||||||
GetString(sql2008expressr2_url, sql2008expressr2_url_x64, ''),
|
GetString(sql2008expressr2_url, sql2008expressr2_url_x64, ''),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -4,7 +4,6 @@ sqlcompact35sp2_title=SQL Server Compact 3.5 Service Pack 2
|
||||||
en.sqlcompact35sp2_size=5.3 MB
|
en.sqlcompact35sp2_size=5.3 MB
|
||||||
de.sqlcompact35sp2_size=5,3 MB
|
de.sqlcompact35sp2_size=5,3 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
sqlcompact35sp2_url = 'http://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe';
|
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_title'),
|
||||||
CustomMessage('sqlcompact35sp2_size'),
|
CustomMessage('sqlcompact35sp2_size'),
|
||||||
sqlcompact35sp2_url,
|
sqlcompact35sp2_url,
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
[Code]
|
||||||
function stringtoversion(var temp: String): Integer;
|
function stringtoversion(var temp: String): Integer;
|
||||||
var
|
var
|
||||||
part: String;
|
part: String;
|
||||||
|
@ -27,11 +28,18 @@ var
|
||||||
begin
|
begin
|
||||||
num1 := stringtoversion(x);
|
num1 := stringtoversion(x);
|
||||||
num2 := stringtoversion(y);
|
num2 := stringtoversion(y);
|
||||||
if (num1 = -1) or (num2 = -1) then begin
|
if (num1 = -1) and (num2 = -1) then begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if (num1 < 0) then begin
|
||||||
|
num1 := 0;
|
||||||
|
end;
|
||||||
|
if (num2 < 0) then begin
|
||||||
|
num2 := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
if (num1 < num2) then begin
|
if (num1 < num2) then begin
|
||||||
Result := -1;
|
Result := -1;
|
||||||
end else if (num1 > num2) then begin
|
end else if (num1 > num2) then begin
|
||||||
|
@ -50,3 +58,5 @@ begin
|
||||||
temp2 := versionB;
|
temp2 := versionB;
|
||||||
Result := compareinnerversion(temp1, temp2);
|
Result := compareinnerversion(temp1, temp2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
|
@ -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]
|
|
@ -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 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
|
||||||
// requires Windows Installer 3.1 or later
|
; http://www.microsoft.com/en-us/download/details.aspx?id=5555
|
||||||
// requires Internet Explorer 5.01 or later
|
|
||||||
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
|
|
||||||
|
|
||||||
[CustomMessages]
|
[CustomMessages]
|
||||||
vcredist2010_title=Visual C++ 2010 Redistributable
|
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
|
en.vcredist2010_size=4.8 MB
|
||||||
de.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
|
en.vcredist2010_size_ia64=2.2 MB
|
||||||
de.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]
|
[Code]
|
||||||
const
|
const
|
||||||
vcredist2010_url = 'http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe';
|
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_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';
|
vcredist2010_url_ia64 = 'http://download.microsoft.com/download/3/3/A/33A75193-2CBC-424E-A886-287551FF1EB5/vcredist_IA64.exe';
|
||||||
|
|
||||||
procedure vcredist2010();
|
vcredist2010_productcode = '{196BB40D-1578-3D01-B289-BEFC77A11A1E}';
|
||||||
var
|
vcredist2010_productcode_x64 = '{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}';
|
||||||
version: cardinal;
|
vcredist2010_productcode_ia64 = '{C1A35166-4301-38E9-BA67-02823AD72A1B}';
|
||||||
begin
|
|
||||||
RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version);
|
|
||||||
|
|
||||||
if (version <> 1) then
|
procedure vcredist2010();
|
||||||
|
begin
|
||||||
|
if (not msiproduct(GetString(vcredist2010_productcode, vcredist2010_productcode_x64, vcredist2010_productcode_ia64))) then
|
||||||
AddProduct('vcredist2010' + GetArchitectureString() + '.exe',
|
AddProduct('vcredist2010' + GetArchitectureString() + '.exe',
|
||||||
CustomMessage('vcredist2010_lcid') + '/passive /norestart',
|
'/passive /norestart',
|
||||||
CustomMessage('vcredist2010_title'),
|
CustomMessage('vcredist2010_title' + GetArchitectureString()),
|
||||||
CustomMessage('vcredist2010_size' + GetArchitectureString()),
|
CustomMessage('vcredist2010_size' + GetArchitectureString()),
|
||||||
GetString(vcredist2010_url, vcredist2010_url_x64, vcredist2010_url_ia64),
|
GetString(vcredist2010_url, vcredist2010_url_x64, vcredist2010_url_ia64),
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -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]
|
|
@ -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]
|
|
@ -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]
|
|
@ -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]
|
|
@ -1,4 +1,4 @@
|
||||||
//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]
|
[CustomMessages]
|
||||||
wic_title=Windows Imaging Component
|
wic_title=Windows Imaging Component
|
||||||
|
@ -6,7 +6,6 @@ wic_title=Windows Imaging Component
|
||||||
en.wic_size=1.2 MB
|
en.wic_size=1.2 MB
|
||||||
de.wic_size=1,2 MB
|
de.wic_size=1,2 MB
|
||||||
|
|
||||||
|
|
||||||
[Code]
|
[Code]
|
||||||
const
|
const
|
||||||
wic_url = 'http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_';
|
wic_url = 'http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_';
|
||||||
|
@ -40,7 +39,7 @@ end;
|
||||||
|
|
||||||
procedure wic();
|
procedure wic();
|
||||||
begin
|
begin
|
||||||
if (not isIA64()) then begin
|
if (not IsIA64()) then begin
|
||||||
//only needed on Windows XP SP2 or Windows Server 2003
|
//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 ((exactwinversion(5, 1) and exactwinspversion(5, 1, 2)) or (exactwinversion(5, 2))) then begin
|
||||||
if (not FileExists(GetEnv('windir') + '\system32\windowscodecs.dll')) then
|
if (not FileExists(GetEnv('windir') + '\system32\windowscodecs.dll')) then
|
||||||
|
@ -49,7 +48,9 @@ begin
|
||||||
CustomMessage('wic_title'),
|
CustomMessage('wic_title'),
|
||||||
CustomMessage('wic_size'),
|
CustomMessage('wic_size'),
|
||||||
GetString(wic_url, wic_url_x64, '') + GetConvertedLanguageID() + '.exe',
|
GetString(wic_url, wic_url_x64, '') + GetConvertedLanguageID() + '.exe',
|
||||||
false, false);
|
false, false, false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -45,3 +45,5 @@ begin
|
||||||
else
|
else
|
||||||
Result := true;
|
Result := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
|
|
@ -22,14 +22,19 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using Dapplo.Jira.Entities;
|
||||||
using Greenshot.IniFile;
|
using Greenshot.IniFile;
|
||||||
using GreenshotPlugin.Controls;
|
using GreenshotPlugin.Controls;
|
||||||
using GreenshotPlugin.Core;
|
using GreenshotPlugin.Core;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace GreenshotJiraPlugin.Forms {
|
namespace GreenshotJiraPlugin.Forms {
|
||||||
public partial class JiraForm : Form {
|
public partial class JiraForm : Form {
|
||||||
|
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraForm));
|
||||||
private readonly JiraConnector _jiraConnector;
|
private readonly JiraConnector _jiraConnector;
|
||||||
private JiraIssue _selectedIssue;
|
private Issue _selectedIssue;
|
||||||
private readonly GreenshotColumnSorter _columnSorter;
|
private readonly GreenshotColumnSorter _columnSorter;
|
||||||
private readonly JiraConfiguration _config = IniConfig.GetIniSection<JiraConfiguration>();
|
private readonly JiraConfiguration _config = IniConfig.GetIniSection<JiraConfiguration>();
|
||||||
|
|
||||||
|
@ -47,15 +52,46 @@ namespace GreenshotJiraPlugin.Forms {
|
||||||
_jiraConnector = jiraConnector;
|
_jiraConnector = jiraConnector;
|
||||||
|
|
||||||
ChangeModus(false);
|
ChangeModus(false);
|
||||||
try {
|
|
||||||
if (!jiraConnector.IsLoggedIn) {
|
uploadButton.Enabled = false;
|
||||||
jiraConnector.Login();
|
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));
|
MessageBox.Show(Language.GetFormattedString("jira", LangKey.login_error, e.Message));
|
||||||
}
|
}
|
||||||
uploadButton.Enabled = false;
|
if (_jiraConnector.IsLoggedIn)
|
||||||
UpdateForm();
|
{
|
||||||
|
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() {
|
private void InitializeComponentText() {
|
||||||
|
@ -64,26 +100,6 @@ namespace GreenshotJiraPlugin.Forms {
|
||||||
label_filename.Text = Language.GetString("jira", LangKey.label_filename);
|
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) {
|
private void ChangeModus(bool enabled) {
|
||||||
jiraFilterBox.Enabled = enabled;
|
jiraFilterBox.Enabled = enabled;
|
||||||
jiraListView.Enabled = enabled;
|
jiraListView.Enabled = enabled;
|
||||||
|
@ -99,59 +115,67 @@ namespace GreenshotJiraPlugin.Forms {
|
||||||
jiraCommentBox.Text = comment;
|
jiraCommentBox.Text = comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JiraIssue GetJiraIssue() {
|
public Issue GetJiraIssue() {
|
||||||
return _selectedIssue;
|
return _selectedIssue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Upload(IBinaryContainer attachment) {
|
public async Task UploadAsync(IBinaryContainer attachment) {
|
||||||
_config.LastUsedJira = _selectedIssue.Key;
|
_config.LastUsedJira = _selectedIssue.Key;
|
||||||
_jiraConnector.AddAttachment(_selectedIssue.Key, jiraFilenameBox.Text, attachment);
|
using (var memoryStream = new MemoryStream())
|
||||||
if (!string.IsNullOrEmpty(jiraCommentBox.Text)) {
|
{
|
||||||
_jiraConnector.AddComment(_selectedIssue.Key, jiraCommentBox.Text);
|
attachment.WriteToStream(memoryStream);
|
||||||
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
await _jiraConnector.AttachAsync(_selectedIssue.Key, memoryStream, jiraFilenameBox.Text, attachment.ContentType);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void Logout() {
|
if (!string.IsNullOrEmpty(jiraCommentBox.Text)) {
|
||||||
_jiraConnector.Logout();
|
await _jiraConnector.AddCommentAsync(_selectedIssue.Key, jiraCommentBox.Text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectJiraToolStripMenuItem_Click(object sender, EventArgs e) {
|
private void selectJiraToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||||
ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
|
ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
|
||||||
_selectedIssue = (JiraIssue)clickedItem.Tag;
|
_selectedIssue = (Issue)clickedItem.Tag;
|
||||||
jiraKey.Text = _selectedIssue.Key;
|
jiraKey.Text = _selectedIssue.Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void jiraFilterBox_SelectedIndexChanged(object sender, EventArgs e) {
|
private async void jiraFilterBox_SelectedIndexChanged(object sender, EventArgs e) {
|
||||||
if (_jiraConnector.IsLoggedIn) {
|
if (_jiraConnector.IsLoggedIn) {
|
||||||
JiraIssue[] issues = null;
|
|
||||||
uploadButton.Enabled = false;
|
uploadButton.Enabled = false;
|
||||||
JiraFilter filter = (JiraFilter)jiraFilterBox.SelectedItem;
|
var filter = (Filter)jiraFilterBox.SelectedItem;
|
||||||
if (filter == null) {
|
if (filter == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Run upload in the background
|
IList<Issue> issues = null;
|
||||||
new PleaseWaitForm().ShowAndWait(JiraPlugin.Instance.JiraPluginAttributes.Name, Language.GetString("jira", LangKey.communication_wait),
|
try
|
||||||
delegate() {
|
{
|
||||||
issues = _jiraConnector.GetIssuesForFilter(filter.Id);
|
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.BeginUpdate();
|
||||||
jiraListView.Items.Clear();
|
jiraListView.Items.Clear();
|
||||||
if (issues.Length > 0) {
|
if (issues?.Count > 0) {
|
||||||
jiraListView.Columns.Clear();
|
jiraListView.Columns.Clear();
|
||||||
LangKey[] columns = { LangKey.column_id, LangKey.column_created, LangKey.column_assignee, LangKey.column_reporter, LangKey.column_summary };
|
LangKey[] columns = { LangKey.column_id, LangKey.column_created, LangKey.column_assignee, LangKey.column_reporter, LangKey.column_summary };
|
||||||
foreach (LangKey column in columns) {
|
foreach (LangKey column in columns) {
|
||||||
jiraListView.Columns.Add(Language.GetString("jira", column));
|
jiraListView.Columns.Add(Language.GetString("jira", column));
|
||||||
}
|
}
|
||||||
foreach (JiraIssue issue in issues) {
|
foreach (var issue in issues) {
|
||||||
ListViewItem item = new ListViewItem(issue.Key)
|
var item = new ListViewItem(issue.Key)
|
||||||
{
|
{
|
||||||
Tag = issue
|
Tag = issue
|
||||||
};
|
};
|
||||||
item.SubItems.Add(issue.Created.Value.ToString("d", DateTimeFormatInfo.InvariantInfo));
|
item.SubItems.Add(issue.Fields.Created.ToString("d", DateTimeFormatInfo.InvariantInfo));
|
||||||
item.SubItems.Add(issue.Assignee);
|
item.SubItems.Add(issue.Fields.Assignee?.DisplayName);
|
||||||
item.SubItems.Add(issue.Reporter);
|
item.SubItems.Add(issue.Fields.Reporter?.DisplayName);
|
||||||
item.SubItems.Add(issue.Summary);
|
item.SubItems.Add(issue.Fields.Summary);
|
||||||
jiraListView.Items.Add(item);
|
jiraListView.Items.Add(item);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < columns.Length; i++) {
|
for (int i = 0; i < columns.Length; i++) {
|
||||||
|
@ -164,8 +188,8 @@ namespace GreenshotJiraPlugin.Forms {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void jiraListView_SelectedIndexChanged(object sender, EventArgs e) {
|
private void jiraListView_SelectedIndexChanged(object sender, EventArgs e) {
|
||||||
if (jiraListView.SelectedItems != null && jiraListView.SelectedItems.Count > 0) {
|
if (jiraListView.SelectedItems.Count > 0) {
|
||||||
_selectedIssue = (JiraIssue)jiraListView.SelectedItems[0].Tag;
|
_selectedIssue = (Issue)jiraListView.SelectedItems[0].Tag;
|
||||||
jiraKey.Text = _selectedIssue.Key;
|
jiraKey.Text = _selectedIssue.Key;
|
||||||
uploadButton.Enabled = true;
|
uploadButton.Enabled = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -192,12 +216,12 @@ namespace GreenshotJiraPlugin.Forms {
|
||||||
jiraListView.Sort();
|
jiraListView.Sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JiraKeyTextChanged(object sender, EventArgs e) {
|
private async void JiraKeyTextChanged(object sender, EventArgs e) {
|
||||||
string jiranumber = jiraKey.Text;
|
string jiranumber = jiraKey.Text;
|
||||||
uploadButton.Enabled = false;
|
uploadButton.Enabled = false;
|
||||||
int dashIndex = jiranumber.IndexOf('-');
|
int dashIndex = jiranumber.IndexOf('-');
|
||||||
if (dashIndex > 0 && jiranumber.Length > dashIndex+1) {
|
if (dashIndex > 0 && jiranumber.Length > dashIndex+1) {
|
||||||
_selectedIssue = _jiraConnector.GetIssue(jiraKey.Text);
|
_selectedIssue = await _jiraConnector.GetIssueAsync(jiraKey.Text);
|
||||||
if (_selectedIssue != null) {
|
if (_selectedIssue != null) {
|
||||||
uploadButton.Enabled = true;
|
uploadButton.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<RootNamespace>GreenshotJiraPlugin</RootNamespace>
|
<RootNamespace>GreenshotJiraPlugin</RootNamespace>
|
||||||
<AssemblyName>GreenshotJiraPlugin</AssemblyName>
|
<AssemblyName>GreenshotJiraPlugin</AssemblyName>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||||
<NoStdLib>False</NoStdLib>
|
<NoStdLib>False</NoStdLib>
|
||||||
|
@ -20,8 +20,36 @@
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Dapplo.HttpExtensions, Version=0.5.30.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.HttpExtensions.0.5.30\lib\net45\Dapplo.HttpExtensions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Jira, Version=0.1.56.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Jira.0.1.56\lib\net45\Dapplo.Jira.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Log.Facade, Version=0.5.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Log.Facade.0.5.4\lib\net45\Dapplo.Log.Facade.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Utils, Version=0.1.113.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Utils.0.1.113\lib\net45\Dapplo.Utils.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="log4net">
|
<Reference Include="log4net">
|
||||||
<HintPath>..\Greenshot\Lib\log4net.dll</HintPath>
|
<HintPath>..\Greenshot\Lib\log4net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
@ -47,18 +75,13 @@
|
||||||
<Compile Include="Forms\SettingsForm.Designer.cs">
|
<Compile Include="Forms\SettingsForm.Designer.cs">
|
||||||
<DependentUpon>SettingsForm.cs</DependentUpon>
|
<DependentUpon>SettingsForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Jira.cs" />
|
<Compile Include="JiraConnector.cs" />
|
||||||
<Compile Include="JiraConfiguration.cs" />
|
<Compile Include="JiraConfiguration.cs" />
|
||||||
<Compile Include="JiraDestination.cs" />
|
<Compile Include="JiraDestination.cs" />
|
||||||
<Compile Include="JiraPlugin.cs" />
|
<Compile Include="JiraPlugin.cs" />
|
||||||
<Compile Include="JiraUtils.cs" />
|
<Compile Include="JiraUtils.cs" />
|
||||||
<Compile Include="LanguageKeys.cs" />
|
<Compile Include="LanguageKeys.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Web References\JiraSoap\Reference.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Reference.map</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<None Include="Languages\language_jiraplugin-de-DE.xml">
|
<None Include="Languages\language_jiraplugin-de-DE.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
@ -72,23 +95,12 @@
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Include="Languages\language_jiraplugin-zh-CN.xml" />
|
<None Include="Languages\language_jiraplugin-zh-CN.xml" />
|
||||||
<None Include="Web References\JiraSoap\jirasoapservice-v2.wsdl" />
|
<None Include="packages.config" />
|
||||||
<None Include="Web References\JiraSoap\Reference.map">
|
|
||||||
<Generator>MSDiscoCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Reference.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
<EmbeddedResource Include="JiraPlugin.resx">
|
<EmbeddedResource Include="JiraPlugin.resx">
|
||||||
<DependentUpon>JiraPlugin.cs</DependentUpon>
|
<DependentUpon>JiraPlugin.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<WebReferences Include="Web References\" />
|
|
||||||
<WebReferenceUrl Include="http://jira/rpc/soap/jirasoapservice-v2%3fwsdl">
|
|
||||||
<UrlBehavior>Static</UrlBehavior>
|
|
||||||
<UpdateFromURL>http://jira/rpc/soap/jirasoapservice-v2%3fwsdl</UpdateFromURL>
|
|
||||||
<RelPath>Web References\JiraSoap</RelPath>
|
|
||||||
<Namespace>Jira</Namespace>
|
|
||||||
</WebReferenceUrl>
|
|
||||||
<ProjectReference Include="..\GreenshotPlugin\GreenshotPlugin.csproj">
|
<ProjectReference Include="..\GreenshotPlugin\GreenshotPlugin.csproj">
|
||||||
<Project>{5B924697-4DCD-4F98-85F1-105CB84B7341}</Project>
|
<Project>{5B924697-4DCD-4F98-85F1-105CB84B7341}</Project>
|
||||||
<Name>GreenshotPlugin</Name>
|
<Name>GreenshotPlugin</Name>
|
||||||
|
@ -97,6 +109,7 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)"
|
<PostBuildEvent>mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)"
|
||||||
copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp"
|
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)\"
|
copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\"
|
||||||
mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
|
mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
|
||||||
copy "$(ProjectDir)\Languages\*.xml" "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"</PostBuildEvent>
|
copy "$(ProjectDir)\Languages\*.xml" "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"</PostBuildEvent>
|
||||||
|
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
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<JiraConfiguration>();
|
|
||||||
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<string, JiraIssue> _jiraCache = new Cache<string, JiraIssue>(60 * Config.Timeout);
|
|
||||||
private readonly Cache<string, RemoteUser> _userCache = new Cache<string, RemoteUser>(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Internal login which catches the exceptions
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>true if login was done sucessfully</returns>
|
|
||||||
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<JiraFilter> filters = new List<JiraFilter>();
|
|
||||||
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<JiraIssue> issuesToReturn = new List<JiraIssue>();
|
|
||||||
CheckCredentials();
|
|
||||||
try {
|
|
||||||
RemoteIssue[] issues = _jira.getIssuesFromFilter(_credentials, filterId);
|
|
||||||
|
|
||||||
#region Username cache update
|
|
||||||
List<string> users = new List<string>();
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -29,10 +29,11 @@ namespace GreenshotJiraPlugin {
|
||||||
[IniSection("Jira", Description="Greenshot Jira Plugin configuration")]
|
[IniSection("Jira", Description="Greenshot Jira Plugin configuration")]
|
||||||
public class JiraConfiguration : IniSection {
|
public class JiraConfiguration : IniSection {
|
||||||
public const string DefaultPrefix = "http://";
|
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; }
|
public string Url { get; set; }
|
||||||
|
|
||||||
[IniProperty("Timeout", Description="Session timeout in minutes", DefaultValue="30")]
|
[IniProperty("Timeout", Description="Session timeout in minutes", DefaultValue="30")]
|
||||||
public int Timeout { get; set; }
|
public int Timeout { get; set; }
|
||||||
|
|
||||||
|
|
172
GreenshotJiraPlugin/JiraConnector.cs
Normal file
172
GreenshotJiraPlugin/JiraConnector.cs
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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<JiraConfiguration>();
|
||||||
|
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() {
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal login which catches the exceptions
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>true if login was done sucessfully</returns>
|
||||||
|
private async Task<bool> 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<IList<Filter>> GetFavoriteFiltersAsync()
|
||||||
|
{
|
||||||
|
await CheckCredentials();
|
||||||
|
return await _jiraApi.GetFavoriteFiltersAsync().ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<Issue> GetIssueAsync(string issueKey)
|
||||||
|
{
|
||||||
|
await CheckCredentials();
|
||||||
|
return await _jiraApi.GetIssueAsync(issueKey).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
public async Task<Attachment> AttachAsync<TContent>(string issueKey, TContent content, string filename, string contentType = null, CancellationToken cancellationToken = default(CancellationToken)) where TContent : class
|
||||||
|
{
|
||||||
|
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).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
public async Task<SearchResult> SearchAsync(string jql, int maxResults = 20, IList<string> fields = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
|
{
|
||||||
|
await CheckCredentials();
|
||||||
|
return await _jiraApi.SearchAsync(jql, maxResults, fields, cancellationToken).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Uri JiraBaseUri => _jiraApi.JiraBaseUri;
|
||||||
|
|
||||||
|
public bool IsLoggedIn => _loggedIn;
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,8 @@ using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using Dapplo.HttpExtensions;
|
||||||
|
using Dapplo.Jira.Entities;
|
||||||
using Greenshot.IniFile;
|
using Greenshot.IniFile;
|
||||||
using Greenshot.Plugin;
|
using Greenshot.Plugin;
|
||||||
using GreenshotJiraPlugin.Forms;
|
using GreenshotJiraPlugin.Forms;
|
||||||
|
@ -39,25 +41,21 @@ namespace GreenshotJiraPlugin {
|
||||||
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraDestination));
|
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraDestination));
|
||||||
private static readonly JiraConfiguration Config = IniConfig.GetIniSection<JiraConfiguration>();
|
private static readonly JiraConfiguration Config = IniConfig.GetIniSection<JiraConfiguration>();
|
||||||
private readonly JiraPlugin _jiraPlugin;
|
private readonly JiraPlugin _jiraPlugin;
|
||||||
private readonly JiraIssue _jira;
|
private readonly Issue _jira;
|
||||||
|
|
||||||
public JiraDestination(JiraPlugin jiraPlugin) {
|
public JiraDestination(JiraPlugin jiraPlugin) {
|
||||||
_jiraPlugin = jiraPlugin;
|
_jiraPlugin = jiraPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JiraDestination(JiraPlugin jiraPlugin, JiraIssue jira) {
|
public JiraDestination(JiraPlugin jiraPlugin, Issue jira) {
|
||||||
_jiraPlugin = jiraPlugin;
|
_jiraPlugin = jiraPlugin;
|
||||||
_jira = jira;
|
_jira = jira;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string Designation {
|
public override string Designation => "Jira";
|
||||||
get {
|
|
||||||
return "Jira";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string FormatUpload(JiraIssue jira) {
|
private string FormatUpload(Issue jira) {
|
||||||
return Designation + " - " + jira.Key + ": " + jira.Summary.Substring(0, Math.Min(20, jira.Summary.Length));
|
return Designation + " - " + jira.Key + ": " + jira.Fields.Summary.Substring(0, Math.Min(20, jira.Fields.Summary.Length));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string Description {
|
public override string Description {
|
||||||
|
@ -70,17 +68,10 @@ namespace GreenshotJiraPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool isActive {
|
public override bool isActive => base.isActive && !string.IsNullOrEmpty(Config.Url);
|
||||||
get {
|
|
||||||
return base.isActive && !string.IsNullOrEmpty(Config.Url);
|
public override bool isDynamic => true;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool isDynamic {
|
|
||||||
get {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public override Image DisplayIcon {
|
public override Image DisplayIcon {
|
||||||
get {
|
get {
|
||||||
var resources = new ComponentResourceManager(typeof(JiraPlugin));
|
var resources = new ComponentResourceManager(typeof(JiraPlugin));
|
||||||
|
@ -92,7 +83,7 @@ namespace GreenshotJiraPlugin {
|
||||||
if (JiraPlugin.Instance.CurrentJiraConnector == null || !JiraPlugin.Instance.CurrentJiraConnector.IsLoggedIn) {
|
if (JiraPlugin.Instance.CurrentJiraConnector == null || !JiraPlugin.Instance.CurrentJiraConnector.IsLoggedIn) {
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
List<JiraIssue> issues = JiraUtils.GetCurrentJiras();
|
var issues = JiraUtils.GetCurrentJirasAsync().Result;
|
||||||
if (issues != null) {
|
if (issues != null) {
|
||||||
foreach(var jiraIssue in issues) {
|
foreach(var jiraIssue in issues) {
|
||||||
yield return new JiraDestination(_jiraPlugin, jiraIssue);
|
yield return new JiraDestination(_jiraPlugin, jiraIssue);
|
||||||
|
@ -108,37 +99,43 @@ namespace GreenshotJiraPlugin {
|
||||||
try {
|
try {
|
||||||
// Run upload in the background
|
// Run upload in the background
|
||||||
new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait),
|
new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait),
|
||||||
delegate {
|
async () =>
|
||||||
_jiraPlugin.JiraConnector.AddAttachment(_jira.Key, filename, new SurfaceContainer(surfaceToUpload, outputSettings, filename));
|
{
|
||||||
|
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;
|
exportInformation.ExportMade = true;
|
||||||
// TODO: This can't work:
|
|
||||||
exportInformation.Uri = surfaceToUpload.UploadURL;
|
exportInformation.Uri = surfaceToUpload.UploadURL;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message);
|
MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
JiraForm jiraForm = new JiraForm(_jiraPlugin.JiraConnector);
|
var jiraForm = new JiraForm(_jiraPlugin.JiraConnector);
|
||||||
if (_jiraPlugin.JiraConnector.IsLoggedIn) {
|
jiraForm.SetFilename(filename);
|
||||||
jiraForm.SetFilename(filename);
|
var dialogResult = jiraForm.ShowDialog();
|
||||||
DialogResult result = jiraForm.ShowDialog();
|
if (dialogResult == DialogResult.OK) {
|
||||||
if (result == DialogResult.OK) {
|
try {
|
||||||
try {
|
surfaceToUpload.UploadURL = _jiraPlugin.JiraConnector.JiraBaseUri.AppendSegments("browse", jiraForm.GetJiraIssue().Key).AbsoluteUri;
|
||||||
// Run upload in the background
|
// Run upload in the background
|
||||||
new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait),
|
new PleaseWaitForm().ShowAndWait(Description, Language.GetString("jira", LangKey.communication_wait),
|
||||||
delegate {
|
async () =>
|
||||||
jiraForm.Upload(new SurfaceContainer(surfaceToUpload, outputSettings, filename));
|
{
|
||||||
}
|
await jiraForm.UploadAsync(new SurfaceContainer(surfaceToUpload, outputSettings, filename));
|
||||||
);
|
}
|
||||||
Log.Debug("Uploaded to Jira.");
|
);
|
||||||
exportInformation.ExportMade = true;
|
Log.DebugFormat("Uploaded to Jira {0}", jiraForm.GetJiraIssue().Key);
|
||||||
// TODO: This can't work:
|
exportInformation.ExportMade = true;
|
||||||
exportInformation.Uri = surfaceToUpload.UploadURL;
|
exportInformation.Uri = surfaceToUpload.UploadURL;
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message);
|
MessageBox.Show(Language.GetString("jira", LangKey.upload_failure) + " " + e.Message);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,11 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Greenshot.IniFile;
|
using Greenshot.IniFile;
|
||||||
using Greenshot.Plugin;
|
using Greenshot.Plugin;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using GreenshotJiraPlugin.Forms;
|
using GreenshotJiraPlugin.Forms;
|
||||||
|
|
||||||
namespace GreenshotJiraPlugin {
|
namespace GreenshotJiraPlugin {
|
||||||
|
@ -32,7 +32,6 @@ namespace GreenshotJiraPlugin {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class JiraPlugin : IGreenshotPlugin {
|
public class JiraPlugin : IGreenshotPlugin {
|
||||||
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraPlugin));
|
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraPlugin));
|
||||||
private PluginAttribute _jiraPluginAttributes;
|
|
||||||
private JiraConnector _jiraConnector;
|
private JiraConnector _jiraConnector;
|
||||||
private JiraConfiguration _config;
|
private JiraConfiguration _config;
|
||||||
private static JiraPlugin _instance;
|
private static JiraPlugin _instance;
|
||||||
|
@ -42,7 +41,7 @@ namespace GreenshotJiraPlugin {
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void Dispose(bool disposing) {
|
protected void Dispose(bool disposing) {
|
||||||
if (disposing) {
|
if (disposing) {
|
||||||
if (_jiraConnector != null) {
|
if (_jiraConnector != null) {
|
||||||
_jiraConnector.Dispose();
|
_jiraConnector.Dispose();
|
||||||
|
@ -51,22 +50,12 @@ namespace GreenshotJiraPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JiraPlugin Instance {
|
public static JiraPlugin Instance => _instance;
|
||||||
get {
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public JiraPlugin() {
|
public JiraPlugin() {
|
||||||
_instance = this;
|
_instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PluginAttribute JiraPluginAttributes {
|
|
||||||
get {
|
|
||||||
return _jiraPluginAttributes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<IDestination> Destinations() {
|
public IEnumerable<IDestination> Destinations() {
|
||||||
yield return new JiraDestination(this);
|
yield return new JiraDestination(this);
|
||||||
}
|
}
|
||||||
|
@ -76,16 +65,12 @@ namespace GreenshotJiraPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Needed for a fail-fast
|
//Needed for a fail-fast
|
||||||
public JiraConnector CurrentJiraConnector {
|
public JiraConnector CurrentJiraConnector => _jiraConnector;
|
||||||
get {
|
|
||||||
return _jiraConnector;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public JiraConnector JiraConnector {
|
public JiraConnector JiraConnector {
|
||||||
get {
|
get {
|
||||||
if (_jiraConnector == null) {
|
if (_jiraConnector == null) {
|
||||||
_jiraConnector = new JiraConnector(true);
|
_jiraConnector = new JiraConnector();
|
||||||
}
|
}
|
||||||
return _jiraConnector;
|
return _jiraConnector;
|
||||||
}
|
}
|
||||||
|
@ -97,33 +82,34 @@ namespace GreenshotJiraPlugin {
|
||||||
/// <param name="pluginHost">Use the IGreenshotPluginHost interface to register events</param>
|
/// <param name="pluginHost">Use the IGreenshotPluginHost interface to register events</param>
|
||||||
/// <param name="myAttributes">My own attributes</param>
|
/// <param name="myAttributes">My own attributes</param>
|
||||||
/// <returns>true if plugin is initialized, false if not (doesn't show)</returns>
|
/// <returns>true if plugin is initialized, false if not (doesn't show)</returns>
|
||||||
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)
|
// Register configuration (don't need the configuration itself)
|
||||||
_config = IniConfig.GetIniSection<JiraConfiguration>();
|
_config = IniConfig.GetIniSection<JiraConfiguration>();
|
||||||
new ComponentResourceManager(typeof(JiraPlugin));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Shutdown() {
|
public void Shutdown() {
|
||||||
Log.Debug("Jira Plugin shutdown.");
|
Log.Debug("Jira Plugin shutdown.");
|
||||||
if (_jiraConnector != null) {
|
if (_jiraConnector != null)
|
||||||
_jiraConnector.Logout();
|
{
|
||||||
|
Task.Run(async () => await _jiraConnector.Logout());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Implementation of the IPlugin.Configure
|
/// Implementation of the IPlugin.Configure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void Configure() {
|
public void Configure() {
|
||||||
string url = _config.Url;
|
string url = _config.Url;
|
||||||
if (ShowConfigDialog()) {
|
if (ShowConfigDialog()) {
|
||||||
// check for re-login
|
// check for re-login
|
||||||
if (_jiraConnector != null && _jiraConnector.IsLoggedIn && !string.IsNullOrEmpty(url)) {
|
if (_jiraConnector != null && _jiraConnector.IsLoggedIn && !string.IsNullOrEmpty(url)) {
|
||||||
if (!url.Equals(_config.Url)) {
|
if (!url.Equals(_config.Url)) {
|
||||||
_jiraConnector.Logout();
|
Task.Run(async () =>
|
||||||
_jiraConnector.Login();
|
{
|
||||||
|
await _jiraConnector.Logout();
|
||||||
|
await _jiraConnector.Login();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,15 +129,5 @@ namespace GreenshotJiraPlugin {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This will be called when Greenshot is shutting down
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
public void Closing(object sender, FormClosingEventArgs e) {
|
|
||||||
Log.Debug("Application closing, calling logout of jira!");
|
|
||||||
Shutdown();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,12 @@
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Dapplo.Jira.Entities;
|
||||||
using Greenshot.IniFile;
|
using Greenshot.IniFile;
|
||||||
using GreenshotPlugin.Core;
|
using GreenshotPlugin.Core;
|
||||||
|
|
||||||
|
@ -30,15 +34,16 @@ namespace GreenshotJiraPlugin {
|
||||||
public static class JiraUtils {
|
public static class JiraUtils {
|
||||||
private static readonly Regex JiraKeyRegex = new Regex(@"/browse/([A-Z0-9]+\-[0-9]+)");
|
private static readonly Regex JiraKeyRegex = new Regex(@"/browse/([A-Z0-9]+\-[0-9]+)");
|
||||||
private static readonly JiraConfiguration Config = IniConfig.GetIniSection<JiraConfiguration>();
|
private static readonly JiraConfiguration Config = IniConfig.GetIniSection<JiraConfiguration>();
|
||||||
|
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(JiraUtils));
|
||||||
|
|
||||||
public static List<JiraIssue> GetCurrentJiras() {
|
public static async Task<IList<Issue>> GetCurrentJirasAsync() {
|
||||||
// Make sure we suppress the login
|
// Make sure we suppress the login
|
||||||
List<string> jirakeys = new List<string>();
|
var jirakeys = new List<string>();
|
||||||
foreach(string url in IEHelper.GetIEUrls()) {
|
foreach(string url in IEHelper.GetIEUrls()) {
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
MatchCollection jiraKeyMatch = JiraKeyRegex.Matches(url);
|
var jiraKeyMatch = JiraKeyRegex.Matches(url);
|
||||||
if (jiraKeyMatch.Count > 0) {
|
if (jiraKeyMatch.Count > 0) {
|
||||||
string jiraKey = jiraKeyMatch[0].Groups[1].Value;
|
string jiraKey = jiraKeyMatch[0].Groups[1].Value;
|
||||||
jirakeys.Add(jiraKey);
|
jirakeys.Add(jiraKey);
|
||||||
|
@ -48,19 +53,19 @@ namespace GreenshotJiraPlugin {
|
||||||
jirakeys.Add(Config.LastUsedJira);
|
jirakeys.Add(Config.LastUsedJira);
|
||||||
}
|
}
|
||||||
if (jirakeys.Count > 0) {
|
if (jirakeys.Count > 0) {
|
||||||
List<JiraIssue> jiraIssues = new List<JiraIssue>();
|
var jiraIssues = new List<Issue>();
|
||||||
foreach(string jiraKey in jirakeys) {
|
foreach(string jiraKey in jirakeys) {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
JiraIssue issue = JiraPlugin.Instance.JiraConnector.GetIssue(jiraKey);
|
var issue = await JiraPlugin.Instance.JiraConnector.GetIssueAsync(jiraKey).ConfigureAwait(false);
|
||||||
if (issue != null)
|
if (issue != null)
|
||||||
{
|
{
|
||||||
jiraIssues.Add(issue);
|
jiraIssues.Add(issue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Log.Error(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (jiraIssues.Count > 0) {
|
if (jiraIssues.Count > 0) {
|
||||||
|
|
120
GreenshotJiraPlugin/Log4NetLogger.cs
Normal file
120
GreenshotJiraPlugin/Log4NetLogger.cs
Normal file
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using Dapplo.Log.Facade;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
|
namespace GreenshotJiraPlugin
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Used to make Dapplo.Log, used in Dapplo.Jira, write to Log4net
|
||||||
|
/// </summary>
|
||||||
|
public class Log4NetLogger : AbstractLogger
|
||||||
|
{
|
||||||
|
private ILog GetLogger(LogSource logSource)
|
||||||
|
{
|
||||||
|
return logSource.SourceType != null ? LogManager.GetLogger(logSource.SourceType) : LogManager.GetLogger(logSource.Source);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Write the supplied information to a log4net.ILog
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logInfo">LogInfo</param>
|
||||||
|
/// <param name="messageTemplate">string</param>
|
||||||
|
/// <param name="propertyValues">params object[]</param>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Make sure there are no newlines passed
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logInfo"></param>
|
||||||
|
/// <param name="messageTemplate"></param>
|
||||||
|
/// <param name="logParameters"></param>
|
||||||
|
public override void WriteLine(LogInfo logInfo, string messageTemplate, params object[] logParameters)
|
||||||
|
{
|
||||||
|
Write(logInfo, messageTemplate, logParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test if a certain LogLevels enum is enabled
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="level">LogLevels value</param>
|
||||||
|
/// <param name="logSource">LogSource to check for</param>
|
||||||
|
/// <returns>bool true if the LogLevels enum is enabled</returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
7
GreenshotJiraPlugin/packages.config
Normal file
7
GreenshotJiraPlugin/packages.config
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Dapplo.HttpExtensions" version="0.5.30" targetFramework="net45" />
|
||||||
|
<package id="Dapplo.Jira" version="0.1.56" targetFramework="net45" />
|
||||||
|
<package id="Dapplo.Log.Facade" version="0.5.4" targetFramework="net45" />
|
||||||
|
<package id="Dapplo.Utils" version="0.1.113" targetFramework="net45" />
|
||||||
|
</packages>
|
|
@ -30,8 +30,8 @@ namespace GreenshotPlugin.Controls {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class PleaseWaitForm : Form {
|
public partial class PleaseWaitForm : Form {
|
||||||
private static readonly ILog LOG = LogManager.GetLogger(typeof(PleaseWaitForm));
|
private static readonly ILog LOG = LogManager.GetLogger(typeof(PleaseWaitForm));
|
||||||
private Thread waitFor;
|
private Thread _waitFor;
|
||||||
private string title;
|
private string _title;
|
||||||
public PleaseWaitForm() {
|
public PleaseWaitForm() {
|
||||||
//
|
//
|
||||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||||
|
@ -60,7 +60,7 @@ namespace GreenshotPlugin.Controls {
|
||||||
/// <param name="text">The text in the form</param>
|
/// <param name="text">The text in the form</param>
|
||||||
/// <param name="waitDelegate">delegate { with your code }</param>
|
/// <param name="waitDelegate">delegate { with your code }</param>
|
||||||
public void ShowAndWait(string title, string text, ThreadStart waitDelegate) {
|
public void ShowAndWait(string title, string text, ThreadStart waitDelegate) {
|
||||||
this.title = title;
|
_title = title;
|
||||||
Text = title;
|
Text = title;
|
||||||
label_pleasewait.Text = text;
|
label_pleasewait.Text = text;
|
||||||
cancelButton.Text = Language.GetString("CANCEL");
|
cancelButton.Text = Language.GetString("CANCEL");
|
||||||
|
@ -72,23 +72,29 @@ namespace GreenshotPlugin.Controls {
|
||||||
Exception threadException = null;
|
Exception threadException = null;
|
||||||
try {
|
try {
|
||||||
// Wrap the passed delegate in a try/catch which makes it possible to save the exception
|
// Wrap the passed delegate in a try/catch which makes it possible to save the exception
|
||||||
waitFor = new Thread(new ThreadStart(
|
_waitFor = new Thread(new ThreadStart(
|
||||||
delegate {
|
delegate
|
||||||
try {
|
{
|
||||||
waitDelegate.Invoke();
|
try
|
||||||
} catch (Exception ex) {
|
{
|
||||||
LOG.Error("invoke error:", ex);
|
waitDelegate.Invoke();
|
||||||
threadException = ex;
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
})
|
{
|
||||||
);
|
LOG.Error("invoke error:", ex);
|
||||||
waitFor.Name = title;
|
threadException = ex;
|
||||||
waitFor.IsBackground = true;
|
}
|
||||||
waitFor.SetApartmentState(ApartmentState.STA);
|
})
|
||||||
waitFor.Start();
|
)
|
||||||
|
{
|
||||||
|
Name = title,
|
||||||
|
IsBackground = true
|
||||||
|
};
|
||||||
|
_waitFor.SetApartmentState(ApartmentState.STA);
|
||||||
|
_waitFor.Start();
|
||||||
|
|
||||||
// Wait until finished
|
// Wait until finished
|
||||||
while (!waitFor.Join(TimeSpan.FromMilliseconds(100))) {
|
while (!_waitFor.Join(TimeSpan.FromMilliseconds(100))) {
|
||||||
Application.DoEvents();
|
Application.DoEvents();
|
||||||
}
|
}
|
||||||
LOG.DebugFormat("Finished {0}", title);
|
LOG.DebugFormat("Finished {0}", title);
|
||||||
|
@ -110,9 +116,9 @@ namespace GreenshotPlugin.Controls {
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
void CancelButtonClick(object sender, EventArgs e) {
|
void CancelButtonClick(object sender, EventArgs e) {
|
||||||
LOG.DebugFormat("Cancel clicked on {0}", title);
|
LOG.DebugFormat("Cancel clicked on {0}", _title);
|
||||||
cancelButton.Enabled = false;
|
cancelButton.Enabled = false;
|
||||||
waitFor.Abort();
|
_waitFor.Abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -555,6 +555,8 @@ namespace GreenshotPlugin.Core {
|
||||||
string ToBase64String(Base64FormattingOptions formattingOptions);
|
string ToBase64String(Base64FormattingOptions formattingOptions);
|
||||||
byte[] ToByteArray();
|
byte[] ToByteArray();
|
||||||
void Upload(HttpWebRequest webRequest);
|
void Upload(HttpWebRequest webRequest);
|
||||||
|
|
||||||
|
string ContentType { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -634,6 +636,8 @@ namespace GreenshotPlugin.Core {
|
||||||
WriteToStream(requestStream);
|
WriteToStream(requestStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ContentType => _contentType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -686,7 +690,7 @@ namespace GreenshotPlugin.Core {
|
||||||
boundary,
|
boundary,
|
||||||
name,
|
name,
|
||||||
_fileName ?? name,
|
_fileName ?? name,
|
||||||
"image/" + _outputSettings.Format);
|
ContentType);
|
||||||
|
|
||||||
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
|
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
|
||||||
ImageOutput.SaveToStream(_bitmap, null, formDataStream, _outputSettings);
|
ImageOutput.SaveToStream(_bitmap, null, formDataStream, _outputSettings);
|
||||||
|
@ -711,6 +715,8 @@ namespace GreenshotPlugin.Core {
|
||||||
WriteToStream(requestStream);
|
WriteToStream(requestStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ContentType => "image/" + _outputSettings.Format;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -763,7 +769,7 @@ namespace GreenshotPlugin.Core {
|
||||||
boundary,
|
boundary,
|
||||||
name,
|
name,
|
||||||
_fileName ?? name,
|
_fileName ?? name,
|
||||||
"image/" + _outputSettings.Format);
|
ContentType);
|
||||||
|
|
||||||
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
|
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
|
||||||
ImageOutput.SaveToStream(_surface, formDataStream, _outputSettings);
|
ImageOutput.SaveToStream(_surface, formDataStream, _outputSettings);
|
||||||
|
@ -783,10 +789,12 @@ namespace GreenshotPlugin.Core {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="webRequest"></param>
|
/// <param name="webRequest"></param>
|
||||||
public void Upload(HttpWebRequest webRequest) {
|
public void Upload(HttpWebRequest webRequest) {
|
||||||
webRequest.ContentType = "image/" + _outputSettings.Format.ToString();
|
webRequest.ContentType = ContentType;
|
||||||
using (var requestStream = webRequest.GetRequestStream()) {
|
using (var requestStream = webRequest.GetRequestStream()) {
|
||||||
WriteToStream(requestStream);
|
WriteToStream(requestStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ContentType => "image/" + _outputSettings.Format;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue