Creating a branch 1.1 where I will try to make the 1.1.7 build available, this means I need to merge some changes from 2.0 to here.

This commit is contained in:
RKrom 2013-12-04 17:46:02 +01:00
parent 2a8e2475d8
commit a03bc31aef
247 changed files with 6986 additions and 8233 deletions

19
.gitignore vendored Normal file
View file

@ -0,0 +1,19 @@
.svn/
*.gsp
*.bak
*INSTALLER*.exe
*INSTALLER*.zip
*.paf.exe
*-SVN.*
bin/
obj/
fugue/
*Credentials.private.cs
*Credentials.orig.cs
upgradeLog.htm
upgradeLog.XML
*.log
/Greenshot/releases/additional_files/readme.txt
/*.error
/Greenshot/releases/innosetup/setup.iss

View file

@ -6,5 +6,8 @@
</startup> </startup>
<runtime> <runtime>
<loadFromRemoteSources enabled="true"/> <loadFromRemoteSources enabled="true"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="App\Greenshot"/>
</assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

View file

@ -47,4 +47,4 @@ using System.Runtime.InteropServices;
// You can specify all values by your own or you can build default build and revision // You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default): // numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.1.4.$WCREV$")] [assembly: AssemblyVersion("1.1.6.$WCREV$")]

View file

@ -57,6 +57,13 @@ namespace Greenshot.Configuration {
[IniProperty("SuppressSaveDialogAtClose", Description="Suppressed the 'do you want to save' dialog when closing the editor.", DefaultValue="False")] [IniProperty("SuppressSaveDialogAtClose", Description="Suppressed the 'do you want to save' dialog when closing the editor.", DefaultValue="False")]
public bool SuppressSaveDialogAtClose; public bool SuppressSaveDialogAtClose;
public override void AfterLoad() {
base.AfterLoad();
if (RecentColors == null) {
RecentColors = new List<Color>();
}
}
/// <param name="requestingType">Type of the class for which to create the field</param> /// <param name="requestingType">Type of the class for which to create the field</param>
/// <param name="fieldType">FieldType of the field to construct</param> /// <param name="fieldType">FieldType of the field to construct</param>
/// <param name="scope">FieldType of the field to construct</param> /// <param name="scope">FieldType of the field to construct</param>

View file

@ -47,7 +47,7 @@ namespace Greenshot.Drawing {
/// The StringFormat object is not serializable!! /// The StringFormat object is not serializable!!
/// </summary> /// </summary>
[NonSerialized] [NonSerialized]
StringFormat stringFormat; StringFormat stringFormat = new StringFormat();
private string text; private string text;
// there is a binding on the following property! // there is a binding on the following property!
@ -192,39 +192,46 @@ namespace Greenshot.Drawing {
bool fontBold = GetFieldValueAsBool(FieldType.FONT_BOLD); bool fontBold = GetFieldValueAsBool(FieldType.FONT_BOLD);
bool fontItalic = GetFieldValueAsBool(FieldType.FONT_ITALIC); bool fontItalic = GetFieldValueAsBool(FieldType.FONT_ITALIC);
float fontSize = GetFieldValueAsFloat(FieldType.FONT_SIZE); float fontSize = GetFieldValueAsFloat(FieldType.FONT_SIZE);
try {
if (fontInvalidated && fontFamily != null && fontSize != 0) {
FontStyle fs = FontStyle.Regular;
if (fontInvalidated && fontFamily != null && fontSize != 0) { bool hasStyle = false;
FontStyle fs = FontStyle.Regular; using(FontFamily fam = new FontFamily(fontFamily)) {
bool boldAvailable = fam.IsStyleAvailable(FontStyle.Bold);
if (fontBold && boldAvailable) {
fs |= FontStyle.Bold;
hasStyle = true;
}
bool hasStyle = false; bool italicAvailable = fam.IsStyleAvailable(FontStyle.Italic);
using(FontFamily fam = new FontFamily(fontFamily)) { if (fontItalic && italicAvailable) {
bool boldAvailable = fam.IsStyleAvailable(FontStyle.Bold); fs |= FontStyle.Italic;
if (fontBold && boldAvailable) { hasStyle = true;
fs |= FontStyle.Bold; }
hasStyle = true;
}
bool italicAvailable = fam.IsStyleAvailable(FontStyle.Italic); if (!hasStyle) {
if (fontItalic && italicAvailable) { bool regularAvailable = fam.IsStyleAvailable(FontStyle.Regular);
fs |= FontStyle.Italic; if (regularAvailable) {
hasStyle = true; fs = FontStyle.Regular;
} } else {
if (boldAvailable) {
if (!hasStyle) { fs = FontStyle.Bold;
bool regularAvailable = fam.IsStyleAvailable(FontStyle.Regular); } else if(italicAvailable) {
if (regularAvailable) { fs = FontStyle.Italic;
fs = FontStyle.Regular; }
} else {
if (boldAvailable) {
fs = FontStyle.Bold;
} else if(italicAvailable) {
fs = FontStyle.Italic;
} }
} }
font = new Font(fam, fontSize, fs, GraphicsUnit.Pixel);
} }
font = new Font(fam, fontSize, fs, GraphicsUnit.Pixel); fontInvalidated = false;
} }
fontInvalidated = false; } catch (Exception ex) {
ex.Data.Add("fontFamily", fontFamily);
ex.Data.Add("fontBold", fontBold);
ex.Data.Add("fontItalic", fontItalic);
ex.Data.Add("fontSize", fontSize);
throw;
} }
stringFormat.Alignment = (StringAlignment)GetFieldValue(FieldType.TEXT_HORIZONTAL_ALIGNMENT); stringFormat.Alignment = (StringAlignment)GetFieldValue(FieldType.TEXT_HORIZONTAL_ALIGNMENT);

View file

@ -90,7 +90,6 @@ namespace Greenshot {
var thread = new Thread(delegate() {AddDestinations();}); var thread = new Thread(delegate() {AddDestinations();});
thread.Name = "add destinations"; thread.Name = "add destinations";
thread.Start(); thread.Start();
IniConfig.IniChanged += new FileSystemEventHandler(ReloadConfiguration);
}; };
// Make sure the editor is placed on the same location as the last editor was on close // Make sure the editor is placed on the same location as the last editor was on close
@ -356,18 +355,6 @@ namespace Greenshot {
ImageEditorFormResize(sender, new EventArgs()); ImageEditorFormResize(sender, new EventArgs());
} }
private void ReloadConfiguration(object source, FileSystemEventArgs e) {
this.Invoke((MethodInvoker) delegate {
// Even update language when needed
ApplyLanguage();
// Fix title
if (surface != null && surface.CaptureDetails != null && surface.CaptureDetails.Title != null) {
this.Text = surface.CaptureDetails.Title + " - " + Language.GetString(LangKey.editor_title);
}
});
}
public ISurface Surface { public ISurface Surface {
get { get {
return surface; return surface;
@ -680,7 +667,6 @@ namespace Greenshot {
} }
void ImageEditorFormFormClosing(object sender, FormClosingEventArgs e) { void ImageEditorFormFormClosing(object sender, FormClosingEventArgs e) {
IniConfig.IniChanged -= new FileSystemEventHandler(ReloadConfiguration);
if (surface.Modified && !editorConfiguration.SuppressSaveDialogAtClose) { if (surface.Modified && !editorConfiguration.SuppressSaveDialogAtClose) {
// Make sure the editor is visible // Make sure the editor is visible
WindowDetails.ToForeground(this.Handle); WindowDetails.ToForeground(this.Handle);
@ -1277,13 +1263,16 @@ namespace Greenshot {
} }
private void ImageEditorFormResize(object sender, EventArgs e) { private void ImageEditorFormResize(object sender, EventArgs e) {
if (this.Surface == null) { if (this.Surface == null || this.Surface.Image == null || this.panel1 == null) {
return; return;
} }
Size imageSize = this.Surface.Image.Size; Size imageSize = this.Surface.Image.Size;
Size currentClientSize = this.panel1.ClientSize; Size currentClientSize = this.panel1.ClientSize;
var canvas = this.Surface as Control; var canvas = this.Surface as Control;
Panel panel = (Panel)canvas.Parent; Panel panel = (Panel)canvas.Parent;
if (panel == null) {
return;
}
int offsetX = -panel.HorizontalScroll.Value; int offsetX = -panel.HorizontalScroll.Value;
int offsetY = -panel.VerticalScroll.Value; int offsetY = -panel.VerticalScroll.Value;
if (canvas != null) { if (canvas != null) {

View file

@ -153,6 +153,10 @@ namespace Greenshot {
helpOutput.AppendLine("\t\tSet the language of Greenshot, e.g. greenshot /language en-US."); helpOutput.AppendLine("\t\tSet the language of Greenshot, e.g. greenshot /language en-US.");
helpOutput.AppendLine(); helpOutput.AppendLine();
helpOutput.AppendLine(); helpOutput.AppendLine();
helpOutput.AppendLine("\t/inidirectory [directory]");
helpOutput.AppendLine("\t\tSet the directory where the greenshot.ini should be stored & read.");
helpOutput.AppendLine();
helpOutput.AppendLine();
helpOutput.AppendLine("\t[filename]"); helpOutput.AppendLine("\t[filename]");
helpOutput.AppendLine("\t\tOpen the bitmap files in the running Greenshot instance or start a new instance"); helpOutput.AppendLine("\t\tOpen the bitmap files in the running Greenshot instance or start a new instance");
Console.WriteLine(helpOutput.ToString()); Console.WriteLine(helpOutput.ToString());
@ -202,6 +206,12 @@ namespace Greenshot {
continue; continue;
} }
// Setting the INI-directory
if (argument.ToLower().Equals("/inidirectory")) {
IniConfig.IniDirectory = args[++argumentNr];
continue;
}
// Files to open // Files to open
filesToOpen.Add(argument); filesToOpen.Add(argument);
} }
@ -338,8 +348,6 @@ namespace Greenshot {
// Disable access to the settings, for feature #3521446 // Disable access to the settings, for feature #3521446
contextmenu_settings.Visible = !conf.DisableSettings; contextmenu_settings.Visible = !conf.DisableSettings;
IniConfig.IniChanged += new FileSystemEventHandler(ReloadConfiguration);
// Make sure all hotkeys pass this window! // Make sure all hotkeys pass this window!
HotkeyControl.RegisterHotkeyHWND(this.Handle); HotkeyControl.RegisterHotkeyHWND(this.Handle);
RegisterHotkeys(); RegisterHotkeys();
@ -441,7 +449,14 @@ namespace Greenshot {
LOG.Info("Reload requested"); LOG.Info("Reload requested");
try { try {
IniConfig.Reload(); IniConfig.Reload();
ReloadConfiguration(null, null); this.Invoke((MethodInvoker)delegate {
// Even update language when needed
UpdateUI();
// Update the hotkey
// Make sure the current hotkeys are disabled
HotkeyControl.UnregisterHotkeys();
RegisterHotkeys();
});
} catch {} } catch {}
break; break;
case CommandEnum.OpenFile: case CommandEnum.OpenFile:
@ -462,23 +477,6 @@ namespace Greenshot {
} }
} }
/// <summary>
/// This is called when the ini-file changes
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void ReloadConfiguration(object source, FileSystemEventArgs e) {
Language.CurrentLanguage = null; // Reload
this.Invoke((MethodInvoker) delegate {
// Even update language when needed
UpdateUI();
// Update the hotkey
// Make sure the current hotkeys are disabled
HotkeyControl.UnregisterHotkeys();
RegisterHotkeys();
});
}
public ContextMenuStrip MainMenu { public ContextMenuStrip MainMenu {
get {return contextMenu;} get {return contextMenu;}
} }

View file

@ -99,8 +99,8 @@ namespace Greenshot {
this.checkbox_ie_capture = new GreenshotPlugin.Controls.GreenshotCheckBox(); this.checkbox_ie_capture = new GreenshotPlugin.Controls.GreenshotCheckBox();
this.groupbox_windowscapture = new GreenshotPlugin.Controls.GreenshotGroupBox(); this.groupbox_windowscapture = new GreenshotPlugin.Controls.GreenshotGroupBox();
this.colorButton_window_background = new Greenshot.Controls.ColorButton(); this.colorButton_window_background = new Greenshot.Controls.ColorButton();
this.label_window_capture_mode = new GreenshotPlugin.Controls.GreenshotLabel(); this.radiobuttonWindowCapture = new GreenshotPlugin.Controls.GreenshotRadioButton();
this.checkbox_capture_windows_interactive = new GreenshotPlugin.Controls.GreenshotCheckBox(); this.radiobuttonInteractiveCapture = new GreenshotPlugin.Controls.GreenshotRadioButton();
this.combobox_window_capture_mode = new System.Windows.Forms.ComboBox(); this.combobox_window_capture_mode = new System.Windows.Forms.ComboBox();
this.groupbox_capture = new GreenshotPlugin.Controls.GreenshotGroupBox(); this.groupbox_capture = new GreenshotPlugin.Controls.GreenshotGroupBox();
this.checkbox_notifications = new GreenshotPlugin.Controls.GreenshotCheckBox(); this.checkbox_notifications = new GreenshotPlugin.Controls.GreenshotCheckBox();
@ -186,7 +186,6 @@ namespace Greenshot {
this.label_storagelocation.Name = "label_storagelocation"; this.label_storagelocation.Name = "label_storagelocation";
this.label_storagelocation.Size = new System.Drawing.Size(126, 23); this.label_storagelocation.Size = new System.Drawing.Size(126, 23);
this.label_storagelocation.TabIndex = 11; this.label_storagelocation.TabIndex = 11;
this.label_storagelocation.Text = "Storage location";
// //
// settings_cancel // settings_cancel
// //
@ -195,7 +194,6 @@ namespace Greenshot {
this.settings_cancel.Name = "settings_cancel"; this.settings_cancel.Name = "settings_cancel";
this.settings_cancel.Size = new System.Drawing.Size(75, 23); this.settings_cancel.Size = new System.Drawing.Size(75, 23);
this.settings_cancel.TabIndex = 7; this.settings_cancel.TabIndex = 7;
this.settings_cancel.Text = "Cancel";
this.settings_cancel.UseVisualStyleBackColor = true; this.settings_cancel.UseVisualStyleBackColor = true;
this.settings_cancel.Click += new System.EventHandler(this.Settings_cancelClick); this.settings_cancel.Click += new System.EventHandler(this.Settings_cancelClick);
// //
@ -206,7 +204,6 @@ namespace Greenshot {
this.settings_confirm.Name = "settings_confirm"; this.settings_confirm.Name = "settings_confirm";
this.settings_confirm.Size = new System.Drawing.Size(75, 23); this.settings_confirm.Size = new System.Drawing.Size(75, 23);
this.settings_confirm.TabIndex = 6; this.settings_confirm.TabIndex = 6;
this.settings_confirm.Text = "Ok";
this.settings_confirm.UseVisualStyleBackColor = true; this.settings_confirm.UseVisualStyleBackColor = true;
this.settings_confirm.Click += new System.EventHandler(this.Settings_okayClick); this.settings_confirm.Click += new System.EventHandler(this.Settings_okayClick);
// //
@ -227,7 +224,6 @@ namespace Greenshot {
this.label_screenshotname.Name = "label_screenshotname"; this.label_screenshotname.Name = "label_screenshotname";
this.label_screenshotname.Size = new System.Drawing.Size(126, 23); this.label_screenshotname.Size = new System.Drawing.Size(126, 23);
this.label_screenshotname.TabIndex = 9; this.label_screenshotname.TabIndex = 9;
this.label_screenshotname.Text = "Filename pattern";
// //
// textbox_screenshotname // textbox_screenshotname
// //
@ -244,7 +240,6 @@ namespace Greenshot {
this.label_language.Name = "label_language"; this.label_language.Name = "label_language";
this.label_language.Size = new System.Drawing.Size(181, 23); this.label_language.Size = new System.Drawing.Size(181, 23);
this.label_language.TabIndex = 10; this.label_language.TabIndex = 10;
this.label_language.Text = "Language";
// //
// combobox_language // combobox_language
// //
@ -273,7 +268,6 @@ namespace Greenshot {
this.label_primaryimageformat.Name = "label_primaryimageformat"; this.label_primaryimageformat.Name = "label_primaryimageformat";
this.label_primaryimageformat.Size = new System.Drawing.Size(126, 19); this.label_primaryimageformat.Size = new System.Drawing.Size(126, 19);
this.label_primaryimageformat.TabIndex = 8; this.label_primaryimageformat.TabIndex = 8;
this.label_primaryimageformat.Text = "Image format";
// //
// groupbox_preferredfilesettings // groupbox_preferredfilesettings
// //
@ -292,7 +286,6 @@ namespace Greenshot {
this.groupbox_preferredfilesettings.Size = new System.Drawing.Size(412, 122); this.groupbox_preferredfilesettings.Size = new System.Drawing.Size(412, 122);
this.groupbox_preferredfilesettings.TabIndex = 13; this.groupbox_preferredfilesettings.TabIndex = 13;
this.groupbox_preferredfilesettings.TabStop = false; this.groupbox_preferredfilesettings.TabStop = false;
this.groupbox_preferredfilesettings.Text = "Preferred Output File Settings";
// //
// btnPatternHelp // btnPatternHelp
// //
@ -312,7 +305,6 @@ namespace Greenshot {
this.checkbox_copypathtoclipboard.PropertyName = "OutputFileCopyPathToClipboard"; this.checkbox_copypathtoclipboard.PropertyName = "OutputFileCopyPathToClipboard";
this.checkbox_copypathtoclipboard.Size = new System.Drawing.Size(394, 24); this.checkbox_copypathtoclipboard.Size = new System.Drawing.Size(394, 24);
this.checkbox_copypathtoclipboard.TabIndex = 18; this.checkbox_copypathtoclipboard.TabIndex = 18;
this.checkbox_copypathtoclipboard.Text = "Copy file path to clipboard every time an image is saved";
this.checkbox_copypathtoclipboard.UseVisualStyleBackColor = true; this.checkbox_copypathtoclipboard.UseVisualStyleBackColor = true;
// //
// groupbox_applicationsettings // groupbox_applicationsettings
@ -326,7 +318,6 @@ namespace Greenshot {
this.groupbox_applicationsettings.Size = new System.Drawing.Size(412, 68); this.groupbox_applicationsettings.Size = new System.Drawing.Size(412, 68);
this.groupbox_applicationsettings.TabIndex = 14; this.groupbox_applicationsettings.TabIndex = 14;
this.groupbox_applicationsettings.TabStop = false; this.groupbox_applicationsettings.TabStop = false;
this.groupbox_applicationsettings.Text = "Application Settings";
// //
// checkbox_autostartshortcut // checkbox_autostartshortcut
// //
@ -335,7 +326,6 @@ namespace Greenshot {
this.checkbox_autostartshortcut.Name = "checkbox_autostartshortcut"; this.checkbox_autostartshortcut.Name = "checkbox_autostartshortcut";
this.checkbox_autostartshortcut.Size = new System.Drawing.Size(397, 25); this.checkbox_autostartshortcut.Size = new System.Drawing.Size(397, 25);
this.checkbox_autostartshortcut.TabIndex = 15; this.checkbox_autostartshortcut.TabIndex = 15;
this.checkbox_autostartshortcut.Text = "Launch Greenshot on startup";
this.checkbox_autostartshortcut.UseVisualStyleBackColor = true; this.checkbox_autostartshortcut.UseVisualStyleBackColor = true;
// //
// groupbox_qualitysettings // groupbox_qualitysettings
@ -351,7 +341,6 @@ namespace Greenshot {
this.groupbox_qualitysettings.Size = new System.Drawing.Size(412, 106); this.groupbox_qualitysettings.Size = new System.Drawing.Size(412, 106);
this.groupbox_qualitysettings.TabIndex = 14; this.groupbox_qualitysettings.TabIndex = 14;
this.groupbox_qualitysettings.TabStop = false; this.groupbox_qualitysettings.TabStop = false;
this.groupbox_qualitysettings.Text = "Quality settings";
// //
// checkbox_reducecolors // checkbox_reducecolors
// //
@ -361,7 +350,6 @@ namespace Greenshot {
this.checkbox_reducecolors.PropertyName = "OutputFileReduceColors"; this.checkbox_reducecolors.PropertyName = "OutputFileReduceColors";
this.checkbox_reducecolors.Size = new System.Drawing.Size(394, 25); this.checkbox_reducecolors.Size = new System.Drawing.Size(394, 25);
this.checkbox_reducecolors.TabIndex = 17; this.checkbox_reducecolors.TabIndex = 17;
this.checkbox_reducecolors.Text = "Reduce the amount of colors to a maximum of 256";
this.checkbox_reducecolors.UseVisualStyleBackColor = true; this.checkbox_reducecolors.UseVisualStyleBackColor = true;
// //
// checkbox_alwaysshowqualitydialog // checkbox_alwaysshowqualitydialog
@ -372,7 +360,6 @@ namespace Greenshot {
this.checkbox_alwaysshowqualitydialog.PropertyName = "OutputFilePromptQuality"; this.checkbox_alwaysshowqualitydialog.PropertyName = "OutputFilePromptQuality";
this.checkbox_alwaysshowqualitydialog.Size = new System.Drawing.Size(394, 25); this.checkbox_alwaysshowqualitydialog.Size = new System.Drawing.Size(394, 25);
this.checkbox_alwaysshowqualitydialog.TabIndex = 16; this.checkbox_alwaysshowqualitydialog.TabIndex = 16;
this.checkbox_alwaysshowqualitydialog.Text = "Show quality dialog every time an image is saved";
this.checkbox_alwaysshowqualitydialog.UseVisualStyleBackColor = true; this.checkbox_alwaysshowqualitydialog.UseVisualStyleBackColor = true;
// //
// label_jpegquality // label_jpegquality
@ -382,7 +369,6 @@ namespace Greenshot {
this.label_jpegquality.Name = "label_jpegquality"; this.label_jpegquality.Name = "label_jpegquality";
this.label_jpegquality.Size = new System.Drawing.Size(116, 23); this.label_jpegquality.Size = new System.Drawing.Size(116, 23);
this.label_jpegquality.TabIndex = 13; this.label_jpegquality.TabIndex = 13;
this.label_jpegquality.Text = "JPEG quality";
// //
// textBoxJpegQuality // textBoxJpegQuality
// //
@ -414,7 +400,6 @@ namespace Greenshot {
this.groupbox_destination.Size = new System.Drawing.Size(412, 311); this.groupbox_destination.Size = new System.Drawing.Size(412, 311);
this.groupbox_destination.TabIndex = 16; this.groupbox_destination.TabIndex = 16;
this.groupbox_destination.TabStop = false; this.groupbox_destination.TabStop = false;
this.groupbox_destination.Text = "Destination";
// //
// checkbox_picker // checkbox_picker
// //
@ -423,7 +408,6 @@ namespace Greenshot {
this.checkbox_picker.Name = "checkbox_picker"; this.checkbox_picker.Name = "checkbox_picker";
this.checkbox_picker.Size = new System.Drawing.Size(394, 24); this.checkbox_picker.Size = new System.Drawing.Size(394, 24);
this.checkbox_picker.TabIndex = 19; this.checkbox_picker.TabIndex = 19;
this.checkbox_picker.Text = "Select destination dynamically";
this.checkbox_picker.UseVisualStyleBackColor = true; this.checkbox_picker.UseVisualStyleBackColor = true;
this.checkbox_picker.CheckStateChanged += new System.EventHandler(this.DestinationsCheckStateChanged); this.checkbox_picker.CheckStateChanged += new System.EventHandler(this.DestinationsCheckStateChanged);
// //
@ -477,7 +461,6 @@ namespace Greenshot {
this.tab_general.Padding = new System.Windows.Forms.Padding(3); this.tab_general.Padding = new System.Windows.Forms.Padding(3);
this.tab_general.Size = new System.Drawing.Size(423, 351); this.tab_general.Size = new System.Drawing.Size(423, 351);
this.tab_general.TabIndex = 0; this.tab_general.TabIndex = 0;
this.tab_general.Text = "General";
this.tab_general.UseVisualStyleBackColor = true; this.tab_general.UseVisualStyleBackColor = true;
// //
// groupbox_network // groupbox_network
@ -491,7 +474,6 @@ namespace Greenshot {
this.groupbox_network.Size = new System.Drawing.Size(412, 72); this.groupbox_network.Size = new System.Drawing.Size(412, 72);
this.groupbox_network.TabIndex = 54; this.groupbox_network.TabIndex = 54;
this.groupbox_network.TabStop = false; this.groupbox_network.TabStop = false;
this.groupbox_network.Text = "Network and updates";
// //
// numericUpDown_daysbetweencheck // numericUpDown_daysbetweencheck
// //
@ -508,7 +490,6 @@ namespace Greenshot {
this.label_checkperiod.Name = "label_checkperiod"; this.label_checkperiod.Name = "label_checkperiod";
this.label_checkperiod.Size = new System.Drawing.Size(334, 23); this.label_checkperiod.Size = new System.Drawing.Size(334, 23);
this.label_checkperiod.TabIndex = 19; this.label_checkperiod.TabIndex = 19;
this.label_checkperiod.Text = "Update check interval in days (0=no check)";
// //
// checkbox_usedefaultproxy // checkbox_usedefaultproxy
// //
@ -518,7 +499,6 @@ namespace Greenshot {
this.checkbox_usedefaultproxy.PropertyName = "UseProxy"; this.checkbox_usedefaultproxy.PropertyName = "UseProxy";
this.checkbox_usedefaultproxy.Size = new System.Drawing.Size(397, 25); this.checkbox_usedefaultproxy.Size = new System.Drawing.Size(397, 25);
this.checkbox_usedefaultproxy.TabIndex = 17; this.checkbox_usedefaultproxy.TabIndex = 17;
this.checkbox_usedefaultproxy.Text = "Use default system proxy";
this.checkbox_usedefaultproxy.UseVisualStyleBackColor = true; this.checkbox_usedefaultproxy.UseVisualStyleBackColor = true;
// //
// groupbox_hotkeys // groupbox_hotkeys
@ -539,7 +519,6 @@ namespace Greenshot {
this.groupbox_hotkeys.Size = new System.Drawing.Size(412, 152); this.groupbox_hotkeys.Size = new System.Drawing.Size(412, 152);
this.groupbox_hotkeys.TabIndex = 15; this.groupbox_hotkeys.TabIndex = 15;
this.groupbox_hotkeys.TabStop = false; this.groupbox_hotkeys.TabStop = false;
this.groupbox_hotkeys.Text = "Hotkeys";
// //
// label_lastregion_hotkey // label_lastregion_hotkey
// //
@ -548,7 +527,6 @@ namespace Greenshot {
this.label_lastregion_hotkey.Name = "label_lastregion_hotkey"; this.label_lastregion_hotkey.Name = "label_lastregion_hotkey";
this.label_lastregion_hotkey.Size = new System.Drawing.Size(212, 20); this.label_lastregion_hotkey.Size = new System.Drawing.Size(212, 20);
this.label_lastregion_hotkey.TabIndex = 53; this.label_lastregion_hotkey.TabIndex = 53;
this.label_lastregion_hotkey.Text = "Capture last region";
// //
// lastregion_hotkeyControl // lastregion_hotkeyControl
// //
@ -567,7 +545,6 @@ namespace Greenshot {
this.label_ie_hotkey.Name = "label_ie_hotkey"; this.label_ie_hotkey.Name = "label_ie_hotkey";
this.label_ie_hotkey.Size = new System.Drawing.Size(212, 20); this.label_ie_hotkey.Size = new System.Drawing.Size(212, 20);
this.label_ie_hotkey.TabIndex = 51; this.label_ie_hotkey.TabIndex = 51;
this.label_ie_hotkey.Text = "Capture Internet Explorer";
// //
// ie_hotkeyControl // ie_hotkeyControl
// //
@ -586,7 +563,6 @@ namespace Greenshot {
this.label_region_hotkey.Name = "label_region_hotkey"; this.label_region_hotkey.Name = "label_region_hotkey";
this.label_region_hotkey.Size = new System.Drawing.Size(212, 20); this.label_region_hotkey.Size = new System.Drawing.Size(212, 20);
this.label_region_hotkey.TabIndex = 49; this.label_region_hotkey.TabIndex = 49;
this.label_region_hotkey.Text = "Capture region";
// //
// label_window_hotkey // label_window_hotkey
// //
@ -595,7 +571,6 @@ namespace Greenshot {
this.label_window_hotkey.Name = "label_window_hotkey"; this.label_window_hotkey.Name = "label_window_hotkey";
this.label_window_hotkey.Size = new System.Drawing.Size(212, 23); this.label_window_hotkey.Size = new System.Drawing.Size(212, 23);
this.label_window_hotkey.TabIndex = 48; this.label_window_hotkey.TabIndex = 48;
this.label_window_hotkey.Text = "Capture window";
// //
// label_fullscreen_hotkey // label_fullscreen_hotkey
// //
@ -604,7 +579,6 @@ namespace Greenshot {
this.label_fullscreen_hotkey.Name = "label_fullscreen_hotkey"; this.label_fullscreen_hotkey.Name = "label_fullscreen_hotkey";
this.label_fullscreen_hotkey.Size = new System.Drawing.Size(212, 23); this.label_fullscreen_hotkey.Size = new System.Drawing.Size(212, 23);
this.label_fullscreen_hotkey.TabIndex = 47; this.label_fullscreen_hotkey.TabIndex = 47;
this.label_fullscreen_hotkey.Text = "Capture full screen";
// //
// region_hotkeyControl // region_hotkeyControl
// //
@ -647,7 +621,6 @@ namespace Greenshot {
this.tab_capture.Name = "tab_capture"; this.tab_capture.Name = "tab_capture";
this.tab_capture.Size = new System.Drawing.Size(423, 351); this.tab_capture.Size = new System.Drawing.Size(423, 351);
this.tab_capture.TabIndex = 3; this.tab_capture.TabIndex = 3;
this.tab_capture.Text = "Capture";
this.tab_capture.UseVisualStyleBackColor = true; this.tab_capture.UseVisualStyleBackColor = true;
// //
// groupbox_editor // groupbox_editor
@ -659,7 +632,6 @@ namespace Greenshot {
this.groupbox_editor.Size = new System.Drawing.Size(416, 50); this.groupbox_editor.Size = new System.Drawing.Size(416, 50);
this.groupbox_editor.TabIndex = 27; this.groupbox_editor.TabIndex = 27;
this.groupbox_editor.TabStop = false; this.groupbox_editor.TabStop = false;
this.groupbox_editor.Text = "Editor";
// //
// checkbox_editor_match_capture_size // checkbox_editor_match_capture_size
// //
@ -670,7 +642,6 @@ namespace Greenshot {
this.checkbox_editor_match_capture_size.SectionName = "Editor"; this.checkbox_editor_match_capture_size.SectionName = "Editor";
this.checkbox_editor_match_capture_size.Size = new System.Drawing.Size(397, 24); this.checkbox_editor_match_capture_size.Size = new System.Drawing.Size(397, 24);
this.checkbox_editor_match_capture_size.TabIndex = 26; this.checkbox_editor_match_capture_size.TabIndex = 26;
this.checkbox_editor_match_capture_size.Text = "Match capture size";
this.checkbox_editor_match_capture_size.UseVisualStyleBackColor = true; this.checkbox_editor_match_capture_size.UseVisualStyleBackColor = true;
// //
// groupbox_iecapture // groupbox_iecapture
@ -682,7 +653,6 @@ namespace Greenshot {
this.groupbox_iecapture.Size = new System.Drawing.Size(416, 50); this.groupbox_iecapture.Size = new System.Drawing.Size(416, 50);
this.groupbox_iecapture.TabIndex = 2; this.groupbox_iecapture.TabIndex = 2;
this.groupbox_iecapture.TabStop = false; this.groupbox_iecapture.TabStop = false;
this.groupbox_iecapture.Text = "Internet Explorer capture";
// //
// checkbox_ie_capture // checkbox_ie_capture
// //
@ -692,14 +662,13 @@ namespace Greenshot {
this.checkbox_ie_capture.PropertyName = "IECapture"; this.checkbox_ie_capture.PropertyName = "IECapture";
this.checkbox_ie_capture.Size = new System.Drawing.Size(404, 24); this.checkbox_ie_capture.Size = new System.Drawing.Size(404, 24);
this.checkbox_ie_capture.TabIndex = 26; this.checkbox_ie_capture.TabIndex = 26;
this.checkbox_ie_capture.Text = "Internet Explorer capture";
this.checkbox_ie_capture.UseVisualStyleBackColor = true; this.checkbox_ie_capture.UseVisualStyleBackColor = true;
// //
// groupbox_windowscapture // groupbox_windowscapture
// //
this.groupbox_windowscapture.Controls.Add(this.colorButton_window_background); this.groupbox_windowscapture.Controls.Add(this.colorButton_window_background);
this.groupbox_windowscapture.Controls.Add(this.label_window_capture_mode); this.groupbox_windowscapture.Controls.Add(this.radiobuttonWindowCapture);
this.groupbox_windowscapture.Controls.Add(this.checkbox_capture_windows_interactive); this.groupbox_windowscapture.Controls.Add(this.radiobuttonInteractiveCapture);
this.groupbox_windowscapture.Controls.Add(this.combobox_window_capture_mode); this.groupbox_windowscapture.Controls.Add(this.combobox_window_capture_mode);
this.groupbox_windowscapture.LanguageKey = "settings_windowscapture"; this.groupbox_windowscapture.LanguageKey = "settings_windowscapture";
this.groupbox_windowscapture.Location = new System.Drawing.Point(4, 141); this.groupbox_windowscapture.Location = new System.Drawing.Point(4, 141);
@ -707,7 +676,6 @@ namespace Greenshot {
this.groupbox_windowscapture.Size = new System.Drawing.Size(416, 80); this.groupbox_windowscapture.Size = new System.Drawing.Size(416, 80);
this.groupbox_windowscapture.TabIndex = 1; this.groupbox_windowscapture.TabIndex = 1;
this.groupbox_windowscapture.TabStop = false; this.groupbox_windowscapture.TabStop = false;
this.groupbox_windowscapture.Text = "Window capture";
// //
// colorButton_window_background // colorButton_window_background
// //
@ -720,26 +688,30 @@ namespace Greenshot {
this.colorButton_window_background.TabIndex = 45; this.colorButton_window_background.TabIndex = 45;
this.colorButton_window_background.UseVisualStyleBackColor = true; this.colorButton_window_background.UseVisualStyleBackColor = true;
// //
// label_window_capture_mode
// //
this.label_window_capture_mode.LanguageKey = "settings_window_capture_mode"; // radiobuttonWindowCapture
this.label_window_capture_mode.Location = new System.Drawing.Point(6, 46);
this.label_window_capture_mode.Name = "label_window_capture_mode";
this.label_window_capture_mode.Size = new System.Drawing.Size(205, 23);
this.label_window_capture_mode.TabIndex = 26;
this.label_window_capture_mode.Text = "Window capture mode";
// //
// checkbox_capture_windows_interactive this.radiobuttonWindowCapture.AutoSize = true;
this.radiobuttonWindowCapture.LanguageKey = "settings_window_capture_mode";
this.radiobuttonWindowCapture.Location = new System.Drawing.Point(11, 44);
this.radiobuttonWindowCapture.Name = "radiobuttonWindowCapture";
this.radiobuttonWindowCapture.Size = new System.Drawing.Size(132, 17);
this.radiobuttonWindowCapture.TabIndex = 47;
this.radiobuttonWindowCapture.TabStop = true;
this.radiobuttonWindowCapture.UseVisualStyleBackColor = true;
// //
this.checkbox_capture_windows_interactive.LanguageKey = "settings_capture_windows_interactive"; // radiobuttonInteractiveCapture
this.checkbox_capture_windows_interactive.Location = new System.Drawing.Point(9, 19);
this.checkbox_capture_windows_interactive.Name = "checkbox_capture_windows_interactive";
this.checkbox_capture_windows_interactive.PropertyName = "CaptureWindowsInteractive";
this.checkbox_capture_windows_interactive.Size = new System.Drawing.Size(394, 18);
this.checkbox_capture_windows_interactive.TabIndex = 19;
this.checkbox_capture_windows_interactive.Text = "Use interactive window capture mode";
this.checkbox_capture_windows_interactive.UseVisualStyleBackColor = true;
// //
this.radiobuttonInteractiveCapture.AutoSize = true;
this.radiobuttonInteractiveCapture.LanguageKey = "settings_capture_windows_interactive";
this.radiobuttonInteractiveCapture.Location = new System.Drawing.Point(11, 20);
this.radiobuttonInteractiveCapture.Name = "radiobuttonInteractiveCapture";
this.radiobuttonInteractiveCapture.PropertyName = "CaptureWindowsInteractive";
this.radiobuttonInteractiveCapture.Size = new System.Drawing.Size(203, 17);
this.radiobuttonInteractiveCapture.TabIndex = 46;
this.radiobuttonInteractiveCapture.TabStop = true;
this.radiobuttonInteractiveCapture.UseVisualStyleBackColor = true;
this.radiobuttonInteractiveCapture.CheckedChanged += new System.EventHandler(this.radiobutton_CheckedChanged);
// combobox_window_capture_mode // combobox_window_capture_mode
// //
this.combobox_window_capture_mode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.combobox_window_capture_mode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@ -784,7 +756,6 @@ namespace Greenshot {
this.checkbox_notifications.PropertyName = "ShowTrayNotification"; this.checkbox_notifications.PropertyName = "ShowTrayNotification";
this.checkbox_notifications.Size = new System.Drawing.Size(399, 24); this.checkbox_notifications.Size = new System.Drawing.Size(399, 24);
this.checkbox_notifications.TabIndex = 26; this.checkbox_notifications.TabIndex = 26;
this.checkbox_notifications.Text = "Show notifications";
this.checkbox_notifications.UseVisualStyleBackColor = true; this.checkbox_notifications.UseVisualStyleBackColor = true;
// //
// checkbox_playsound // checkbox_playsound
@ -795,7 +766,6 @@ namespace Greenshot {
this.checkbox_playsound.PropertyName = "PlayCameraSound"; this.checkbox_playsound.PropertyName = "PlayCameraSound";
this.checkbox_playsound.Size = new System.Drawing.Size(399, 24); this.checkbox_playsound.Size = new System.Drawing.Size(399, 24);
this.checkbox_playsound.TabIndex = 18; this.checkbox_playsound.TabIndex = 18;
this.checkbox_playsound.Text = "Play camera sound";
this.checkbox_playsound.UseVisualStyleBackColor = true; this.checkbox_playsound.UseVisualStyleBackColor = true;
// //
// checkbox_capture_mousepointer // checkbox_capture_mousepointer
@ -806,7 +776,6 @@ namespace Greenshot {
this.checkbox_capture_mousepointer.PropertyName = "CaptureMousepointer"; this.checkbox_capture_mousepointer.PropertyName = "CaptureMousepointer";
this.checkbox_capture_mousepointer.Size = new System.Drawing.Size(394, 24); this.checkbox_capture_mousepointer.Size = new System.Drawing.Size(394, 24);
this.checkbox_capture_mousepointer.TabIndex = 17; this.checkbox_capture_mousepointer.TabIndex = 17;
this.checkbox_capture_mousepointer.Text = "Capture mousepointer";
this.checkbox_capture_mousepointer.UseVisualStyleBackColor = true; this.checkbox_capture_mousepointer.UseVisualStyleBackColor = true;
// //
// numericUpDownWaitTime // numericUpDownWaitTime
@ -834,7 +803,6 @@ namespace Greenshot {
this.label_waittime.Name = "label_waittime"; this.label_waittime.Name = "label_waittime";
this.label_waittime.Size = new System.Drawing.Size(331, 16); this.label_waittime.Size = new System.Drawing.Size(331, 16);
this.label_waittime.TabIndex = 25; this.label_waittime.TabIndex = 25;
this.label_waittime.Text = "Milliseconds to wait before capture";
// //
// tab_output // tab_output
// //
@ -847,7 +815,6 @@ namespace Greenshot {
this.tab_output.Padding = new System.Windows.Forms.Padding(3); this.tab_output.Padding = new System.Windows.Forms.Padding(3);
this.tab_output.Size = new System.Drawing.Size(423, 351); this.tab_output.Size = new System.Drawing.Size(423, 351);
this.tab_output.TabIndex = 1; this.tab_output.TabIndex = 1;
this.tab_output.Text = "Output";
this.tab_output.UseVisualStyleBackColor = true; this.tab_output.UseVisualStyleBackColor = true;
// //
// tab_destinations // tab_destinations
@ -858,7 +825,6 @@ namespace Greenshot {
this.tab_destinations.Name = "tab_destinations"; this.tab_destinations.Name = "tab_destinations";
this.tab_destinations.Size = new System.Drawing.Size(423, 351); this.tab_destinations.Size = new System.Drawing.Size(423, 351);
this.tab_destinations.TabIndex = 4; this.tab_destinations.TabIndex = 4;
this.tab_destinations.Text = "Destination";
this.tab_destinations.UseVisualStyleBackColor = true; this.tab_destinations.UseVisualStyleBackColor = true;
// //
// tab_printer // tab_printer
@ -872,7 +838,6 @@ namespace Greenshot {
this.tab_printer.Padding = new System.Windows.Forms.Padding(3); this.tab_printer.Padding = new System.Windows.Forms.Padding(3);
this.tab_printer.Size = new System.Drawing.Size(423, 351); this.tab_printer.Size = new System.Drawing.Size(423, 351);
this.tab_printer.TabIndex = 2; this.tab_printer.TabIndex = 2;
this.tab_printer.Text = "Printer";
this.tab_printer.UseVisualStyleBackColor = true; this.tab_printer.UseVisualStyleBackColor = true;
// //
// groupBoxColors // groupBoxColors
@ -888,7 +853,6 @@ namespace Greenshot {
this.groupBoxColors.Size = new System.Drawing.Size(331, 124); this.groupBoxColors.Size = new System.Drawing.Size(331, 124);
this.groupBoxColors.TabIndex = 34; this.groupBoxColors.TabIndex = 34;
this.groupBoxColors.TabStop = false; this.groupBoxColors.TabStop = false;
this.groupBoxColors.Text = "Color settings";
// //
// checkboxPrintInverted // checkboxPrintInverted
// //
@ -901,7 +865,6 @@ namespace Greenshot {
this.checkboxPrintInverted.PropertyName = "OutputPrintInverted"; this.checkboxPrintInverted.PropertyName = "OutputPrintInverted";
this.checkboxPrintInverted.Size = new System.Drawing.Size(141, 17); this.checkboxPrintInverted.Size = new System.Drawing.Size(141, 17);
this.checkboxPrintInverted.TabIndex = 28; this.checkboxPrintInverted.TabIndex = 28;
this.checkboxPrintInverted.Text = "Print with inverted colors";
this.checkboxPrintInverted.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxPrintInverted.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxPrintInverted.UseVisualStyleBackColor = true; this.checkboxPrintInverted.UseVisualStyleBackColor = true;
// //
@ -916,7 +879,6 @@ namespace Greenshot {
this.radioBtnColorPrint.PropertyName = "OutputPrintColor"; this.radioBtnColorPrint.PropertyName = "OutputPrintColor";
this.radioBtnColorPrint.Size = new System.Drawing.Size(90, 17); this.radioBtnColorPrint.Size = new System.Drawing.Size(90, 17);
this.radioBtnColorPrint.TabIndex = 29; this.radioBtnColorPrint.TabIndex = 29;
this.radioBtnColorPrint.Text = "Full color print";
this.radioBtnColorPrint.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.radioBtnColorPrint.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.radioBtnColorPrint.UseVisualStyleBackColor = true; this.radioBtnColorPrint.UseVisualStyleBackColor = true;
// //
@ -946,7 +908,6 @@ namespace Greenshot {
this.radioBtnMonochrome.PropertyName = "OutputPrintMonochrome"; this.radioBtnMonochrome.PropertyName = "OutputPrintMonochrome";
this.radioBtnMonochrome.Size = new System.Drawing.Size(148, 17); this.radioBtnMonochrome.Size = new System.Drawing.Size(148, 17);
this.radioBtnMonochrome.TabIndex = 30; this.radioBtnMonochrome.TabIndex = 30;
this.radioBtnMonochrome.Text = "Force black/white printing";
this.radioBtnMonochrome.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.radioBtnMonochrome.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.radioBtnMonochrome.UseVisualStyleBackColor = true; this.radioBtnMonochrome.UseVisualStyleBackColor = true;
// //
@ -964,7 +925,6 @@ namespace Greenshot {
this.groupBoxPrintLayout.Size = new System.Drawing.Size(331, 151); this.groupBoxPrintLayout.Size = new System.Drawing.Size(331, 151);
this.groupBoxPrintLayout.TabIndex = 33; this.groupBoxPrintLayout.TabIndex = 33;
this.groupBoxPrintLayout.TabStop = false; this.groupBoxPrintLayout.TabStop = false;
this.groupBoxPrintLayout.Text = "Page layout settings";
// //
// checkboxDateTime // checkboxDateTime
// //
@ -977,7 +937,6 @@ namespace Greenshot {
this.checkboxDateTime.PropertyName = "OutputPrintFooter"; this.checkboxDateTime.PropertyName = "OutputPrintFooter";
this.checkboxDateTime.Size = new System.Drawing.Size(187, 17); this.checkboxDateTime.Size = new System.Drawing.Size(187, 17);
this.checkboxDateTime.TabIndex = 26; this.checkboxDateTime.TabIndex = 26;
this.checkboxDateTime.Text = "Print date / time at bottom of page";
this.checkboxDateTime.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxDateTime.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxDateTime.UseVisualStyleBackColor = true; this.checkboxDateTime.UseVisualStyleBackColor = true;
// //
@ -992,7 +951,6 @@ namespace Greenshot {
this.checkboxAllowShrink.PropertyName = "OutputPrintAllowShrink"; this.checkboxAllowShrink.PropertyName = "OutputPrintAllowShrink";
this.checkboxAllowShrink.Size = new System.Drawing.Size(168, 17); this.checkboxAllowShrink.Size = new System.Drawing.Size(168, 17);
this.checkboxAllowShrink.TabIndex = 21; this.checkboxAllowShrink.TabIndex = 21;
this.checkboxAllowShrink.Text = "Shrink printout to fit paper size";
this.checkboxAllowShrink.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxAllowShrink.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxAllowShrink.UseVisualStyleBackColor = true; this.checkboxAllowShrink.UseVisualStyleBackColor = true;
// //
@ -1007,7 +965,6 @@ namespace Greenshot {
this.checkboxAllowEnlarge.PropertyName = "OutputPrintAllowEnlarge"; this.checkboxAllowEnlarge.PropertyName = "OutputPrintAllowEnlarge";
this.checkboxAllowEnlarge.Size = new System.Drawing.Size(174, 17); this.checkboxAllowEnlarge.Size = new System.Drawing.Size(174, 17);
this.checkboxAllowEnlarge.TabIndex = 22; this.checkboxAllowEnlarge.TabIndex = 22;
this.checkboxAllowEnlarge.Text = "Enlarge printout to fit paper size";
this.checkboxAllowEnlarge.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxAllowEnlarge.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxAllowEnlarge.UseVisualStyleBackColor = true; this.checkboxAllowEnlarge.UseVisualStyleBackColor = true;
// //
@ -1022,7 +979,6 @@ namespace Greenshot {
this.checkboxAllowRotate.PropertyName = "OutputPrintAllowRotate"; this.checkboxAllowRotate.PropertyName = "OutputPrintAllowRotate";
this.checkboxAllowRotate.Size = new System.Drawing.Size(187, 17); this.checkboxAllowRotate.Size = new System.Drawing.Size(187, 17);
this.checkboxAllowRotate.TabIndex = 23; this.checkboxAllowRotate.TabIndex = 23;
this.checkboxAllowRotate.Text = "Rotate printout to page orientation";
this.checkboxAllowRotate.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxAllowRotate.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxAllowRotate.UseVisualStyleBackColor = true; this.checkboxAllowRotate.UseVisualStyleBackColor = true;
// //
@ -1037,7 +993,6 @@ namespace Greenshot {
this.checkboxAllowCenter.PropertyName = "OutputPrintCenter"; this.checkboxAllowCenter.PropertyName = "OutputPrintCenter";
this.checkboxAllowCenter.Size = new System.Drawing.Size(137, 17); this.checkboxAllowCenter.Size = new System.Drawing.Size(137, 17);
this.checkboxAllowCenter.TabIndex = 24; this.checkboxAllowCenter.TabIndex = 24;
this.checkboxAllowCenter.Text = "Center printout on page";
this.checkboxAllowCenter.TextAlign = System.Drawing.ContentAlignment.TopLeft; this.checkboxAllowCenter.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checkboxAllowCenter.UseVisualStyleBackColor = true; this.checkboxAllowCenter.UseVisualStyleBackColor = true;
// //
@ -1060,7 +1015,6 @@ namespace Greenshot {
this.tab_plugins.Name = "tab_plugins"; this.tab_plugins.Name = "tab_plugins";
this.tab_plugins.Size = new System.Drawing.Size(423, 351); this.tab_plugins.Size = new System.Drawing.Size(423, 351);
this.tab_plugins.TabIndex = 2; this.tab_plugins.TabIndex = 2;
this.tab_plugins.Text = "Plugins";
this.tab_plugins.UseVisualStyleBackColor = true; this.tab_plugins.UseVisualStyleBackColor = true;
// //
// groupbox_plugins // groupbox_plugins
@ -1102,7 +1056,6 @@ namespace Greenshot {
this.button_pluginconfigure.Name = "button_pluginconfigure"; this.button_pluginconfigure.Name = "button_pluginconfigure";
this.button_pluginconfigure.Size = new System.Drawing.Size(75, 23); this.button_pluginconfigure.Size = new System.Drawing.Size(75, 23);
this.button_pluginconfigure.TabIndex = 1; this.button_pluginconfigure.TabIndex = 1;
this.button_pluginconfigure.Text = "Configure";
this.button_pluginconfigure.UseVisualStyleBackColor = true; this.button_pluginconfigure.UseVisualStyleBackColor = true;
this.button_pluginconfigure.Click += new System.EventHandler(this.Button_pluginconfigureClick); this.button_pluginconfigure.Click += new System.EventHandler(this.Button_pluginconfigureClick);
// //
@ -1150,7 +1103,6 @@ namespace Greenshot {
this.checkbox_reuseeditor.SectionName = "Editor"; this.checkbox_reuseeditor.SectionName = "Editor";
this.checkbox_reuseeditor.Size = new System.Drawing.Size(394, 24); this.checkbox_reuseeditor.Size = new System.Drawing.Size(394, 24);
this.checkbox_reuseeditor.TabIndex = 31; this.checkbox_reuseeditor.TabIndex = 31;
this.checkbox_reuseeditor.Text = "Reuse editor if possible";
this.checkbox_reuseeditor.UseVisualStyleBackColor = true; this.checkbox_reuseeditor.UseVisualStyleBackColor = true;
// //
// checkbox_minimizememoryfootprint // checkbox_minimizememoryfootprint
@ -1161,7 +1113,6 @@ namespace Greenshot {
this.checkbox_minimizememoryfootprint.PropertyName = "MinimizeWorkingSetSize"; this.checkbox_minimizememoryfootprint.PropertyName = "MinimizeWorkingSetSize";
this.checkbox_minimizememoryfootprint.Size = new System.Drawing.Size(394, 24); this.checkbox_minimizememoryfootprint.Size = new System.Drawing.Size(394, 24);
this.checkbox_minimizememoryfootprint.TabIndex = 30; this.checkbox_minimizememoryfootprint.TabIndex = 30;
this.checkbox_minimizememoryfootprint.Text = "Minimize memory footprint, but with a performance penalty (not adviced).";
this.checkbox_minimizememoryfootprint.UseVisualStyleBackColor = true; this.checkbox_minimizememoryfootprint.UseVisualStyleBackColor = true;
// //
// checkbox_checkunstableupdates // checkbox_checkunstableupdates
@ -1172,7 +1123,6 @@ namespace Greenshot {
this.checkbox_checkunstableupdates.PropertyName = "CheckForUnstable"; this.checkbox_checkunstableupdates.PropertyName = "CheckForUnstable";
this.checkbox_checkunstableupdates.Size = new System.Drawing.Size(394, 24); this.checkbox_checkunstableupdates.Size = new System.Drawing.Size(394, 24);
this.checkbox_checkunstableupdates.TabIndex = 29; this.checkbox_checkunstableupdates.TabIndex = 29;
this.checkbox_checkunstableupdates.Text = "Check for unstable updates";
this.checkbox_checkunstableupdates.UseVisualStyleBackColor = true; this.checkbox_checkunstableupdates.UseVisualStyleBackColor = true;
// //
// checkbox_suppresssavedialogatclose // checkbox_suppresssavedialogatclose
@ -1184,7 +1134,6 @@ namespace Greenshot {
this.checkbox_suppresssavedialogatclose.SectionName = "Editor"; this.checkbox_suppresssavedialogatclose.SectionName = "Editor";
this.checkbox_suppresssavedialogatclose.Size = new System.Drawing.Size(394, 24); this.checkbox_suppresssavedialogatclose.Size = new System.Drawing.Size(394, 24);
this.checkbox_suppresssavedialogatclose.TabIndex = 28; this.checkbox_suppresssavedialogatclose.TabIndex = 28;
this.checkbox_suppresssavedialogatclose.Text = "Suppress the save dialog when closing the editor";
this.checkbox_suppresssavedialogatclose.UseVisualStyleBackColor = true; this.checkbox_suppresssavedialogatclose.UseVisualStyleBackColor = true;
// //
// label_counter // label_counter
@ -1195,7 +1144,6 @@ namespace Greenshot {
this.label_counter.Name = "label_counter"; this.label_counter.Name = "label_counter";
this.label_counter.Size = new System.Drawing.Size(246, 13); this.label_counter.Size = new System.Drawing.Size(246, 13);
this.label_counter.TabIndex = 27; this.label_counter.TabIndex = 27;
this.label_counter.Text = "The number for the ${NUM} in the filename pattern";
// //
// textbox_counter // textbox_counter
// //
@ -1231,7 +1179,6 @@ namespace Greenshot {
this.checkbox_thumbnailpreview.PropertyName = "ThumnailPreview"; this.checkbox_thumbnailpreview.PropertyName = "ThumnailPreview";
this.checkbox_thumbnailpreview.Size = new System.Drawing.Size(394, 24); this.checkbox_thumbnailpreview.Size = new System.Drawing.Size(394, 24);
this.checkbox_thumbnailpreview.TabIndex = 23; this.checkbox_thumbnailpreview.TabIndex = 23;
this.checkbox_thumbnailpreview.Text = "Show window thumbnails in context menu (for Vista and windows 7)";
this.checkbox_thumbnailpreview.UseVisualStyleBackColor = true; this.checkbox_thumbnailpreview.UseVisualStyleBackColor = true;
// //
// checkbox_optimizeforrdp // checkbox_optimizeforrdp
@ -1242,7 +1189,6 @@ namespace Greenshot {
this.checkbox_optimizeforrdp.PropertyName = "OptimizeForRDP"; this.checkbox_optimizeforrdp.PropertyName = "OptimizeForRDP";
this.checkbox_optimizeforrdp.Size = new System.Drawing.Size(394, 24); this.checkbox_optimizeforrdp.Size = new System.Drawing.Size(394, 24);
this.checkbox_optimizeforrdp.TabIndex = 22; this.checkbox_optimizeforrdp.TabIndex = 22;
this.checkbox_optimizeforrdp.Text = "Make some optimizations for usage with remote desktop";
this.checkbox_optimizeforrdp.UseVisualStyleBackColor = true; this.checkbox_optimizeforrdp.UseVisualStyleBackColor = true;
// //
// checkbox_autoreducecolors // checkbox_autoreducecolors
@ -1253,8 +1199,6 @@ namespace Greenshot {
this.checkbox_autoreducecolors.PropertyName = "OutputFileAutoReduceColors"; this.checkbox_autoreducecolors.PropertyName = "OutputFileAutoReduceColors";
this.checkbox_autoreducecolors.Size = new System.Drawing.Size(408, 24); this.checkbox_autoreducecolors.Size = new System.Drawing.Size(408, 24);
this.checkbox_autoreducecolors.TabIndex = 21; this.checkbox_autoreducecolors.TabIndex = 21;
this.checkbox_autoreducecolors.Text = "Create an 8-bit image if the colors are less than 256 while having a > 8 bits ima" +
"ge";
this.checkbox_autoreducecolors.UseVisualStyleBackColor = true; this.checkbox_autoreducecolors.UseVisualStyleBackColor = true;
// //
// label_clipboardformats // label_clipboardformats
@ -1265,7 +1209,6 @@ namespace Greenshot {
this.label_clipboardformats.Name = "label_clipboardformats"; this.label_clipboardformats.Name = "label_clipboardformats";
this.label_clipboardformats.Size = new System.Drawing.Size(88, 13); this.label_clipboardformats.Size = new System.Drawing.Size(88, 13);
this.label_clipboardformats.TabIndex = 20; this.label_clipboardformats.TabIndex = 20;
this.label_clipboardformats.Text = "Clipboard formats";
// //
// checkbox_enableexpert // checkbox_enableexpert
// //
@ -1274,7 +1217,6 @@ namespace Greenshot {
this.checkbox_enableexpert.Name = "checkbox_enableexpert"; this.checkbox_enableexpert.Name = "checkbox_enableexpert";
this.checkbox_enableexpert.Size = new System.Drawing.Size(394, 24); this.checkbox_enableexpert.Size = new System.Drawing.Size(394, 24);
this.checkbox_enableexpert.TabIndex = 19; this.checkbox_enableexpert.TabIndex = 19;
this.checkbox_enableexpert.Text = "I know what I am doing!";
this.checkbox_enableexpert.UseVisualStyleBackColor = true; this.checkbox_enableexpert.UseVisualStyleBackColor = true;
this.checkbox_enableexpert.CheckedChanged += new System.EventHandler(this.checkbox_enableexpert_CheckedChanged); this.checkbox_enableexpert.CheckedChanged += new System.EventHandler(this.checkbox_enableexpert_CheckedChanged);
// //
@ -1374,9 +1316,9 @@ namespace Greenshot {
private GreenshotPlugin.Controls.GreenshotLabel label_ie_hotkey; private GreenshotPlugin.Controls.GreenshotLabel label_ie_hotkey;
private GreenshotPlugin.Controls.HotkeyControl lastregion_hotkeyControl; private GreenshotPlugin.Controls.HotkeyControl lastregion_hotkeyControl;
private GreenshotPlugin.Controls.GreenshotLabel label_lastregion_hotkey; private GreenshotPlugin.Controls.GreenshotLabel label_lastregion_hotkey;
private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_hotkeys; private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_hotkeys;
private Greenshot.Controls.ColorButton colorButton_window_background; private Greenshot.Controls.ColorButton colorButton_window_background;
private GreenshotPlugin.Controls.GreenshotLabel label_window_capture_mode; private GreenshotPlugin.Controls.GreenshotRadioButton radiobuttonWindowCapture;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_ie_capture; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_ie_capture;
private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_capture; private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_capture;
private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_windowscapture; private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_windowscapture;
@ -1385,15 +1327,15 @@ namespace Greenshot {
private System.Windows.Forms.ComboBox combobox_window_capture_mode; private System.Windows.Forms.ComboBox combobox_window_capture_mode;
private System.Windows.Forms.NumericUpDown numericUpDownWaitTime; private System.Windows.Forms.NumericUpDown numericUpDownWaitTime;
private GreenshotPlugin.Controls.GreenshotLabel label_waittime; private GreenshotPlugin.Controls.GreenshotLabel label_waittime;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_capture_windows_interactive; private GreenshotPlugin.Controls.GreenshotRadioButton radiobuttonInteractiveCapture;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_capture_mousepointer; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_capture_mousepointer;
private GreenshotPlugin.Controls.GreenshotTabPage tab_printer; private GreenshotPlugin.Controls.GreenshotTabPage tab_printer;
private System.Windows.Forms.ListView listview_plugins; private System.Windows.Forms.ListView listview_plugins;
private GreenshotPlugin.Controls.GreenshotButton button_pluginconfigure; private GreenshotPlugin.Controls.GreenshotButton button_pluginconfigure;
private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_plugins; private GreenshotPlugin.Controls.GreenshotGroupBox groupbox_plugins;
private GreenshotPlugin.Controls.GreenshotTabPage tab_plugins; private GreenshotPlugin.Controls.GreenshotTabPage tab_plugins;
private System.Windows.Forms.Button btnPatternHelp; private System.Windows.Forms.Button btnPatternHelp;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_copypathtoclipboard; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_copypathtoclipboard;
private GreenshotPlugin.Controls.GreenshotTabPage tab_output; private GreenshotPlugin.Controls.GreenshotTabPage tab_output;
private GreenshotPlugin.Controls.GreenshotTabPage tab_general; private GreenshotPlugin.Controls.GreenshotTabPage tab_general;
private System.Windows.Forms.TabControl tabcontrol; private System.Windows.Forms.TabControl tabcontrol;
@ -1425,7 +1367,7 @@ namespace Greenshot {
private GreenshotPlugin.Controls.GreenshotLabel label_clipboardformats; private GreenshotPlugin.Controls.GreenshotLabel label_clipboardformats;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_enableexpert; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_enableexpert;
private System.Windows.Forms.ListView listview_clipboardformats; private System.Windows.Forms.ListView listview_clipboardformats;
private System.Windows.Forms.ColumnHeader columnHeader1; private System.Windows.Forms.ColumnHeader columnHeader1;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_autoreducecolors; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_autoreducecolors;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_optimizeforrdp; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_optimizeforrdp;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_thumbnailpreview; private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_thumbnailpreview;

View file

@ -342,7 +342,8 @@ namespace Greenshot {
SetWindowCaptureMode(coreConfiguration.WindowCaptureMode); SetWindowCaptureMode(coreConfiguration.WindowCaptureMode);
// Disable editing when the value is fixed // Disable editing when the value is fixed
combobox_window_capture_mode.Enabled = !coreConfiguration.Values["WindowCaptureMode"].IsFixed; combobox_window_capture_mode.Enabled = !coreConfiguration.CaptureWindowsInteractive && !coreConfiguration.Values["WindowCaptureMode"].IsFixed;
radiobuttonWindowCapture.Checked = !coreConfiguration.CaptureWindowsInteractive;
trackBarJpegQuality.Value = coreConfiguration.OutputFileJpegQuality; trackBarJpegQuality.Value = coreConfiguration.OutputFileJpegQuality;
trackBarJpegQuality.Enabled = !coreConfiguration.Values["OutputFileJpegQuality"].IsFixed; trackBarJpegQuality.Enabled = !coreConfiguration.Values["OutputFileJpegQuality"].IsFixed;
@ -352,19 +353,24 @@ namespace Greenshot {
numericUpDownWaitTime.Value = coreConfiguration.CaptureDelay >=0?coreConfiguration.CaptureDelay:0; numericUpDownWaitTime.Value = coreConfiguration.CaptureDelay >=0?coreConfiguration.CaptureDelay:0;
numericUpDownWaitTime.Enabled = !coreConfiguration.Values["CaptureDelay"].IsFixed; numericUpDownWaitTime.Enabled = !coreConfiguration.Values["CaptureDelay"].IsFixed;
// Autostart checkbox logic. if (IniConfig.IsPortable) {
if (StartupHelper.hasRunAll()) { checkbox_autostartshortcut.Visible = false;
// Remove runUser if we already have a run under all checkbox_autostartshortcut.Checked = false;
StartupHelper.deleteRunUser();
checkbox_autostartshortcut.Enabled = StartupHelper.canWriteRunAll();
checkbox_autostartshortcut.Checked = true; // We already checked this
} else if (StartupHelper.IsInStartupFolder()) {
checkbox_autostartshortcut.Enabled = false;
checkbox_autostartshortcut.Checked = true; // We already checked this
} else { } else {
// No run for all, enable the checkbox and set it to true if the current user has a key // Autostart checkbox logic.
checkbox_autostartshortcut.Enabled = StartupHelper.canWriteRunUser(); if (StartupHelper.hasRunAll()) {
checkbox_autostartshortcut.Checked = StartupHelper.hasRunUser(); // Remove runUser if we already have a run under all
StartupHelper.deleteRunUser();
checkbox_autostartshortcut.Enabled = StartupHelper.canWriteRunAll();
checkbox_autostartshortcut.Checked = true; // We already checked this
} else if (StartupHelper.IsInStartupFolder()) {
checkbox_autostartshortcut.Enabled = false;
checkbox_autostartshortcut.Checked = true; // We already checked this
} else {
// No run for all, enable the checkbox and set it to true if the current user has a key
checkbox_autostartshortcut.Enabled = StartupHelper.canWriteRunUser();
checkbox_autostartshortcut.Checked = StartupHelper.hasRunUser();
}
} }
numericUpDown_daysbetweencheck.Value = coreConfiguration.UpdateCheckInterval; numericUpDown_daysbetweencheck.Value = coreConfiguration.UpdateCheckInterval;
@ -591,6 +597,10 @@ namespace Greenshot {
CheckBox checkBox = sender as CheckBox; CheckBox checkBox = sender as CheckBox;
ExpertSettingsEnableState(checkBox.Checked); ExpertSettingsEnableState(checkBox.Checked);
} }
private void radiobutton_CheckedChanged(object sender, EventArgs e) {
combobox_window_capture_mode.Enabled = radiobuttonWindowCapture.Checked;
}
} }
public class ListviewWithDestinationComparer : System.Collections.IComparer { public class ListviewWithDestinationComparer : System.Collections.IComparer {

View file

@ -213,9 +213,6 @@
<Compile Include="Helpers\ProcessorHelper.cs" /> <Compile Include="Helpers\ProcessorHelper.cs" />
<Compile Include="Help\HelpFileLoader.cs" /> <Compile Include="Help\HelpFileLoader.cs" />
<Compile Include="Processors\TitleFixProcessor.cs" /> <Compile Include="Processors\TitleFixProcessor.cs" />
<None Include="Greenshot.exe.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="Helpers\WindowWrapper.cs" /> <Compile Include="Helpers\WindowWrapper.cs" />
<Compile Include="Memento\AddElementMemento.cs" /> <Compile Include="Memento\AddElementMemento.cs" />
<Compile Include="Memento\ChangeFieldHolderMemento.cs" /> <Compile Include="Memento\ChangeFieldHolderMemento.cs" />
@ -400,7 +397,7 @@
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
<PropertyGroup> <PropertyGroup>
<PreBuildEvent>"$(MSBuildProjectDirectory)\tools\TortoiseSVN\SubWCRev.exe" "$(MSBuildProjectDirectory)\.." "$(MSBuildProjectDirectory)\AssemblyInfo.cs.template" "$(MSBuildProjectDirectory)\AssemblyInfo.cs" <PreBuildEvent>
copy "$(ProjectDir)log4net-debug.xml" "$(SolutionDir)bin\$(Configuration)\log4net.xml"</PreBuildEvent> copy "$(ProjectDir)log4net-debug.xml" "$(SolutionDir)bin\$(Configuration)\log4net.xml"</PreBuildEvent>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x86' "> <PropertyGroup Condition=" '$(Platform)' == 'x86' ">

View file

@ -24,6 +24,7 @@ using System.Collections.Generic;
using Greenshot.Plugin; using Greenshot.Plugin;
using GreenshotPlugin.Core; using GreenshotPlugin.Core;
using Greenshot.Destinations; using Greenshot.Destinations;
using Greenshot.IniFile;
namespace Greenshot.Helpers { namespace Greenshot.Helpers {
/// <summary> /// <summary>
@ -32,6 +33,7 @@ namespace Greenshot.Helpers {
public static class DestinationHelper { public static class DestinationHelper {
private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(DestinationHelper)); private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(DestinationHelper));
private static Dictionary<string, IDestination> RegisteredDestinations = new Dictionary<string, IDestination>(); private static Dictionary<string, IDestination> RegisteredDestinations = new Dictionary<string, IDestination>();
private static CoreConfiguration coreConfig = IniConfig.GetIniSection<CoreConfiguration>();
/// Initialize the destinations /// Initialize the destinations
static DestinationHelper() { static DestinationHelper() {
@ -64,8 +66,10 @@ namespace Greenshot.Helpers {
/// </summary> /// </summary>
/// <param name="destination"></param> /// <param name="destination"></param>
public static void RegisterDestination(IDestination destination) { public static void RegisterDestination(IDestination destination) {
// don't test the key, an exception should happen wenn it's not unique if (coreConfig.ExcludeDestinations == null || !coreConfig.ExcludeDestinations.Contains(destination.Designation)) {
RegisteredDestinations.Add(destination.Designation, destination); // don't test the key, an exception should happen wenn it's not unique
RegisteredDestinations.Add(destination.Designation, destination);
}
} }
/// <summary> /// <summary>
@ -77,9 +81,10 @@ namespace Greenshot.Helpers {
foreach (PluginAttribute pluginAttribute in PluginHelper.Instance.Plugins.Keys) { foreach (PluginAttribute pluginAttribute in PluginHelper.Instance.Plugins.Keys) {
IGreenshotPlugin plugin = PluginHelper.Instance.Plugins[pluginAttribute]; IGreenshotPlugin plugin = PluginHelper.Instance.Plugins[pluginAttribute];
try { try {
var dests = plugin.Destinations(); foreach (IDestination destination in plugin.Destinations()) {
if (dests != null) { if (coreConfig.ExcludeDestinations == null || !coreConfig.ExcludeDestinations.Contains(destination.Designation)) {
destinations.AddRange(dests); destinations.Add(destination);
}
} }
} catch (Exception ex) { } catch (Exception ex) {
LOG.ErrorFormat("Couldn't get destinations from the plugin {0}", pluginAttribute.Name); LOG.ErrorFormat("Couldn't get destinations from the plugin {0}", pluginAttribute.Name);

View file

@ -145,6 +145,7 @@ namespace Greenshot.Helpers {
try { try {
IHTMLDocument2 document2 = getHTMLDocument(ieWindow); IHTMLDocument2 document2 = getHTMLDocument(ieWindow);
string title = document2.title; string title = document2.title;
System.Runtime.InteropServices.Marshal.ReleaseComObject(document2);
if (string.IsNullOrEmpty(title)) { if (string.IsNullOrEmpty(title)) {
singleWindowText.Add(ieWindow.Text); singleWindowText.Add(ieWindow.Text);
} else { } else {
@ -582,29 +583,6 @@ namespace Greenshot.Helpers {
return returnBitmap; return returnBitmap;
} }
/// <summary>
/// Used as an example
/// </summary>
/// <param name="documentContainer"></param>
/// <param name="graphicsTarget"></param>
/// <param name="returnBitmap"></param>
private static void ParseElements(DocumentContainer documentContainer, Graphics graphicsTarget, Bitmap returnBitmap) {
foreach(ElementContainer element in documentContainer.GetElementsByTagName("input", new string[]{"greenshot"})) {
if (element.attributes.ContainsKey("greenshot") && element.attributes["greenshot"] != null) {
string greenshotAction = element.attributes["greenshot"];
if ("hide".Equals(greenshotAction)) {
using (Brush brush = new SolidBrush(Color.Black)) {
graphicsTarget.FillRectangle(brush, element.rectangle);
}
} else if ("red".Equals(greenshotAction)) {
using (Brush brush = new SolidBrush(Color.Red)) {
graphicsTarget.FillRectangle(brush, element.rectangle);
}
}
}
}
}
/// <summary> /// <summary>
/// This method takes the actual capture of the document (frame) /// This method takes the actual capture of the document (frame)
/// </summary> /// </summary>

View file

@ -31,18 +31,11 @@ using Greenshot.Interop.IE;
using Greenshot.IniFile; using Greenshot.IniFile;
namespace Greenshot.Helpers.IEInterop { namespace Greenshot.Helpers.IEInterop {
public class ElementContainer {
public Rectangle rectangle;
public string id;
public Dictionary<string, string> attributes = new Dictionary<string, string>();
}
public class DocumentContainer { public class DocumentContainer {
private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(DocumentContainer)); private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(DocumentContainer));
private static CoreConfiguration configuration = IniConfig.GetIniSection<CoreConfiguration>(); private static CoreConfiguration configuration = IniConfig.GetIniSection<CoreConfiguration>();
private static readonly List<string> CAPTURE_TAGS = new List<string>(); private const int E_ACCESSDENIED = unchecked((int)0x80070005L);
private const int E_ACCESSDENIED = unchecked((int)0x80070005L); private static readonly Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
private static readonly Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
private static readonly Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11D0-8A3E-00C04FC9E26E"); private static readonly Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11D0-8A3E-00C04FC9E26E");
private static int counter = 0; private static int counter = 0;
private int id = counter++; private int id = counter++;
@ -61,30 +54,6 @@ namespace Greenshot.Helpers.IEInterop {
private double zoomLevelY = 1; private double zoomLevelY = 1;
private List<DocumentContainer> frames = new List<DocumentContainer>(); private List<DocumentContainer> frames = new List<DocumentContainer>();
static DocumentContainer() {
CAPTURE_TAGS.Add("LABEL");
CAPTURE_TAGS.Add("DIV");
CAPTURE_TAGS.Add("IMG");
CAPTURE_TAGS.Add("INPUT");
CAPTURE_TAGS.Add("BUTTON");
CAPTURE_TAGS.Add("TD");
CAPTURE_TAGS.Add("TR");
CAPTURE_TAGS.Add("TH");
CAPTURE_TAGS.Add("TABLE");
CAPTURE_TAGS.Add("TBODY");
CAPTURE_TAGS.Add("SPAN");
CAPTURE_TAGS.Add("A");
CAPTURE_TAGS.Add("UL");
CAPTURE_TAGS.Add("LI");
CAPTURE_TAGS.Add("H1");
CAPTURE_TAGS.Add("H2");
CAPTURE_TAGS.Add("H3");
CAPTURE_TAGS.Add("H4");
CAPTURE_TAGS.Add("H5");
CAPTURE_TAGS.Add("FORM");
CAPTURE_TAGS.Add("FIELDSET");
}
private DocumentContainer(IHTMLWindow2 frameWindow, WindowDetails contentWindow, DocumentContainer parent) { private DocumentContainer(IHTMLWindow2 frameWindow, WindowDetails contentWindow, DocumentContainer parent) {
//IWebBrowser2 webBrowser2 = frame as IWebBrowser2; //IWebBrowser2 webBrowser2 = frame as IWebBrowser2;
//IHTMLDocument2 document2 = webBrowser2.Document as IHTMLDocument2; //IHTMLDocument2 document2 = webBrowser2.Document as IHTMLDocument2;
@ -108,19 +77,16 @@ namespace Greenshot.Helpers.IEInterop {
this.parent = parent; this.parent = parent;
// Calculate startLocation for the frames // Calculate startLocation for the frames
IHTMLWindow3 window3 = (IHTMLWindow3)document2.parentWindow; IHTMLWindow2 window2 = document2.parentWindow;
// IHTMLElement element = window2.document.body; IHTMLWindow3 window3 = (IHTMLWindow3)window2;
// long x = 0;
// long y = 0;
// do {
// x += element.offsetLeft;
// y += element.offsetTop;
// element = element.offsetParent;
// } while (element != null);
// startLocation = new Point((int)x, (int)y);
Point contentWindowLocation = contentWindow.WindowRectangle.Location; Point contentWindowLocation = contentWindow.WindowRectangle.Location;
int x = window3.screenLeft - contentWindowLocation.X; int x = window3.screenLeft - contentWindowLocation.X;
int y = window3.screenTop - contentWindowLocation.Y; int y = window3.screenTop - contentWindowLocation.Y;
// Release IHTMLWindow 2+3 com objects
releaseCom(window2);
releaseCom(window3);
startLocation = new Point(x, y); startLocation = new Point(x, y);
Init(document2, contentWindow); Init(document2, contentWindow);
} }
@ -130,6 +96,16 @@ namespace Greenshot.Helpers.IEInterop {
LOG.DebugFormat("Creating DocumentContainer for Document {0} found in window with rectangle {1}", name, SourceRectangle); LOG.DebugFormat("Creating DocumentContainer for Document {0} found in window with rectangle {1}", name, SourceRectangle);
} }
/// <summary>
/// Helper method to release com objects
/// </summary>
/// <param name="comObject"></param>
private void releaseCom(object comObject) {
if (comObject != null) {
Marshal.ReleaseComObject(comObject);
}
}
/// <summary> /// <summary>
/// Private helper method for the constructors /// Private helper method for the constructors
/// </summary> /// </summary>
@ -152,12 +128,15 @@ namespace Greenshot.Helpers.IEInterop {
LOG.Error("Error checking the compatibility mode:"); LOG.Error("Error checking the compatibility mode:");
LOG.Error(ex); LOG.Error(ex);
} }
// Do not release IHTMLDocument5 com object, as this also gives problems with the document2!
//Marshal.ReleaseComObject(document5);
Rectangle clientRectangle = contentWindow.WindowRectangle; Rectangle clientRectangle = contentWindow.WindowRectangle;
try { try {
IHTMLWindow2 window2 = (IHTMLWindow2)document2.parentWindow; IHTMLWindow2 window2 = (IHTMLWindow2)document2.parentWindow;
//IHTMLWindow3 window3 = (IHTMLWindow3)document2.parentWindow; //IHTMLWindow3 window3 = (IHTMLWindow3)document2.parentWindow;
IHTMLScreen2 screen2 = (IHTMLScreen2)window2.screen;
IHTMLScreen screen = window2.screen; IHTMLScreen screen = window2.screen;
IHTMLScreen2 screen2 = (IHTMLScreen2)screen;
if (parent != null) { if (parent != null) {
// Copy parent values // Copy parent values
zoomLevelX = parent.zoomLevelX; zoomLevelX = parent.zoomLevelX;
@ -188,6 +167,10 @@ namespace Greenshot.Helpers.IEInterop {
} }
} }
LOG.DebugFormat("Zoomlevel {0}, {1}", zoomLevelX, zoomLevelY); LOG.DebugFormat("Zoomlevel {0}, {1}", zoomLevelX, zoomLevelY);
// Release com objects
releaseCom(window2);
releaseCom(screen);
releaseCom(screen2);
} catch (Exception e) { } catch (Exception e) {
LOG.Warn("Can't get certain properties for documents, using default. Due to: ", e); LOG.Warn("Can't get certain properties for documents, using default. Due to: ", e);
} }
@ -226,10 +209,14 @@ namespace Greenshot.Helpers.IEInterop {
} else { } else {
LOG.DebugFormat("Skipping frame {0}", frameData.Name); LOG.DebugFormat("Skipping frame {0}", frameData.Name);
} }
// Clean up frameWindow
releaseCom(frameWindow);
} catch (Exception e) { } catch (Exception e) {
LOG.Warn("Problem while trying to get information from a frame, skipping the frame!", e); LOG.Warn("Problem while trying to get information from a frame, skipping the frame!", e);
} }
} }
// Clean up collection
releaseCom(frameCollection);
} catch (Exception ex) { } catch (Exception ex) {
LOG.Warn("Problem while trying to get the frames, skipping!", ex); LOG.Warn("Problem while trying to get the frames, skipping!", ex);
} }
@ -239,6 +226,8 @@ namespace Greenshot.Helpers.IEInterop {
foreach (IHTMLElement frameElement in document3.getElementsByTagName("IFRAME")) { foreach (IHTMLElement frameElement in document3.getElementsByTagName("IFRAME")) {
try { try {
CorrectFrameLocations(frameElement); CorrectFrameLocations(frameElement);
// Clean up frameElement
releaseCom(frameElement);
} catch (Exception e) { } catch (Exception e) {
LOG.Warn("Problem while trying to get information from an iframe, skipping the frame!", e); LOG.Warn("Problem while trying to get information from an iframe, skipping the frame!", e);
} }
@ -248,30 +237,32 @@ namespace Greenshot.Helpers.IEInterop {
} }
} }
private void DisableScrollbars(IHTMLDocument2 document2) { /// <summary>
try { /// Corrent the frame locations with the information
setAttribute("scroll","no"); /// </summary>
IHTMLBodyElement body = (IHTMLBodyElement)document2.body; /// <param name="frameElement"></param>
body.scroll="no";
document2.body.style.borderStyle = "none";
} catch (Exception ex) {
LOG.Warn("Can't disable scroll", ex);
}
}
private void CorrectFrameLocations(IHTMLElement frameElement) { private void CorrectFrameLocations(IHTMLElement frameElement) {
long x = 0; long x = 0;
long y = 0; long y = 0;
IHTMLElement element = frameElement; IHTMLElement element = frameElement;
IHTMLElement oldElement = null;
do { do {
x += element.offsetLeft; x += element.offsetLeft;
y += element.offsetTop; y += element.offsetTop;
element = element.offsetParent; element = element.offsetParent;
// Release element, but prevent the frameElement to be released
if (oldElement != null) {
releaseCom(oldElement);
}
oldElement = element;
} while (element != null); } while (element != null);
Point elementLocation = new Point((int)x, (int)y); Point elementLocation = new Point((int)x, (int)y);
IHTMLElement2 element2 = (IHTMLElement2)frameElement; IHTMLElement2 element2 = (IHTMLElement2)frameElement;
IHTMLRect rec = element2.getBoundingClientRect(); IHTMLRect rec = element2.getBoundingClientRect();
Point elementBoundingLocation = new Point(rec.left, rec.top); Point elementBoundingLocation = new Point(rec.left, rec.top);
// Release IHTMLRect
releaseCom(rec);
LOG.DebugFormat("Looking for iframe to correct at {0}", elementBoundingLocation); LOG.DebugFormat("Looking for iframe to correct at {0}", elementBoundingLocation);
foreach(DocumentContainer foundFrame in frames) { foreach(DocumentContainer foundFrame in frames) {
Point frameLocation = foundFrame.SourceLocation; Point frameLocation = foundFrame.SourceLocation;
@ -337,128 +328,6 @@ namespace Greenshot.Helpers.IEInterop {
return null; return null;
} }
/// <summary>
/// Wrapper around getElementsByTagName
/// </summary>
/// <param name="tagName">tagName is the name of the tag to look for, e.g. "input"</param>
/// <param name="retrieveAttributes">If true then all attributes are retrieved. This is slow!</param>
/// <returns></returns>
public List<ElementContainer> GetElementsByTagName(string tagName, string[] attributes) {
List<ElementContainer> elements = new List<ElementContainer>();
foreach(IHTMLElement element in document3.getElementsByTagName(tagName)) {
if (element.offsetWidth <= 0 || element.offsetHeight <= 0) {
// not visisble
continue;
}
ElementContainer elementContainer = new ElementContainer();
elementContainer.id = element.id;
if (attributes != null) {
foreach(string attributeName in attributes) {
object attributeValue = element.getAttribute(attributeName, 0);
if (attributeValue != null && attributeValue != DBNull.Value && !elementContainer.attributes.ContainsKey(attributeName)) {
elementContainer.attributes.Add(attributeName, attributeValue.ToString());
}
}
}
Point elementLocation = new Point((int)element.offsetLeft, (int)element.offsetTop);
elementLocation.Offset(this.DestinationLocation);
IHTMLElement parent = element.offsetParent;
while (parent != null) {
elementLocation.Offset((int)parent.offsetLeft, (int)parent.offsetTop);
parent = parent.offsetParent;
}
Rectangle elementRectangle = new Rectangle(elementLocation, new Size((int)element.offsetWidth, (int)element.offsetHeight));
elementContainer.rectangle = elementRectangle;
elements.Add(elementContainer);
}
return elements;
}
/// <summary>
/// Create a CaptureElement for every element on the page, which can be used by the editor.
/// </summary>
/// <returns></returns>
public CaptureElement CreateCaptureElements(Size documentSize) {
LOG.DebugFormat("CreateCaptureElements for {0}", Name);
IHTMLElement baseElement;
if (!isDTD) {
baseElement = document2.body;
} else {
baseElement = document3.documentElement;
}
IHTMLElement2 baseElement2 = baseElement as IHTMLElement2;
IHTMLRect htmlRect = baseElement2.getBoundingClientRect();
if (Size.Empty.Equals(documentSize)) {
documentSize = new Size(ScrollWidth, ScrollHeight);
}
Rectangle baseElementBounds = new Rectangle(DestinationLocation.X + htmlRect.left, DestinationLocation.Y + htmlRect.top, documentSize.Width, documentSize.Height);
if (baseElementBounds.Width <= 0 || baseElementBounds.Height <= 0) {
// not visisble
return null;
}
CaptureElement captureBaseElement = new CaptureElement(name, baseElementBounds);
foreach(IHTMLElement bodyElement in baseElement.children) {
if ("BODY".Equals(bodyElement.tagName)) {
captureBaseElement.Children.AddRange(RecurseElements(bodyElement));
}
}
return captureBaseElement;
}
/// <summary>
/// Recurse into the document tree
/// </summary>
/// <param name="parentElement">IHTMLElement we want to recurse into</param>
/// <returns>List of ICaptureElements with child elements</returns>
private List<ICaptureElement> RecurseElements(IHTMLElement parentElement) {
List<ICaptureElement> childElements = new List<ICaptureElement>();
foreach(IHTMLElement element in parentElement.children) {
string tagName = element.tagName;
// Skip elements we aren't interested in
if (!CAPTURE_TAGS.Contains(tagName)) {
continue;
}
ICaptureElement captureElement = new CaptureElement(tagName);
captureElement.Children.AddRange(RecurseElements(element));
// Get Bounds
IHTMLElement2 element2 = element as IHTMLElement2;
IHTMLRect htmlRect = element2.getBoundingClientRect();
int left = htmlRect.left;
int top = htmlRect.top;
int right = htmlRect.right;
int bottom = htmlRect.bottom;
// Offset
left += DestinationLocation.X;
top += DestinationLocation.Y;
right += DestinationLocation.X;
bottom += DestinationLocation.Y;
// Fit to floating children
foreach(ICaptureElement childElement in captureElement.Children) {
//left = Math.Min(left, childElement.Bounds.Left);
//top = Math.Min(top, childElement.Bounds.Top);
right = Math.Max(right, childElement.Bounds.Right);
bottom = Math.Max(bottom, childElement.Bounds.Bottom);
}
Rectangle bounds = new Rectangle(left, top, right-left, bottom-top);
if (bounds.Width > 0 && bounds.Height > 0) {
captureElement.Bounds = bounds;
childElements.Add(captureElement);
}
}
return childElements;
}
public Color BackgroundColor { public Color BackgroundColor {
get { get {
if (document2.bgColor != null) { if (document2.bgColor != null) {
@ -523,11 +392,15 @@ namespace Greenshot.Helpers.IEInterop {
/// <param name="document2">The IHTMLDocument2</param> /// <param name="document2">The IHTMLDocument2</param>
/// <param name="document3">The IHTMLDocument3</param> /// <param name="document3">The IHTMLDocument3</param>
public void setAttribute(string attribute, string value) { public void setAttribute(string attribute, string value) {
IHTMLElement element = null;
if (!isDTD) { if (!isDTD) {
document2.body.setAttribute(attribute, value, 1); element = document2.body;
} else { } else {
document3.documentElement.setAttribute(attribute, value, 1); element = document3.documentElement;
} }
element.setAttribute(attribute, value, 1);
// Release IHTMLElement com object
releaseCom(element);
} }
/// <summary> /// <summary>
@ -538,12 +411,16 @@ namespace Greenshot.Helpers.IEInterop {
/// <param name="document3">The IHTMLDocument3</param> /// <param name="document3">The IHTMLDocument3</param>
/// <returns>object with the attribute value</returns> /// <returns>object with the attribute value</returns>
public object getAttribute(string attribute) { public object getAttribute(string attribute) {
IHTMLElement element = null;
object retVal = 0; object retVal = 0;
if (!isDTD) { if (!isDTD) {
retVal = document2.body.getAttribute(attribute, 1); element = document2.body;
} else { } else {
retVal = document3.documentElement.getAttribute(attribute, 1); element = document3.documentElement;
} }
retVal = element.getAttribute(attribute, 1);
// Release IHTMLElement com object
releaseCom(element);
return retVal; return retVal;
} }

View file

@ -122,7 +122,7 @@ namespace Greenshot.Helpers {
DialogResult? printOptionsResult = ShowPrintOptionsDialog(); DialogResult? printOptionsResult = ShowPrintOptionsDialog();
try { try {
if (printOptionsResult == null || printOptionsResult == DialogResult.OK) { if (printOptionsResult == null || printOptionsResult == DialogResult.OK) {
if (IsColorPrint()) { if (!IsColorPrint()) {
printDocument.DefaultPageSettings.Color = false; printDocument.DefaultPageSettings.Color = false;
} }
printDocument.Print(); printDocument.Print();
@ -196,7 +196,7 @@ namespace Greenshot.Helpers {
// rotate the image if it fits the page better // rotate the image if it fits the page better
if (conf.OutputPrintAllowRotate) { if (conf.OutputPrintAllowRotate) {
if ((pageRect.Width > pageRect.Height && imageRect.Width < imageRect.Height) || (pageRect.Width < pageRect.Height && imageRect.Width > imageRect.Height)) { if ((pageRect.Width > pageRect.Height && imageRect.Width < imageRect.Height) || (pageRect.Width < pageRect.Height && imageRect.Width > imageRect.Height)) {
image.RotateFlip(RotateFlipType.Rotate90FlipNone); image.RotateFlip(RotateFlipType.Rotate270FlipNone);
imageRect = image.GetBounds(ref gu); imageRect = image.GetBounds(ref gu);
if (alignment.Equals(ContentAlignment.TopLeft)) { if (alignment.Equals(ContentAlignment.TopLeft)) {
alignment = ContentAlignment.TopRight; alignment = ContentAlignment.TopRight;

View file

@ -86,7 +86,6 @@ namespace Greenshot.Experimental {
MainForm.Instance.NotifyIcon.ShowBalloonTip(10000, "Greenshot", Language.GetFormattedString(LangKey.update_found, "'" + latestGreenshot.File + "'"), ToolTipIcon.Info); MainForm.Instance.NotifyIcon.ShowBalloonTip(10000, "Greenshot", Language.GetFormattedString(LangKey.update_found, "'" + latestGreenshot.File + "'"), ToolTipIcon.Info);
} }
conf.LastUpdateCheck = DateTime.Now; conf.LastUpdateCheck = DateTime.Now;
IniConfig.Save();
} catch (Exception e) { } catch (Exception e) {
LOG.Error("An error occured while checking for updates, the error will be ignored: ", e); LOG.Error("An error occured while checking for updates, the error will be ignored: ", e);
} }
@ -107,7 +106,7 @@ namespace Greenshot.Experimental {
Process.Start(downloadLink); Process.Start(downloadLink);
} }
} catch (Exception) { } catch (Exception) {
MessageBox.Show(Language.GetFormattedString(LangKey.error_openlink, latestGreenshot.Link), Language.GetString(LangKey.error)); MessageBox.Show(Language.GetFormattedString(LangKey.error_openlink, downloadLink), Language.GetString(LangKey.error));
} finally { } finally {
MainForm.Instance.NotifyIcon.BalloonTipClicked -= HandleBalloonTipClick; MainForm.Instance.NotifyIcon.BalloonTipClicked -= HandleBalloonTipClick;
MainForm.Instance.NotifyIcon.BalloonTipClosed -= CleanupBalloonTipClick; MainForm.Instance.NotifyIcon.BalloonTipClosed -= CleanupBalloonTipClick;

View file

@ -187,7 +187,12 @@
<a href="#editor-shapes">Formen-Werkzeuge</a>. <a href="#editor-shapes">Formen-Werkzeuge</a>.
Zeichnen Sie einfach ein Textelement in der gewünschten Größe und geben Sie Zeichnen Sie einfach ein Textelement in der gewünschten Größe und geben Sie
den gewünschten Text ein.<br> den gewünschten Text ein.<br>
Durch Doppelklicken können Sie den Text eines bestehenden Textelements bearbeiten. Durch Doppelklicken können Sie den Text eines bestehenden Textelements bearbeiten.<br>
Drücken Sie <kbd>Return</kbd> oder <kbd>Enter</kbd> um die Bearbeitung des Textes zu beenden.
</p>
<p class="hint">
Wenn Sie Zeilenumbrüche innerhalb einer Textbox benötigen, drücken Sie <kbd>Shift</kbd> + <kbd>Return</kbd> oder
<kbd>Shift</kbd> + <kbd>Enter</kbd>.
</p> </p>
<a name="editor-highlight"></a> <a name="editor-highlight"></a>

View file

@ -203,7 +203,12 @@
Usage of the text tool <kbd>T</kbd> is similar to the usage of the Usage of the text tool <kbd>T</kbd> is similar to the usage of the
<a href="#editor-shapes">shape</a> tools. Just draw the text element to the desired <a href="#editor-shapes">shape</a> tools. Just draw the text element to the desired
size, then type in the text.<br> size, then type in the text.<br>
Double click an existing text element to edit the text. Double click an existing text element to edit the text.<br>
Hit <kbd>Return</kbd> or <kbd>Enter</kbd> when you have finished editing.
</p>
<p class="hint">
If you need to insert line breaks within a text box, hit <kbd>Shift</kbd> + <kbd>Return</kbd> or
<kbd>Shift</kbd> + <kbd>Enter</kbd>.
</p> </p>
<a name="editor-highlight"></a> <a name="editor-highlight"></a>

View file

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Eesti" ietf="et-EE" version="1.1.4" languagegroup="2">
<resources>
<resource name="about_bugs">Palun saatke veateated</resource>
<resource name="about_donations">Greenshoti kasutamismugavust ja arendust saate toetada siin:</resource>
<resource name="about_host">Greenshot asub portaalis sourceforge.net</resource>
<resource name="about_icons">Yusuke Kamiyamane on ikoonide tegija Fugue ikooni paketist (Creative Commons Attribution 3.0 litsents)</resource>
<resource name="about_license">Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom
Greenshot ei paku GARANTIID. See on vabaravaline programm ja Te võite seda levitava vabalt teatud tingimuste alusel.
Lisainfo GNU Põhilise Avaliku Litsentsi kohta:</resource>
<resource name="about_title">Info Greenshoti kohta</resource>
<resource name="application_title">Greenshot - revolutsiooniline kuvatõmmise tööriist</resource>
<resource name="bugreport_cancel">Sulge</resource>
<resource name="bugreport_info">Vabandust aga ilmnes tundmatu viga.
Hea uudis on: saate meil aidata seda eemaldada saates meile veateate.
Uue veateate teavitamiseks, palun külastage kõrvalolevat URLi ja tekstialalt asetage sisu kirjeldusse.
Vea paremaks parandamiseks lisage palun arusaadav kokkuvõte veast ja lisage ka pisidetailid.
Me oleksime väga tänulik, kui te enne kontrolliksite, ega sellest veast pole juba teavitatud. (Postituse kiiresti leidmiseks kasutage otsingut.) Aitäh :)</resource>
<resource name="bugreport_title">Viga</resource>
<resource name="CANCEL">Loobu</resource>
<resource name="clipboard_error">Lõikelauale kirjutamisel ilmnes ootamatu viga.</resource>
<resource name="clipboard_inuse">Greenshot ei suutnud lõikelauale kirjutada, sest {0} protsess blokeeris ligipääsu.</resource>
<resource name="clipboard_noimage">Lõikelaua pilti ei leitud.</resource>
<resource name="ClipboardFormat.BITMAP">Windowsi pisipilt</resource>
<resource name="ClipboardFormat.DIB">Seadme isesesev pisipilt (DIB)</resource>
<resource name="ClipboardFormat.HTML">HTML</resource>
<resource name="ClipboardFormat.HTMLDATAURL">HTML koos tekstisisese pildiga</resource>
<resource name="ClipboardFormat.PNG">PNG</resource>
<resource name="colorpicker_alpha">Alpha</resource>
<resource name="colorpicker_apply">Kinnita</resource>
<resource name="colorpicker_blue">Sinine</resource>
<resource name="colorpicker_green">Roheline</resource>
<resource name="colorpicker_htmlcolor">HTMLi värv</resource>
<resource name="colorpicker_recentcolors">Viimati kasutatud värvid</resource>
<resource name="colorpicker_red">Punane</resource>
<resource name="colorpicker_title">Värvivalik</resource>
<resource name="colorpicker_transparent">Läbipaistvus</resource>
<resource name="com_rejected">Greenshotile keelas ligipääsu sihtkoht {0}, arvatavasti on dialoog avatud. Sulgege dialoog ja proovige uuesti.</resource>
<resource name="com_rejected_title">Greenshotile keelati ligipääs</resource>
<resource name="config_unauthorizedaccess_write">Greenshoti seadistusfaili ei suudetud salvestada. Palun kontrollige '{0}' ligipääsu seadmeid.</resource>
<resource name="contextmenu_about">Info Greenshoti kohta</resource>
<resource name="contextmenu_capturearea">Haarake teatud regioon</resource>
<resource name="contextmenu_captureclipboard">Avage pilt lõikelaualt</resource>
<resource name="contextmenu_capturefullscreen">Haarake kogu ekraan</resource>
<resource name="contextmenu_capturefullscreen_all">kõik</resource>
<resource name="contextmenu_capturefullscreen_bottom">alt</resource>
<resource name="contextmenu_capturefullscreen_left">vasakult</resource>
<resource name="contextmenu_capturefullscreen_right">paremalt</resource>
<resource name="contextmenu_capturefullscreen_top">ülevalt</resource>
<resource name="contextmenu_captureie">Haarake Internet Explorer</resource>
<resource name="contextmenu_captureiefromlist">Haarake Internet Explorer loendist</resource>
<resource name="contextmenu_capturelastregion">Haarake hiljutine regioon</resource>
<resource name="contextmenu_capturewindow">Haarake aken</resource>
<resource name="contextmenu_capturewindowfromlist">Haarake aken loendist</resource>
<resource name="contextmenu_donate">Toetage Greenshoti</resource>
<resource name="contextmenu_exit">Välju</resource>
<resource name="contextmenu_help">Abi</resource>
<resource name="contextmenu_openfile">Avage pilt failist</resource>
<resource name="contextmenu_openrecentcapture">Avage viimane haaratud asukoht</resource>
<resource name="contextmenu_quicksettings">Kiirsätted</resource>
<resource name="contextmenu_settings">Eelistused...</resource>
<resource name="destination_exportfailed">{0}-le saatmisel ilmnes viga. Palun proovige uuesti.</resource>
<resource name="editor_align_bottom">All</resource>
<resource name="editor_align_center">Keskel</resource>
<resource name="editor_align_horizontal">Horisontaalne joondus</resource>
<resource name="editor_align_left">Vasak</resource>
<resource name="editor_align_middle">Keskel</resource>
<resource name="editor_align_right">Parem</resource>
<resource name="editor_align_top">Üleval</resource>
<resource name="editor_align_vertical">Vertikaaljoondus</resource>
<resource name="editor_arrange">Korrasta</resource>
<resource name="editor_arrowheads">Noolepead</resource>
<resource name="editor_arrowheads_both">Mõlemad</resource>
<resource name="editor_arrowheads_end">Lõpppunkt</resource>
<resource name="editor_arrowheads_none">Tühi</resource>
<resource name="editor_arrowheads_start">Alguspunkt</resource>
<resource name="editor_autocrop">Automaatne lõikus</resource>
<resource name="editor_backcolor">Täitke värviga</resource>
<resource name="editor_blur_radius">Uduse ala raadius</resource>
<resource name="editor_bold">Paks</resource>
<resource name="editor_border">Äär</resource>
<resource name="editor_brightness">Heledus</resource>
<resource name="editor_cancel">Loobu</resource>
<resource name="editor_clipboardfailed">Lõikelaua kasutamisel ilmnes viga. Palun proovi uuesti.</resource>
<resource name="editor_close">Sulge</resource>
<resource name="editor_close_on_save">Kas te tahate salvestada kuvatõmmist?</resource>
<resource name="editor_close_on_save_title">Salvestage pilt?</resource>
<resource name="editor_confirm">Kinnitan</resource>
<resource name="editor_copyimagetoclipboard">Kopeerige pilt lõikelauale</resource>
<resource name="editor_copypathtoclipboard">Kopeerige asukoht lõikelauale</resource>
<resource name="editor_copytoclipboard">Kopeeri</resource>
<resource name="editor_crop">Lõika (C)</resource>
<resource name="editor_cursortool">Valiku tööriist (ESC)</resource>
<resource name="editor_cuttoclipboard">Lõika</resource>
<resource name="editor_deleteelement">Kustuta</resource>
<resource name="editor_downonelevel">Samm allapoole</resource>
<resource name="editor_downtobottom">Samm lõppu</resource>
<resource name="editor_drawarrow">Joonista nool (A)</resource>
<resource name="editor_drawellipse">Joonistage ellip (E)</resource>
<resource name="editor_drawfreehand">Joonistage vaba käega (F)</resource>
<resource name="editor_drawhighlighter">Tooge esile (H)</resource>
<resource name="editor_drawline">Joonistage joon (L)</resource>
<resource name="editor_drawrectangle">Joonistage ristkülik (R)</resource>
<resource name="editor_drawtextbox">Lisage tekstikast (T)</resource>
<resource name="editor_dropshadow_darkness">Varjutav tugevus</resource>
<resource name="editor_dropshadow_offset">Varju tasakaalustamine</resource>
<resource name="editor_dropshadow_settings">Langeva varju seaded</resource>
<resource name="editor_dropshadow_thickness">Varju paksus</resource>
<resource name="editor_duplicate">Tehke valitud elemendist koopia</resource>
<resource name="editor_edit">Muutke</resource>
<resource name="editor_effects">Efektid</resource>
<resource name="editor_email">E-post</resource>
<resource name="editor_file">Fail</resource>
<resource name="editor_fontsize">Suurus</resource>
<resource name="editor_forecolor">Joone värv</resource>
<resource name="editor_grayscale">Halli skaala</resource>
<resource name="editor_highlight_area">Tooge esiplaanile</resource>
<resource name="editor_highlight_grayscale">Hall skaala</resource>
<resource name="editor_highlight_magnify">Suurendamine</resource>
<resource name="editor_highlight_mode">Tõstke esile</resource>
<resource name="editor_highlight_text">Tõstke esile teksti</resource>
<resource name="editor_image_shadow">Langev vari</resource>
<resource name="editor_imagesaved">Pilt salvestati {0}.</resource>
<resource name="editor_insertwindow">Sisestage aken</resource>
<resource name="editor_invert">Võtke tegevus tagasi</resource>
<resource name="editor_italic">Kaldkiri</resource>
<resource name="editor_load_objects">Laadige objektid failist</resource>
<resource name="editor_magnification_factor">Suurendusfaktor</resource>
<resource name="editor_match_capture_size">Katke haaratava ala suurus</resource>
<resource name="editor_obfuscate">Varjutage (O)</resource>
<resource name="editor_obfuscate_blur">Udune ala</resource>
<resource name="editor_obfuscate_mode">Varjus olev ala</resource>
<resource name="editor_obfuscate_pixelize">Mosaiik</resource>
<resource name="editor_object">Objekt</resource>
<resource name="editor_opendirinexplorer">Avage asukoht Windows Exploreriga</resource>
<resource name="editor_pastefromclipboard">Asetage</resource>
<resource name="editor_pixel_size">Piksli suurus</resource>
<resource name="editor_preview_quality">Eelvaate kvaliteet</resource>
<resource name="editor_print">Printige</resource>
<resource name="editor_redo">Tehke uuesti {0}</resource>
<resource name="editor_resetsize">Taastage normaalne suurus</resource>
<resource name="editor_resize_percent">Protsent</resource>
<resource name="editor_resize_pixel">Pikslid</resource>
<resource name="editor_rotateccw">Pöörake loendurit päripäeva (Control + ,)</resource>
<resource name="editor_rotatecw">Pöörake päripäeva (Control + .)</resource>
<resource name="editor_save">Salvesta</resource>
<resource name="editor_save_objects">Salvestage objektid faili</resource>
<resource name="editor_saveas">Salvestage nimega...</resource>
<resource name="editor_selectall">Valige kõik</resource>
<resource name="editor_senttoprinter">Printimiskäsklus saadeti '{0}'.</resource>
<resource name="editor_shadow">Langev vari</resource>
<resource name="editor_storedtoclipboard">Pilt taastati lõikelauale.</resource>
<resource name="editor_thickness">Joone paksus</resource>
<resource name="editor_title">Greenshoti pildihaldur</resource>
<resource name="editor_torn_edge">Rebenev äär</resource>
<resource name="editor_tornedge_horizontaltoothrange">Horisontaalne hammasvahemik</resource>
<resource name="editor_tornedge_settings">Rebeneva ääre seaded</resource>
<resource name="editor_tornedge_toothsize">Rebenemise suurus</resource>
<resource name="editor_tornedge_verticaltoothrange">Vertikaalne hambavahemik</resource>
<resource name="editor_undo">Võtke tagasi {0}</resource>
<resource name="editor_uponelevel">Aste ülespoole</resource>
<resource name="editor_uptotop">Kuni ülesse äärde</resource>
<resource name="EmailFormat.MAPI">MAPI klient</resource>
<resource name="EmailFormat.OUTLOOK_HTML">Outlook koos HTML-iga</resource>
<resource name="EmailFormat.OUTLOOK_TXT">Outlook koos tekstiga</resource>
<resource name="error">Viga</resource>
<resource name="error_multipleinstances">Greenshot on juba käivitatud.</resource>
<resource name="error_nowriteaccess">Faili ei suudetud salvestada {0}.
Palun kontrollige valitud hoiuala kirjutamisõigust.</resource>
<resource name="error_openfile">"{0}" ei suudetud avada.</resource>
<resource name="error_openlink">Ei suudetud avada '{0}'.</resource>
<resource name="error_save">Ei suudetud salvestada kuvatõmmist, palun valige sobivam asukoht.</resource>
<resource name="expertsettings">Ekspert</resource>
<resource name="expertsettings_autoreducecolors">Looge 8-bitine pilt, kui värvid on väiksemad kui 256 ja 8 bitisel pildil</resource>
<resource name="expertsettings_checkunstableupdates">Kontrollige testimisel olevaid uuendusi</resource>
<resource name="expertsettings_clipboardformats">Lõikelaua formaadid</resource>
<resource name="expertsettings_counter">${NUM} number failinime atribuutides</resource>
<resource name="expertsettings_enableexpert">Ma tean, mida ma teen!</resource>
<resource name="expertsettings_footerpattern">Printeri alumine muster</resource>
<resource name="expertsettings_minimizememoryfootprint">Vähendage mälu alumist mustrit aga koos jõudluse langusega (ei soovitata).</resource>
<resource name="expertsettings_optimizeforrdp">Väliste töölaudade kasutamiseks tehke vajalikud optimiseeringud</resource>
<resource name="expertsettings_reuseeditorifpossible">Kui võimalik, taaskasutage kohandajat</resource>
<resource name="expertsettings_suppresssavedialogatclose">Kohandaja sulgemisel pressige kokku salvestatud dialoog</resource>
<resource name="expertsettings_thumbnailpreview">Kuvage kontekstimenüüs pisipildid aknast (Vista ja windows 7 jaoks)</resource>
<resource name="exported_to">Eksporditud: {0}</resource>
<resource name="exported_to_error">Eksportimisel {0} tekkis viga:</resource>
<resource name="help_title">Greenshoti abi</resource>
<resource name="hotkeys">Kiirklahvid</resource>
<resource name="jpegqualitydialog_choosejpegquality">Palun valige oma pildile JPEG kvaliteet.</resource>
<resource name="OK">Ok</resource>
<resource name="print_error">Printimisel tekkis viga.</resource>
<resource name="printoptions_allowcenter">Printige lehe keskele</resource>
<resource name="printoptions_allowenlarge">Suurendage printimise ala, et pilt kattuks paberi suurusega</resource>
<resource name="printoptions_allowrotate">Pöörake pilti paberi suuna järgi</resource>
<resource name="printoptions_allowshrink">Vähendage pilti, et see mahuks paberile</resource>
<resource name="printoptions_colors">Värvi seaded</resource>
<resource name="printoptions_dontaskagain">Salvestage need valikud tavaseadetena ja ärge enam küsige</resource>
<resource name="printoptions_inverted">Printige ümberpööratud värvidega</resource>
<resource name="printoptions_layout">Lehekülje välimuse seaded</resource>
<resource name="printoptions_printcolor">Täielik värviline printimine</resource>
<resource name="printoptions_printgrayscale">Sundige printimist hallil skaalal</resource>
<resource name="printoptions_printmonochrome">Sundige must/valget printimist</resource>
<resource name="printoptions_timestamp">Printige kuupäev / aeg lehekülje alla</resource>
<resource name="printoptions_title">Greenshoti printimisvalikud</resource>
<resource name="qualitydialog_dontaskagain">Salvestage need valikud tavaseadetena ja ärge enam küsige</resource>
<resource name="qualitydialog_title">Greenshoti kvaliteet</resource>
<resource name="quicksettings_destination_file">Salvestage otse (kasutades selleks eelistatud faili väljundi seadeid)</resource>
<resource name="settings_alwaysshowprintoptionsdialog">Igal printimiskorral kuvage printimise valikute dialoog</resource>
<resource name="settings_alwaysshowqualitydialog">Igal pildi salvestamise korral kuvage kvaliteedi dialoog</resource>
<resource name="settings_applicationsettings">Rakenduse seaded</resource>
<resource name="settings_autostartshortcut">Käivitage Greenshot koos Windowsiga</resource>
<resource name="settings_capture">Haarake</resource>
<resource name="settings_capture_mousepointer">Haarake hiirenool</resource>
<resource name="settings_capture_windows_interactive">Kasutage interaktiivset akna haaramismeetodit</resource>
<resource name="settings_checkperiod">Uuendamise intervall (0=uuendamist ei toimu)</resource>
<resource name="settings_configureplugin">Seadistage</resource>
<resource name="settings_copypathtoclipboard">Iga pildi salvestamisega kopeerige faili asukoht lõikelauale</resource>
<resource name="settings_destination">Asukoht</resource>
<resource name="settings_destination_clipboard">Kopeerige lõikelauale</resource>
<resource name="settings_destination_editor">Avage pildihalduris</resource>
<resource name="settings_destination_email">E-post</resource>
<resource name="settings_destination_file">Salvestage otse (kasutades kõrvalolevaid seadeid)</resource>
<resource name="settings_destination_fileas">Salvestega nimega (dialoogi kuvamin)</resource>
<resource name="settings_destination_picker">Valige asukoht dünaamiliselt</resource>
<resource name="settings_destination_printer">Saatke printerisse</resource>
<resource name="settings_editor">Kohandaja</resource>
<resource name="settings_filenamepattern">Faili nime atribuudid</resource>
<resource name="settings_general">Põhiline</resource>
<resource name="settings_iecapture">Internet Exploreri haaramine</resource>
<resource name="settings_jpegquality">JPEG kvaliteet</resource>
<resource name="settings_language">Keel</resource>
<resource name="settings_message_filenamepattern">See kohatäitja täidetakse automaatselt defineeritud mustris:
${YYYY} aasta, 4 numbrit
${MM} kuu, 2 numbrit
${DD} päev, 2 numbrit
${hh} tund, 2 numbrit
${mm} minut, 2 numbrit
${ss} sekund, 2 numbrit
${NUM} suurenev number, 6 numbrit
${title} Akna pealkiri
${user} Windowsi kasutaja
${domain} Windowsi domeen
${hostname} Arvuti nimi
Greenshotiga on võimalik asukohti salvestada dünaamiliselt, selleks kasutage kaldkriipsu (\), et kaustad ja faili nimi oleks eraldatud.
Näiteks: Kohatäitja ${YYYY}-${MM}-${DD}\${hh}-${mm}-${ss}
loob praeguse päeva jaoks kausta Teie sihtkausta, nt 2008-06-29, kuvatõmmise faili nimi on tuletatud praegusest
kellaajast, nt 11_58_32 (lisaks seadetes määratud laiend)</resource>
<resource name="settings_network">Võrk ja uuendused</resource>
<resource name="settings_output">Väljund</resource>
<resource name="settings_playsound">Esitage kaamera heli</resource>
<resource name="settings_plugins">Laiendid</resource>
<resource name="settings_plugins_createdby">Laiendi omanik</resource>
<resource name="settings_plugins_dllpath">DLLi asukoht</resource>
<resource name="settings_plugins_name">Nimi</resource>
<resource name="settings_plugins_version">Versioon</resource>
<resource name="settings_preferredfilesettings">Eelistatud väljundi seade</resource>
<resource name="settings_primaryimageformat">Pildi formaat</resource>
<resource name="settings_printer">Printer</resource>
<resource name="settings_printoptions">Printimisvalikud</resource>
<resource name="settings_qualitysettings">Kvaliteedi seaded</resource>
<resource name="settings_reducecolors">Vähendage värvide arvu 256ni</resource>
<resource name="settings_registerhotkeys">Registreerige kiirklahvid</resource>
<resource name="settings_showflashlight">Kuvage välklamp</resource>
<resource name="settings_shownotify">Kuvage teateid</resource>
<resource name="settings_storagelocation">Hoiuse asukoht</resource>
<resource name="settings_title">Seaded</resource>
<resource name="settings_tooltip_filenamepattern">Kuvatõmmiste salvestamise ajal kasutatav atribuut</resource>
<resource name="settings_tooltip_language">Greenshoti kasutajaliidese keel</resource>
<resource name="settings_tooltip_primaryimageformat">Kasutatav pildiformaat</resource>
<resource name="settings_tooltip_registerhotkeys">Määrab, kas kiirklahvid Prnt, Ctrl + Print, Alt + Prnt on jäetud Greenshoti programmi käivitumise ajast kuni programmist väljumiseni.</resource>
<resource name="settings_tooltip_storagelocation">Kuvatõmmiste asukoht (töölauale salvestamise soovil jätke see tühjaks)</resource>
<resource name="settings_usedefaultproxy">Kasutage süsteemi proksit</resource>
<resource name="settings_visualization">Efektid</resource>
<resource name="settings_waittime">Pildi tegemise ooteaeg millisekundites</resource>
<resource name="settings_window_capture_mode">Akna haaramise meetod</resource>
<resource name="settings_windowscapture">Akna pildistamine</resource>
<resource name="settings_zoom">Kuvage suurendaja</resource>
<resource name="tooltip_firststart">Tehke parem-klõps siia või vajutage klahvi {0}.</resource>
<resource name="update_found">reenshoti uuem versioon on saadaval! Kas te soovite alla laadida Greenshot {0}?</resource>
<resource name="wait_ie_capture">Palun oodake, kui pilti Internet Exploreris tehakse...</resource>
<resource name="warning">Hoiatus</resource>
<resource name="warning_hotkeys">Kiirklahv(e) "{0}" ei suudetud registreerida. Teine tööriist väidab kasutavat sama(u) kiirklahvi(e)! Muutke või deaktiviseerige kiirklahv(id).
Kõik Greenshoti lisad töötavad süsteemisalvest ilma kiirklahvide olemasoluta.</resource>
<resource name="WindowCaptureMode.Aero">Kasutage kohandatud värvi</resource>
<resource name="WindowCaptureMode.AeroTransparent">Säilitage läbipaistvus</resource>
<resource name="WindowCaptureMode.Auto">Automaatselt</resource>
<resource name="WindowCaptureMode.GDI">Kasutage tavalist värvi</resource>
<resource name="WindowCaptureMode.Screen">Nagu kuvatud</resource>
</resources>
</language>

View file

@ -28,7 +28,7 @@ Juga, kami sangat terbantu apabila anda mengecek laporan lain yang sama dengan k
<resource name="ClipboardFormat.HTML">HTML</resource> <resource name="ClipboardFormat.HTML">HTML</resource>
<resource name="ClipboardFormat.HTMLDATAURL">HTML dengan gambar inline</resource> <resource name="ClipboardFormat.HTMLDATAURL">HTML dengan gambar inline</resource>
<resource name="ClipboardFormat.PNG">PNG</resource> <resource name="ClipboardFormat.PNG">PNG</resource>
<resource name="colorpicker_alpha">Alpha</resource> <resource name="colorpicker_alpha">Alfa</resource>
<resource name="colorpicker_apply">Lakukan</resource> <resource name="colorpicker_apply">Lakukan</resource>
<resource name="colorpicker_blue">Biru</resource> <resource name="colorpicker_blue">Biru</resource>
<resource name="colorpicker_green">Hijau</resource> <resource name="colorpicker_green">Hijau</resource>
@ -223,7 +223,7 @@ Harap cek aksesibilitas menuis pada lokasi penyimpanan yang dipilih.</resource>
<resource name="settings_destination_email">E-Mail</resource> <resource name="settings_destination_email">E-Mail</resource>
<resource name="settings_destination_file">Simpan cepat (menggunakan pengaturan berikut)</resource> <resource name="settings_destination_file">Simpan cepat (menggunakan pengaturan berikut)</resource>
<resource name="settings_destination_fileas">Simpan sebagai (tampilkan dialog)</resource> <resource name="settings_destination_fileas">Simpan sebagai (tampilkan dialog)</resource>
<resource name="settings_destination_picker">Pilih dsetinasi secara dinamis</resource> <resource name="settings_destination_picker">Pilih destinasi secara dinamis</resource>
<resource name="settings_destination_printer">Kirim ke printer</resource> <resource name="settings_destination_printer">Kirim ke printer</resource>
<resource name="settings_editor">Editor</resource> <resource name="settings_editor">Editor</resource>
<resource name="settings_filenamepattern">Pola nama berkas</resource> <resource name="settings_filenamepattern">Pola nama berkas</resource>
@ -277,6 +277,7 @@ cont, 11_58_32 (ditambah ekstensi yang ditetapkan pada pengaturan)</resource>
<resource name="settings_waittime">Milisekon untuk menunggu sebelum menagkap</resource> <resource name="settings_waittime">Milisekon untuk menunggu sebelum menagkap</resource>
<resource name="settings_window_capture_mode">Moda penangkap jendela</resource> <resource name="settings_window_capture_mode">Moda penangkap jendela</resource>
<resource name="settings_windowscapture">Tangkap jendela</resource> <resource name="settings_windowscapture">Tangkap jendela</resource>
<resource name="settings_zoom">Tampilkan Pembesar</resource>
<resource name="tooltip_firststart">Klik kanan disini atau tekan tombol {0}.</resource> <resource name="tooltip_firststart">Klik kanan disini atau tekan tombol {0}.</resource>
<resource name="update_found">Versi baru Greenshot telah tersedia! Apakah anda ingin mengunduh Greenshot {0}?</resource> <resource name="update_found">Versi baru Greenshot telah tersedia! Apakah anda ingin mengunduh Greenshot {0}?</resource>
<resource name="wait_ie_capture">Harap tunggu ketika halaman Internet Explorer sedang ditangkap</resource> <resource name="wait_ie_capture">Harap tunggu ketika halaman Internet Explorer sedang ditangkap</resource>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Українська" ietf="uk-UA" version="1.0.0" languagegroup="5">
<resources>
<resource name="confluence">Плагін Confluence</resource>
<resource name="externalcommand">Відкрити з плагіном зовнішніх команд</resource>
<resource name="imgur">Плагін Imgur (див.: http://imgur.com)</resource>
<resource name="jira">Плагін Jira</resource>
<resource name="language">Додаткові мови</resource>
<resource name="ocr">Плагін OCR (потребує Microsoft Office Document Imaging (MODI))</resource>
<resource name="optimize">Оптимізація продуктивності, це може забрати час.</resource>
<resource name="startgreenshot">Запустити {#ExeName}</resource>
<resource name="startup">Запускати {#ExeName} під час запуску Windows</resource>
</resources>
</language>

View file

@ -180,6 +180,7 @@ Verifica l'accesso in scrittura sulla destinazione di salvataggio.</resource>
<resource name="printoptions_dontaskagain">Salva le opzioni come default, e non chiedere più</resource> <resource name="printoptions_dontaskagain">Salva le opzioni come default, e non chiedere più</resource>
<resource name="printoptions_inverted">Stampa con colori invertiti (negativo)</resource> <resource name="printoptions_inverted">Stampa con colori invertiti (negativo)</resource>
<resource name="printoptions_printgrayscale">Forza stampa in scala di grigi</resource> <resource name="printoptions_printgrayscale">Forza stampa in scala di grigi</resource>
<resource name="printoptions_printmonochrome">Forza stampa in bianco e nero</resource>
<resource name="printoptions_timestamp">Stampa data / ora sul piede della pagina</resource> <resource name="printoptions_timestamp">Stampa data / ora sul piede della pagina</resource>
<resource name="printoptions_title">Opzioni di stampa di Greenshot</resource> <resource name="printoptions_title">Opzioni di stampa di Greenshot</resource>
<resource name="qualitydialog_dontaskagain">Save come qualità di default, e non chiedere più</resource> <resource name="qualitydialog_dontaskagain">Save come qualità di default, e non chiedere più</resource>
@ -244,6 +245,7 @@ corrente, es: 11_58_32 (più l'estensione definita nelle impostazioni)</resource
<resource name="settings_registerhotkeys">Registra scorciatoie di tastiera</resource> <resource name="settings_registerhotkeys">Registra scorciatoie di tastiera</resource>
<resource name="settings_showflashlight">Mostra torcia elettrica</resource> <resource name="settings_showflashlight">Mostra torcia elettrica</resource>
<resource name="settings_shownotify">Mostra le notifiche</resource> <resource name="settings_shownotify">Mostra le notifiche</resource>
<resource name="settings_zoom">Mostra lente ingrandimento</resource>
<resource name="settings_storagelocation">Destinaz. salvataggio</resource> <resource name="settings_storagelocation">Destinaz. salvataggio</resource>
<resource name="settings_title">Impostazioni</resource> <resource name="settings_title">Impostazioni</resource>
<resource name="settings_tooltip_filenamepattern">Modello usato per generare il nome file in fase di salvataggio delle immagini</resource> <resource name="settings_tooltip_filenamepattern">Modello usato per generare il nome file in fase di salvataggio delle immagini</resource>

View file

@ -7,7 +7,7 @@
<resource name="about_icons">Iconen van de icon set van Yusuke Kamiyamane's Fugue (Creative Commons Attribution 3.0 license)</resource> <resource name="about_icons">Iconen van de icon set van Yusuke Kamiyamane's Fugue (Creative Commons Attribution 3.0 license)</resource>
<resource name="about_license">Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom <resource name="about_license">Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom
Greenshot komt zonder enige garantie! Dit is gratis software, en U kunt het distribueren onder bepaalde voorwaarden. Greenshot komt zonder enige garantie! Dit is gratis software, en U kunt het distribueren onder bepaalde voorwaarden.
Deteils over de GNU General Public License:</resource> Details over de GNU General Public License:</resource>
<resource name="about_title">Over Greenshot</resource> <resource name="about_title">Over Greenshot</resource>
<resource name="about_translation">Nederlandse vertaling door Jurjen Ladenius en Thomas Smid</resource> <resource name="about_translation">Nederlandse vertaling door Jurjen Ladenius en Thomas Smid</resource>
<resource name="application_title">Greenshot - de revolutionaire screenshot utility</resource> <resource name="application_title">Greenshot - de revolutionaire screenshot utility</resource>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<language description="Polski" ietf="pl-PL" version="1.0.0" languagegroup="2"> <language description="Polski" ietf="pl-PL" version="1.1.4" languagegroup="2">
<resources> <resources>
<resource name="about_bugs">Tutaj proszę zgłaszać błędy:</resource> <resource name="about_bugs">Tutaj proszę zgłaszać błędy:</resource>
<resource name="about_donations">Jeśli podoba Ci się Greenshot, chętnie przyjmiemy Twoje wsparcie:</resource> <resource name="about_donations">Jeśli podoba Ci się Greenshot, chętnie przyjmiemy Twoje wsparcie:</resource>
@ -9,6 +9,7 @@
Greenshot nie jest objęty JAKĄKOLWIEK GWARANCJĄ. Jako wolne oprogramowanie może być rozpowszechniany na określonych warunkach. Greenshot nie jest objęty JAKĄKOLWIEK GWARANCJĄ. Jako wolne oprogramowanie może być rozpowszechniany na określonych warunkach.
Szczegóły na temat Powszechnej Licencji Publicznej GNU:</resource> Szczegóły na temat Powszechnej Licencji Publicznej GNU:</resource>
<resource name="about_title">O Greenshot</resource> <resource name="about_title">O Greenshot</resource>
<resource name="about_translation">Polskie tłumaczenie: Paweł Matyja, piotrex (https://github.com/piotrex)</resource>
<resource name="application_title">Greenshot - rewolucyjne narzędzie do zrzutów ekranu</resource> <resource name="application_title">Greenshot - rewolucyjne narzędzie do zrzutów ekranu</resource>
<resource name="bugreport_cancel">Zamknij</resource> <resource name="bugreport_cancel">Zamknij</resource>
<resource name="bugreport_info">Niestety, wystąpił nieoczekiwany błąd. <resource name="bugreport_info">Niestety, wystąpił nieoczekiwany błąd.
@ -19,8 +20,15 @@ Odwiedź poniższy URL, utwórz nowy raport błędu i wstaw do pola opisu zawart
Dodaj sensowne podsumowanie oraz wszelkie informacje, które uważasz za istotne do odtworzenia zaistniałej sytuacji. Dodaj sensowne podsumowanie oraz wszelkie informacje, które uważasz za istotne do odtworzenia zaistniałej sytuacji.
Będziemy wdzięczni, jeśli najpierw sprawdzisz, czy takie zdarzenie nie zostało już zarejestrowane. (Użyj wyszukiwarki, aby to zweryfikować.) Dziękujemy :)</resource> Będziemy wdzięczni, jeśli najpierw sprawdzisz, czy takie zdarzenie nie zostało już zarejestrowane. (Użyj wyszukiwarki, aby to zweryfikować.) Dziękujemy :)</resource>
<resource name="bugreport_title">Błąd</resource> <resource name="bugreport_title">Błąd</resource>
<resource name="CANCEL">Anuluj</resource>
<resource name="clipboard_error">Podczas zapisu do schowka wystąpił nieprzewidziany błąd.</resource> <resource name="clipboard_error">Podczas zapisu do schowka wystąpił nieprzewidziany błąd.</resource>
<resource name="clipboard_inuse">Greenshot nie mógł dokonać zapisu do schowka, ponieważ proces {0} zablokował dostęp.</resource> <resource name="clipboard_inuse">Greenshot nie mógł dokonać zapisu do schowka, ponieważ proces {0} zablokował dostęp.</resource>
<resource name="clipboard_noimage">Nie można odnaleźć obrazu ze schowka.</resource>
<resource name="ClipboardFormat.BITMAP">Bitmapa Windows</resource>
<resource name="ClipboardFormat.DIB">Bitmapa DIB</resource>
<resource name="ClipboardFormat.HTML">HTML</resource>
<resource name="ClipboardFormat.HTMLDATAURL">HTML z obrazami w kodzie</resource>
<resource name="ClipboardFormat.PNG">PNG</resource>
<resource name="colorpicker_alpha">Kanał alfa</resource> <resource name="colorpicker_alpha">Kanał alfa</resource>
<resource name="colorpicker_apply">Zastosuj</resource> <resource name="colorpicker_apply">Zastosuj</resource>
<resource name="colorpicker_blue">Niebieski</resource> <resource name="colorpicker_blue">Niebieski</resource>
@ -30,28 +38,50 @@ Będziemy wdzięczni, jeśli najpierw sprawdzisz, czy takie zdarzenie nie zosta
<resource name="colorpicker_red">Czerwony</resource> <resource name="colorpicker_red">Czerwony</resource>
<resource name="colorpicker_title">Pobieranie koloru</resource> <resource name="colorpicker_title">Pobieranie koloru</resource>
<resource name="colorpicker_transparent">Przezroczysty</resource> <resource name="colorpicker_transparent">Przezroczysty</resource>
<resource name="com_rejected">Miejsce zapisu {0} nie pozwala Greenshotowi uzyskać dostęp, prawdopodobnie przez otwarte okno. Zamknij okno i spróbuj ponownie.</resource>
<resource name="com_rejected_title">Greenshot nie może uzyskać dostępu</resource>
<resource name="config_unauthorizedaccess_write">Nie powiódł się zapis pliku konfiguracyjnego Greenshota. Proszę sprawdzić uprawnienia dostępu dla {0}.</resource> <resource name="config_unauthorizedaccess_write">Nie powiódł się zapis pliku konfiguracyjnego Greenshota. Proszę sprawdzić uprawnienia dostępu dla {0}.</resource>
<resource name="contextmenu_about">O Greenshot</resource> <resource name="contextmenu_about">O Greenshot</resource>
<resource name="contextmenu_capturearea">Zrzuć obszar</resource> <resource name="contextmenu_capturearea">Zrzuć obszar</resource>
<resource name="contextmenu_captureclipboard">Otwórz obraz ze schowka</resource> <resource name="contextmenu_captureclipboard">Otwórz obraz ze schowka</resource>
<resource name="contextmenu_capturefullscreen">Zrzuć pełny ekran</resource> <resource name="contextmenu_capturefullscreen">Zrzuć pełny ekran</resource>
<resource name="contextmenu_capturefullscreen_all">całość</resource>
<resource name="contextmenu_capturefullscreen_bottom">od dołu</resource>
<resource name="contextmenu_capturefullscreen_left">od lewej</resource>
<resource name="contextmenu_capturefullscreen_right">od prawej</resource>
<resource name="contextmenu_capturefullscreen_top">od góry</resource>
<resource name="contextmenu_captureie">Przechwyć Internet Explorer</resource>
<resource name="contextmenu_captureiefromlist">Przechwyć Internet Explorer z listy</resource>
<resource name="contextmenu_capturelastregion">Zrzuć poprzedni obszar</resource> <resource name="contextmenu_capturelastregion">Zrzuć poprzedni obszar</resource>
<resource name="contextmenu_capturewindow">Zrzuć okno</resource> <resource name="contextmenu_capturewindow">Zrzuć okno</resource>
<resource name="contextmenu_capturewindowfromlist">Przechwyć okno z listy</resource>
<resource name="contextmenu_donate">Wsparcie Greenshota</resource> <resource name="contextmenu_donate">Wsparcie Greenshota</resource>
<resource name="contextmenu_exit">Wyjście</resource> <resource name="contextmenu_exit">Wyjście</resource>
<resource name="contextmenu_help">Pomoc</resource> <resource name="contextmenu_help">Pomoc</resource>
<resource name="contextmenu_openfile">Otwórz obraz z pliku</resource> <resource name="contextmenu_openfile">Otwórz obraz z pliku</resource>
<resource name="contextmenu_openrecentcapture">Otwórz ostatnią lokalizację zapisu</resource>
<resource name="contextmenu_quicksettings">Szybki dostęp do opcji</resource> <resource name="contextmenu_quicksettings">Szybki dostęp do opcji</resource>
<resource name="contextmenu_settings">Preferencje...</resource> <resource name="contextmenu_settings">Preferencje...</resource>
<resource name="destination_exportfailed">Błąd podczas eksportowania do {0}. Proszę spróbować później.</resource>
<resource name="editor_align_bottom">Do dołu</resource>
<resource name="editor_align_center">Wyśrodkowane</resource>
<resource name="editor_align_horizontal">Wyrównanie w poziomie</resource>
<resource name="editor_align_left">Do lewej</resource>
<resource name="editor_align_middle">Do środka</resource>
<resource name="editor_align_right">Do prawej</resource>
<resource name="editor_align_top">Do góry</resource>
<resource name="editor_align_vertical">Wyrównanie w pionie</resource>
<resource name="editor_arrange">Zmień rozmieszczenie</resource> <resource name="editor_arrange">Zmień rozmieszczenie</resource>
<resource name="editor_arrowheads">Groty strzałki</resource> <resource name="editor_arrowheads">Groty strzałki</resource>
<resource name="editor_arrowheads_both">Oba</resource> <resource name="editor_arrowheads_both">Oba</resource>
<resource name="editor_arrowheads_end">Końcowy</resource> <resource name="editor_arrowheads_end">Końcowy</resource>
<resource name="editor_arrowheads_none">Żaden</resource> <resource name="editor_arrowheads_none">Żaden</resource>
<resource name="editor_arrowheads_start">Początkowy</resource> <resource name="editor_arrowheads_start">Początkowy</resource>
<resource name="editor_autocrop">Przytnij automatycznie</resource>
<resource name="editor_backcolor">Kolor wypełnienia</resource> <resource name="editor_backcolor">Kolor wypełnienia</resource>
<resource name="editor_blur_radius">Promień rozmycia</resource> <resource name="editor_blur_radius">Promień rozmycia</resource>
<resource name="editor_bold">Pogrubienie</resource> <resource name="editor_bold">Pogrubienie</resource>
<resource name="editor_border">Obramowanie</resource>
<resource name="editor_brightness">Jaskrawość</resource> <resource name="editor_brightness">Jaskrawość</resource>
<resource name="editor_cancel">Anuluj</resource> <resource name="editor_cancel">Anuluj</resource>
<resource name="editor_clipboardfailed">Błąd przy próbie dostępu do schowka. Spróbuj ponownie.</resource> <resource name="editor_clipboardfailed">Błąd przy próbie dostępu do schowka. Spróbuj ponownie.</resource>
@ -70,25 +100,36 @@ Będziemy wdzięczni, jeśli najpierw sprawdzisz, czy takie zdarzenie nie zosta
<resource name="editor_downtobottom">Na sam dół</resource> <resource name="editor_downtobottom">Na sam dół</resource>
<resource name="editor_drawarrow">Rysuj strzałkę (A)</resource> <resource name="editor_drawarrow">Rysuj strzałkę (A)</resource>
<resource name="editor_drawellipse">Rysuj elipsę (E)</resource> <resource name="editor_drawellipse">Rysuj elipsę (E)</resource>
<resource name="editor_drawfreehand">Rysuj odręcznie (F)</resource>
<resource name="editor_drawhighlighter">Uwydatnienie (H)</resource> <resource name="editor_drawhighlighter">Uwydatnienie (H)</resource>
<resource name="editor_drawline">Rysuj linię (L)</resource> <resource name="editor_drawline">Rysuj linię (L)</resource>
<resource name="editor_drawrectangle">Rysuj prostokąt (R)</resource> <resource name="editor_drawrectangle">Rysuj prostokąt (R)</resource>
<resource name="editor_drawtextbox">Dodaj pole tekstowe (T)</resource> <resource name="editor_drawtextbox">Dodaj pole tekstowe (T)</resource>
<resource name="editor_dropshadow_darkness">Intensywność cienia</resource>
<resource name="editor_dropshadow_offset">Przesunięcie cienia</resource>
<resource name="editor_dropshadow_settings">Ustawienia cienia</resource>
<resource name="editor_dropshadow_thickness">Intensywność cienia</resource>
<resource name="editor_duplicate">Duplikuj wybrany element</resource> <resource name="editor_duplicate">Duplikuj wybrany element</resource>
<resource name="editor_edit">Edycja</resource> <resource name="editor_edit">Edycja</resource>
<resource name="editor_effects">Efekty</resource>
<resource name="editor_email">Wyślij e-mailem</resource> <resource name="editor_email">Wyślij e-mailem</resource>
<resource name="editor_file">Plik</resource> <resource name="editor_file">Plik</resource>
<resource name="editor_fontsize">Rozmiar</resource> <resource name="editor_fontsize">Rozmiar</resource>
<resource name="editor_forecolor">Kolor linii</resource> <resource name="editor_forecolor">Kolor linii</resource>
<resource name="editor_grayscale">Skala szarości</resource>
<resource name="editor_highlight_area">Uwydatnienie obszaru</resource> <resource name="editor_highlight_area">Uwydatnienie obszaru</resource>
<resource name="editor_highlight_grayscale">Wyszarzenie</resource> <resource name="editor_highlight_grayscale">Wyszarzenie</resource>
<resource name="editor_highlight_magnify">Powiększenie</resource> <resource name="editor_highlight_magnify">Powiększenie</resource>
<resource name="editor_highlight_mode">Tryb uwydatnienia</resource> <resource name="editor_highlight_mode">Tryb uwydatnienia</resource>
<resource name="editor_highlight_text">Uwydatnienie tekstu</resource> <resource name="editor_highlight_text">Uwydatnienie tekstu</resource>
<resource name="editor_image_shadow">Rzuć cień</resource>
<resource name="editor_imagesaved">Obraz został zapisany w {0}.</resource> <resource name="editor_imagesaved">Obraz został zapisany w {0}.</resource>
<resource name="editor_insertwindow">Wklej okno</resource>
<resource name="editor_invert">Negatyw</resource>
<resource name="editor_italic">Pochylenie</resource> <resource name="editor_italic">Pochylenie</resource>
<resource name="editor_load_objects">Załaduj obiekty z pliku</resource> <resource name="editor_load_objects">Załaduj obiekty z pliku</resource>
<resource name="editor_magnification_factor">Współczynnik powiększenia</resource> <resource name="editor_magnification_factor">Współczynnik powiększenia</resource>
<resource name="editor_match_capture_size">Dopasowuj wielkość zrzutów</resource>
<resource name="editor_obfuscate">Zamglenie (O)</resource> <resource name="editor_obfuscate">Zamglenie (O)</resource>
<resource name="editor_obfuscate_blur">Rozmywanie</resource> <resource name="editor_obfuscate_blur">Rozmywanie</resource>
<resource name="editor_obfuscate_mode">Tryb zamglenia</resource> <resource name="editor_obfuscate_mode">Tryb zamglenia</resource>
@ -99,18 +140,32 @@ Będziemy wdzięczni, jeśli najpierw sprawdzisz, czy takie zdarzenie nie zosta
<resource name="editor_pixel_size">Rozmiar piksela</resource> <resource name="editor_pixel_size">Rozmiar piksela</resource>
<resource name="editor_preview_quality">Jakość podglądu</resource> <resource name="editor_preview_quality">Jakość podglądu</resource>
<resource name="editor_print">Drukuj</resource> <resource name="editor_print">Drukuj</resource>
<resource name="editor_redo">Cofnij {0}</resource>
<resource name="editor_resetsize">Domyślny rozmiar</resource>
<resource name="editor_resize_percent">Procent</resource>
<resource name="editor_resize_pixel">Pikseli</resource>
<resource name="editor_rotateccw">Obróć w lewo (Ctrl + ,)</resource>
<resource name="editor_rotatecw">Obróć w prawo (Ctrl + .)</resource>
<resource name="editor_save">Zapisz</resource> <resource name="editor_save">Zapisz</resource>
<resource name="editor_save_objects">Zapisz obiekty do pliku</resource> <resource name="editor_save_objects">Zapisz obiekty do pliku</resource>
<resource name="editor_saveas">Zapisz jako...</resource> <resource name="editor_saveas">Zapisz jako...</resource>
<resource name="editor_selectall">Zaznacz wszystko</resource> <resource name="editor_selectall">Zaznacz wszystko</resource>
<resource name="editor_senttoprinter">Zadanie drukowania zostało wysłane do '{0}'.</resource> <resource name="editor_senttoprinter">Zadanie drukowania zostało wysłane do '{0}'.</resource>
<resource name="editor_shadow">Cień</resource> <resource name="editor_shadow">Cień</resource>
<resource name="editor_image_shadow">Cień</resource>
<resource name="editor_storedtoclipboard">Obraz został zapisany w schowku.</resource> <resource name="editor_storedtoclipboard">Obraz został zapisany w schowku.</resource>
<resource name="editor_thickness">Grubość linii</resource> <resource name="editor_thickness">Grubość linii</resource>
<resource name="editor_title">Greenshot - edytor obrazów</resource> <resource name="editor_title">Greenshot - edytor obrazów</resource>
<resource name="editor_torn_edge">Poszarpane krawędzie</resource>
<resource name="editor_tornedge_horizontaltoothrange">Poziomy zasięg poszarpania</resource>
<resource name="editor_tornedge_settings">Ustawienia poszarpanych krawędzi</resource>
<resource name="editor_tornedge_toothsize">Rozmiar poszarpania</resource>
<resource name="editor_tornedge_verticaltoothrange">Pionowy zasięg poszarpania</resource>
<resource name="editor_undo">Cofnij {0}</resource>
<resource name="editor_uponelevel">Jeden poziom w górę</resource> <resource name="editor_uponelevel">Jeden poziom w górę</resource>
<resource name="editor_uptotop">Na samą górę</resource> <resource name="editor_uptotop">Na samą górę</resource>
<resource name="EmailFormat.MAPI">Klient MAPI</resource>
<resource name="EmailFormat.OUTLOOK_HTML">Outlook z HTML</resource>
<resource name="EmailFormat.OUTLOOK_TXT">Outlook z tekstem</resource>
<resource name="error">Błąd</resource> <resource name="error">Błąd</resource>
<resource name="error_multipleinstances">Instancja aplikacji Greenshot jest już uruchomiona.</resource> <resource name="error_multipleinstances">Instancja aplikacji Greenshot jest już uruchomiona.</resource>
<resource name="error_nowriteaccess">Nie można wykonać zapisu do {0}. <resource name="error_nowriteaccess">Nie można wykonać zapisu do {0}.
@ -118,26 +173,50 @@ Sprawdź możliwość zapisu w wybranej lokalizacji.</resource>
<resource name="error_openfile">Nie można otworzyć pliku {0}.</resource> <resource name="error_openfile">Nie można otworzyć pliku {0}.</resource>
<resource name="error_openlink">Nie można otworzyć odsyłacza.</resource> <resource name="error_openlink">Nie można otworzyć odsyłacza.</resource>
<resource name="error_save">Nie można zapisać zrzutu ekranu, proszę wskazać bardziej odpowiednią lokalizację.</resource> <resource name="error_save">Nie można zapisać zrzutu ekranu, proszę wskazać bardziej odpowiednią lokalizację.</resource>
<resource name="expertsettings">Ekspert</resource>
<resource name="expertsettings_autoreducecolors">Twórz obraz 8-bitowy, kiedy kolorów jest mniej niż 256, gdy ma się do czynienia z obrazem &gt; 8-bitowym</resource>
<resource name="expertsettings_checkunstableupdates">Sprawdzaj niestabilne wersje</resource>
<resource name="expertsettings_clipboardformats">Formaty schowka</resource>
<resource name="expertsettings_counter">Numer dla ${NUM} we wzorcu nazwy pliku</resource>
<resource name="expertsettings_enableexpert">Wiem, co robię!</resource>
<resource name="expertsettings_footerpattern">Wzorzec stopki wydruku</resource>
<resource name="expertsettings_minimizememoryfootprint">Minimalizuj użycie pamięci kosztem wydajności (nie polecane)</resource>
<resource name="expertsettings_optimizeforrdp">Optymalizacje korzystania z programu w zdalnym pulpicie</resource>
<resource name="expertsettings_reuseeditorifpossible">Korzystaj ponownie z edytora, kiedy to tylko możliwe</resource>
<resource name="expertsettings_suppresssavedialogatclose">Nie pytaj o zapisywanie przy zamykaniu edytora</resource>
<resource name="expertsettings_thumbnailpreview">Pokazuj miniaturki oknien w menu kontekstowym (Vista i Win 7)</resource>
<resource name="exported_to">Wyeksportowano do: {0}</resource>
<resource name="exported_to_error">Wystąpił błąd przy eksportowaniu do {0}:</resource>
<resource name="help_title">Greenshot - pomoc</resource> <resource name="help_title">Greenshot - pomoc</resource>
<resource name="hotkeys">Skróty klawiszowe</resource>
<resource name="jpegqualitydialog_choosejpegquality">Proszę wybrać poziom jakości dla pliku JPEG.</resource> <resource name="jpegqualitydialog_choosejpegquality">Proszę wybrać poziom jakości dla pliku JPEG.</resource>
<resource name="jpegqualitydialog_dontaskagain">Zapisz jako domyślny poziom jakości JPEG i nie pytaj ponownie</resource> <resource name="OK">OK</resource>
<resource name="jpegqualitydialog_title">Greenshot - jakość JPEG</resource>
<resource name="print_error">Podczas próby wydruku wystąpił błąd.</resource> <resource name="print_error">Podczas próby wydruku wystąpił błąd.</resource>
<resource name="printoptions_allowcenter">Wycentruj wydruk na stronie</resource> <resource name="printoptions_allowcenter">Wycentruj wydruk na stronie</resource>
<resource name="printoptions_allowenlarge">Powiększ wydruk do rozmiaru papieru</resource> <resource name="printoptions_allowenlarge">Powiększ wydruk do rozmiaru papieru</resource>
<resource name="printoptions_allowrotate">Obróć wydruk odpowiednio do ułożenia strony</resource> <resource name="printoptions_allowrotate">Obróć wydruk odpowiednio do ułożenia strony</resource>
<resource name="printoptions_allowshrink">Pomniejsz wydruk do rozmiaru papieru</resource> <resource name="printoptions_allowshrink">Pomniejsz wydruk do rozmiaru papieru</resource>
<resource name="printoptions_colors">Ustawienia kolorów</resource>
<resource name="printoptions_dontaskagain">Zapisz opcje jako domyślne i nie pytaj ponownie</resource> <resource name="printoptions_dontaskagain">Zapisz opcje jako domyślne i nie pytaj ponownie</resource>
<resource name="printoptions_inverted">Drukuj z odwóconymi kolorami</resource>
<resource name="printoptions_layout">Ustawienia strony</resource>
<resource name="printoptions_printcolor">Drukowanie w pełnych kolorach</resource>
<resource name="printoptions_printgrayscale">Wymuś drukowanie w skali szarości</resource>
<resource name="printoptions_printmonochrome">Wymuś drukowanie czarno-białe</resource>
<resource name="printoptions_timestamp">Drukuj datę/czas u dołu strony</resource> <resource name="printoptions_timestamp">Drukuj datę/czas u dołu strony</resource>
<resource name="printoptions_title">Greenshot - opcje drukowania</resource> <resource name="printoptions_title">Greenshot - opcje drukowania</resource>
<resource name="qualitydialog_dontaskagain">Ustaw jakość jako domyślną i nie pytaj już więcej</resource>
<resource name="qualitydialog_title">Jakość zrzutu</resource>
<resource name="quicksettings_destination_file">Zapisz bezpośrednio (używając ustawień dla pliku wyjściowego)</resource> <resource name="quicksettings_destination_file">Zapisz bezpośrednio (używając ustawień dla pliku wyjściowego)</resource>
<resource name="settings_alwaysshowjpegqualitydialog">Pokazuj okno ustawień jakości JPEG przy każdym zapisie obrazu</resource>
<resource name="settings_alwaysshowprintoptionsdialog">Pokazuj okno opcji wydruku przy każdej próbie wydruku obrazu</resource> <resource name="settings_alwaysshowprintoptionsdialog">Pokazuj okno opcji wydruku przy każdej próbie wydruku obrazu</resource>
<resource name="settings_alwaysshowqualitydialog">Wybieraj jakość przy każdym zapisie obrazu</resource>
<resource name="settings_applicationsettings">Ustawienia aplikacji</resource> <resource name="settings_applicationsettings">Ustawienia aplikacji</resource>
<resource name="settings_autostartshortcut">Uruchom Greenshot podczas startu systemu</resource> <resource name="settings_autostartshortcut">Uruchom Greenshot podczas startu systemu</resource>
<resource name="settings_capture">Zrzucanie ekranu</resource> <resource name="settings_capture">Zrzucanie ekranu</resource>
<resource name="settings_capture_mousepointer">Zrzucaj wskaźnik myszy</resource> <resource name="settings_capture_mousepointer">Zrzucaj wskaźnik myszy</resource>
<resource name="settings_capture_windows_interactive">Tryb interaktywnego zrzucania okna</resource> <resource name="settings_capture_windows_interactive">Tryb interaktywnego zrzucania okna</resource>
<resource name="settings_checkperiod">Co ile dni sprawdzać aktualizacje (0 = nie sprawdzaj)</resource>
<resource name="settings_configureplugin">Konfiguracja</resource>
<resource name="settings_copypathtoclipboard">Kopiuj ścieżkę pliku do schowka przy każdym zapisie obrazu</resource> <resource name="settings_copypathtoclipboard">Kopiuj ścieżkę pliku do schowka przy każdym zapisie obrazu</resource>
<resource name="settings_destination">Miejsce zrzutu ekranu</resource> <resource name="settings_destination">Miejsce zrzutu ekranu</resource>
<resource name="settings_destination_clipboard">Kopiuj do schowka</resource> <resource name="settings_destination_clipboard">Kopiuj do schowka</resource>
@ -145,37 +224,48 @@ Sprawdź możliwość zapisu w wybranej lokalizacji.</resource>
<resource name="settings_destination_email">Wyślij e-mailem</resource> <resource name="settings_destination_email">Wyślij e-mailem</resource>
<resource name="settings_destination_file">Zapisz bezpośrednio (wg ustawień poniżej)</resource> <resource name="settings_destination_file">Zapisz bezpośrednio (wg ustawień poniżej)</resource>
<resource name="settings_destination_fileas">Zapisz jako (z oknem dialogowym)</resource> <resource name="settings_destination_fileas">Zapisz jako (z oknem dialogowym)</resource>
<resource name="settings_destination_picker">Wybieraj miejsce dynamicznie</resource>
<resource name="settings_destination_printer">Wyślij do drukarki</resource> <resource name="settings_destination_printer">Wyślij do drukarki</resource>
<resource name="settings_editor">Edytor</resource>
<resource name="settings_filenamepattern">Szablon nazwy pliku</resource> <resource name="settings_filenamepattern">Szablon nazwy pliku</resource>
<resource name="settings_general">Ogólne</resource> <resource name="settings_general">Ogólne</resource>
<resource name="settings_iecapture">Przechwytywanie Internet Explorera</resource>
<resource name="settings_jpegquality">Jakość JPEG</resource> <resource name="settings_jpegquality">Jakość JPEG</resource>
<resource name="settings_jpegsettings">Ustawienia JPEG</resource>
<resource name="settings_language">Język</resource> <resource name="settings_language">Język</resource>
<resource name="settings_message_filenamepattern">Wzorce symboliczne w zdefiniowanych szablonach zostaną zastąpione automatycznie: <resource name="settings_message_filenamepattern">Wzorce symboliczne w zdefiniowanych szablonach zostaną zastąpione automatycznie:
${YYYY} - rok, 4 cyfry %YYYY% - rok, 4 cyfry
${MM} - miesiąc, 2 cyfry %MM% - miesiąc, 2 cyfry
${DD} - dzień, 2 cyfry %DD% - dzień, 2 cyfry
${hh} - godzina, 2 cyfry %hh% - godzina, 2 cyfry
${mm} - minuta, 2 cyfry %mm% - minuta, 2 cyfry
${ss} - sekunda, 2 cyfry %ss% - sekunda, 2 cyfry
${NUM} - liczba zwiększana o 1 (autonumeracja), 6 cyfr %NUM% - liczba zwiększana o 1 (autonumeracja), 6 cyfr
${title} - tytuł okna %title% - tytuł okna
${user} - zalogowany użytkownik %user% - zalogowany użytkownik
${domain} - nazwa domeny %domain% - nazwa domeny
${hostname} - nazwa komputera %hostname% - nazwa komputera
Możliwe jest także dynamiczne tworzenie folderów - wystarczy użyć znaku odwrotnego ukośnika (\) do rozdzielenia nazw folderów i plików. Możliwe jest także dynamiczne tworzenie folderów - wystarczy użyć znaku odwrotnego ukośnika (\) do rozdzielenia nazw folderów i plików.
Przykład: szablon ${YYYY}-${MM}-${DD}\${hh}-${mm}-${ss} Przykład: szablon %YYYY%-%MM%-%DD%\%hh%-%mm%-%ss%
utworzy w domyślnym miejscu zapisu folder dla bieżącego dnia, np. 2008-06-29, a nazwy plików ze zrzutami ekranu będą tworzone utworzy w domyślnym miejscu zapisu folder dla bieżącego dnia, np. 2008-06-29, a nazwy plików ze zrzutami ekranu będą tworzone
na podstawie bieżącego czasu, np. 11-58-32 (plus rozszerzenie zdefiniowane w ustawieniach).</resource> na podstawie bieżącego czasu, np. 11-58-32 (plus rozszerzenie zdefiniowane w ustawieniach).</resource>
<resource name="settings_output">Wyjście</resource> <resource name="settings_network">Śieć i aktualizacje</resource>
<resource name="settings_output">Plik wyjściowy</resource>
<resource name="settings_playsound">Odtwarzaj dźwięk migawki aparatu</resource> <resource name="settings_playsound">Odtwarzaj dźwięk migawki aparatu</resource>
<resource name="settings_plugins">Wtyczki</resource>
<resource name="settings_plugins_createdby">Stworzone przez</resource>
<resource name="settings_plugins_dllpath">Ścieżka do DLL</resource>
<resource name="settings_plugins_name">Nazwa</resource>
<resource name="settings_plugins_version">Wersja</resource>
<resource name="settings_preferredfilesettings">Preferowane ustawienia pliku wyjściowego</resource> <resource name="settings_preferredfilesettings">Preferowane ustawienia pliku wyjściowego</resource>
<resource name="settings_primaryimageformat">Format obrazu</resource> <resource name="settings_primaryimageformat">Format obrazu</resource>
<resource name="settings_printer">Drukarka</resource> <resource name="settings_printer">Drukarka</resource>
<resource name="settings_printoptions">Opcje drukowania</resource> <resource name="settings_printoptions">Opcje drukowania</resource>
<resource name="settings_qualitysettings">Ustawienia jakości</resource>
<resource name="settings_reducecolors">Redukuj liczbę kolorów maksymalnie do 256</resource>
<resource name="settings_registerhotkeys">Zarejestruj skróty klawiaturowe</resource> <resource name="settings_registerhotkeys">Zarejestruj skróty klawiaturowe</resource>
<resource name="settings_showflashlight">Pokazuj błysk flesza</resource> <resource name="settings_showflashlight">Pokazuj błysk flesza</resource>
<resource name="settings_shownotify">Pokazuj powiadomienia</resource>
<resource name="settings_storagelocation">Miejsce zapisu</resource> <resource name="settings_storagelocation">Miejsce zapisu</resource>
<resource name="settings_title">Ustawienia</resource> <resource name="settings_title">Ustawienia</resource>
<resource name="settings_tooltip_filenamepattern">Szablon używany do tworzenia nazw plików podczas zapisywania zrzutów ekranu</resource> <resource name="settings_tooltip_filenamepattern">Szablon używany do tworzenia nazw plików podczas zapisywania zrzutów ekranu</resource>
@ -183,12 +273,23 @@ na podstawie bieżącego czasu, np. 11-58-32 (plus rozszerzenie zdefiniowane w u
<resource name="settings_tooltip_primaryimageformat">Domyślny format pliku graficznego ze zrzutem ekranu</resource> <resource name="settings_tooltip_primaryimageformat">Domyślny format pliku graficznego ze zrzutem ekranu</resource>
<resource name="settings_tooltip_registerhotkeys">Określa, czy skróty klawiaturowe Print, Ctrl + Print, Alt + Print są zarezerwowane do globalnego użytku przez Greenshot od chwili jego uruchomienia aż do momentu zamknięcia.</resource> <resource name="settings_tooltip_registerhotkeys">Określa, czy skróty klawiaturowe Print, Ctrl + Print, Alt + Print są zarezerwowane do globalnego użytku przez Greenshot od chwili jego uruchomienia aż do momentu zamknięcia.</resource>
<resource name="settings_tooltip_storagelocation">Domyślne miejsce zapisywania zrzutów ekranu (pozostaw puste, aby zapis odbywał się na pulpit)</resource> <resource name="settings_tooltip_storagelocation">Domyślne miejsce zapisywania zrzutów ekranu (pozostaw puste, aby zapis odbywał się na pulpit)</resource>
<resource name="settings_usedefaultproxy">Używaj domyślnego proxy</resource>
<resource name="settings_visualization">Efekty</resource> <resource name="settings_visualization">Efekty</resource>
<resource name="settings_waittime">milisekund oczekiwania przed wykonaniem zrzutu ekranu</resource> <resource name="settings_waittime">milisekund oczekiwania przed wykonaniem zrzutu ekranu</resource>
<resource name="settings_window_capture_mode">Styl obramowania okien</resource>
<resource name="settings_windowscapture">Przechwytywanie okna</resource>
<resource name="settings_zoom">Pokazuj przybliżenie</resource>
<resource name="tooltip_firststart">Kliknij prawym klawiszem myszy lub naciśnij klawisz Print.</resource> <resource name="tooltip_firststart">Kliknij prawym klawiszem myszy lub naciśnij klawisz Print.</resource>
<resource name="update_found">Jest dostępna nowa wersja Greenshot! Chcesz pobrać Greenshot {0}?</resource>
<resource name="wait_ie_capture">Proszę czekać aż strona Internet Explorera zostanie przechwycona...</resource>
<resource name="warning">Ostrzeżenie</resource> <resource name="warning">Ostrzeżenie</resource>
<resource name="warning_hotkeys">Nie udało się zarejestrować jednego lub kilku skrótów klawiaturowych. Z tego powodu używanie skrótów klawiaturowych Greenshota może nie być możliwe. <resource name="warning_hotkeys">Nie udało się zarejestrować jednego lub kilku skrótów klawiaturowych. Z tego powodu używanie skrótów klawiaturowych Greenshota może nie być możliwe.
Przyczyną problemu może być wykorzystywanie tych samych skrótów klawiaturowych przez inną aplikację. Przyczyną problemu może być wykorzystywanie tych samych skrótów klawiaturowych przez inną aplikację.
Proszę wyłączyć oprogramowanie korzystające z klawisza Print. Możliwe jest również zwyczajne korzystanie ze wszystkich funkcji Greenshota za pomocą menu kontekstowego ikony w obszarze powiadomień na pasku zadań.</resource> Proszę wyłączyć oprogramowanie korzystające z klawisza Print. Możliwe jest również zwyczajne korzystanie ze wszystkich funkcji Greenshota za pomocą menu kontekstowego ikony w obszarze powiadomień na pasku zadań.</resource>
<resource name="WindowCaptureMode.Aero">Używaj własnego koloru</resource>
<resource name="WindowCaptureMode.AeroTransparent">Bez przezroczystości</resource>
<resource name="WindowCaptureMode.Auto">Automatycznie</resource>
<resource name="WindowCaptureMode.GDI">Używaj domyślnego koloru</resource>
<resource name="WindowCaptureMode.Screen">Tak jak wyświetlane</resource>
</resources> </resources>
</language> </language>

View file

@ -266,6 +266,7 @@ ${hostname} Имя ПК
<resource name="settings_registerhotkeys">Регистрация горячих клавиш</resource> <resource name="settings_registerhotkeys">Регистрация горячих клавиш</resource>
<resource name="settings_showflashlight">Показывать вспышку</resource> <resource name="settings_showflashlight">Показывать вспышку</resource>
<resource name="settings_shownotify">Показывать уведомления</resource> <resource name="settings_shownotify">Показывать уведомления</resource>
<resource name="settings_zoom">Показать лупу</resource>
<resource name="settings_storagelocation">Место хранения</resource> <resource name="settings_storagelocation">Место хранения</resource>
<resource name="settings_title">Настройки</resource> <resource name="settings_title">Настройки</resource>
<resource name="settings_tooltip_filenamepattern">Шаблон, используемый для создания имён файлов при сохранении скриншотов</resource> <resource name="settings_tooltip_filenamepattern">Шаблон, используемый для создания имён файлов при сохранении скриншотов</resource>

View file

@ -5,10 +5,10 @@
<resource name="home_headline">Greenshot — безкоштовний інструмент для створення знімків екрану, оптимізований для покращення продуктивності</resource> <resource name="home_headline">Greenshot — безкоштовний інструмент для створення знімків екрану, оптимізований для покращення продуктивності</resource>
<resource name="home_opensource">Greenshot безкоштовний і з відкритим кодом</resource> <resource name="home_opensource">Greenshot безкоштовний і з відкритим кодом</resource>
<resource name="home_opensource_donate">Якщо Вам здається, що Greenshot зберігає чимало Вашого часу та/або грошей, Ви можете &lt;a href="/support/"&gt;підтримати розробку&lt;/a&gt; цього програмного забезпечення для створення знімків екрану.</resource> <resource name="home_opensource_donate">Якщо Вам здається, що Greenshot зберігає чимало Вашого часу та/або грошей, Ви можете &lt;a href="/support/"&gt;підтримати розробку&lt;/a&gt; цього програмного забезпечення для створення знімків екрану.</resource>
<resource name="home_opensource_gpl">Greenshot розповсюджується відповідно до &lt;a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" target="_blank"&gt;GPL&lt;/a&gt;, тобто це програмне забезпечення можна вільно завантажувати та використовувати навіть з комерційною метою.</resource> <resource name="home_opensource_gpl">Greenshot розповсюджується відповідно до &lt;a href="http://uk.wikipedia.org/wiki/GNU_General_Public_License" target="_blank"&gt;GPL&lt;/a&gt;, тобто це програмне забезпечення можна вільно завантажувати та використовувати навіть з комерційною метою.</resource>
<resource name="home_seemore">Хочете побачити більше?</resource> <resource name="home_seemore">Хочете побачити більше?</resource>
<resource name="home_seemore_screenshots">Звісно, Greenshot може зробити для Вас набагато більше. Подивіться кілька &lt;a href="/screenshots/"&gt;знімків&lt;/a&gt; Greenshot у дії та спробуйте &lt;a href="/downloads/"&gt;останній реліз&lt;/a&gt;.</resource> <resource name="home_seemore_screenshots">Звісно, Greenshot може зробити для Вас набагато більше. Подивіться кілька &lt;a title="Знімки Greenshot у дії" href="/screenshots/"&gt;знімків&lt;/a&gt; Greenshot у дії та спробуйте &lt;a title="Завантажити найновішу стабільну версію Greenshot" href="/downloads/"&gt;останній реліз&lt;/a&gt;.</resource>
<resource name="home_whatis">Що таке Greenshot?</resource> <resource name="home_whatis">Що таке Greenshot???</resource>
<resource name="home_whatis_create">Швидке створення знімків вибраної області, вікна або всього екрану; Ви навіть можете захоплювати всю (з прокручуванням) Інтернет-сторінку в Internet Explorer.</resource> <resource name="home_whatis_create">Швидке створення знімків вибраної області, вікна або всього екрану; Ви навіть можете захоплювати всю (з прокручуванням) Інтернет-сторінку в Internet Explorer.</resource>
<resource name="home_whatis_edit">Легке коментування, підсвічування або виділення частин знімку.</resource> <resource name="home_whatis_edit">Легке коментування, підсвічування або виділення частин знімку.</resource>
<resource name="home_whatis_intro">Greenshot — це невеличка програма для створення знімків екрану для Windows з такими основними можливостями:</resource> <resource name="home_whatis_intro">Greenshot — це невеличка програма для створення знімків екрану для Windows з такими основними можливостями:</resource>

View file

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<language description="正體中文" ietf="zh-TW" version="1.0.0" languagegroup="9"> <language description="正體中文" ietf="zh-TW" version="1.1.4" languagegroup="9">
<resources> <resources>
<resource name="about_bugs">如果發現任何錯誤, 請回報到以下網址</resource> <resource name="about_bugs">請回報錯誤到以下網址</resource>
<resource name="about_donations">如果您喜歡 Greenshot歡迎您支持我們:</resource> <resource name="about_donations">如果您喜歡 Greenshot歡迎您支持我們:</resource>
<resource name="about_host">Greenshot 的主機在 sourceforge.net 網址是</resource> <resource name="about_host">Greenshot 的主機在 sourceforge.net 網址是</resource>
<resource name="about_icons">圖片來源: Yusuke Kamiyamane's Fugue icon set (Creative Commons Attribution 3.0 授權)</resource> <resource name="about_icons">圖片來源: Yusuke Kamiyamane's Fugue 圖示集 (Creative Commons Attribution 3.0 授權)</resource>
<resource name="about_license">Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom <resource name="about_license">Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom
Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您可以在 GNU 通用公共授權下任意散佈本軟體。 Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體,您可以在 GNU General Public License 下任意散佈本軟體。
關於 GNU 通用公共授權詳細資料:</resource> 關於GNU General Public License 詳細資料:</resource>
<resource name="about_title">關於 Greenshot</resource> <resource name="about_title">關於 Greenshot</resource>
<resource name="application_title">Greenshot - 革命性的截圖工具</resource> <resource name="application_title">Greenshot - 革命性的螢幕截圖工具</resource>
<resource name="bugreport_cancel">關閉</resource> <resource name="bugreport_cancel">關閉</resource>
<resource name="bugreport_info">很抱歉,發生未預期錯誤。 <resource name="bugreport_info">很抱歉,發生未預期錯誤。
您可以藉由填寫錯誤回報來協助我們修正錯誤。 您可以藉由填寫錯誤回報來協助我們修正錯誤。
點擊以下的連結, 新增一個錯誤報告並將下面文字方塊中的資訊貼到報告的內容中,並請稍微敘述錯誤發生時的情況。 訪問以下的連結,新增一個錯誤報告並將下方文字方塊中的資訊貼到報告的內容中,並請稍微敘述錯誤發生時的情況。
另外, 我們強烈建議您在站內搜尋一下是否已經有人回報此錯誤。 另外我們強烈建議您在站內搜尋一下是否已經有人回報此錯誤。
感謝您 :)</resource> 感謝您 :)</resource>
<resource name="bugreport_title">錯誤</resource> <resource name="bugreport_title">錯誤</resource>
<resource name="CANCEL">取消</resource> <resource name="CANCEL">取消</resource>
@ -39,10 +39,10 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="colorpicker_transparent">透明</resource> <resource name="colorpicker_transparent">透明</resource>
<resource name="com_rejected">目的地 {0} 拒絕 Greenshot 存取,可能已開啟對話方塊。 關閉對話方塊並重試。</resource> <resource name="com_rejected">目的地 {0} 拒絕 Greenshot 存取,可能已開啟對話方塊。 關閉對話方塊並重試。</resource>
<resource name="com_rejected_title">拒絕 Greenshot 存取</resource> <resource name="com_rejected_title">拒絕 Greenshot 存取</resource>
<resource name="config_unauthorizedaccess_write">無法儲存 Greenshot 的組態檔,請檢查 '{0}' 的存取權限。</resource> <resource name="config_unauthorizedaccess_write">無法儲存 Greenshot 的組態檔,請檢查「{0}」的存取權限。</resource>
<resource name="contextmenu_about">關於 Greenshot</resource> <resource name="contextmenu_about">關於 Greenshot</resource>
<resource name="contextmenu_capturearea">擷取區域</resource> <resource name="contextmenu_capturearea">擷取區域</resource>
<resource name="contextmenu_captureclipboard">從剪貼簿載入圖片</resource> <resource name="contextmenu_captureclipboard">從剪貼簿開啟圖片</resource>
<resource name="contextmenu_capturefullscreen">擷取全螢幕</resource> <resource name="contextmenu_capturefullscreen">擷取全螢幕</resource>
<resource name="contextmenu_capturefullscreen_all">全部</resource> <resource name="contextmenu_capturefullscreen_all">全部</resource>
<resource name="contextmenu_capturefullscreen_bottom"></resource> <resource name="contextmenu_capturefullscreen_bottom"></resource>
@ -59,9 +59,9 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="contextmenu_help">說明</resource> <resource name="contextmenu_help">說明</resource>
<resource name="contextmenu_openfile">從檔案開啟圖片</resource> <resource name="contextmenu_openfile">從檔案開啟圖片</resource>
<resource name="contextmenu_openrecentcapture">開啟上次擷取位置</resource> <resource name="contextmenu_openrecentcapture">開啟上次擷取位置</resource>
<resource name="contextmenu_quicksettings">快速設定</resource> <resource name="contextmenu_quicksettings">快速喜好設定</resource>
<resource name="contextmenu_settings">喜好設定...</resource> <resource name="contextmenu_settings">喜好設定...</resource>
<resource name="destination_exportfailed">匯出到 {0} 時錯誤請重試。</resource> <resource name="destination_exportfailed">匯出到 {0} 時錯誤請重試。</resource>
<resource name="editor_align_bottom">靠下</resource> <resource name="editor_align_bottom">靠下</resource>
<resource name="editor_align_center">垂直置中</resource> <resource name="editor_align_center">垂直置中</resource>
<resource name="editor_align_horizontal">水平對齊</resource> <resource name="editor_align_horizontal">水平對齊</resource>
@ -77,7 +77,7 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="editor_arrowheads_none"></resource> <resource name="editor_arrowheads_none"></resource>
<resource name="editor_arrowheads_start">起點</resource> <resource name="editor_arrowheads_start">起點</resource>
<resource name="editor_autocrop">自動裁剪</resource> <resource name="editor_autocrop">自動裁剪</resource>
<resource name="editor_backcolor">滿顏</resource> <resource name="editor_backcolor">填色</resource>
<resource name="editor_blur_radius">模糊半徑</resource> <resource name="editor_blur_radius">模糊半徑</resource>
<resource name="editor_bold">粗體</resource> <resource name="editor_bold">粗體</resource>
<resource name="editor_border">框線</resource> <resource name="editor_border">框線</resource>
@ -91,7 +91,7 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="editor_copyimagetoclipboard">複製圖片到剪貼簿</resource> <resource name="editor_copyimagetoclipboard">複製圖片到剪貼簿</resource>
<resource name="editor_copypathtoclipboard">複製路徑到剪貼簿</resource> <resource name="editor_copypathtoclipboard">複製路徑到剪貼簿</resource>
<resource name="editor_copytoclipboard">複製</resource> <resource name="editor_copytoclipboard">複製</resource>
<resource name="editor_crop"> (C)</resource> <resource name="editor_crop"> (C)</resource>
<resource name="editor_cursortool">選取工具 (ESC)</resource> <resource name="editor_cursortool">選取工具 (ESC)</resource>
<resource name="editor_cuttoclipboard">剪下</resource> <resource name="editor_cuttoclipboard">剪下</resource>
<resource name="editor_deleteelement">刪除</resource> <resource name="editor_deleteelement">刪除</resource>
@ -100,12 +100,12 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="editor_drawarrow">繪製箭頭 (A)</resource> <resource name="editor_drawarrow">繪製箭頭 (A)</resource>
<resource name="editor_drawellipse">繪製橢圓 (E)</resource> <resource name="editor_drawellipse">繪製橢圓 (E)</resource>
<resource name="editor_drawfreehand">自由繪製 (F)</resource> <resource name="editor_drawfreehand">自由繪製 (F)</resource>
<resource name="editor_drawhighlighter">醒目標示 (H)</resource> <resource name="editor_drawhighlighter">標示 (H)</resource>
<resource name="editor_drawline">繪製直線 (L)</resource> <resource name="editor_drawline">繪製直線 (L)</resource>
<resource name="editor_drawrectangle">繪製矩形 (R)</resource> <resource name="editor_drawrectangle">繪製矩形 (R)</resource>
<resource name="editor_drawtextbox">加入文字 (T)</resource> <resource name="editor_drawtextbox">加入文字方塊 (T)</resource>
<resource name="editor_dropshadow_darkness">陰影黑暗</resource> <resource name="editor_dropshadow_darkness">陰影黑暗</resource>
<resource name="editor_dropshadow_offset">陰影</resource> <resource name="editor_dropshadow_offset">陰影</resource>
<resource name="editor_dropshadow_settings">陰影設定</resource> <resource name="editor_dropshadow_settings">陰影設定</resource>
<resource name="editor_dropshadow_thickness">陰影厚度</resource> <resource name="editor_dropshadow_thickness">陰影厚度</resource>
<resource name="editor_duplicate">複製選取的元素</resource> <resource name="editor_duplicate">複製選取的元素</resource>
@ -114,7 +114,7 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="editor_email">電子郵件</resource> <resource name="editor_email">電子郵件</resource>
<resource name="editor_file">檔案</resource> <resource name="editor_file">檔案</resource>
<resource name="editor_fontsize">大小</resource> <resource name="editor_fontsize">大小</resource>
<resource name="editor_forecolor">色彩</resource> <resource name="editor_forecolor">線色彩</resource>
<resource name="editor_grayscale">灰階</resource> <resource name="editor_grayscale">灰階</resource>
<resource name="editor_highlight_area">標示區域</resource> <resource name="editor_highlight_area">標示區域</resource>
<resource name="editor_highlight_grayscale">灰階</resource> <resource name="editor_highlight_grayscale">灰階</resource>
@ -139,39 +139,39 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="editor_pixel_size">像素大小</resource> <resource name="editor_pixel_size">像素大小</resource>
<resource name="editor_preview_quality">預覽品質</resource> <resource name="editor_preview_quality">預覽品質</resource>
<resource name="editor_print">列印</resource> <resource name="editor_print">列印</resource>
<resource name="editor_redo">復原 {0}</resource> <resource name="editor_redo">重做 {0}</resource>
<resource name="editor_resetsize">重設大小</resource> <resource name="editor_resetsize">重設大小</resource>
<resource name="editor_resize_percent">百分比</resource> <resource name="editor_resize_percent">百分比</resource>
<resource name="editor_resize_pixel">像素</resource> <resource name="editor_resize_pixel">像素</resource>
<resource name="editor_rotateccw">逆時針旋轉</resource> <resource name="editor_rotateccw">逆時針旋轉 (Ctrl + ,)</resource>
<resource name="editor_rotatecw">順時針旋轉</resource> <resource name="editor_rotatecw">順時針旋轉 (Ctrl + .)</resource>
<resource name="editor_save">儲存</resource> <resource name="editor_save">儲存</resource>
<resource name="editor_save_objects">儲存物件到檔案</resource> <resource name="editor_save_objects">儲存物件到檔案</resource>
<resource name="editor_saveas">另存新檔...</resource> <resource name="editor_saveas">另存新檔...</resource>
<resource name="editor_selectall">全選</resource> <resource name="editor_selectall">全選</resource>
<resource name="editor_senttoprinter">已使用 '{0}' 來進行列印工作。</resource> <resource name="editor_senttoprinter">列印工作已傳送到「{0}」</resource>
<resource name="editor_shadow">陰影</resource> <resource name="editor_shadow">陰影</resource>
<resource name="editor_storedtoclipboard">圖片已儲存到剪貼簿.</resource> <resource name="editor_storedtoclipboard">圖片已儲存到剪貼簿</resource>
<resource name="editor_thickness">粗細</resource> <resource name="editor_thickness">線粗細</resource>
<resource name="editor_title">Greenshot 圖片編輯器</resource> <resource name="editor_title">Greenshot 圖片編輯器</resource>
<resource name="editor_torn_edge">撕裂邊緣</resource> <resource name="editor_torn_edge">撕裂邊緣</resource>
<resource name="editor_tornedge_horizontaltoothrange">水平撕裂範圍</resource> <resource name="editor_tornedge_horizontaltoothrange">水平鋸齒範圍</resource>
<resource name="editor_tornedge_settings">撕裂邊緣設定</resource> <resource name="editor_tornedge_settings">撕裂邊緣設定</resource>
<resource name="editor_tornedge_toothsize">撕裂大小</resource> <resource name="editor_tornedge_toothsize">鋸齒大小</resource>
<resource name="editor_tornedge_verticaltoothrange">垂直撕裂範圍</resource> <resource name="editor_tornedge_verticaltoothrange">垂直鋸齒範圍</resource>
<resource name="editor_undo">復原 {0}</resource> <resource name="editor_undo">復原 {0}</resource>
<resource name="editor_uponelevel">上移一層</resource> <resource name="editor_uponelevel">上移一層</resource>
<resource name="editor_uptotop">移到最上層</resource> <resource name="editor_uptotop">移到最上層</resource>
<resource name="EmailFormat.MAPI">MAPI 用戶端</resource> <resource name="EmailFormat.MAPI">MAPI 用戶端</resource>
<resource name="EmailFormat.OUTLOOK_HTML">使用 HTML 的 Outlook</resource> <resource name="EmailFormat.OUTLOOK_HTML">Outlook 使用 HTML</resource>
<resource name="EmailFormat.OUTLOOK_TXT">使用文字的 Outlook</resource> <resource name="EmailFormat.OUTLOOK_TXT">Outlook 使用文字</resource>
<resource name="error">錯誤</resource> <resource name="error">錯誤</resource>
<resource name="error_multipleinstances">Greenshot 已經在執行。</resource> <resource name="error_multipleinstances">Greenshot 已經在執行。</resource>
<resource name="error_nowriteaccess">無法儲存檔案到 {0}。 <resource name="error_nowriteaccess">無法儲存檔案到 {0}。
請檢查選取的存放位置可以寫入。</resource> 請檢查選取的存放位置可以寫入。</resource>
<resource name="error_openfile">無法開啟檔案 "{0}"</resource> <resource name="error_openfile">無法開啟檔案「{0}」</resource>
<resource name="error_openlink">無法開啟連結 '{0}'</resource> <resource name="error_openlink">無法開啟連結「{0}」</resource>
<resource name="error_save">無法儲存螢幕擷,請尋找適合的位置。</resource> <resource name="error_save">無法儲存螢幕擷,請尋找適合的位置。</resource>
<resource name="expertsettings">專家</resource> <resource name="expertsettings">專家</resource>
<resource name="expertsettings_autoreducecolors">&gt; 8 位元圖像時,如果色彩小於 256 則建立 8 位元圖像</resource> <resource name="expertsettings_autoreducecolors">&gt; 8 位元圖像時,如果色彩小於 256 則建立 8 位元圖像</resource>
<resource name="expertsettings_checkunstableupdates">檢查 Beta 版更新</resource> <resource name="expertsettings_checkunstableupdates">檢查 Beta 版更新</resource>
@ -179,70 +179,74 @@ Greenshot 不對這個程式做任何擔保。 這個程式是自由軟體, 您
<resource name="expertsettings_counter">檔案名稱樣式中 ${NUM} 的數字</resource> <resource name="expertsettings_counter">檔案名稱樣式中 ${NUM} 的數字</resource>
<resource name="expertsettings_enableexpert">我明白我所做的動作!</resource> <resource name="expertsettings_enableexpert">我明白我所做的動作!</resource>
<resource name="expertsettings_footerpattern">印表機頁尾樣式</resource> <resource name="expertsettings_footerpattern">印表機頁尾樣式</resource>
<resource name="expertsettings_minimizememoryfootprint">最小化記憶體頁尾列印,但降低效能 (不建議)。</resource> <resource name="expertsettings_minimizememoryfootprint">最小化記憶體佔用空間,但降低效能 (不建議)。</resource>
<resource name="expertsettings_optimizeforrdp">進行使用遠端桌面的一些最佳化</resource> <resource name="expertsettings_optimizeforrdp">進行使用遠端桌面的一些最佳化</resource>
<resource name="expertsettings_reuseeditorifpossible">盡可能重複使用編輯器</resource> <resource name="expertsettings_reuseeditorifpossible">盡可能重複使用編輯器</resource>
<resource name="expertsettings_suppresssavedialogatclose">關閉編輯器時略過儲存對話方塊</resource> <resource name="expertsettings_suppresssavedialogatclose">關閉編輯器時略過儲存對話方塊</resource>
<resource name="expertsettings_thumbnailpreview">在內容功能表顯示視窗縮圖 (針對 Vista 和 windows 7)</resource> <resource name="expertsettings_thumbnailpreview">在內容功能表顯示視窗縮圖 (針對 Vista 和 Windows 7)</resource>
<resource name="exported_to">匯出到: {0}</resource> <resource name="exported_to">匯出到: {0}</resource>
<resource name="exported_to_error">匯出到 {0} 時發生錯誤:</resource> <resource name="exported_to_error">匯出到 {0} 時發生錯誤:</resource>
<resource name="help_title">Greenshot 說明</resource> <resource name="help_title">Greenshot 說明</resource>
<resource name="hotkeys">熱鍵</resource> <resource name="hotkeys">熱鍵</resource>
<resource name="jpegqualitydialog_choosejpegquality">請選擇您想要的 JPEG 圖片品質。</resource> <resource name="jpegqualitydialog_choosejpegquality">請選擇圖片的 JPEG品質。</resource>
<resource name="OK">確定</resource> <resource name="OK">確定</resource>
<resource name="print_error">嘗試列印時發生錯誤。</resource> <resource name="print_error">嘗試列印時發生錯誤。</resource>
<resource name="printoptions_allowcenter">列印在紙張的正中央</resource> <resource name="printoptions_allowcenter">列印在紙張的正中央</resource>
<resource name="printoptions_allowenlarge">放大輸出以符合紙張大小</resource> <resource name="printoptions_allowenlarge">放大列印輸出以符合紙張大小</resource>
<resource name="printoptions_allowrotate">旋轉圖片</resource> <resource name="printoptions_allowrotate">旋轉列印輸出為頁面方向</resource>
<resource name="printoptions_allowshrink">縮小輸出以符合紙張大小</resource> <resource name="printoptions_allowshrink">縮小列印輸出以符合紙張大小</resource>
<resource name="printoptions_colors">色彩設定</resource>
<resource name="printoptions_dontaskagain">儲存選項為預設值並不再詢問</resource> <resource name="printoptions_dontaskagain">儲存選項為預設值並不再詢問</resource>
<resource name="printoptions_inverted">反向色彩列印</resource> <resource name="printoptions_inverted">反向色彩列印</resource>
<resource name="printoptions_layout">頁面配置設定</resource>
<resource name="printoptions_printcolor">全彩列印</resource>
<resource name="printoptions_printgrayscale">強制灰階列印</resource> <resource name="printoptions_printgrayscale">強制灰階列印</resource>
<resource name="printoptions_printmonochrome">強制黑白列印</resource>
<resource name="printoptions_timestamp">在頁尾列印日期 / 時間</resource> <resource name="printoptions_timestamp">在頁尾列印日期 / 時間</resource>
<resource name="printoptions_title">Greenshot 列印選項</resource> <resource name="printoptions_title">Greenshot 列印選項</resource>
<resource name="qualitydialog_dontaskagain">儲存為預設品質並不再詢問</resource> <resource name="qualitydialog_dontaskagain">儲存為預設品質並不再詢問</resource>
<resource name="qualitydialog_title">Greenshot 品質</resource> <resource name="qualitydialog_title">Greenshot 品質</resource>
<resource name="quicksettings_destination_file">直接儲存 (使用慣用的檔案輸出設定)</resource> <resource name="quicksettings_destination_file">直接儲存 (使用慣用的輸出檔案設定)</resource>
<resource name="settings_alwaysshowprintoptionsdialog">每次列印圖片時顯示列印選項對話方塊</resource> <resource name="settings_alwaysshowprintoptionsdialog">每次列印圖片時顯示列印選項對話方塊</resource>
<resource name="settings_alwaysshowqualitydialog">每次儲存圖片時顯示品質對話方塊</resource> <resource name="settings_alwaysshowqualitydialog">每次儲存圖片時顯示品質對話方塊</resource>
<resource name="settings_applicationsettings">應用程式設定</resource> <resource name="settings_applicationsettings">應用程式設定</resource>
<resource name="settings_autostartshortcut">開機自動執行 Greenshot</resource> <resource name="settings_autostartshortcut">開機啟動 Greenshot</resource>
<resource name="settings_capture">擷取</resource> <resource name="settings_capture">擷取</resource>
<resource name="settings_capture_mousepointer">擷取滑鼠指標</resource> <resource name="settings_capture_mousepointer">擷取滑鼠指標</resource>
<resource name="settings_capture_windows_interactive">使用互動式視窗擷取模式</resource> <resource name="settings_capture_windows_interactive">使用互動式視窗擷取模式</resource>
<resource name="settings_checkperiod">檢查更新間隔天數 (0=不檢查)</resource> <resource name="settings_checkperiod">檢查更新間隔天數 (0 = 不檢查)</resource>
<resource name="settings_configureplugin">組態</resource> <resource name="settings_configureplugin">組態</resource>
<resource name="settings_copypathtoclipboard">每次儲存圖片時都將路徑複製到剪貼簿</resource> <resource name="settings_copypathtoclipboard">每次儲存圖片時都將路徑複製到剪貼簿</resource>
<resource name="settings_destination">目的地</resource> <resource name="settings_destination">目的地</resource>
<resource name="settings_destination_clipboard">複製到剪貼簿</resource> <resource name="settings_destination_clipboard">複製到剪貼簿</resource>
<resource name="settings_destination_editor">圖片編輯器開啟</resource> <resource name="settings_destination_editor">圖片編輯器開啟</resource>
<resource name="settings_destination_email">電子郵件</resource> <resource name="settings_destination_email">電子郵件</resource>
<resource name="settings_destination_file">直接儲存 (使用以下設定)</resource> <resource name="settings_destination_file">直接儲存 (使用以下設定)</resource>
<resource name="settings_destination_fileas">另存新檔 (顯示對話方塊)</resource> <resource name="settings_destination_fileas">另存新檔 (顯示對話方塊)</resource>
<resource name="settings_destination_picker">動態選取目的地</resource> <resource name="settings_destination_picker">動態選取目的地</resource>
<resource name="settings_destination_printer">傳送到印表機</resource> <resource name="settings_destination_printer">傳送到印表機</resource>
<resource name="settings_editor">編輯器</resource> <resource name="settings_editor">編輯器</resource>
<resource name="settings_filenamepattern">名格</resource> <resource name="settings_filenamepattern">案名稱樣</resource>
<resource name="settings_general">一般</resource> <resource name="settings_general">一般</resource>
<resource name="settings_iecapture">Internet Explorer 擷取</resource> <resource name="settings_iecapture">Internet Explorer 擷取</resource>
<resource name="settings_jpegquality">JPEG 品質</resource> <resource name="settings_jpegquality">JPEG 品質</resource>
<resource name="settings_language">語言</resource> <resource name="settings_language">語言</resource>
<resource name="settings_message_filenamepattern">您可以使用以下的格式來指定檔名, 兩個%括起來的地方會被取代為日期、時間等: <resource name="settings_message_filenamepattern">在樣式定義中以下預留位置將自動取代:
${YYYY} 年, 4個數字 ${YYYY} 年4 位數字
${MM} 月, 2個數字 ${MM} 月2 位數字
${DD} 日, 2個數字 ${DD} 日2 位數字
${hh} 時, 2個數字 ${hh} 時2 位數字
${mm} 分, 2個數字 ${mm} 分2 位數字
${ss} 秒, 2個數字 ${ss} 秒2 位數字
${NUM} 自動編號, 6個數字 ${NUM} 自動編號6 位數字
${title} 抓取視窗標題 ${title} 視窗標題
${user} Windows 使用者名稱 ${user} Windows 使用者名稱
${domain} Windows 網域名稱 ${domain} Windows 網域名稱
${hostname} 電腦名稱 ${hostname} 電腦名稱
您也可以讓 Greenshot 自動產生資料夾, 只要用把右斜線( \ )放在資料夾名稱和檔名的中間就可以了 您也可以讓 Greenshot 動態建立資料夾,只要使用右斜線 ( \ ) 分隔資料夾和檔案名稱。
: ${YYYY}-${MM}-${DD}\${hh}-${mm}-${ss} 如: 樣式 ${YYYY}-${MM}-${DD}\${hh}-${mm}-${ss}
這樣寫的話, Greenshot 會在預設儲存路徑下建立一個以今天日期為名稱的資料夾(如 2008-06-29), 然後在這個資料夾下儲存圖片檔, 檔名為目前的時間(如 11-58-32)再加上圖片的副檔名</resource> 將在預設存放位置產生目前日期的資料夾,例如: 2013-05-01包含螢幕截圖的檔案名稱將根據目前時間例如: 11_58_32 (再加上設定中定義的附檔名)</resource>
<resource name="settings_network">網路和更新</resource> <resource name="settings_network">網路和更新</resource>
<resource name="settings_output">輸出</resource> <resource name="settings_output">輸出</resource>
<resource name="settings_playsound">播放快門聲</resource> <resource name="settings_playsound">播放快門聲</resource>
@ -256,7 +260,7 @@ ${hostname} 電腦名稱
<resource name="settings_printer">印表機</resource> <resource name="settings_printer">印表機</resource>
<resource name="settings_printoptions">列印設定</resource> <resource name="settings_printoptions">列印設定</resource>
<resource name="settings_qualitysettings">品質設定</resource> <resource name="settings_qualitysettings">品質設定</resource>
<resource name="settings_reducecolors">降低色彩數為最大的 256</resource> <resource name="settings_reducecolors">降低色彩數為最大的 256</resource>
<resource name="settings_registerhotkeys">註冊熱鍵</resource> <resource name="settings_registerhotkeys">註冊熱鍵</resource>
<resource name="settings_showflashlight">顯示閃光</resource> <resource name="settings_showflashlight">顯示閃光</resource>
<resource name="settings_shownotify">顯示通知</resource> <resource name="settings_shownotify">顯示通知</resource>
@ -272,11 +276,12 @@ ${hostname} 電腦名稱
<resource name="settings_waittime">擷取之前等待的時間 (毫秒)</resource> <resource name="settings_waittime">擷取之前等待的時間 (毫秒)</resource>
<resource name="settings_window_capture_mode">視窗擷取模式</resource> <resource name="settings_window_capture_mode">視窗擷取模式</resource>
<resource name="settings_windowscapture">視窗擷取</resource> <resource name="settings_windowscapture">視窗擷取</resource>
<resource name="settings_zoom">顯示放大鏡</resource>
<resource name="tooltip_firststart">右鍵按一下這裡或是按下 {0} 鍵。</resource> <resource name="tooltip_firststart">右鍵按一下這裡或是按下 {0} 鍵。</resource>
<resource name="update_found">Greenshot 的新版本可以使用! 您要下載 Greenshot {0} 嗎?</resource> <resource name="update_found">Greenshot 的新版本可以使用! 您要下載 Greenshot {0} 嗎?</resource>
<resource name="wait_ie_capture">擷取 Internet Explorer 中頁面時請稍候...</resource> <resource name="wait_ie_capture">擷取 Internet Explorer 中頁面時請稍候...</resource>
<resource name="warning">警告</resource> <resource name="warning">警告</resource>
<resource name="warning_hotkeys">無法註冊熱鍵 "{0}"。 這個問題可能是另一個工具要求使用相同的熱鍵。 您可以變更熱鍵設定或停用/變更軟體使用熱鍵。 <resource name="warning_hotkeys">無法註冊熱鍵「{0}」。 這個問題可能是另一個工具要求使用相同的熱鍵。 您可以變更熱鍵設定或停用/變更軟體使用熱鍵。
Greenshot 所有功能仍然可以直接從通知區圖示的內容功能表動作而不需熱鍵。</resource> Greenshot 所有功能仍然可以直接從通知區圖示的內容功能表動作而不需熱鍵。</resource>
<resource name="WindowCaptureMode.Aero">使用自訂色彩</resource> <resource name="WindowCaptureMode.Aero">使用自訂色彩</resource>

View file

@ -53,9 +53,6 @@ namespace Greenshot.Processors {
} }
config.IsDirty = true; config.IsDirty = true;
} }
if(config.IsDirty) {
IniConfig.Save();
}
} }
public override string Designation { public override string Designation {

View file

@ -2,7 +2,41 @@ Greenshot: A screenshot tool optimized for productivity. Save a screenshot or a
CHANGE LOG: CHANGE LOG:
1.1.4 build $WCREV$ Release 1.1.6 build $WCREV$ Bugfix Release
Bugs resolved (for bug details go to http://sourceforge.net/p/greenshot/bugs and search on the ID):
* Bug #1515: Changed the settings GUI to clearly show that the interactive Window capture mode doesn't use the windows capture mode settings.
* Bug #1517: export to Microsoft Word always goes to the last active Word instance.
* Bug #1525/#1486: Greenshot looses configuration settings. (At least we hope this is resolved)
* Bug #1528: export to Microsoft Excel isn't stored in file, which results in a "red cross" when opening on a different or MUCH later on the same computer.
* Bug #1544: EntryPointNotFoundException when using higlight area or blur
* Bug #1546: Exception in the editor when using multiple destination, among which the editor, and a picker (e.g. Word) is shown.
* Not reported: Canceling Imgur authorization or upload caused an NullPointerReference
Features:
* Added EXIF orientation support when copying images from the clipboard
* Feature #596: Added commandline option "/inidirectory <directory>" to specify the location of the greenshot.ini, this can e.g. be used for multi-profiles...
* Removed reading the greenshot.ini if it was changed manually outside of Greenshot while it is running, this should increase stability. People should now exit Greenshot before modifying this file manually.
Improvements:
* Printouts are now rotated counter-clockwise instead of clockwise, for most people this should be preferable (#1552)
1.1.5 build 2643 Bugfix Release
Bugs resolved (for bug details go to http://sourceforge.net/p/greenshot/bugs and search on the ID):
* Bug #1510: Under Windows Vista when trying to apply a drop-shadow or a torn-edge effect a GDIPlus error occurs.
* Bug #1512/#1514: Will not print color
* Not reported: Annotations where not visible when exporting to Office destinations after writing in the Greenshot format.
* Not reported: Removed the update check in Greenshot for PortableApps
Languages:
* New translation: Estonian
* Updated translations: Russian, Polish and Italian
* New installer translation: Ukrainian
* New plugin translations: Polish
1.1.4 build 2622 Release
Features added: Features added:
* General: Added zoom when capturing with a option in the settings for disabling the zoom. (this can also be done via the "z" key while capturing.) * General: Added zoom when capturing with a option in the settings for disabling the zoom. (this can also be done via the "z" key while capturing.)
@ -16,11 +50,6 @@ Features added:
* Plug-in: Added Photobucket plugin * Plug-in: Added Photobucket plugin
Bugs resolved (for bug details go to http://sourceforge.net/p/greenshot/bugs and search on the ID): Bugs resolved (for bug details go to http://sourceforge.net/p/greenshot/bugs and search on the ID):
* Bug #1484, #1494: External Command plug-in issues. e.g. when clicking edit in the External Command plug-in settings, than cancel, and than edit again an error occured.
* Bug #1499: Stability improvements for when Greenshot tries to open the explorer.exe
* Bug #1500: Error while dragging an obfuscation
* Fixed some additional unreported issues
* Bug #1504: InvalidCastException when using the brightness-filter
* Bug #1327, #1401 & #1410 : On Windows XP Firefox/java captures are mainly black. This fix should also work with other OS versions and applications. * Bug #1327, #1401 & #1410 : On Windows XP Firefox/java captures are mainly black. This fix should also work with other OS versions and applications.
* Bug #1340: Fixed issue with opening a screenshow from the clipboard which was created in a remote desktop * Bug #1340: Fixed issue with opening a screenshow from the clipboard which was created in a remote desktop
* Bug #1375, #1396 & #1397: Exporting captures to Microsoft Office applications give problems when the Office application shows a dialog, this is fixed by displaying a retry dialog with info. * Bug #1375, #1396 & #1397: Exporting captures to Microsoft Office applications give problems when the Office application shows a dialog, this is fixed by displaying a retry dialog with info.
@ -38,6 +67,10 @@ Bugs resolved (for bug details go to http://sourceforge.net/p/greenshot/bugs and
* Bug #1444: Colors were disappearing when "Create an 8-bit image if colors are less than 256 while having a > 8 bits image" was turned on * Bug #1444: Colors were disappearing when "Create an 8-bit image if colors are less than 256 while having a > 8 bits image" was turned on
* Bug #1462: Auto-filename generation cropping title text after period * Bug #1462: Auto-filename generation cropping title text after period
* Bug #1481: when pasting elements from one editor into another the element could end up outside the visible area * Bug #1481: when pasting elements from one editor into another the element could end up outside the visible area
* Bug #1484, #1494: External Command plug-in issues. e.g. when clicking edit in the External Command plug-in settings, than cancel, and than edit again an error occured.
* Bug #1499: Stability improvements for when Greenshot tries to open the explorer.exe
* Bug #1500: Error while dragging an obfuscation
* Bug #1504: InvalidCastException when using the brightness-filter
* Reported in forum: Fixed a problem with the OCR, it sometimes didn't work. See: http://sourceforge.net/p/greenshot/discussion/676082/thread/31a08c8c * Reported in forum: Fixed a problem with the OCR, it sometimes didn't work. See: http://sourceforge.net/p/greenshot/discussion/676082/thread/31a08c8c
* Not reported: Flickr configuration for the Family, Friend & Public wasn't stored. * Not reported: Flickr configuration for the Family, Friend & Public wasn't stored.
* Not reported: If Greenshot is linked in a Windows startup folder, the "Start with startup" checkbox wasn't checked. * Not reported: If Greenshot is linked in a Windows startup folder, the "Start with startup" checkbox wasn't checked.

View file

@ -21,8 +21,8 @@ CommercialUse=true
EULAVersion=true EULAVersion=true
[Version] [Version]
PackageVersion=1.1.4.$WCREV$ PackageVersion=1.1.6.$WCREV$
DisplayVersion=1.1.4.$WCREV$ DisplayVersion=1.1.6.$WCREV$
[SpecialPaths] [SpecialPaths]
Plugins=NONE Plugins=NONE

View file

@ -1,4 +1,27 @@
@echo off @echo off
echo File preparations
echo Getting current Version
cd ..
tools\TortoiseSVN\SubWCRev.exe ..\ releases\additional_files\readme.template.txt releases\additional_files\readme.txt
tools\TortoiseSVN\SubWCRev.exe ..\ releases\innosetup\setup.iss releases\innosetup\setup-SVN.iss
tools\TortoiseSVN\SubWCRev.exe ..\ releases\package_zip.bat releases\package_zip-SVN.bat
tools\TortoiseSVN\SubWCRev.exe ..\ releases\appinfo.ini.template releases\portable\App\AppInfo\appinfo.ini
tools\TortoiseSVN\SubWCRev.exe ..\ AssemblyInfo.cs.template AssemblyInfo.cs
rem Plugins
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotBoxPlugin ..\GreenshotBoxPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotBoxPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotConfluencePlugin ..\GreenshotConfluencePlugin\Properties\AssemblyInfo.cs.template ..\GreenshotConfluencePlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotDropboxPlugin ..\GreenshotDropboxPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotDropboxPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotExternalCommandPlugin ..\GreenshotExternalCommandPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotExternalCommandPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotFlickrPlugin ..\GreenshotFlickrPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotFlickrPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotImgurPlugin ..\GreenshotImgurPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotImgurPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotJiraPlugin ..\GreenshotJiraPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotJiraPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotOCRPlugin ..\GreenshotOCRPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotOCRPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotOfficePlugin ..\GreenshotOfficePlugin\Properties\AssemblyInfo.cs.template ..\GreenshotOfficePlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotPhotobucketPlugin ..\GreenshotPhotobucketPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotPhotobucketPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotPicasaPlugin ..\GreenshotPicasaPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotPicasaPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\GreenshotPlugin ..\GreenshotPlugin\Properties\AssemblyInfo.cs.template ..\GreenshotPlugin\Properties\AssemblyInfo.cs
tools\TortoiseSVN\SubWCRev.exe ..\PluginExample ..\PluginExample\Properties\AssemblyInfo.cs.template ..\PluginExample\Properties\AssemblyInfo.cs
cd releases
echo Starting Greenshot BUILD echo Starting Greenshot BUILD
\Windows\Microsoft.NET\Framework\v3.5\MSBuild ..\Greenshot.sln /t:Clean;Build /p:Configuration=Release /p:Platform="Any CPU" > build.log \Windows\Microsoft.NET\Framework\v3.5\MSBuild ..\Greenshot.sln /t:Clean;Build /p:Configuration=Release /p:Platform="Any CPU" > build.log
if %ERRORLEVEL% GEQ 1 ( if %ERRORLEVEL% GEQ 1 (
@ -6,13 +29,7 @@ echo An error occured, please check the build log!
pause pause
exit -1 exit -1
) )
echo File preparations
cd .. cd ..
echo Getting current Version
tools\TortoiseSVN\SubWCRev.exe ..\ releases\additional_files\readme.template.txt releases\additional_files\readme.txt
tools\TortoiseSVN\SubWCRev.exe ..\ releases\innosetup\setup.iss releases\innosetup\setup-SVN.iss
tools\TortoiseSVN\SubWCRev.exe ..\ releases\package_zip.bat releases\package_zip-SVN.bat
tools\TortoiseSVN\SubWCRev.exe ..\ releases\appinfo.ini.template releases\portable\App\AppInfo\appinfo.ini
cd bin\Release cd bin\Release
del *.log del *.log
echo Making MD5 echo Making MD5

View file

@ -2,11 +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';

View file

@ -1,43 +1,35 @@
#include "..\scripts\isxdl\isxdl.iss" #include "isxdl\isxdl.iss"
[CustomMessages] [CustomMessages]
DependenciesDir=MyProgramDependencies 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?
nl.depdownload_msg=Die volgende programmas zijn nodig voor dat de setup door kan gaan:%n%n%1%nNu downloaden en installeren?
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
nl.depdownload_memo_title=Afhankelijkheiden downloaden
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
nl.depinstall_memo_title=Afhankelijkheiden installeren
en.depinstall_title=Installing dependencies en.depinstall_title=Installing dependencies
de.depinstall_title=Installiere Abhängigkeiten de.depinstall_title=Installiere Abhängigkeiten
nl.depinstall_title=Installeer afhankelijkheiden
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.
nl.depinstall_description=Wachten AUB terwijl de afhankelijkheiden op uw computer geinstalleerd worden.
en.depinstall_status=Installing %1... en.depinstall_status=Installing %1...
de.depinstall_status=Installiere %1... de.depinstall_status=Installiere %1...
nl.depinstall_status=Installeer %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.
nl.depinstall_missing=%1 moet geinstalleerd worden voordat de setup door kan gaan. Installeer AUB %1 en start de setup nogmals.
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
nl.depinstall_error=Er is een fout tijdens de installatie van de afhankelijkheiden opgetreden. Start uw computer door en laat de setup nog een keer lopen of installeer de volgende afhankelijkheiden met de hand:%n
en.isxdl_langfile=english.ini en.isxdl_langfile=
de.isxdl_langfile=german2.ini de.isxdl_langfile=german2.ini
nl.isxdl_langfile=english.ini
[Files] [Files]
Source: "scripts\isxdl\german2.ini"; Flags: dontcopy Source: "scripts\isxdl\german2.ini"; Flags: dontcopy
@ -48,15 +40,20 @@ type
File: String; File: String;
Title: String; Title: String;
Parameters: String; Parameters: String;
InstallClean : boolean;
MustRebootAfter : boolean;
end; end;
InstallResult = (InstallSuccessful, InstallRebootRequired, InstallError);
var var
installMemo, downloadMemo, downloadMessage: string; installMemo, downloadMemo, downloadMessage: string;
products: array of TProduct; products: array of TProduct;
delayedReboot: boolean;
DependencyPage: TOutputProgressWizardPage; DependencyPage: TOutputProgressWizardPage;
procedure AddProduct(FileName, Parameters, Title, Size, URL: string); procedure AddProduct(FileName, Parameters, Title, Size, URL: string; InstallClean : boolean; MustRebootAfter : boolean);
var var
path: string; path: string;
i: Integer; i: Integer;
@ -70,7 +67,7 @@ begin
isxdl_AddFile(URL, path); 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;
i := GetArrayLength(products); i := GetArrayLength(products);
@ -78,13 +75,36 @@ begin
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].MustRebootAfter := MustRebootAfter;
end; end;
function InstallProducts: Boolean; function SmartExec(prod : TProduct; var ResultCode : Integer) : boolean;
begin
if (LowerCase(Copy(prod.File,Length(prod.File)-2,3)) = 'exe') then begin
Result := Exec(prod.File, prod.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end else begin
Result := ShellExec('', prod.File, prod.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end;
end;
function PendingReboot : boolean;
var names: String;
begin
if (RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'PendingFileRenameOperations', names)) then begin
Result := true;
end else if ((RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'SetupExecute', names)) and (names <> '')) then begin
Result := true;
end else begin
Result := false;
end;
end;
function InstallProducts: InstallResult;
var var
ResultCode, i, productCount, finishCount: Integer; ResultCode, i, productCount, finishCount: Integer;
begin begin
Result := true; Result := InstallSuccessful;
productCount := GetArrayLength(products); productCount := GetArrayLength(products);
if productCount > 0 then begin if productCount > 0 then begin
@ -92,20 +112,38 @@ begin
DependencyPage.Show; DependencyPage.Show;
for i := 0 to productCount - 1 do begin for i := 0 to productCount - 1 do begin
if (products[i].InstallClean and (delayedReboot or PendingReboot())) then begin
Result := InstallRebootRequired;
break;
end;
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 Exec(products[i].File, products[i].Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then begin if SmartExec(products[i], ResultCode) then begin
//success; ResultCode contains the exit code //setup executed; ResultCode contains the exit code
if ResultCode = 0 then //MsgBox(products[i].Title + ' install executed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK);
finishCount := finishCount + 1 if (products[i].MustRebootAfter) then begin
else begin //delay reboot after install if we installed the last dependency anyways
Result := false; if (i = productCount - 1) then begin
delayedReboot := true;
end else begin
Result := InstallRebootRequired;
end;
break;
end else if (ResultCode = 0) then begin
finishCount := finishCount + 1;
end else if (ResultCode = 3010) then begin
//ResultCode 3010: A restart is required to complete the installation. This message indicates success.
delayedReboot := true;
finishCount := finishCount + 1;
end else begin
Result := InstallError;
break; break;
end; end;
end else begin end else begin
//failure; ResultCode contains the error code //MsgBox(products[i].Title + ' install failed. Result Code: ' + IntToStr(ResultCode), mbInformation, MB_OK);
Result := false; Result := InstallError;
break; break;
end; end;
end; end;
@ -120,22 +158,39 @@ begin
end; end;
end; end;
function PrepareToInstall(var NeedsRestart: Boolean): String; function PrepareToInstall(var NeedsRestart: boolean): String;
var var
i: Integer; i: Integer;
s: string; s: string;
begin begin
if not InstallProducts() then begin delayedReboot := false;
s := CustomMessage('depinstall_error');
for i := 0 to GetArrayLength(products) - 1 do begin case InstallProducts() of
s := s + #13 + ' ' + products[i].Title; InstallError: begin
end; s := CustomMessage('depinstall_error');
Result := s; for i := 0 to GetArrayLength(products) - 1 do begin
s := s + #13 + ' ' + products[i].Title;
end;
Result := s;
end;
InstallRebootRequired: begin
Result := products[0].Title;
NeedsRestart := true;
//write into the registry that the installer needs to be executed again after restart
RegWriteStringValue(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce', 'InstallBootstrap', ExpandConstant('{srcexe}'));
end;
end; end;
end; end;
function NeedRestart : boolean;
begin
if (delayedReboot) then
Result := true;
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;
var var
s: string; s: string;
@ -153,15 +208,14 @@ begin
Result := s Result := s
end; end;
function ProductNextButtonClick(CurPageID: Integer): Boolean; function NextButtonClick(CurPageID: Integer): boolean;
begin begin
Result := true; Result := true;
if CurPageID = wpReady then begin if CurPageID = wpReady then begin
if downloadMemo <> '' then begin if downloadMemo <> '' then begin
//change isxdl language only if it is not english because isxdl default language is already english //change isxdl language only if it is not english because isxdl default language is already english
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
ExtractTemporaryFile(CustomMessage('isxdl_langfile')); ExtractTemporaryFile(CustomMessage('isxdl_langfile'));
isxdl_SetOption('language', ExpandConstant('{tmp}{\}') + CustomMessage('isxdl_langfile')); isxdl_SetOption('language', ExpandConstant('{tmp}{\}') + CustomMessage('isxdl_langfile'));
end; end;
@ -175,23 +229,39 @@ begin
end; end;
end; end;
function IsX64: Boolean; function IsX86: boolean;
begin
Result := (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown);
end;
function IsX64: boolean;
begin begin
Result := Is64BitInstallMode and (ProcessorArchitecture = paX64); Result := Is64BitInstallMode and (ProcessorArchitecture = paX64);
end; end;
function IsIA64: Boolean; function IsIA64: boolean;
begin begin
Result := Is64BitInstallMode and (ProcessorArchitecture = paIA64); Result := Is64BitInstallMode and (ProcessorArchitecture = paIA64);
end; end;
function GetURL(x86, x64, ia64: String): String; function GetString(x86, x64, ia64: String): String;
begin begin
if IsX64() and (x64 <> '') then if IsX64() and (x64 <> '') then begin
Result := x64; Result := x64;
if IsIA64() and (ia64 <> '') then end else if IsIA64() and (ia64 <> '') then begin
Result := ia64; Result := ia64;
end else begin
if Result = '' then
Result := x86; Result := x86;
end;
end;
function GetArchitectureString(): String;
begin
if IsX64() then begin
Result := '_x64';
end else if IsIA64() then begin
Result := '_ia64';
end else begin
Result := '';
end;
end; end;

View file

@ -5,21 +5,21 @@
[CustomMessages] [CustomMessages]
dotnetfx11_title=.NET Framework 1.1 dotnetfx11_title=.NET Framework 1.1
dotnetfx11_size=23.1 MB en.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';
procedure dotnetfx11(); procedure dotnetfx11();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v1.1.4322', 'Install', version); if (IsX86() and not netfxinstalled(NetFx11, '')) then
if version <> 1 then
AddProduct('dotnetfx11.exe', AddProduct('dotnetfx11.exe',
'/q:a /c:"install /qb /l"', '/q:a /c:"install /qb /l"',
CustomMessage('dotnetfx11_title'), CustomMessage('dotnetfx11_title'),
CustomMessage('dotnetfx11_size'), CustomMessage('dotnetfx11_size'),
dotnetfx11_url); dotnetfx11_url,
false, false);
end; end;

View file

@ -11,17 +11,14 @@ de.dotnetfx11lp_url=http://download.microsoft.com/download/6/8/2/6821e687-526a-4
[Code] [Code]
procedure dotnetfx11lp(); procedure dotnetfx11lp();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\' + CustomMessage('dotnetfx11lp_lcid'), 'Install', version); if (IsX86() and not netfxinstalled(NetFx11, CustomMessage('dotnetfx11lp_lcid'))) then
AddProduct('dotnetfx11' + ActiveLanguage() + '.exe',
if version <> 1 then
AddProduct(ExpandConstant('dotnetfx11_langpack.exe'),
'/q:a /c:"inst.exe /qb /l"', '/q:a /c:"inst.exe /qb /l"',
CustomMessage('dotnetfx11lp_title'), CustomMessage('dotnetfx11lp_title'),
CustomMessage('dotnetfx11lp_size'), CustomMessage('dotnetfx11lp_size'),
CustomMessage('dotnetfx11lp_url')); CustomMessage('dotnetfx11lp_url'),
false, false);
end; end;
end; end;

View file

@ -5,21 +5,21 @@
[CustomMessages] [CustomMessages]
dotnetfx11sp1_title=.NET Framework 1.1 Service Pack 1 dotnetfx11sp1_title=.NET Framework 1.1 Service Pack 1
dotnetfx11sp1_size=10.5 MB en.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';
procedure dotnetfx11sp1(); procedure dotnetfx11sp1();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v1.1.4322', 'SP', version); if (IsX86() and (netfxspversion(NetFx11, '') < 1)) then
if version < 1 then
AddProduct('dotnetfx11sp1.exe', AddProduct('dotnetfx11sp1.exe',
'/q', '/q',
CustomMessage('dotnetfx11sp1_title'), CustomMessage('dotnetfx11sp1_title'),
CustomMessage('dotnetfx11sp1_size'), CustomMessage('dotnetfx11sp1_size'),
dotnetfx11sp1_url); dotnetfx11sp1_url,
false, false);
end; end;

View file

@ -1,7 +1,7 @@
// 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]
@ -9,6 +9,7 @@ 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';
@ -16,15 +17,12 @@ const
dotnetfx20_url_ia64 = 'http://download.microsoft.com/download/f/8/6/f86148a4-e8f7-4d08-a484-b4107f238728/NetFx64.exe'; dotnetfx20_url_ia64 = 'http://download.microsoft.com/download/f/8/6/f86148a4-e8f7-4d08-a484-b4107f238728/NetFx64.exe';
procedure dotnetfx20(); procedure dotnetfx20();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727', 'Install', version); if (not netfxinstalled(NetFx20, '')) then
if version <> 1 then begin AddProduct('dotnetfx20' + GetArchitectureString() + '.exe',
AddProduct('dotnetfx20.exe', '/passive /norestart /lang:ENU',
'/q:a /t:' + ExpandConstant('{tmp}{\}') + 'dotnetfx20 /c:"install /qb /l"',
CustomMessage('dotnetfx20_title'), CustomMessage('dotnetfx20_title'),
CustomMessage('dotnetfx20_size'), CustomMessage('dotnetfx20_size'),
GetURL(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64)); GetString(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64),
end; false, false);
end; end;

View file

@ -2,39 +2,27 @@
[CustomMessages] [CustomMessages]
de.dotnetfx20lp_title=.NET Framework 2.0 Sprachpaket: Deutsch de.dotnetfx20lp_title=.NET Framework 2.0 Sprachpaket: Deutsch
nl.dotnetfx20lp_title=
en.dotnetfx20lp_title=
dotnetfx20lp_size=1,8 MB de.dotnetfx20lp_size=1,8 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
dotnetfx20lp_lcid=1031 de.dotnetfx20lp_lcid=1031
nl.dotnetfx20lp_url=
nl.dotnetfx20lp_url_x64=
nl.dotnetfx20lp_url_ia64=
en.dotnetfx20lp_url=
en.dotnetfx20lp_url_x64=
en.dotnetfx20lp_url_ia64=
de.dotnetfx20lp_url=http://download.microsoft.com/download/2/9/7/29768238-56c3-4ea6-abba-4c5246f2bc81/langpack.exe de.dotnetfx20lp_url=http://download.microsoft.com/download/2/9/7/29768238-56c3-4ea6-abba-4c5246f2bc81/langpack.exe
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();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\' + CustomMessage('dotnetfx20lp_lcid'), 'Install', version); if (not netfxinstalled(NetFx20, CustomMessage('dotnetfx20lp_lcid'))) then
AddProduct('dotnetfx20' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
if version <> 1 then '/passive /norestart /lang:ENU',
AddProduct(ExpandConstant('dotnetfx20_langpack.exe'),
'/q:a /c:"install /qb /l"',
CustomMessage('dotnetfx20lp_title'), CustomMessage('dotnetfx20lp_title'),
CustomMessage('dotnetfx20lp_size'), CustomMessage('dotnetfx20lp_size'),
GetURL(CustomMessage('dotnetfx20lp_url'), CustomMessage('dotnetfx20lp_url_x64'), CustomMessage('dotnetfx20lp_url_ia64'))); CustomMessage('dotnetfx20lp_url' + GetArchitectureString()),
false, false);
end; end;
end; end;

View file

@ -5,7 +5,9 @@
[CustomMessages] [CustomMessages]
dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1 dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1
dotnetfx20sp1_size=23.6 MB en.dotnetfx20sp1_size=23.6 MB
de.dotnetfx20sp1_size=23,6 MB
[Code] [Code]
const const
@ -14,14 +16,12 @@ const
dotnetfx20sp1_url_ia64 = 'http://download.microsoft.com/download/c/9/7/c97d534b-8a55-495d-ab06-ad56f4b7f155/NetFx20SP1_ia64.exe'; dotnetfx20sp1_url_ia64 = 'http://download.microsoft.com/download/c/9/7/c97d534b-8a55-495d-ab06-ad56f4b7f155/NetFx20SP1_ia64.exe';
procedure dotnetfx20sp1(); procedure dotnetfx20sp1();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727', 'SP', version); if (netfxspversion(NetFx20, '') < 1) then
if version < 1 then AddProduct('dotnetfx20sp1' + GetArchitectureString() + '.exe',
AddProduct('dotnetfx20sp1.exe', '/passive /norestart /lang:ENU',
'/q:a /t:' + ExpandConstant('{tmp}{\}') + 'dotnetfx20sp1 /c:"install /qb /l /msipassthru MSI_PROP_BEGIN" REBOOT=Suppress "MSI_PROP_END"',
CustomMessage('dotnetfx20sp1_title'), CustomMessage('dotnetfx20sp1_title'),
CustomMessage('dotnetfx20sp1_size'), CustomMessage('dotnetfx20sp1_size'),
GetURL(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64)); GetString(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64),
false, false);
end; end;

View file

@ -1,40 +1,28 @@
//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]
nl.dotnetfx20sp1lp_title=.NET Framework 2.0 SP1 Taalpakket: Nederlands
de.dotnetfx20sp1lp_title=.NET Framework 2.0 SP1 Sprachpaket: Deutsch de.dotnetfx20sp1lp_title=.NET Framework 2.0 SP1 Sprachpaket: Deutsch
en.dotnetfx20sp1lp_title=
dotnetfx20sp1lp_size=3,4 MB de.dotnetfx20sp1lp_size=3,4 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
dotnetfx20sp1lp_lcid=1031 de.dotnetfx20sp1lp_lcid=1031
nl.dotnetfx20sp1lp_url=http://download.microsoft.com/download/1/5/d/15de28a3-f1d1-459f-9583-d168cfa05e3f/NetFx20SP1_x86nl.exe
nl.dotnetfx20sp1lp_url_x64=
nl.dotnetfx20sp1lp_url_ia64=
en.dotnetfx20sp1lp_url=
en.dotnetfx20sp1lp_url_x64=
en.dotnetfx20sp1lp_url_ia64=
de.dotnetfx20sp1lp_url=http://download.microsoft.com/download/8/a/a/8aab7e6a-5e58-4e83-be99-f5fb49fe811e/NetFx20SP1_x86de.exe de.dotnetfx20sp1lp_url=http://download.microsoft.com/download/8/a/a/8aab7e6a-5e58-4e83-be99-f5fb49fe811e/NetFx20SP1_x86de.exe
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();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\' + CustomMessage('dotnetfx20sp1lp_lcid'), 'SP', version); if (netfxspversion(NetFx20, CustomMessage('dotnetfx20sp1lp_lcid')) < 1) then
AddProduct('dotnetfx20sp1' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
if version < 1 then '/passive /norestart /lang:ENU',
AddProduct(ExpandConstant('dotnetfx20sp1_langpack.exe'),
'/q:a /c:"install /qb /l"',
CustomMessage('dotnetfx20sp1lp_title'), CustomMessage('dotnetfx20sp1lp_title'),
CustomMessage('dotnetfx20sp1lp_size'), CustomMessage('dotnetfx20sp1lp_size'),
GetURL(CustomMessage('dotnetfx20sp1lp_url'), CustomMessage('dotnetfx20sp1lp_url_x64'), CustomMessage('dotnetfx20sp1lp_url_ia64'))); CustomMessage('dotnetfx20sp1lp_url' + GetArchitectureString()),
false, false);
end; end;
end; end;

View file

@ -3,7 +3,9 @@
[CustomMessages] [CustomMessages]
dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2 dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2
dotnetfx20sp2_size=24 MB - 52 MB en.dotnetfx20sp2_size=24 MB - 52 MB
de.dotnetfx20sp2_size=24 MB - 52 MB
[Code] [Code]
const const
@ -12,14 +14,12 @@ const
dotnetfx20sp2_url_ia64 = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_ia64.exe'; dotnetfx20sp2_url_ia64 = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_ia64.exe';
procedure dotnetfx20sp2(); procedure dotnetfx20sp2();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727', 'SP', version); if (netfxspversion(NetFx20, '') < 2) then
if version < 2 then AddProduct('dotnetfx20sp2' + GetArchitectureString() + '.exe',
AddProduct('dotnetfx20sp2.exe', '/passive /norestart /lang:ENU',
'/lang:enu /qb /norestart',
CustomMessage('dotnetfx20sp2_title'), CustomMessage('dotnetfx20sp2_title'),
CustomMessage('dotnetfx20sp2_size'), CustomMessage('dotnetfx20sp2_size'),
GetURL(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64)); GetString(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64),
false, false);
end; end;

View file

@ -1,22 +1,12 @@
//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]
nl.dotnetfx20sp2lp_title=.NET Framework 2.0 SP2 Taalpakket: Nederlands
de.dotnetfx20sp2lp_title=.NET Framework 2.0 SP2 Sprachpaket: Deutsch de.dotnetfx20sp2lp_title=.NET Framework 2.0 SP2 Sprachpaket: Deutsch
en.dotnetfx20sp2lp_title=
dotnetfx20sp2lp_size=3,4 MB de.dotnetfx20sp2lp_size=3,4 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
dotnetfx20sp2lp_lcid=1031 de.dotnetfx20sp2lp_lcid=1031
en.dotnetfx20sp2lp_url=
en.dotnetfx20sp2lp_url_x64=
en.dotnetfx20sp2lp_url_ia64=
nl.dotnetfx20sp2lp_url=http://download.microsoft.com/download/7/a/5/7a5ca52b-08ac-40f5-9a6d-6cce78b1db28/NetFx20SP2_x86nl.exe
nl.dotnetfx20sp2lp_url_x64=
nl.dotnetfx20sp2lp_url_ia64=
de.dotnetfx20sp2lp_url=http://download.microsoft.com/download/0/b/1/0b175c8e-34bd-46c0-bfcd-af8d33770c58/netfx20sp2_x86de.exe de.dotnetfx20sp2lp_url=http://download.microsoft.com/download/0/b/1/0b175c8e-34bd-46c0-bfcd-af8d33770c58/netfx20sp2_x86de.exe
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
@ -25,17 +15,14 @@ de.dotnetfx20sp2lp_url_ia64=http://download.microsoft.com/download/a/3/3/a3349a2
[Code] [Code]
procedure dotnetfx20sp2lp(); procedure dotnetfx20sp2lp();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\' + CustomMessage('dotnetfx20sp2lp_lcid'), 'SP', version); if (netfxspversion(NetFx20, CustomMessage('dotnetfx20sp2lp_lcid')) < 2) then
AddProduct('dotnetfx20sp2' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
if version < 2 then '/lang:enu /passive /norestart"',
AddProduct(ExpandConstant('dotnetfx20sp2_langpack.exe'),
'/lang:enu /qb /norestart"',
CustomMessage('dotnetfx20sp2lp_title'), CustomMessage('dotnetfx20sp2lp_title'),
CustomMessage('dotnetfx20sp2lp_size'), CustomMessage('dotnetfx20sp2lp_size'),
GetURL(CustomMessage('dotnetfx20sp2lp_url'), CustomMessage('dotnetfx20sp2lp_url_x64'), CustomMessage('dotnetfx20sp2lp_url_ia64'))); CustomMessage('dotnetfx20sp2lp_url' + GetArchitectureString()),
false, false);
end; end;
end; end;

View file

@ -1,5 +1,5 @@
// 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
@ -8,19 +8,18 @@ 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';
procedure dotnetfx35(); procedure dotnetfx35();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v3.5', 'Install', version); if (netfxinstalled(NetFx35, '') = false) then
if version <> 1 then AddProduct('dotnetfx35' + GetArchitectureString() + '.exe',
AddProduct('dotnetfx35.exe', '/lang:enu /passive /norestart',
'/lang:enu /qb /norestart',
CustomMessage('dotnetfx35_title'), CustomMessage('dotnetfx35_title'),
CustomMessage('dotnetfx35_size'), CustomMessage('dotnetfx35_size'),
dotnetfx35_url); dotnetfx35_url,
false, false);
end; end;

View file

@ -11,17 +11,14 @@ de.dotnetfx35lp_url=http://download.microsoft.com/download/d/1/e/d1e617c3-c7f4-4
[Code] [Code]
procedure dotnetfx35lp(); procedure dotnetfx35lp();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v3.5\' + CustomMessage('dotnetfx35lp_lcid'), 'Install', version); if (not netfxinstalled(NetFx35, CustomMessage('dotnetfx35lp_lcid'))) then
AddProduct('dotnetfx35' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
if version <> 1 then '/lang:enu /passive /norestart',
AddProduct('dotnetfx35_langpack.exe',
'/lang:enu /qb /norestart',
CustomMessage('dotnetfx35lp_title'), CustomMessage('dotnetfx35lp_title'),
CustomMessage('dotnetfx35lp_size'), CustomMessage('dotnetfx35lp_size'),
CustomMessage('dotnetfx35lp_url')); CustomMessage('dotnetfx35lp_url'),
false, false);
end; end;
end; end;

View file

@ -1,26 +1,26 @@
// 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
dotnetfx35sp1_size=3 MB - 232 MB en.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';
procedure dotnetfx35sp1(); procedure dotnetfx35sp1();
var
version: cardinal;
begin begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v3.5', 'SP', version); if (netfxspversion(NetFx35, '') < 1) then
if version < 1 then AddProduct('dotnetfx35sp1' + GetArchitectureString() + '.exe',
AddProduct('dotnetfx35sp1.exe', '/lang:enu /passive /norestart',
'/lang:enu /qb /norestart',
CustomMessage('dotnetfx35sp1_title'), CustomMessage('dotnetfx35sp1_title'),
CustomMessage('dotnetfx35sp1_size'), CustomMessage('dotnetfx35sp1_size'),
dotnetfx35sp1_url); dotnetfx35sp1_url,
false, false);
end; end;

View file

@ -11,17 +11,14 @@ de.dotnetfx35sp1lp_url=http://download.microsoft.com/download/d/7/2/d728b7b9-454
[Code] [Code]
procedure dotnetfx35sp1lp(); procedure dotnetfx35sp1lp();
var
version: cardinal;
begin begin
if ActiveLanguage() <> 'en' then begin if (ActiveLanguage() <> 'en') then begin
RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v3.5\' + CustomMessage('dotnetfx35sp1lp_lcid'), 'SP', version); if (netfxspversion(NetFx35, CustomMessage('dotnetfx35sp1lp_lcid')) < 1) then
AddProduct('dotnetfx35sp1' + GetArchitectureString() + '_' + ActiveLanguage() + '.exe',
if version < 1 then '/lang:enu /passive /norestart',
AddProduct('dotnetfx35sp1_langpack.exe',
'/lang:enu /qb /norestart',
CustomMessage('dotnetfx35sp1lp_title'), CustomMessage('dotnetfx35sp1lp_title'),
CustomMessage('dotnetfx35sp1lp_size'), CustomMessage('dotnetfx35sp1lp_size'),
CustomMessage('dotnetfx35sp1lp_url')); CustomMessage('dotnetfx35sp1lp_url'),
false, false);
end; end;
end; end;

View file

@ -0,0 +1,30 @@
// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3
// requires Windows Installer 3.1
// requires Internet Explorer 5.01
// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab
[CustomMessages]
dotnetfx40client_title=.NET Framework 4.0 Client
dotnetfx40client_size=3 MB - 197 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.dotnetfx40client_lcid=''
de.dotnetfx40client_lcid='/lcid 1031 '
[Code]
const
dotnetfx40client_url = 'http://download.microsoft.com/download/7/B/6/7B629E05-399A-4A92-B5BC-484C74B5124B/dotNetFx40_Client_setup.exe';
procedure dotnetfx40client();
begin
if (not netfxinstalled(NetFx40Client, '')) then
AddProduct('dotNetFx40_Client_setup.exe',
CustomMessage('dotnetfx40client_lcid') + '/passive /norestart',
CustomMessage('dotnetfx40client_title'),
CustomMessage('dotnetfx40client_size'),
dotnetfx40client_url,
false, false);
end;

View file

@ -0,0 +1,30 @@
// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3
// requires Windows Installer 3.1
// requires Internet Explorer 5.01
// WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
[CustomMessages]
dotnetfx40full_title=.NET Framework 4.0 Full
dotnetfx40full_size=3 MB - 197 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.dotnetfx40full_lcid=''
de.dotnetfx40full_lcid='/lcid 1031 '
[Code]
const
dotnetfx40full_url = 'http://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe';
procedure dotnetfx40full();
begin
if (not netfxinstalled(NetFx40Full, '')) then
AddProduct('dotNetFx40_Full_setup.exe',
CustomMessage('dotnetfx40full_lcid') + '/q /passive /norestart',
CustomMessage('dotnetfx40full_title'),
CustomMessage('dotnetfx40full_size'),
dotnetfx40full_url,
false, false);
end;

View file

@ -0,0 +1,69 @@
[Code]
type
NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full);
const
netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\';
function netfxinstalled(version: NetFXType; lcid: string): boolean;
var
regVersion: cardinal;
regVersionString: string;
begin
if (lcid <> '') then
lcid := '\' + lcid;
if (version = NetFx10) then begin
RegQueryStringValue(HKLM, 'Software\Microsoft\.NETFramework\Policy\v1.0\3705', 'Install', regVersionString);
Result := regVersionString <> '';
end else begin
case version of
NetFx11:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'Install', regVersion);
NetFx20:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'Install', regVersion);
NetFx30:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0\Setup' + lcid, 'InstallSuccess', regVersion);
NetFx35:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'Install', regVersion);
NetFx40Client:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion);
NetFx40Full:
RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion);
end;
Result := (regVersion <> 0);
end;
end;
function netfxspversion(version: NetFXType; lcid: string): integer;
var
regVersion: cardinal;
begin
if (lcid <> '') then
lcid := '\' + lcid;
case version of
NetFx10:
//not supported
regVersion := -1;
NetFx11:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx20:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx30:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx35:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'SP', regVersion)) then
regVersion := -1;
NetFx40Client:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Servicing', regVersion)) then
regVersion := -1;
NetFx40Full:
if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
regVersion := -1;
end;
Result := regVersion;
end;

View file

@ -5,7 +5,9 @@
[CustomMessages] [CustomMessages]
ie6_title=Internet Explorer 6 ie6_title=Internet Explorer 6
ie6_size=1 MB - 77.5 MB en.ie6_size=1 MB - 77.5 MB
de.ie6_size=1 MB - 77,5 MB
[Code] [Code]
const const
@ -16,10 +18,11 @@ var
version: string; version: string;
begin begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version); RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version);
if version < MinVersion 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);
end; end;

View file

@ -5,7 +5,7 @@ iis_title=Internet Information Services (IIS)
[Code] [Code]
function iis(): boolean; function iis(): boolean;
begin begin
if not RegKeyExists(HKLM, 'SYSTEM\CurrentControlSet\Services\W3SVC\Security') then if (not RegKeyExists(HKLM, 'SYSTEM\CurrentControlSet\Services\W3SVC\Security')) then
MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('iis_title')]), mbError, MB_OK) MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('iis_title')]), mbError, MB_OK)
else else
Result := true; Result := true;

View file

@ -3,7 +3,9 @@
[CustomMessages] [CustomMessages]
jet4sp8_title=Jet 4 jet4sp8_title=Jet 4
jet4sp8_size=3.7 MB en.jet4sp8_size=3.7 MB
de.jet4sp8_size=3,7 MB
[Code] [Code]
const const
@ -12,10 +14,11 @@ const
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 fileversion(ExpandConstant('{sys}{\}msjet40.dll')) < MinVersion 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);
end; end;

View file

@ -5,9 +5,10 @@
[CustomMessages] [CustomMessages]
en.kb835732_title=Windows 2000 Security Update (KB835732) en.kb835732_title=Windows 2000 Security Update (KB835732)
de.kb835732_title=Windows 2000 Sicherheitsupdate (KB835732) de.kb835732_title=Windows 2000 Sicherheitsupdate (KB835732)
nl.kb835732_title=Windows 2000 Veiligheidsupdate (KB835732)
kb835732_size=6.8 MB en.kb835732_size=6.8 MB
de.kb835732_size=6,8 MB
[Code] [Code]
const const
@ -15,12 +16,13 @@ const
procedure kb835732(); procedure kb835732();
begin begin
if (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"', '/q:a /c:"install /q"',
CustomMessage('kb835732_title'), CustomMessage('kb835732_title'),
CustomMessage('kb835732_size'), CustomMessage('kb835732_size'),
kb835732_url); kb835732_url,
false, false);
end; end;
end; end;

View file

@ -1,7 +1,9 @@
[CustomMessages] [CustomMessages]
mdac28_title=Microsoft Data Access Components 2.8 mdac28_title=Microsoft Data Access Components 2.8
mdac28_size=5.4 MB en.mdac28_size=5.4 MB
de.mdac28_size=5,4 MB
[Code] [Code]
const const
@ -13,10 +15,11 @@ var
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 version < MinVersion 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);
end; end;

View file

@ -1,7 +1,8 @@
[CustomMessages] [CustomMessages]
msi20_title=Windows Installer 2.0 msi20_title=Windows Installer 2.0
msi20_size=1.7 MB en.msi20_size=1.7 MB
de.msi20_size=1,7 MB
[Code] [Code]
@ -11,10 +12,11 @@ const
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 maxwinversion(4, 9) and (fileversion(ExpandConstant('{sys}{\}msi.dll')) < MinVersion) 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);
end; end;

View file

@ -1,7 +1,9 @@
[CustomMessages] [CustomMessages]
msi31_title=Windows Installer 3.1 msi31_title=Windows Installer 3.1
msi31_size=2.5 MB en.msi31_size=2.5 MB
de.msi31_size=2,5 MB
[Code] [Code]
const const
@ -10,10 +12,11 @@ const
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 minwinversion(5, 0) and (fileversion(ExpandConstant('{sys}{\}msi.dll')) < MinVersion) then if (IsX86() and minwinversion(5, 0) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then
AddProduct('msi31.exe', AddProduct('msi31.exe',
'/qb /norestart', '/passive /norestart',
CustomMessage('msi31_title'), CustomMessage('msi31_title'),
CustomMessage('msi31_size'), CustomMessage('msi31_size'),
msi31_url); msi31_url,
false, false);
end; end;

View file

@ -0,0 +1,45 @@
[CustomMessages]
msi45_title=Windows Installer 4.5
en.msi45win60_size=1.7 MB
de.msi45win60_size=1,7 MB
en.msi45win52_size=3.0 MB
de.msi45win52_size=3,0 MB
en.msi45win51_size=3.2 MB
de.msi45win51_size=3,2 MB
[Code]
const
msi45win60_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x86.msu';
msi45win52_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x86.exe';
msi45win51_url = 'http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe';
procedure msi45(MinVersion: string);
begin
if (IsX86() and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then begin
if minwinversion(6, 0) then
AddProduct('msi45_60.msu',
'/quiet /norestart',
CustomMessage('msi45_title'),
CustomMessage('msi45win60_size'),
msi45win60_url,
false, false)
else if minwinversion(5, 2) then
AddProduct('msi45_52.exe',
'/quiet /norestart',
CustomMessage('msi45_title'),
CustomMessage('msi45win52_size'),
msi45win52_url,
false, false)
else if minwinversion(5, 1) then
AddProduct('msi45_51.exe',
'/quiet /norestart',
CustomMessage('msi45_title'),
CustomMessage('msi45win51_size'),
msi45win51_url,
false, false);
end;
end;

View file

@ -1,32 +1,42 @@
// requires Windows 2000 Service Pack 4, Windows Server 2003 Service Pack 1, Windows XP Service Pack 2 // 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 Express 2005 Service Pack 1+ should be installed for SQL Express 2005 to work on Vista // requires Microsoft .NET Framework 2.0 or later
// requires windows installer 3.1 // 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/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41 // http://www.microsoft.com/download/en/details.aspx?id=15291
[CustomMessages] [CustomMessages]
sql2005express_title=SQL Server 2005 Express sql2005express_title=SQL Server 2005 Express SP3
en.sql2005express_size=57.7 MB en.sql2005express_size=38.1 MB
de.sql2005express_size=57,7 MB de.sql2005express_size=38,1 MB
en.sql2005express_size_x64=58.1 MB
de.sql2005express_size_x64=58,1 MB
[Code] [Code]
const const
sql2005express_url = 'http://download.microsoft.com/download/f/1/0/f10c4f60-630e-4153-bd53-c3010e4c513b/SQLEXPR.EXE'; sql2005express_url = 'http://download.microsoft.com/download/4/B/E/4BED5810-C8C0-4697-BDC3-DBC114B8FF6D/SQLEXPR32_NLA.EXE';
sql2005express_url_x64 = 'http://download.microsoft.com/download/4/B/E/4BED5810-C8C0-4697-BDC3-DBC114B8FF6D/SQLEXPR_NLA.EXE';
procedure sql2005express(); procedure sql2005express();
var var
version: cardinal; version: string;
begin begin
//CHECK NOT FINISHED YET //CHECK NOT FINISHED YET
//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
RegQueryDWordValue(HKLM, 'Software\Microsoft\Microsoft SQL Server\90\DTS\Setup', 'Install', version); // Newer detection method required for SP3 and x64
if version <> 1 then //Service Pack 3: 9.00.4035.00
AddProduct('sql2005express.exe', //RegQueryDWordValue(HKLM, 'Software\Microsoft\Microsoft SQL Server\90\DTS\Setup', 'Install', version);
'/qb', RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
CustomMessage('sql2005express_title'), if (version < '9.00.4035') then begin
CustomMessage('sql2005express_size'), if (not isIA64()) then
sql2005express_url); AddProduct('sql2005express' + GetArchitectureString() + '.exe',
'/qb ADDLOCAL=ALL INSTANCENAME=SQLEXPRESS',
CustomMessage('sql2005express_title'),
CustomMessage('sql2005express_size' + GetArchitectureString()),
GetString(sql2005express_url, sql2005express_url_x64, ''),
false, false);
end;
end; end;

View file

@ -0,0 +1,39 @@
// requires Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP
// requires Microsoft .NET Framework 3.5 SP 1 or later
// requires Windows Installer 4.5 or later
// SQL Server Express is supported on x64 and EMT64 systems in Windows On Windows (WOW). SQL Server Express is not supported on IA64 systems
// SQLEXPR32.EXE is a smaller package that can be used to install SQL Server Express on 32-bit operating systems only. The larger SQLEXPR.EXE package supports installing onto both 32-bit and 64-bit (WOW install) operating systems. There is no other difference between these packages.
// http://www.microsoft.com/download/en/details.aspx?id=3743
[CustomMessages]
sql2008expressr2_title=SQL Server 2008 Express R2
en.sql2008expressr2_size=58.2 MB
de.sql2008expressr2_size=58,2 MB
en.sql2008expressr2_size_x64=74.1 MB
de.sql2008expressr2_size_x64=74,1 MB
[Code]
const
sql2008expressr2_url = 'http://download.microsoft.com/download/5/1/A/51A153F6-6B08-4F94-A7B2-BA1AD482BC75/SQLEXPR32_x86_ENU.exe';
sql2008expressr2_url_x64 = 'http://download.microsoft.com/download/5/1/A/51A153F6-6B08-4F94-A7B2-BA1AD482BC75/SQLEXPR_x64_ENU.exe';
procedure sql2008express();
var
version: string;
begin
// This check does not take into account that a full version of SQL Server could be installed,
// making Express unnecessary.
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version);
if (compareversion(version, '10.5') < 0) then begin
if (not isIA64()) then
AddProduct('sql2008expressr2' + GetArchitectureString() + '.exe',
'/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=All /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="builtin\administrators"',
CustomMessage('sql2008expressr2_title'),
CustomMessage('sql2008expressr2_size' + GetArchitectureString()),
GetString(sql2008expressr2_url, sql2008expressr2_url_x64, ''),
false, false);
end;
end;

View file

@ -0,0 +1,21 @@
[CustomMessages]
sqlcompact35sp2_title=SQL Server Compact 3.5 Service Pack 2
en.sqlcompact35sp2_size=5.3 MB
de.sqlcompact35sp2_size=5,3 MB
[Code]
const
sqlcompact35sp2_url = 'http://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe';
procedure sqlcompact35sp2();
begin
if (isX86() and not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5')) then
AddProduct('sqlcompact35sp2.msi',
'/qb',
CustomMessage('sqlcompact35sp2_title'),
CustomMessage('sqlcompact35sp2_size'),
sqlcompact35sp2_url,
false, false);
end;

View file

@ -0,0 +1,52 @@
function stringtoversion(var temp: String): Integer;
var
part: String;
pos1: Integer;
begin
if (Length(temp) = 0) then begin
Result := -1;
Exit;
end;
pos1 := Pos('.', temp);
if (pos1 = 0) then begin
Result := StrToInt(temp);
temp := '';
end else begin
part := Copy(temp, 1, pos1 - 1);
temp := Copy(temp, pos1 + 1, Length(temp));
Result := StrToInt(part);
end;
end;
function compareinnerversion(var x, y: String): Integer;
var
num1, num2: Integer;
begin
num1 := stringtoversion(x);
num2 := stringtoversion(y);
if (num1 = -1) or (num2 = -1) then begin
Result := 0;
Exit;
end;
if (num1 < num2) then begin
Result := -1;
end else if (num1 > num2) then begin
Result := 1;
end else begin
Result := compareinnerversion(x, y);
end;
end;
function compareversion(versionA, versionB: String): Integer;
var
temp1, temp2: String;
begin
temp1 := versionA;
temp2 := versionB;
Result := compareinnerversion(temp1, temp2);
end;

View file

@ -0,0 +1,42 @@
// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3
// requires Windows Installer 3.1 or later
// requires Internet Explorer 5.01 or later
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
[CustomMessages]
vcredist2010_title=Visual C++ 2010 Redistributable
en.vcredist2010_size=4.8 MB
de.vcredist2010_size=4,8 MB
en.vcredist2010_size_x64=5.5 MB
de.vcredist2010_size_x64=5,5 MB
en.vcredist2010_size_ia64=2.2 MB
de.vcredist2010_size_ia64=2,2 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.vcredist2010_lcid=''
de.vcredist2010_lcid='/lcid 1031 '
[Code]
const
vcredist2010_url = 'http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe';
vcredist2010_url_x64 = 'http://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe';
vcredist2010_url_ia64 = 'http://download.microsoft.com/download/3/3/A/33A75193-2CBC-424E-A886-287551FF1EB5/vcredist_IA64.exe';
procedure vcredist2010();
var
version: cardinal;
begin
RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version);
if (version <> 1) then
AddProduct('vcredist2010' + GetArchitectureString() + '.exe',
CustomMessage('vcredist2010_lcid') + '/passive /norestart',
CustomMessage('vcredist2010_title'),
CustomMessage('vcredist2010_size' + GetArchitectureString()),
GetString(vcredist2010_url, vcredist2010_url_x64, vcredist2010_url_ia64),
false, false);
end;

View file

@ -0,0 +1,55 @@
//requires Windows Server 2003, Windows Server 2003 R2 Datacenter Edition (32-Bit x86), Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Windows Server 2003 R2 Standard Edition (32-bit x86), Windows XP Service Pack 2
[CustomMessages]
wic_title=Windows Imaging Component
en.wic_size=1.2 MB
de.wic_size=1,2 MB
[Code]
const
wic_url = 'http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_';
wic_url_x64 = 'http://download.microsoft.com/download/6/4/5/645fed5f-a6e7-44d9-9d10-fe83348796b0/wic_x64';
function GetConvertedLanguageID(): string;
begin
case ActiveLanguage() of
'en': //English
Result := 'enu';
'zh': //Chinese
Result := 'chs';
'de': //German
Result := 'deu';
'es': //Spanish
Result := 'esn';
'fr': //French
Result := 'fra';
'it': //Italian
Result := 'ita';
'ja': //Japanese
Result := 'jpn';
'nl': //Dutch
Result := 'nld';
'pt': //Portuguese
Result := 'ptb';
'ru': //Russian
Result := 'rus';
end;
end;
procedure wic();
begin
if (not isIA64()) then begin
//only needed on Windows XP SP2 or Windows Server 2003
if ((exactwinversion(5, 1) and exactwinspversion(5, 1, 2)) or (exactwinversion(5, 2))) then begin
if (not FileExists(GetEnv('windir') + '\system32\windowscodecs.dll')) then
AddProduct('wic' + GetArchitectureString() + '_' + GetConvertedLanguageID() + '.exe',
'/q',
CustomMessage('wic_title'),
CustomMessage('wic_size'),
GetString(wic_url, wic_url_x64, '') + GetConvertedLanguageID() + '.exe',
false, false);
end;
end;
end;

View file

@ -0,0 +1,582 @@
#define ExeName "Greenshot"
#define Version "2.0.0.$WCREV$"
[Files]
Source: ..\..\bin\Release\Greenshot.exe; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion
Source: ..\..\bin\Release\GreenshotPlugin.dll; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion
Source: ..\..\bin\Release\Greenshot.exe.config; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion
Source: ..\..\bin\Release\checksum.MD5; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion
;Source: ..\greenshot-defaults.ini; DestDir: {app}; Flags: overwritereadonly ignoreversion replacesameversion
Source: ..\additional_files\installer.txt; DestDir: {app}; Components: greenshot; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion
Source: ..\additional_files\license.txt; DestDir: {app}; Components: greenshot; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion
Source: ..\additional_files\readme.txt; DestDir: {app}; Components: greenshot; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion
; Core language files
Source: ..\..\Languages\*nl-NL*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*en-US*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*de-DE*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion;
; Additional language files
Source: ..\..\Languages\*ar-SY*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\arSY; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*cs-CZ*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\csCZ; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*da-DK*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\daDK; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*de-x-franconia*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\dexfranconia; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*el-GR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\elGR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*es-ES*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\esES; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fa-IR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\faIR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fi-FI*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\fiFI; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fr-FR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\frFR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fr-QC*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\frQC; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*he-IL*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\heIL; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*hu-HU*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\huHU; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*id-ID*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\idID; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*it-IT*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\itIT; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*ja-JP*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\jaJP; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*ko-KR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\koKR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*lt-LT*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\ltLT; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*my-MM*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\myMM; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*nn-NO*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\nnNO; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*pl-PL*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\plPL; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*pt-BR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\ptBR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*pt-PT*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\ptPT; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*ro-RO*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\roRO; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*ru-RU*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\ruRU; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*sk-SK*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\skSK; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*sl-SI*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\slSI; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*sr-RS*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\srRS; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*sv-SE*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\svSE; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*tr-TR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\trTR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*uk-UA*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\ukUA; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*vi-VN*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\viVN; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*zh-CN*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\zhCN; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*zh-TW*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\zhTW; Flags: overwritereadonly ignoreversion replacesameversion;
;Office Plugin
Source: ..\..\bin\Release\Plugins\GreenshotOfficePlugin\GreenshotOfficePlugin.gsp; DestDir: {app}\Plugins\GreenshotOfficePlugin; Components: plugins\office; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotOfficePlugin\*; DestDir: {app}\Languages\Plugins\GreenshotOfficePlugin; Components: plugins\office; Flags: overwritereadonly ignoreversion replacesameversion;
;OCR Plugin
Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRPlugin.gsp; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRCommand.exe; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotOCRPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly ignoreversion replacesameversion;
;JIRA Plugin
Source: ..\..\bin\Release\Plugins\GreenshotJiraPlugin\GreenshotJiraPlugin.gsp; DestDir: {app}\Plugins\GreenshotJiraPlugin; Components: plugins\jira; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotJiraPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotJiraPlugin; Components: plugins\jira; Flags: overwritereadonly ignoreversion replacesameversion;
;Imgur Plugin
Source: ..\..\bin\Release\Plugins\GreenshotImgurPlugin\GreenshotImgurPlugin.gsp; DestDir: {app}\Plugins\GreenshotImgurPlugin; Components: plugins\imgur; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotImgurPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotImgurPlugin; Components: plugins\imgur; Flags: overwritereadonly ignoreversion replacesameversion;
;Box Plugin
Source: ..\..\bin\Release\Plugins\GreenshotBoxPlugin\GreenshotBoxPlugin.gsp; DestDir: {app}\Plugins\GreenshotBoxPlugin; Components: plugins\box; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotBoxPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotBoxPlugin; Components: plugins\box; Flags: overwritereadonly ignoreversion replacesameversion;
;DropBox Plugin
Source: ..\..\bin\Release\Plugins\GreenshotDropBoxPlugin\GreenshotDropboxPlugin.gsp; DestDir: {app}\Plugins\GreenshotDropBoxPlugin; Components: plugins\dropbox; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotDropBoxPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotDropBoxPlugin; Components: plugins\dropbox; Flags: overwritereadonly ignoreversion replacesameversion;
;Flickr Plugin
Source: ..\..\bin\Release\Plugins\GreenshotFlickrPlugin\GreenshotFlickrPlugin.gsp; DestDir: {app}\Plugins\GreenshotFlickrPlugin; Components: plugins\flickr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotFlickrPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotFlickrPlugin; Components: plugins\flickr; Flags: overwritereadonly ignoreversion replacesameversion;
;Photobucket Plugin
Source: ..\..\bin\Release\Plugins\GreenshotPhotobucketPlugin\GreenshotPhotobucketPlugin.gsp; DestDir: {app}\Plugins\GreenshotPhotobucketPlugin; Components: plugins\photobucket; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotPhotobucketPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotPhotobucketPlugin; Components: plugins\photobucket; Flags: overwritereadonly ignoreversion replacesameversion;
;Picasa Plugin
Source: ..\..\bin\Release\Plugins\GreenshotPicasaPlugin\GreenshotPicasaPlugin.gsp; DestDir: {app}\Plugins\GreenshotPicasaPlugin; Components: plugins\picasa; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotPicasaPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotPicasaPlugin; Components: plugins\picasa; Flags: overwritereadonly ignoreversion replacesameversion;
;Confluence Plugin
Source: ..\..\bin\Release\Plugins\GreenshotConfluencePlugin\GreenshotConfluencePlugin.gsp; DestDir: {app}\Plugins\GreenshotConfluencePlugin; Components: plugins\confluence; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotConfluencePlugin\*; DestDir: {app}\Languages\Plugins\GreenshotConfluencePlugin; Components: plugins\confluence; Flags: overwritereadonly ignoreversion replacesameversion;
;ExternalCommand Plugin
Source: ..\..\bin\Release\Plugins\GreenshotExternalCommandPlugin\GreenshotExternalCommandPlugin.gsp; DestDir: {app}\Plugins\GreenshotExternalCommandPlugin; Components: plugins\externalcommand; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotExternalCommandPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotExternalCommandPlugin; Components: plugins\externalcommand; Flags: overwritereadonly ignoreversion replacesameversion;
;Network Import Plugin
;Source: ..\..\bin\Release\Plugins\GreenshotNetworkImportPlugin\*; DestDir: {app}\Plugins\GreenshotNetworkImportPlugin; Components: plugins\networkimport; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
[Setup]
; changes associations is used when the installer installs new extensions, it clears the explorer icon cache
ChangesAssociations=yes
AppId={#ExeName}
AppName={#ExeName}
AppMutex=F48E86D3-E34C-4DB7-8F8F-9A0EA55F0D08
AppPublisher={#ExeName}
AppPublisherURL=http://getgreenshot.org
AppSupportURL=http://getgreenshot.org
AppUpdatesURL=http://getgreenshot.org
AppVerName={#ExeName} {#Version}
AppVersion={#Version}
ArchitecturesInstallIn64BitMode=x64
Compression=lzma2/ultra64
SolidCompression=yes
DefaultDirName={code:DefDirRoot}\{#ExeName}
DefaultGroupName={#ExeName}
InfoBeforeFile=..\additional_files\readme.txt
LicenseFile=..\additional_files\license.txt
LanguageDetectionMethod=uilanguage
MinVersion=0,5.01.2600
OutputBaseFilename={#ExeName}-INSTALLER-{#Version}-UNSTABLE
OutputDir=..\
PrivilegesRequired=none
SetupIconFile=..\..\icons\applicationIcon\icon.ico
UninstallDisplayIcon={app}\{#ExeName}.exe
Uninstallable=true
VersionInfoCompany={#ExeName}
VersionInfoProductName={#ExeName}
VersionInfoTextVersion={#Version}
VersionInfoVersion={#Version}
; Reference a bitmap, max size 164x314
WizardImageFile=installer-large.bmp
; Reference a bitmap, max size 55x58
WizardSmallImageFile=installer-small.bmp
[Registry]
; Delete all startup entries, so we don't have leftover values
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror;
Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror;
Root: HKCU32; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror; Check: IsWin64()
Root: HKLM32; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror; Check: IsWin64()
; Create the startup entries if requested to do so
; HKEY_LOCAL_USER - for current user only
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: {#ExeName}; ValueData: {app}\{#ExeName}.exe; Permissions: users-modify; Flags: uninsdeletevalue noerror; Tasks: startup; Check: IsRegularUser
; HKEY_LOCAL_MACHINE - for all users
Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: {#ExeName}; ValueData: {app}\{#ExeName}.exe; Permissions: users-modify; Flags: uninsdeletevalue noerror; Tasks: startup; Check: not IsRegularUser
; Register our own filetype for admin
Root: HKLM; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
Root: HKLM; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
Root: HKLM; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "{app}\Greenshot.EXE,0"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
Root: HKLM; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
; Register our own filetype for normal user
Root: HKCU; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "{app}\Greenshot.EXE,0"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror; Check: IsRegularUser
[Icons]
Name: {group}\{#ExeName}; Filename: {app}\{#ExeName}.exe; WorkingDir: {app}
Name: {group}\Uninstall {#ExeName}; Filename: {uninstallexe}; WorkingDir: {app}; AppUserModelID: "{#ExeName}.{#ExeName}"
Name: {group}\Readme.txt; Filename: {app}\readme.txt; WorkingDir: {app}
Name: {group}\License.txt; Filename: {app}\license.txt; WorkingDir: {app}
[Languages]
Name: en; MessagesFile: compiler:Default.isl
Name: cn; MessagesFile: compiler:Languages\ChineseSimplified.isl
Name: de; MessagesFile: compiler:Languages\German.isl
Name: es; MessagesFile: compiler:Languages\Spanish.isl
Name: fi; MessagesFile: compiler:Languages\Finnish.isl
Name: fr; MessagesFile: compiler:Languages\French.isl
Name: nl; MessagesFile: compiler:Languages\Dutch.isl
Name: nn; MessagesFile: compiler:Languages\NorwegianNynorsk.isl
Name: sr; MessagesFile: compiler:Languages\SerbianCyrillic.isl
[Tasks]
Name: startup; Description: {cm:startup}
[CustomMessages]
de.confluence=Confluence Plug-in
de.default=Standard installation
en.office=Microsoft Office Plug-in
de.externalcommand=Öffne mit ein externem Kommando Plug-in
de.imgur=Imgur Plug-in (Siehe: http://imgur.com)
de.jira=Jira Plug-in
de.language=Zusätzliche Sprachen
de.ocr=OCR Plug-in (benötigt Microsoft Office Document Imaging (MODI))
de.optimize=Optimierung der Leistung, kann etwas dauern.
de.startgreenshot={#ExeName} starten
de.startup={#ExeName} starten wenn Windows hochfährt
en.confluence=Confluence plug-in
en.default=Default installation
en.office=Microsoft Office plug-in
en.externalcommand=Open with external command plug-in
en.imgur=Imgur plug-in (See: http://imgur.com)
en.jira=Jira plug-in
en.language=Additional languages
en.ocr=OCR plug-in (needs Microsoft Office Document Imaging (MODI))
en.optimize=Optimizing performance, this may take a while.
en.startgreenshot=Start {#ExeName}
en.startup=Start {#ExeName} with Windows start
es.confluence=Extensión para Confluence
es.default=${default}
es.externalcommand=Extensión para abrir con programas externos
es.imgur=Extensión para Imgur (Ver http://imgur.com)
es.jira=Extensión para Jira
es.language=Idiomas adicionales
es.ocr=Extensión para OCR (necesita Microsoft Office Document Imaging (MODI))
es.optimize=Optimizando rendimiento; por favor, espera.
es.startgreenshot=Lanzar {#ExeName}
es.startup=Lanzar {#ExeName} al iniciarse Windows
fi.confluence=Confluence-liitännäinen
fi.default=${default}
fi.office=Microsoft-Office-liitännäinen
fi.externalcommand=Avaa Ulkoinen komento-liitännäisellä
fi.imgur=Imgur-liitännäinen (Katso: http://imgur.com)
fi.jira=Jira-liitännäinen
fi.language=Lisäkielet
fi.ocr=OCR-liitännäinen (Tarvitaan: Microsoft Office Document Imaging (MODI))
fi.optimize=Optimoidaan suorituskykyä, tämä voi kestää hetken.
fi.startgreenshot=Käynnistä {#ExeName}
fi.startup=Käynnistä {#ExeName} Windowsin käynnistyessä
fr.confluence=Greffon Confluence
fr.default=${default}
fr.office=Greffon Microsoft Office
fr.externalcommand=Ouvrir avec le greffon de commande externe
fr.imgur=Greffon Imgur (Voir: http://imgur.com)
fr.jira=Greffon Jira
fr.language=Langues additionnelles
fr.ocr=Greffon OCR (nécessite Document Imaging de Microsoft Office [MODI])
fr.optimize=Optimisation des performances, Ceci peut prendre un certain temps.
fr.startgreenshot=Démarrer {#ExeName}
fr.startup=Lancer {#ExeName} au démarrage de Windows
nl.confluence=Confluence plug-in
nl.default=Default installation
nl.office=Microsoft Office plug-in
nl.externalcommand=Open met externes commando plug-in
nl.imgur=Imgur plug-in (Zie: http://imgur.com)
nl.jira=Jira plug-in
nl.language=Extra talen
nl.ocr=OCR plug-in (heeft Microsoft Office Document Imaging (MODI) nodig)
nl.optimize=Prestaties verbeteren, kan even duren.
nl.startgreenshot=Start {#ExeName}
nl.startup=Start {#ExeName} wanneer Windows opstart
nn.confluence=Confluence-tillegg
nn.default=Default installation
nn.office=Microsoft Office Tillegg
nn.externalcommand=Tillegg for å opne med ekstern kommando
nn.imgur=Imgur-tillegg (sjå http://imgur.com)
nn.jira=Jira-tillegg
nn.language=Andre språk
nn.ocr=OCR-tillegg (krev Microsoft Office Document Imaging (MODI))
nn.optimize=Optimaliserar ytelse, dette kan ta litt tid...
nn.startgreenshot=Start {#ExeName}
nn.startup=Start {#ExeName} når Windows startar
sr.confluence=Прикључак за Конфлуенс
sr.default=${default}
sr.externalcommand=Отвори са прикључком за спољне наредбе
sr.imgur=Прикључак за Имиџер (http://imgur.com)
sr.jira=Прикључак за Џиру
sr.language=Додатни језици
sr.ocr=OCR прикључак (захтева Microsoft Office Document Imaging (MODI))
sr.optimize=Оптимизујем перформансе…
sr.startgreenshot=Покрени Гриншот
sr.startup=Покрени програм са системом
cn.confluence=Confluence插件
cn.default=${default}
cn.externalcommand=使用外部命令打开插件
cn.imgur=Imgur插件( (请访问: http://imgur.com))
cn.jira=Jira插件
cn.language=其它语言
cn.ocr=OCR插件(需要Microsoft Office Document Imaging (MODI)的支持)
cn.optimize=正在优化性能,这可能需要一点时间。
cn.startgreenshot=启动{#ExeName}
cn.startup=让{#ExeName}随Windows一起启动
[Types]
Name: "default"; Description: "{cm:default}"
Name: "full"; Description: "{code:FullInstall}"
Name: "compact"; Description: "{code:CompactInstall}"
Name: "custom"; Description: "{code:CustomInstall}"; Flags: iscustom
[Components]
Name: "greenshot"; Description: "Greenshot"; Types: default full compact custom; Flags: fixed
Name: "plugins\office"; Description: {cm:office}; Types: default full custom; Flags: disablenouninstallwarning
Name: "plugins\ocr"; Description: {cm:ocr}; Types: default full custom; Flags: disablenouninstallwarning
Name: "plugins\jira"; Description: {cm:jira}; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\imgur"; Description: {cm:imgur}; Types: default full custom; Flags: disablenouninstallwarning
Name: "plugins\confluence"; Description: {cm:confluence}; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\externalcommand"; Description: {cm:externalcommand}; Types: default full custom; Flags: disablenouninstallwarning
;Name: "plugins\networkimport"; Description: "Network Import Plugin"; Types: full
Name: "plugins\box"; Description: "Box Plugin"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\dropbox"; Description: "Dropbox Plugin"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\flickr"; Description: "Flickr Plugin"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\picasa"; Description: "Picasa Plugin"; Types: full custom; Flags: disablenouninstallwarning
Name: "plugins\photobucket"; Description: "Photobucket Plugin"; Types: full custom; Flags: disablenouninstallwarning
Name: "languages"; Description: {cm:language}; Types: full custom; Flags: disablenouninstallwarning
Name: "languages\arSY"; Description: "العربية"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('d')
Name: "languages\csCZ"; Description: "Ceština"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\daDK"; Description: "Dansk"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\dexfranconia"; Description: "Frängisch (Deutsch)"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\elGR"; Description: "ελληνικά"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('4')
Name: "languages\esES"; Description: "Español"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\faIR"; Description: "پارسی"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('d')
Name: "languages\fiFI"; Description: "Suomi"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\frFR"; Description: "Français"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\frQC"; Description: "Français - Québec"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\heIL"; Description: "עִבְרִית"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('c')
Name: "languages\huHU"; Description: "Magyar"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\idID"; Description: "Bahasa Indonesia"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\itIT"; Description: "Italiano"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\jaJP"; Description: "日本語"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('7')
Name: "languages\koKR"; Description: "한국의"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('8')
Name: "languages\ltLT"; Description: "Lietuvių"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('3')
Name: "languages\myMM"; Description: "မြန်မာစာ"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('b')
Name: "languages\nnNO"; Description: "Nynorsk"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\plPL"; Description: "Polski"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\ptBR"; Description: "Português do Brasil"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\ptPT"; Description: "Português de Portugal"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\ruRU"; Description: "Pусский"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('5')
Name: "languages\roRO"; Description: "Română"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\skSK"; Description: "Slovenčina"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\slSI"; Description: "Slovenščina"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\srRS"; Description: "Српски"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('5')
Name: "languages\svSE"; Description: "Svenska"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\trTR"; Description: "Türk"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('6')
Name: "languages\ukUA"; Description: "Українська"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('5')
Name: "languages\viVN"; Description: "Việt"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('e')
Name: "languages\zhCN"; Description: "简体中文"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('a')
Name: "languages\zhTW"; Description: "繁體中文"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('9')
[Code]
// Do we have a regular user trying to install this?
function IsRegularUser(): Boolean;
begin
Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;
// The following code is used to select the installation path, this is localappdata if non poweruser
function DefDirRoot(Param: String): String;
begin
if IsRegularUser then
Result := ExpandConstant('{localappdata}')
else
Result := ExpandConstant('{pf}')
end;
function FullInstall(Param : String) : String;
begin
result := SetupMessage(msgFullInstallation);
end;
function CustomInstall(Param : String) : String;
begin
result := SetupMessage(msgCustomInstallation);
end;
function CompactInstall(Param : String) : String;
begin
result := SetupMessage(msgCompactInstallation);
end;
/////////////////////////////////////////////////////////////////////
// The following uninstall code was found at:
// http://stackoverflow.com/questions/2000296/innosetup-how-to-automatically-uninstall-previous-installed-version
// and than modified to work in a 32/64 bit environment
/////////////////////////////////////////////////////////////////////
function GetUninstallStrings(): array of String;
var
sUnInstPath: String;
sUnInstallString: String;
asUninstallStrings : array of String;
index : Integer;
begin
sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
sUnInstallString := '';
index := 0;
// Retrieve uninstall string from HKLM32 or HKCU32
if RegQueryStringValue(HKLM32, sUnInstPath, 'UninstallString', sUnInstallString) then
begin
SetArrayLength(asUninstallStrings, index + 1);
asUninstallStrings[index] := sUnInstallString;
index := index +1;
end;
if RegQueryStringValue(HKCU32, sUnInstPath, 'UninstallString', sUnInstallString) then
begin
SetArrayLength(asUninstallStrings, index + 1);
asUninstallStrings[index] := sUnInstallString;
index := index +1;
end;
// Only for Windows with 64 bit support: Retrieve uninstall string from HKLM64 or HKCU64
if IsWin64 then
begin
if RegQueryStringValue(HKLM64, sUnInstPath, 'UninstallString', sUnInstallString) then
begin
SetArrayLength(asUninstallStrings, index + 1);
asUninstallStrings[index] := sUnInstallString;
index := index +1;
end;
if RegQueryStringValue(HKCU64, sUnInstPath, 'UninstallString', sUnInstallString) then
begin
SetArrayLength(asUninstallStrings, index + 1);
asUninstallStrings[index] := sUnInstallString;
index := index +1;
end;
end;
Result := asUninstallStrings;
end;
/////////////////////////////////////////////////////////////////////
procedure UnInstallOldVersions();
var
sUnInstallString: String;
index: Integer;
isUninstallMade: Boolean;
iResultCode : Integer;
asUninstallStrings : array of String;
begin
isUninstallMade := false;
asUninstallStrings := GetUninstallStrings();
for index := 0 to (GetArrayLength(asUninstallStrings) -1) do
begin
sUnInstallString := RemoveQuotes(asUninstallStrings[index]);
if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
isUninstallMade := true;
end;
// Wait a few seconds to prevent installation issues, otherwise files are removed in one process while the other tries to link to them
if (isUninstallMade) then
Sleep(2000);
end;
/////////////////////////////////////////////////////////////////////
procedure CurStepChanged(CurStep: TSetupStep);
begin
if (CurStep=ssInstall) then
begin
UnInstallOldVersions();
end;
end;
/////////////////////////////////////////////////////////////////////
// End of unstall code
/////////////////////////////////////////////////////////////////////
// Build a list of greenshot parameters from the supplied installer parameters
function GetParamsForGS(argument: String): String;
var
i: Integer;
parametersString: String;
currentParameter: String;
foundStart: Boolean;
foundNoRun: Boolean;
foundLanguage: Boolean;
begin
foundNoRun := false;
foundLanguage := false;
foundStart := false;
for i:= 0 to ParamCount() do begin
currentParameter := ParamStr(i);
// check if norun is supplied
if Lowercase(currentParameter) = '/norun' then begin
foundNoRun := true;
continue;
end;
if foundStart then begin
parametersString := parametersString + ' ' + currentParameter;
foundStart := false;
end
else begin
if Lowercase(currentParameter) = '/language' then begin
foundStart := true;
foundLanguage := true;
parametersString := parametersString + ' ' + currentParameter;
end;
end;
end;
if not foundLanguage then begin
parametersString := parametersString + ' /language ' + ExpandConstant('{language}');
end;
if foundNoRun then begin
parametersString := parametersString + ' /norun';
end;
// For debugging comment out the following
//MsgBox(parametersString, mbInformation, MB_OK);
Result := parametersString;
end;
// Check if language group is installed
function hasLanguageGroup(argument: String): Boolean;
var
keyValue: String;
returnValue: Boolean;
begin
returnValue := true;
if (RegQueryStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Nls\Language Groups', argument, keyValue)) then begin
if Length(keyValue) = 0 then begin
returnValue := false;
end;
end;
Result := returnValue;
end;
function hasDotNet(version: string; service: cardinal): Boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
// 'v1.1.4322' .NET Framework 1.1
// 'v2.0.50727' .NET Framework 2.0
// 'v3.0' .NET Framework 3.0
// 'v3.5' .NET Framework 3.5
// 'v4\Client' .NET Framework 4.0 Client Profile
// 'v4\Full' .NET Framework 4.0 Full Installation
//
// service -- Specify any non-negative integer for the required service pack level:
// 0 No service packs required
// 1, 2, etc. Service pack 1, 2, etc. required
var
key: string;
install, serviceCount: cardinal;
success: boolean;
begin
key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;
// .NET 3.0 uses value InstallSuccess in subkey Setup
if Pos('v3.0', version) = 1 then begin
success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
end else begin
success := RegQueryDWordValue(HKLM, key, 'Install', install);
end;
// .NET 4.0 uses value Servicing instead of SP
if Pos('v4', version) = 1 then begin
success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
end else begin
success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
end;
result := success and (install = 1) and (serviceCount >= service);
end;
function hasDotNet40() : boolean;
begin
Result := hasDotNet('v4\Client',0) or hasDotNet('v4\Full',0);
end;
function getNGENPath(argument: String) : String;
var
installPath: string;
begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.5\Client', 'InstallPath', installPath) then begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.5\Full', 'InstallPath', installPath) then begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', 'InstallPath', installPath) then begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'InstallPath', installPath) then begin
// 3.5 doesn't have NGEN and is using the .net 2.0 installation
installPath := ExpandConstant('{dotnet20}');
end;
end;
end;
end;
Result := installPath;
end;
// Initialize the setup
function InitializeSetup(): Boolean;
begin
// Only check for 2.0 and install if we don't have .net 3.5 or higher
if not hasDotNet40() then
begin
end;
Result := true;
end;
[Run]
Filename: "{code:getNGENPath}\ngen.exe"; Parameters: "install ""{app}\{#ExeName}.exe"""; StatusMsg: "{cm:optimize}"; Flags: runhidden runasoriginaluser
Filename: "{code:getNGENPath}\ngen.exe"; Parameters: "install ""{app}\GreenshotPlugin.dll"""; StatusMsg: "{cm:optimize}"; Flags: runhidden runasoriginaluser
Filename: "{app}\{#ExeName}.exe"; Description: "{cm:startgreenshot}"; Parameters: "{code:GetParamsForGS}"; WorkingDir: "{app}"; Flags: nowait postinstall runasoriginaluser
Filename: "http://getgreenshot.org/thank-you/?language={language}&version={#Version}"; Flags: shellexec runasoriginaluser
[InstallDelete]
Name: {app}; Type: filesandordirs;
[UninstallRun]
Filename: "{code:GetNGENPath}\ngen.exe"; Parameters: "uninstall ""{app}\{#ExeName}.exe"""; StatusMsg: "Cleanup"; Flags: runhidden
Filename: "{code:GetNGENPath}\ngen.exe"; Parameters: "uninstall ""{app}\GreenshotPlugin.dll"""; StatusMsg: "Cleanup"; Flags: runhidden

View file

@ -1,16 +1,16 @@
#define ExeName "Greenshot" #define ExeName "Greenshot"
#define Version "1.1.4.$WCREV$" #define Version "1.1.6.$WCREV$"
; Include the scripts to install .NET Framework 2.0 ; Include the scripts to install .NET Framework
; See http://www.codeproject.com/KB/install/dotnetfx_innosetup_instal.aspx ; See http://www.codeproject.com/KB/install/dotnetfx_innosetup_instal.aspx
#include "scripts\products.iss" #include "scripts\products.iss"
#include "scripts\products\stringversion.iss"
#include "scripts\products\winversion.iss" #include "scripts\products\winversion.iss"
#include "scripts\products\fileversion.iss" #include "scripts\products\fileversion.iss"
#include "scripts\products\msi20.iss" #include "scripts\products\msi20.iss"
#include "scripts\products\msi31.iss" #include "scripts\products\msi31.iss"
#include "scripts\products\dotnetfx20.iss" #include "scripts\products\dotnetfxversion.iss"
#include "scripts\products\dotnetfx20sp1.iss" #include "scripts\products\dotnetfx35sp1.iss"
#include "scripts\products\dotnetfx20sp2.iss"
[Files] [Files]
Source: ..\..\bin\Release\Greenshot.exe; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion Source: ..\..\bin\Release\Greenshot.exe; DestDir: {app}; Components: greenshot; Flags: overwritereadonly ignoreversion replacesameversion
@ -36,6 +36,7 @@ Source: ..\..\Languages\*da-DK*; Excludes: "*installer*,*website*"; DestDir: {ap
Source: ..\..\Languages\*de-x-franconia*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\dexfranconia; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*de-x-franconia*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\dexfranconia; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*el-GR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\elGR; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*el-GR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\elGR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*es-ES*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\esES; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*es-ES*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\esES; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*et-EE*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\etEE; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fa-IR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\faIR; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*fa-IR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\faIR; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fi-FI*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\fiFI; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*fi-FI*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\fiFI; Flags: overwritereadonly ignoreversion replacesameversion;
Source: ..\..\Languages\*fr-FR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\frFR; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\Languages\*fr-FR*; Excludes: "*installer*,*website*"; DestDir: {app}\Languages; Components: languages\frFR; Flags: overwritereadonly ignoreversion replacesameversion;
@ -68,6 +69,7 @@ Source: ..\..\bin\Release\Plugins\GreenshotOfficePlugin\GreenshotOfficePlugin.gs
;OCR Plugin ;OCR Plugin
Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRPlugin.gsp; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion; Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRPlugin.gsp; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRCommand.exe; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion; Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRCommand.exe; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Plugins\GreenshotOCRPlugin\GreenshotOCRCommand.exe.config; DestDir: {app}\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
Source: ..\..\bin\Release\Languages\Plugins\GreenshotOCRPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly ignoreversion replacesameversion; Source: ..\..\bin\Release\Languages\Plugins\GreenshotOCRPlugin\*; DestDir: {app}\Languages\Plugins\GreenshotOCRPlugin; Components: plugins\ocr; Flags: overwritereadonly ignoreversion replacesameversion;
;JIRA Plugin ;JIRA Plugin
Source: ..\..\bin\Release\Plugins\GreenshotJiraPlugin\GreenshotJiraPlugin.gsp; DestDir: {app}\Plugins\GreenshotJiraPlugin; Components: plugins\jira; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion; Source: ..\..\bin\Release\Plugins\GreenshotJiraPlugin\GreenshotJiraPlugin.gsp; DestDir: {app}\Plugins\GreenshotJiraPlugin; Components: plugins\jira; Flags: overwritereadonly recursesubdirs ignoreversion replacesameversion;
@ -149,11 +151,7 @@ Root: HKLM; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: "
Root: HKLM; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser Root: HKLM; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
Root: HKLM; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "{app}\Greenshot.EXE,0"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser Root: HKLM; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "{app}\Greenshot.EXE,0"; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
Root: HKLM; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror; Check: not IsRegularUser Root: HKLM; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror; Check: not IsRegularUser
; Register our own filetype for normal user
Root: HKCU; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: "{app}\Greenshot.EXE,0"; Flags: uninsdeletevalue noerror; Check: IsRegularUser
Root: HKCU; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror; Check: IsRegularUser
[Icons] [Icons]
Name: {group}\{#ExeName}; Filename: {app}\{#ExeName}.exe; WorkingDir: {app} Name: {group}\{#ExeName}; Filename: {app}\{#ExeName}.exe; WorkingDir: {app}
Name: {group}\Uninstall {#ExeName}; Filename: {uninstallexe}; WorkingDir: {app}; AppUserModelID: "{#ExeName}.{#ExeName}" Name: {group}\Uninstall {#ExeName}; Filename: {uninstallexe}; WorkingDir: {app}; AppUserModelID: "{#ExeName}.{#ExeName}"
@ -169,6 +167,7 @@ Name: fr; MessagesFile: compiler:Languages\French.isl
Name: nl; MessagesFile: compiler:Languages\Dutch.isl Name: nl; MessagesFile: compiler:Languages\Dutch.isl
Name: nn; MessagesFile: compiler:Languages\NorwegianNynorsk.isl Name: nn; MessagesFile: compiler:Languages\NorwegianNynorsk.isl
Name: sr; MessagesFile: compiler:Languages\SerbianCyrillic.isl Name: sr; MessagesFile: compiler:Languages\SerbianCyrillic.isl
Name: uk; MessagesFile: compiler:Languages\Ukrainian.isl
[Tasks] [Tasks]
Name: startup; Description: {cm:startup} Name: startup; Description: {cm:startup}
@ -269,6 +268,17 @@ sr.optimize=Оптимизујем перформансе…
sr.startgreenshot=Покрени Гриншот sr.startgreenshot=Покрени Гриншот
sr.startup=Покрени програм са системом sr.startup=Покрени програм са системом
uk.confluence=Плагін Confluence
uk.default=${default}
uk.externalcommand=Відкрити з плагіном зовнішніх команд
uk.imgur=Плагін Imgur (див.: http://imgur.com)
uk.jira=Плагін Jira
uk.language=Додаткові мови
uk.ocr=Плагін OCR (потребує Microsoft Office Document Imaging (MODI))
uk.optimize=Оптимізація продуктивності, це може забрати час.
uk.startgreenshot=Запустити {#ExeName}
uk.startup=Запускати {#ExeName} під час запуску Windows
cn.confluence=Confluence插件 cn.confluence=Confluence插件
cn.default=${default} cn.default=${default}
cn.externalcommand=使用外部命令打开插件 cn.externalcommand=使用外部命令打开插件
@ -308,6 +318,7 @@ Name: "languages\daDK"; Description: "Dansk"; Types: full custom; Flags: disable
Name: "languages\dexfranconia"; Description: "Frängisch (Deutsch)"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1') Name: "languages\dexfranconia"; Description: "Frängisch (Deutsch)"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\elGR"; Description: "ελληνικά"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('4') Name: "languages\elGR"; Description: "ελληνικά"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('4')
Name: "languages\esES"; Description: "Español"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1') Name: "languages\esES"; Description: "Español"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\etEE"; Description: "Eesti"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('2')
Name: "languages\faIR"; Description: "پارسی"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('d') Name: "languages\faIR"; Description: "پارسی"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('d')
Name: "languages\fiFI"; Description: "Suomi"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1') Name: "languages\fiFI"; Description: "Suomi"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
Name: "languages\frFR"; Description: "Français"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1') Name: "languages\frFR"; Description: "Français"; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('1')
@ -512,73 +523,25 @@ begin
Result := returnValue; Result := returnValue;
end; end;
function hasDotNet(version: string; service: cardinal): Boolean; function hasDotNet() : boolean;
// Indicates whether the specified version and service pack of the .NET Framework is installed.
//
// version -- Specify one of these strings for the required .NET Framework version:
// 'v1.1.4322' .NET Framework 1.1
// 'v2.0.50727' .NET Framework 2.0
// 'v3.0' .NET Framework 3.0
// 'v3.5' .NET Framework 3.5
// 'v4\Client' .NET Framework 4.0 Client Profile
// 'v4\Full' .NET Framework 4.0 Full Installation
//
// service -- Specify any non-negative integer for the required service pack level:
// 0 No service packs required
// 1, 2, etc. Service pack 1, 2, etc. required
var
key: string;
install, serviceCount: cardinal;
success: boolean;
begin begin
key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version; // .NET 4.5 = 4.0 full (with a "Release" key, but this is not interresting!)
// .NET 3.0 uses value InstallSuccess in subkey Setup Result := netfxinstalled(NetFX20, '') or netfxinstalled(NetFX30, '') or netfxinstalled(NetFX35, '') or netfxinstalled(NetFX40Client, '') or netfxinstalled(NetFX40Full, '');
if Pos('v3.0', version) = 1 then begin
success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
end else begin
success := RegQueryDWordValue(HKLM, key, 'Install', install);
end;
// .NET 4.0 uses value Servicing instead of SP
if Pos('v4', version) = 1 then begin
success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
end else begin
success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
end;
result := success and (install = 1) and (serviceCount >= service);
end;
function hasDotNet20() : boolean;
begin
Result := hasDotNet('v2.0.50727',0);
end;
function hasDotNet40() : boolean;
begin
Result := hasDotNet('v4\Client',0) or hasDotNet('v4\Full',0);
end; end;
function hasDotNet35FullOrHigher() : boolean; function hasDotNet35FullOrHigher() : boolean;
begin begin
Result := hasDotNet('v3.5',0) or hasDotNet('v4\Full',0) or hasDotNet('4.5\Full',0); Result := netfxinstalled(NetFX35, '') or netfxinstalled(NetFX40Full, '');
end;
function hasDotNet35OrHigher() : boolean;
begin
Result := hasDotNet('v3.5',0) or hasDotNet('v4\Client',0) or hasDotNet('v4\Full',0) or hasDotNet('4.5\Client',0) or hasDotNet('4.5\Full',0);
end; end;
function getNGENPath(argument: String) : String; function getNGENPath(argument: String) : String;
var var
installPath: string; installPath: string;
begin begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.5\Client', 'InstallPath', installPath) then begin if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'InstallPath', installPath) then begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.5\Full', 'InstallPath', installPath) then begin if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', 'InstallPath', installPath) then begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', 'InstallPath', installPath) then begin // 3.5 doesn't have NGEN and is using the .net 2.0 installation
if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'InstallPath', installPath) then begin installPath := ExpandConstant('{dotnet20}');
// 3.5 doesn't have NGEN and is using the .net 2.0 installation
installPath := ExpandConstant('{dotnet20}');
end;
end;
end; end;
end; end;
Result := installPath; Result := installPath;
@ -587,24 +550,15 @@ end;
// Initialize the setup // Initialize the setup
function InitializeSetup(): Boolean; function InitializeSetup(): Boolean;
begin begin
// Only check for 2.0 and install if we don't have .net 3.5 or higher // Check for .NET and install 3.5 if we don't have it
if not hasDotNet35OrHigher() then if not hasDotNet() then
begin begin
// Enhance installer otherwise .NET installations won't work // Enhance installer, if needed, otherwise .NET installations won't work
msi20('2.0'); msi20('2.0');
msi31('3.0'); msi31('3.0');
//install .netfx 2.0 sp2 if possible; if not sp1 if possible; if not .netfx 2.0 //install .net 3.5
if minwinversion(5, 1) then begin dotnetfx35sp1();
dotnetfx20sp2();
end else begin
if minwinversion(5, 0) and minwinspversion(5, 0, 4) then begin
// kb835732();
dotnetfx20sp1();
end else begin
dotnetfx20();
end;
end;
end; end;
Result := true; Result := true;
end; end;

View file

@ -23,6 +23,6 @@ del /s *.bak
del /s *installer*.xml del /s *installer*.xml
del /s *website*.xml del /s *website*.xml
del /s *template.txt del /s *template.txt
..\..\tools\7zip\7za.exe a -x!.SVN -r ..\Greenshot-NO-INSTALLER-1.1.4.$WCREV$.zip * ..\..\tools\7zip\7za.exe a -x!.SVN -r ..\Greenshot-NO-INSTALLER-1.1.6.$WCREV$.zip *
cd .. cd ..
rmdir /s /q NO-INSTALLER rmdir /s /q NO-INSTALLER

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 2 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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -8,7 +8,7 @@ AppID=PortableApps.comInstaller
Publisher=PortableApps.com Publisher=PortableApps.com
Homepage=PortableApps.com/go/PortableApps.comInstaller Homepage=PortableApps.com/go/PortableApps.comInstaller
Category=Development Category=Development
Description=Create PortableApps.com Format installers for portable apps Description=PortableApps.com Format installer creator
Language=Multilingual Language=Multilingual
[License] [License]
@ -18,8 +18,8 @@ Freeware=true
CommercialUse=true CommercialUse=true
[Version] [Version]
PackageVersion=3.0.5.0 PackageVersion=3.0.6.0
DisplayVersion=3.0.5 DisplayVersion=3.0.6
[Control] [Control]
Icons=1 Icons=1

View file

@ -1,4 +1,4 @@
;Copyright 2007-2012 John T. Haller of PortableApps.com ;Copyright 2007-2013 John T. Haller of PortableApps.com
;Website: http://PortableApps.com/ ;Website: http://PortableApps.com/
;This software is OSI Certified Open Source Software. ;This software is OSI Certified Open Source Software.
@ -24,8 +24,8 @@
;as published at PortableApps.com/development. It may also be used with commercial ;as published at PortableApps.com/development. It may also be used with commercial
;software by contacting PortableApps.com. ;software by contacting PortableApps.com.
!define PORTABLEAPPSINSTALLERVERSION "3.0.5.0" !define PORTABLEAPPSINSTALLERVERSION "3.0.6.0"
!define PORTABLEAPPS.COMFORMATVERSION "3.0.5" !define PORTABLEAPPS.COMFORMATVERSION "3.0.6"
!if ${__FILE__} == "PortableApps.comInstallerPlugin.nsi" !if ${__FILE__} == "PortableApps.comInstallerPlugin.nsi"
!include PortableApps.comInstallerPluginConfig.nsh !include PortableApps.comInstallerPluginConfig.nsh
@ -279,6 +279,7 @@ Var MINIMIZEINSTALLER
Var DOWNLOADEDFILE Var DOWNLOADEDFILE
Var DOWNLOADALREADYEXISTED Var DOWNLOADALREADYEXISTED
Var SECONDDOWNLOADATTEMPT Var SECONDDOWNLOADATTEMPT
Var DownloadURLActual
!endif !endif
Var INTERNALEULAVERSION Var INTERNALEULAVERSION
Var InstallingStatusString Var InstallingStatusString
@ -908,6 +909,7 @@ FunctionEnd
${If} $DOWNLOADALREADYEXISTED == "true" ${If} $DOWNLOADALREADYEXISTED == "true"
StrCpy $DOWNLOADEDFILE "$EXEDIR\${DownloadFileName}" StrCpy $DOWNLOADEDFILE "$EXEDIR\${DownloadFileName}"
${Else} ${Else}
StrCpy $DownloadURLActual ${DownloadURL}
DownloadTheFile: DownloadTheFile:
CreateDirectory `$PLUGINSDIR\Downloaded` CreateDirectory `$PLUGINSDIR\Downloaded`
SetDetailsPrint both SetDetailsPrint both
@ -922,9 +924,9 @@ FunctionEnd
Delete "$PLUGINSDIR\Downloaded\${DownloadFilename}" Delete "$PLUGINSDIR\Downloaded\${DownloadFilename}"
${If} $(downloading) != "" ${If} $(downloading) != ""
inetc::get /CONNECTTIMEOUT 30 /NOCOOKIES /TRANSLATE $(downloading) $(downloadconnecting) $(downloadsecond) $(downloadminute) $(downloadhour) $(downloadplural) "%dkB (%d%%) of %dkB @ %d.%01dkB/s" " (%d %s%s $(downloadremaining))" "${DownloadURL}" "$PLUGINSDIR\Downloaded\${DownloadName}" /END inetc::get /CONNECTTIMEOUT 30 /NOCOOKIES /TRANSLATE $(downloading) $(downloadconnecting) $(downloadsecond) $(downloadminute) $(downloadhour) $(downloadplural) "%dkB (%d%%) of %dkB @ %d.%01dkB/s" " (%d %s%s $(downloadremaining))" "$DownloadURLActual" "$PLUGINSDIR\Downloaded\${DownloadName}" /END
${Else} ${Else}
inetc::get /CONNECTTIMEOUT 30 /NOCOOKIES /TRANSLATE "Downloading %s..." "Connecting..." second minute hour s "%dkB (%d%%) of %dkB @ %d.%01dkB/s" " (%d %s%s remaining)" "${DownloadURL}" "$PLUGINSDIR\Downloaded\${DownloadName}" /END inetc::get /CONNECTTIMEOUT 30 /NOCOOKIES /TRANSLATE "Downloading %s..." "Connecting..." second minute hour s "%dkB (%d%%) of %dkB @ %d.%01dkB/s" " (%d %s%s remaining)" "$DownloadURLActual" "$PLUGINSDIR\Downloaded\${DownloadName}" /END
${EndIf} ${EndIf}
SetDetailsPrint both SetDetailsPrint both
DetailPrint $InstallingStatusString DetailPrint $InstallingStatusString
@ -961,13 +963,22 @@ FunctionEnd
${EndIf} ${EndIf}
!endif !endif
${Else} ${Else}
Delete "$INTERNET_CACHE\${DownloadFileName}"
Delete "$PLUGINSDIR\Downloaded\${DownloadFilename}"
StrCpy $0 $DownloadURLActual
;Use backup PA.c download server if necessary
${WordFind} "$DownloadURLActual" "http://download2.portableapps.com" "#" $R0
${If} $R0 == 1
${WordReplace} "$DownloadURLActual" "http://download2.portableapps.com" "http://download.portableapps.com" "+" $DownloadURLActual
Goto DownloadTheFile
${EndIf}
${If} $SECONDDOWNLOADATTEMPT != true ${If} $SECONDDOWNLOADATTEMPT != true
${AndIf} $DOWNLOADRESULT != "Cancelled" ${AndIf} $DOWNLOADRESULT != "Cancelled"
StrCpy $SECONDDOWNLOADATTEMPT true StrCpy $SECONDDOWNLOADATTEMPT true
Goto DownloadTheFile Goto DownloadTheFile
${EndIf} ${EndIf}
Delete "$INTERNET_CACHE\${DownloadFileName}"
Delete "$PLUGINSDIR\Downloaded\${DownloadFilename}"
SetDetailsPrint textonly SetDetailsPrint textonly
DetailPrint "" DetailPrint ""
SetDetailsPrint listonly SetDetailsPrint listonly

View file

@ -1,4 +1,4 @@
;Copyright (C) 2006-2012 John T. Haller ;Copyright (C) 2006-2013 John T. Haller
;Website: http://PortableApps.com/Installer ;Website: http://PortableApps.com/Installer
@ -20,9 +20,9 @@
;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
!define APPNAME "PortableApps.com Installer" !define APPNAME "PortableApps.com Installer"
!define VER "3.0.5.0" !define VER "3.0.6.0"
!define WEBSITE "PortableApps.com/Installer" !define WEBSITE "PortableApps.com/Installer"
!define FRIENDLYVER "3.0.5" !define FRIENDLYVER "3.0.6"
!define PORTABLEAPPS.COMFORMATVERSION "3.0" !define PORTABLEAPPS.COMFORMATVERSION "3.0"
;=== Program Details ;=== Program Details

View file

@ -1,44 +0,0 @@
/* CMU libsasl
* Tim Martin
* Rob Earhart
* Rob Siemborski
*/
/*
* Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The name "Carnegie Mellon University" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For permission or any other legal
* details, please contact
* Office of Technology Transfer
* Carnegie Mellon University
* 5000 Forbes Avenue
* Pittsburgh, PA 15213-3890
* (412) 268-4387, fax: (412) 268-7395
* tech-transfer@andrew.cmu.edu
*
* 4. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Computing Services
* at Carnegie Mellon University (http://www.cmu.edu/computing/)."
*
* CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

View file

@ -1,127 +0,0 @@
LICENSE ISSUES
==============
The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
the OpenSSL License and the original SSLeay license apply to the toolkit.
See below for the actual license texts. Actually both licenses are BSD-style
Open Source licenses. In case of any license issues related to OpenSSL
please contact openssl-core@openssl.org.
OpenSSL License
---------------
/* ====================================================================
* Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
Original SSLeay License
-----------------------
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/

View file

@ -1,47 +0,0 @@
/* ================================================================
* Copyright (c) 2000-2009 CollabNet. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by
* CollabNet (http://www.Collab.Net/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The hosted project names must not be used to endorse or promote
* products derived from this software without prior written
* permission. For written permission, please contact info@collab.net.
*
* 5. Products derived from this software may not use the "Tigris" name
* nor may "Tigris" appear in their names without prior written
* permission of CollabNet.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of CollabNet.
*/

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 2 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, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -37,6 +37,9 @@ namespace GreenshotBoxPlugin {
[IniProperty("AfterUploadLinkToClipBoard", Description = "After upload send Box link to clipboard.", DefaultValue = "true")] [IniProperty("AfterUploadLinkToClipBoard", Description = "After upload send Box link to clipboard.", DefaultValue = "true")]
public bool AfterUploadLinkToClipBoard; public bool AfterUploadLinkToClipBoard;
[IniProperty("UseSharedLink", Description = "Use the shared link, instead of the private, on the clipboard", DefaultValue = "True")]
public bool UseSharedLink;
[IniProperty("BoxToken", Description = "Token.", DefaultValue = "")] [IniProperty("BoxToken", Description = "Token.", DefaultValue = "")]
public string BoxToken; public string BoxToken;

View file

@ -26,6 +26,7 @@ namespace GreenshotBoxPlugin {
/// Copy this file to BoxCredentials.private.cs and fill in valid credentials. (Or empty strings, but of course you won't be able to use the plugin then.) /// Copy this file to BoxCredentials.private.cs and fill in valid credentials. (Or empty strings, but of course you won't be able to use the plugin then.)
/// </summary> /// </summary>
public static class BoxCredentials { public static class BoxCredentials {
public static string API_KEY = empty; public static string ClientId = string.Empty;
public static string ClientSecret = string.Empty;
} }
} }

View file

@ -0,0 +1,59 @@
/*
* Greenshot - a free and open source screenshot tool
* Copyright (C) 2007-2013 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
*
* For more information see: http://getgreenshot.org/
* The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.Collections.Generic;
using System.Runtime.Serialization;
namespace GreenshotBoxPlugin {
[DataContract]
public class Authorization {
[DataMember(Name = "access_token")]
public string AccessToken { get; set; }
[DataMember(Name = "expires_in")]
public int ExpiresIn { get; set; }
[DataMember(Name = "refresh_token")]
public string RefreshToken { get; set; }
[DataMember(Name = "token_type")]
public string TokenType { get; set; }
}
[DataContract]
public class SharedLink {
[DataMember(Name = "url")]
public string Url { get; set; }
[DataMember(Name = "download_url")]
public string DownloadUrl { get; set; }
}
[DataContract]
public class FileEntry {
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "shared_link")]
public SharedLink SharedLink { get; set; }
}
[DataContract]
public class Upload {
[DataMember(Name = "entries")]
public List<FileEntry> Entries { get; set; }
}
}

View file

@ -144,7 +144,7 @@ namespace GreenshotBoxPlugin {
return url; return url;
} catch (Exception ex) { } catch (Exception ex) {
LOG.Error("Error uploading.", ex); LOG.Error("Error uploading.", ex);
MessageBox.Show(Language.GetString("box", LangKey.upload_failure) + " " + ex.ToString()); MessageBox.Show(Language.GetString("box", LangKey.upload_failure) + " " + ex.Message);
return null; return null;
} }
} }

View file

@ -22,111 +22,217 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Net; using System.Net;
using System.Xml; using System.Text;
using Greenshot.IniFile; using Greenshot.IniFile;
using GreenshotPlugin.Controls; using GreenshotPlugin.Controls;
using GreenshotPlugin.Core; using GreenshotPlugin.Core;
using System.Runtime.Serialization.Json;
using System.IO;
namespace GreenshotBoxPlugin { namespace GreenshotBoxPlugin {
/// <summary> /// <summary>
/// Description of ImgurUtils. /// Description of ImgurUtils.
/// </summary> /// </summary>
public class BoxUtils { public static class BoxUtils {
private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(BoxUtils)); private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(BoxUtils));
private static BoxConfiguration config = IniConfig.GetIniSection<BoxConfiguration>(); private static readonly BoxConfiguration Config = IniConfig.GetIniSection<BoxConfiguration>();
private const string RedirectUri = "https://app.box.com/home/";
private BoxUtils() { private const string UploadFileUri = "https://upload.box.com/api/2.0/files/content";
} private const string AuthorizeUri = "https://www.box.com/api/oauth2/authorize";
private const string TokenUri = "https://www.box.com/api/oauth2/token";
private static string ParseTicket(string response) { private const string FilesUri = "https://www.box.com/api/2.0/files/{0}";
try {
XmlDocument doc = new XmlDocument();
doc.LoadXml(response);
XmlNodeList nodes = doc.GetElementsByTagName("ticket");
if(nodes.Count > 0) {
return nodes.Item(0).InnerText;
}
} catch (Exception ex) {
LOG.Error("Error parsing Box Response.", ex);
}
return null;
}
private static bool Authorize() { private static bool Authorize() {
string ticketUrl = string.Format("https://www.box.com/api/1.0/rest?action=get_ticket&api_key={0}", BoxCredentials.API_KEY); string authorizeUrl = string.Format("{0}?client_id={1}&response_type=code&state=dropboxplugin&redirect_uri={2}", AuthorizeUri, BoxCredentials.ClientId, RedirectUri);
string ticketXML = NetworkHelper.GetAsString(new Uri(ticketUrl));
string ticket = ParseTicket(ticketXML); OAuthLoginForm loginForm = new OAuthLoginForm("Box Authorize", new Size(1060, 600), authorizeUrl, RedirectUri);
string authorizeUrl = string.Format("https://www.box.com/api/1.0/auth/{0}", ticket);
OAuthLoginForm loginForm = new OAuthLoginForm("Box Authorize", new Size(1060,600), authorizeUrl, "http://getgreenshot.org");
loginForm.ShowDialog(); loginForm.ShowDialog();
if (loginForm.isOk) { if (!loginForm.isOk) {
if (loginForm.CallbackParameters != null && loginForm.CallbackParameters.ContainsKey("auth_token")) { return false;
config.BoxToken = loginForm.CallbackParameters["auth_token"];
IniConfig.Save();
return true;
}
} }
return false; var callbackParameters = loginForm.CallbackParameters;
if (callbackParameters == null || !callbackParameters.ContainsKey("code")) {
return false;
}
string authorizationResponse = PostAndReturn(new Uri(TokenUri), string.Format("grant_type=authorization_code&code={0}&client_id={1}&client_secret={2}", callbackParameters["code"], BoxCredentials.ClientId, BoxCredentials.ClientSecret));
var authorization = JSONSerializer.Deserialize<Authorization>(authorizationResponse);
Config.BoxToken = authorization.AccessToken;
IniConfig.Save();
return true;
} }
/// <summary> /// <summary>
/// Upload file by post /// Download a url response as string
/// </summary> /// </summary>
/// <param name="url"></param> /// <param name=url">An Uri to specify the download location</param>
/// <param name="parameters"></param> /// <returns>string with the file content</returns>
/// <returns>response</returns> public static string PostAndReturn(Uri url, string postMessage) {
public static string HttpUploadFile(string url, Dictionary<string, object> parameters) {
HttpWebRequest webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(url); HttpWebRequest webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(url);
webRequest.Method = "POST"; webRequest.Method = "POST";
webRequest.KeepAlive = true; webRequest.KeepAlive = true;
webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials; webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
webRequest.ContentType = "application/x-www-form-urlencoded";
byte[] data = Encoding.UTF8.GetBytes(postMessage.ToString());
using (var requestStream = webRequest.GetRequestStream()) {
requestStream.Write(data, 0, data.Length);
}
return NetworkHelper.GetResponse(webRequest);
}
/// <summary>
/// Upload parameters by post
/// </summary>
/// <param name="url"></param>
/// <param name="parameters"></param>
/// <returns>response</returns>
public static string HttpPost(string url, IDictionary<string, object> parameters) {
var webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(url);
webRequest.Method = "POST";
webRequest.KeepAlive = true;
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.Headers.Add("Authorization", "Bearer " + Config.BoxToken);
NetworkHelper.WriteMultipartFormData(webRequest, parameters); NetworkHelper.WriteMultipartFormData(webRequest, parameters);
return NetworkHelper.GetResponse(webRequest); return NetworkHelper.GetResponse(webRequest);
} }
/// <summary>
/// Upload file by PUT
/// </summary>
/// <param name="url"></param>
/// <param name="content"></param>
/// <returns>response</returns>
public static string HttpPut(string url, string content) {
var webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(url);
webRequest.Method = "PUT";
webRequest.KeepAlive = true;
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.Headers.Add("Authorization", "Bearer " + Config.BoxToken);
byte[] data = Encoding.UTF8.GetBytes(content);
using (var requestStream = webRequest.GetRequestStream()) {
requestStream.Write(data, 0, data.Length);
}
return NetworkHelper.GetResponse(webRequest);
}
/// <summary>
/// Get REST request
/// </summary>
/// <param name="url"></param>
/// <returns>response</returns>
public static string HttpGet(string url) {
var webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(url);
webRequest.Method = "GET";
webRequest.KeepAlive = true;
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.Headers.Add("Authorization", "Bearer " + Config.BoxToken);
return NetworkHelper.GetResponse(webRequest);
}
/// <summary> /// <summary>
/// Do the actual upload to Box /// Do the actual upload to Box
/// For more details on the available parameters, see: http://developers.box.net/w/page/12923951/ApiFunction_Upload%20and%20Download /// For more details on the available parameters, see: http://developers.box.net/w/page/12923951/ApiFunction_Upload%20and%20Download
/// </summary> /// </summary>
/// <param name="imageData">byte[] with image data</param> /// <param name="image">Image for box upload</param>
/// <param name="title">Title of box upload</param>
/// <param name="filename">Filename of box upload</param>
/// <returns>url to uploaded image</returns> /// <returns>url to uploaded image</returns>
public static string UploadToBox(SurfaceContainer image, string title, string filename) { public static string UploadToBox(SurfaceContainer image, string title, string filename) {
string folderId = "0"; while (true) {
if (string.IsNullOrEmpty(config.BoxToken)) { const string folderId = "0";
if (!Authorize()) { if (string.IsNullOrEmpty(Config.BoxToken)) {
return null; if (!Authorize()) {
} return null;
}
string strUrl = string.Format("https://upload.box.net/api/1.0/upload/{0}/{1}?file_name={2}&new_copy=1", config.BoxToken, folderId, filename);
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("share", "1");
parameters.Add("new_file", image);
string response = HttpUploadFile(strUrl, parameters);
// Check if the token is wrong
if ("wrong auth token".Equals(response)) {
config.BoxToken = null;
IniConfig.Save();
return UploadToBox(image, title, filename);
}
LOG.DebugFormat("Box response: {0}", response);
XmlDocument doc = new XmlDocument();
doc.LoadXml(response);
XmlNodeList nodes = doc.GetElementsByTagName("status");
if(nodes.Count > 0) {
if ("upload_ok".Equals(nodes.Item(0).InnerText)) {
nodes = doc.GetElementsByTagName("file");
if (nodes.Count > 0) {
long id = long.Parse(nodes.Item(0).Attributes["id"].Value);
return string.Format("http://www.box.com/files/0/f/0/1/f_{0}", id);
} }
} }
IDictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("filename", image);
parameters.Add("parent_id", folderId);
var response = "";
try {
response = HttpPost(UploadFileUri, parameters);
} catch (WebException ex) {
if (ex.Status == WebExceptionStatus.ProtocolError) {
Config.BoxToken = null;
continue;
}
}
LOG.DebugFormat("Box response: {0}", response);
// Check if the token is wrong
if ("wrong auth token".Equals(response)) {
Config.BoxToken = null;
IniConfig.Save();
continue;
}
var upload = JSONSerializer.Deserialize<Upload>(response);
if (upload == null || upload.Entries == null || upload.Entries.Count == 0) return null;
if (Config.UseSharedLink) {
string filesResponse = HttpPut(string.Format(FilesUri, upload.Entries[0].Id), "{\"shared_link\": {\"access\": \"open\"}}");
var file = JSONSerializer.Deserialize<FileEntry>(filesResponse);
return file.SharedLink.Url;
}
return string.Format("http://www.box.com/files/0/f/0/1/f_{0}", upload.Entries[0].Id);
}
}
}
/// <summary>
/// A simple helper class for the DataContractJsonSerializer
/// </summary>
public static class JSONSerializer {
/// <summary>
/// Helper method to serialize object to JSON
/// </summary>
/// <param name="jsonObject">JSON object</param>
/// <returns>string</returns>
public static string Serialize(object jsonObject) {
var serializer = new DataContractJsonSerializer(jsonObject.GetType());
using (MemoryStream stream = new MemoryStream()) {
serializer.WriteObject(stream, jsonObject);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
/// <summary>
/// Helper method to parse JSON to object
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public static T Deserialize<T>(string jsonString) {
var deserializer = new DataContractJsonSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream()) {
byte[] content = Encoding.UTF8.GetBytes(jsonString);
stream.Write(content, 0, content.Length);
stream.Seek(0, SeekOrigin.Begin);
return (T)deserializer.ReadObject(stream);
}
}
/// <summary>
/// Helper method to parse JSON to object
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public static T DeserializeWithDirectory<T>(string jsonString) {
DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings();
settings.UseSimpleDictionaryFormat = true;
var deserializer = new DataContractJsonSerializer(typeof(T), settings);
using (MemoryStream stream = new MemoryStream()) {
byte[] content = Encoding.UTF8.GetBytes(jsonString);
stream.Write(content, 0, content.Length);
stream.Seek(0, SeekOrigin.Begin);
return (T)deserializer.ReadObject(stream);
} }
return null;
} }
} }
} }

View file

@ -23,6 +23,7 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
@ -30,6 +31,7 @@
<Compile Include="BoxConfiguration.cs" /> <Compile Include="BoxConfiguration.cs" />
<Compile Include="BoxCredentials.cs" /> <Compile Include="BoxCredentials.cs" />
<Compile Include="BoxDestination.cs" /> <Compile Include="BoxDestination.cs" />
<Compile Include="BoxEntities.cs" />
<Compile Include="BoxPlugin.cs" /> <Compile Include="BoxPlugin.cs" />
<Compile Include="BoxUtils.cs" /> <Compile Include="BoxUtils.cs" />
<Compile Include="Forms\BoxForm.cs"> <Compile Include="Forms\BoxForm.cs">
@ -73,8 +75,7 @@ copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)bin\$
mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)" mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
copy "$(ProjectDir)Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\" copy "$(ProjectDir)Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent>"$(SolutionDir)\tools\TortoiseSVN\SubWCRev.exe" "$(ProjectDir)\" "$(ProjectDir)\Properties\AssemblyInfo.cs.template" "$(ProjectDir)\Properties\AssemblyInfo.cs" <PreBuildEvent>
if exist "$(ProjectDir)BoxCredentials.private.cs" ( if exist "$(ProjectDir)BoxCredentials.private.cs" (
rename "$(ProjectDir)BoxCredentials.cs" "BoxCredentials.orig.cs" rename "$(ProjectDir)BoxCredentials.cs" "BoxCredentials.orig.cs"
rename "$(ProjectDir)BoxCredentials.private.cs" "BoxCredentials.cs" rename "$(ProjectDir)BoxCredentials.private.cs" "BoxCredentials.cs"

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Bahasa Indonesia" ietf="id-ID" version="1.0.0" languagegroup="">
<resources>
<resource name="communication_wait">Menyambungkan ke Box. Tunggu sebentar...</resource>
<resource name="Configure">Konfigurasi Box</resource>
<resource name="label_AfterUpload">Setelah Diunggah</resource>
<resource name="label_AfterUploadLinkToClipBoard">Sambung ke papanklip</resource>
<resource name="label_upload_format">Format gambar</resource>
<resource name="settings_title">Setelan Box</resource>
<resource name="upload_failure">Kesalahan terjadi ketika mengunggah ke Box:</resource>
<resource name="upload_menu_item">Unggah ke Box</resource>
<resource name="upload_success">Gambar telah berhasil diunggah ke Box!</resource>
</resources>
</language>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Polski" ietf="pl-PL" version="1.1.4" languagegroup="2">
<resources>
<resource name="communication_wait">Trwa komunikacja z Box. Proszę czekać...</resource>
<resource name="Configure">Konfiguruj Box</resource>
<resource name="label_AfterUpload">Po wysłaniu</resource>
<resource name="label_AfterUploadLinkToClipBoard">Link do schowka</resource>
<resource name="label_upload_format">Format obrazu</resource>
<resource name="settings_title">Ustawienia Box</resource>
<resource name="upload_failure">Wystąpił błąd przy wysyłaniu do Box:</resource>
<resource name="upload_menu_item">Wyślij do Box</resource>
<resource name="upload_success">Wysyłanie obrazu do Box powiodło się!</resource>
</resources>
</language>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<language description="Русский" ietf="ru-RU" version="1.1.0.2515" languagegroup="5"> <language description="Русский" ietf="ru-RU" version="1.1.4.2622" languagegroup="5">
<resources> <resources>
<resource name="communication_wait">Обмен данными с Box. Подождите...</resource> <resource name="communication_wait">Обмен данными с Box. Подождите...</resource>
<resource name="Configure">Настройка Box</resource> <resource name="Configure">Настройка Box</resource>

View file

@ -51,4 +51,4 @@ using Greenshot.Plugin;
// //
// You can specify all the values or you can use the default the Revision and // You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below: // Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.4.$WCREV$")] [assembly: AssemblyVersion("1.1.6.$WCREV$")]

View file

@ -138,7 +138,6 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>
<PreBuildEvent>"$(SolutionDir)\tools\TortoiseSVN\SubWCRev.exe" "$(ProjectDir)\" "$(ProjectDir)\Properties\AssemblyInfo.cs.template" "$(ProjectDir)\Properties\AssemblyInfo.cs"</PreBuildEvent>
<PostBuildEvent>mkdir "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)" <PostBuildEvent>mkdir "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)"
copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp" copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp"
copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\" copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\"

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Bahasa Indonesia" ietf="id-ID" version="1.0.0.0" languagegroup="">
<resources>
<resource name="browse_pages">Telusuri halaman</resource>
<resource name="CANCEL">Batal</resource>
<resource name="communication_wait">Mentransfer data ke Confluence, tunggu sebentar...</resource>
<resource name="copy_wikimarkup">Kopi Wikimarkup ke papanklip</resource>
<resource name="filename">Nama berkas</resource>
<resource name="include_person_spaces">Sertakan personal space dalam pencarian dan penelusuran</resource>
<resource name="label_password">Sandi</resource>
<resource name="label_timeout">Waktu habis</resource>
<resource name="label_url">Url</resource>
<resource name="label_user">Pengguna</resource>
<resource name="loading">Data Confluence sedang dimuat, tunggu sebentar...</resource>
<resource name="login_error">Ada masalah ketika login: {0}</resource>
<resource name="login_title">Harap masukkan login Confluence anda</resource>
<resource name="OK">Oke</resource>
<resource name="open_page_after_upload">Buka halaman setelah diunggah</resource>
<resource name="open_pages">Buka halaman</resource>
<resource name="plugin_settings">Setelan Confluence</resource>
<resource name="search">Cari</resource>
<resource name="search_pages">Cari halaman</resource>
<resource name="search_text">Cari teks</resource>
<resource name="upload">Unggah</resource>
<resource name="upload_failure">Kesalahan terjadi ketika mengunggah ke Confluence:</resource>
<resource name="upload_format">Format unggah</resource>
<resource name="upload_menu_item">Unggah ke Confluence</resource>
<resource name="upload_success">Gambar telah berhasil diunggah ke Confluence!</resource>
</resources>
</language>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Polski" ietf="pl-PL" version="0.8.0" languagegroup="">
<resources>
<resource name="browse_pages">Przeglądaj strony</resource>
<resource name="CANCEL">Anuluj</resource>
<resource name="communication_wait">Trwa komunikacja z Confluence. Proszę czekać...</resource>
<resource name="copy_wikimarkup">Kopiuj Wikimarkup do schowka</resource>
<resource name="filename">Nazwa pliku</resource>
<resource name="include_person_spaces">Dołącz własne spacje przy wyszukiwaniu i przeglądaniu</resource>
<resource name="label_password">Hasło</resource>
<resource name="label_timeout">Czas</resource>
<resource name="label_url">URL</resource>
<resource name="label_user">Użytkownik</resource>
<resource name="loading">Informacje z Confluence są wczytywane, proszę czekać...</resource>
<resource name="login_error">Wystąpił problem podczas logowania: {0}</resource>
<resource name="login_title">Wprowadź swoje dane logowania</resource>
<resource name="OK">OK</resource>
<resource name="open_page_after_upload">Otwórz stronę po wysłaniu</resource>
<resource name="open_pages">Otwórz strony</resource>
<resource name="plugin_settings">Ustawienia Confluence
</resource>
<resource name="search">Szukaj</resource>
<resource name="search_pages">Szukaj strony</resource>
<resource name="search_text">Szukaj tekst</resource>
<resource name="upload">Wyślij</resource>
<resource name="upload_failure">Wystąpił błąd przy wysyłaniu do Confluence:</resource>
<resource name="upload_format">Format wysyłania</resource>
<resource name="upload_menu_item">Wyślij do Confluence</resource>
<resource name="upload_success">Wysyłanie obrazu do Confluence powiodło się!</resource>
</resources>
</language>

View file

@ -51,4 +51,4 @@ using Greenshot.Plugin;
// //
// You can specify all the values or you can use the default the Revision and // You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below: // Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.4.$WCREV$")] [assembly: AssemblyVersion("1.1.6.$WCREV$")]

View file

@ -143,7 +143,7 @@ namespace GreenshotDropboxPlugin {
return true; return true;
} catch (Exception e) { } catch (Exception e) {
LOG.Error(e); LOG.Error(e);
MessageBox.Show(Language.GetString("dropbox", LangKey.upload_failure) + " " + e.ToString()); MessageBox.Show(Language.GetString("dropbox", LangKey.upload_failure) + " " + e.Message);
return false; return false;
} }
} }

View file

@ -69,8 +69,7 @@ copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)bin\$
mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)" mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
copy "$(ProjectDir)Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\" copy "$(ProjectDir)Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent>"$(SolutionDir)\tools\TortoiseSVN\SubWCRev.exe" "$(ProjectDir)\" "$(ProjectDir)\Properties\AssemblyInfo.cs.template" "$(ProjectDir)\Properties\AssemblyInfo.cs" <PreBuildEvent>
if exist "$(ProjectDir)DropBoxCredentials.private.cs" ( if exist "$(ProjectDir)DropBoxCredentials.private.cs" (
rename "$(ProjectDir)DropBoxCredentials.cs" "DropBoxCredentials.orig.cs" rename "$(ProjectDir)DropBoxCredentials.cs" "DropBoxCredentials.orig.cs"
rename "$(ProjectDir)DropBoxCredentials.private.cs" "DropBoxCredentials.cs" rename "$(ProjectDir)DropBoxCredentials.private.cs" "DropBoxCredentials.cs"

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<language description="Bahasa Indonesia" ietf="id-ID" version="1.0.0.0" languagegroup="">
<resources>
<resource name="communication_wait">Menyambungkan ke Dropbox. Tunggu sebentar...</resource>
<resource name="Configure">Konfigurasi Dropbox</resource>
<resource name="label_AfterUpload">Setelah mengunggah</resource>
<resource name="label_AfterUploadLinkToClipBoard">Sambung ke papanklip</resource>
<resource name="label_AfterUploadOpenHistory">Buka riwayat</resource>
<resource name="label_upload_format">Format gambar</resource>
<resource name="settings_title">Setelan Dropbox</resource>
<resource name="upload_failure">Kesalahan terjadi ketik mengunggah ke Dropbox:</resource>
<resource name="upload_menu_item">Unggah ke Dropbox</resource>
<resource name="upload_success">Sukses mengunggah gambar ke Dropbox!</resource>
</resources>
</language>

Some files were not shown because too many files have changed in this diff Show more