diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/GenPat.exe b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/GenPat.exe
new file mode 100644
index 000000000..04373fcb5
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/GenPat.exe differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/LibraryLocal.exe b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/LibraryLocal.exe
new file mode 100644
index 000000000..39063e90a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/LibraryLocal.exe differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/MakeLangId.exe b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/MakeLangId.exe
new file mode 100644
index 000000000..16ade1390
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/MakeLangId.exe differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/RegTool.bin b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/RegTool.bin
new file mode 100644
index 000000000..5d11756f2
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/RegTool.bin differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/zip2exe.exe b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/zip2exe.exe
new file mode 100644
index 000000000..6a3354093
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Bin/zip2exe.exe differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/ExDll/exdll.h b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/ExDll/exdll.h
new file mode 100644
index 000000000..0e69c1cdd
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/ExDll/exdll.h
@@ -0,0 +1,116 @@
+#ifndef _EXDLL_H_
+#define _EXDLL_H_
+
+// only include this file from one place in your DLL.
+// (it is all static, if you use it in two places it will fail)
+
+#define EXDLL_INIT()           {  \
+        g_stringsize=string_size; \
+        g_stacktop=stacktop;      \
+        g_variables=variables; }
+
+// For page showing plug-ins
+#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)
+#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
+#define NOTIFY_BYE_BYE 'x'
+
+typedef struct _stack_t {
+  struct _stack_t *next;
+  TCHAR text[1]; // this should be the length of string_size
+} stack_t;
+
+
+static unsigned int g_stringsize;
+static stack_t **g_stacktop;
+static TCHAR *g_variables;
+
+static int __stdcall popstring(TCHAR *str); // 0 on success, 1 on empty stack
+static void __stdcall pushstring(const TCHAR *str);
+
+enum
+{
+INST_0,         // $0
+INST_1,         // $1
+INST_2,         // $2
+INST_3,         // $3
+INST_4,         // $4
+INST_5,         // $5
+INST_6,         // $6
+INST_7,         // $7
+INST_8,         // $8
+INST_9,         // $9
+INST_R0,        // $R0
+INST_R1,        // $R1
+INST_R2,        // $R2
+INST_R3,        // $R3
+INST_R4,        // $R4
+INST_R5,        // $R5
+INST_R6,        // $R6
+INST_R7,        // $R7
+INST_R8,        // $R8
+INST_R9,        // $R9
+INST_CMDLINE,   // $CMDLINE
+INST_INSTDIR,   // $INSTDIR
+INST_OUTDIR,    // $OUTDIR
+INST_EXEDIR,    // $EXEDIR
+INST_LANG,      // $LANGUAGE
+__INST_LAST
+};
+
+typedef struct {
+  int autoclose;
+  int all_user_var;
+  int exec_error;
+  int abort;
+  int exec_reboot;
+  int reboot_called;
+  int cur_insttype;
+  int insttype_changed;
+  int silent;
+  int instdir_error;
+  int rtl;
+  int errlvl;
+} exec_flags;
+
+typedef struct {
+  exec_flags *exec_flags;
+  int (__stdcall *ExecuteCodeSegment)(int, HWND);
+} extra_parameters;
+
+// utility functions (not required but often useful)
+static int __stdcall popstring(TCHAR *str)
+{
+  stack_t *th;
+  if (!g_stacktop || !*g_stacktop) return 1;
+  th=(*g_stacktop);
+  lstrcpy(str,th->text);
+  *g_stacktop = th->next;
+  GlobalFree((HGLOBAL)th);
+  return 0;
+}
+
+static void __stdcall pushstring(const TCHAR *str)
+{
+  stack_t *th;
+  if (!g_stacktop) return;
+  th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize*sizeof(TCHAR));
+  lstrcpyn(th->text,str,g_stringsize);
+  th->next=*g_stacktop;
+  *g_stacktop=th;
+}
+
+static TCHAR * __stdcall getuservariable(const int varnum)
+{
+  if (varnum < 0 || varnum >= __INST_LAST) return NULL;
+  return g_variables+varnum*g_stringsize;
+}
+
+static void __stdcall setuservariable(const int varnum, const TCHAR *var)
+{
+	if (var != NULL && varnum >= 0 && varnum < __INST_LAST) 
+		lstrcpy(g_variables + varnum*g_stringsize, var);
+}
+
+
+
+#endif//_EXDLL_H_
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/big.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/big.bmp
new file mode 100644
index 000000000..d6db07793
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/big.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic-cross.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic-cross.bmp
new file mode 100644
index 000000000..a4d37a14a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic-cross.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic.bmp
new file mode 100644
index 000000000..83e3cf565
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/classic.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/colorful.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/colorful.bmp
new file mode 100644
index 000000000..7713942e0
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/colorful.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey-cross.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey-cross.bmp
new file mode 100644
index 000000000..b28b59bbc
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey-cross.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey.bmp
new file mode 100644
index 000000000..b374432b7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/grey.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/modern.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/modern.bmp
new file mode 100644
index 000000000..62468dedc
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/modern.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red-round.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red-round.bmp
new file mode 100644
index 000000000..31d3c0252
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red-round.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red.bmp
new file mode 100644
index 000000000..e14e6b4a0
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/red.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round.bmp
new file mode 100644
index 000000000..695023224
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round2.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round2.bmp
new file mode 100644
index 000000000..ee1ec8427
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple-round2.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple.bmp
new file mode 100644
index 000000000..c687a1d92
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Checks/simple.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis-r.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis-r.bmp
new file mode 100644
index 000000000..eb3650f7d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis-r.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis.bmp
new file mode 100644
index 000000000..cbb52312f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-nsis.bmp
new file mode 100644
index 000000000..b4a0cf94b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r-nsis.bmp
new file mode 100644
index 000000000..2da34f174
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r.bmp
new file mode 100644
index 000000000..c74fbdd51
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-r.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-nsis.bmp
new file mode 100644
index 000000000..635596b20
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp
new file mode 100644
index 000000000..5f215d774
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r.bmp
new file mode 100644
index 000000000..1672afa6d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall-r.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall.bmp
new file mode 100644
index 000000000..97be6746e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange-uninstall.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange.bmp
new file mode 100644
index 000000000..4ac1413b3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/orange.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/win.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/win.bmp
new file mode 100644
index 000000000..6612357a3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Header/win.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-install.ico
new file mode 100644
index 000000000..0441d5cef
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-uninstall.ico
new file mode 100644
index 000000000..f3e7bfed3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-install.ico
new file mode 100644
index 000000000..e047f7db4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-uninstall.ico
new file mode 100644
index 000000000..fa6064fab
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/arrow2-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-install.ico
new file mode 100644
index 000000000..fd6c7c1f3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-uninstall.ico
new file mode 100644
index 000000000..bc275415f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/box-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-install.ico
new file mode 100644
index 000000000..5afcc62e8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-uninstall.ico
new file mode 100644
index 000000000..09532909e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/classic-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-blue.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-blue.ico
new file mode 100644
index 000000000..08288b6dd
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-blue.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-grey.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-grey.ico
new file mode 100644
index 000000000..4749479fa
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/llama-grey.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue-full.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue-full.ico
new file mode 100644
index 000000000..8f1c51222
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue-full.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue.ico
new file mode 100644
index 000000000..fecdc2739
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-blue.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-colorful.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-colorful.ico
new file mode 100644
index 000000000..2908f58be
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-colorful.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-full.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-full.ico
new file mode 100644
index 000000000..3aa83e9f4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install-full.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install.ico
new file mode 100644
index 000000000..f8fbd5ffa
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico
new file mode 100644
index 000000000..cd9227971
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue.ico
new file mode 100644
index 000000000..77031b58e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-blue.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-colorful.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-colorful.ico
new file mode 100644
index 000000000..461035cc2
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-colorful.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-full.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-full.ico
new file mode 100644
index 000000000..a134f586c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall-full.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall.ico
new file mode 100644
index 000000000..6c7410c2f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/modern-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-install.ico
new file mode 100644
index 000000000..e18044928
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-uninstall.ico
new file mode 100644
index 000000000..a37774cf3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/nsis1-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install-nsis.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install-nsis.ico
new file mode 100644
index 000000000..ef3975f56
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install-nsis.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install.ico
new file mode 100644
index 000000000..1db75f8e4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall-nsis.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall-nsis.ico
new file mode 100644
index 000000000..431eb2e0f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall-nsis.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall.ico
new file mode 100644
index 000000000..59c79f32b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/orange-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-install.ico
new file mode 100644
index 000000000..f2106d611
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-uninstall.ico
new file mode 100644
index 000000000..2003b2df8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/pixel-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-install.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-install.ico
new file mode 100644
index 000000000..a5eb774b3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-install.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-uninstall.ico b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-uninstall.ico
new file mode 100644
index 000000000..932917696
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Icons/win-uninstall.ico differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/arrow.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/arrow.bmp
new file mode 100644
index 000000000..9f7426bc8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/arrow.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/llama.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/llama.bmp
new file mode 100644
index 000000000..1e1d94251
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/llama.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nsis.bmp
new file mode 100644
index 000000000..dcc38094c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nullsoft.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nullsoft.bmp
new file mode 100644
index 000000000..d4145d4ff
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/nullsoft.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-nsis.bmp
new file mode 100644
index 000000000..ec46bd852
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp
new file mode 100644
index 000000000..661e70232
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall.bmp
new file mode 100644
index 000000000..097d09429
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange-uninstall.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange.bmp
new file mode 100644
index 000000000..196a5b7a7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/orange.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/win.bmp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/win.bmp
new file mode 100644
index 000000000..5524eef94
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Graphics/Wizard/win.bmp differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Example.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Example.nsi
new file mode 100644
index 000000000..2f95e06b6
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Example.nsi
@@ -0,0 +1,53 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc plug-in Test"
+OutFile "inetc.exe"
+;SilentInstall silent
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+;SetFont 14
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+    SetDetailsView hide
+
+; two files download, popup mode
+    inetc::get /caption "2003-2004 reports" /popup "" "http://ineum.narod.ru/spr_2003.htm" "$EXEDIR\spr3.htm" "http://ineum.narod.ru/spr_2004.htm" "$EXEDIR\spr4.htm" /end
+    Pop $0 # return value = exit code, "OK" means OK
+
+; single file, NSISdl-style embedded progress bar with specific cancel button text
+    inetc::get /caption "2005 report" /canceltext "interrupt!" "http://ineum.narod.ru/spr_2005.htm" "$EXEDIR\spr5.htm" /end
+    Pop $1 # return value = exit code, "OK" means OK
+
+; banner with 2 text lines and disabled Cancel button
+    inetc::get /caption "2006 report" /banner "Banner mode with /nocancel option setten$\nSecond Line" /nocancel "http://ineum.narod.ru/spr_2006.htm"  "$EXEDIR\spr6.htm" /end
+    Pop $2 # return value = exit code, "OK" means OK
+
+    MessageBox MB_OK "Download Status: $0, $1, $2"
+SectionEnd
+
+
+;--------------------------------
+;Installer Functions
+
+Function .onInit
+
+; plug-in auto-recognizes 'no parent dlg' in onInit and works accordingly
+;    inetc::head /RESUME "Network error. Retry?" "http://ineum.narod.ru/spr_2003.htm" "$EXEDIR\spr3.txt"
+;    Pop $4
+
+FunctionEnd
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Readme.htm b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Readme.htm
new file mode 100644
index 000000000..40e0f4766
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/Readme.htm
@@ -0,0 +1,140 @@
+<div style="border:solid 1px black;padding:10px;width:300px">
+<h2>Contents</h2>
+<UL>
+<LI>1 Links 
+<LI>2 Description 
+<LI>3 Command line 
+<UL>
+<LI>3.1 get DLL Function 
+<LI>3.2 post DLL Function 
+<LI>3.3 head DLL Function 
+<LI>3.4 put DLL Function
+</UL>
+<LI>4 Examples 
+<LI>5 Credits
+</UL>
+</div>
+
+<h2>Links</h2> 
+Download: <a href="http://nsis.sourceforge.net/Inetc_plug-in">http://nsis.sourceforge.net/Inetc_plug-in</a>
+
+<h2>Description</h2>
+Internet client plug-in for files download and upload. Based on the InetLoad plug-in. 
+Network implementation uses MS WinInet API, supports http/https and ftp protocols. 
+Plugin has better proxy support compare to NSISdl plug-in. Command line may include 
+few URL/File pairs to be transfered. If server or proxy login/password are not setten in the script, 
+displays IE-style authentication dialog (except silent mode). Plug-in supports 3 
+"transfer in progress" display modes: 
+<UL>
+<LI>old NSISdl style - additional embedded progress bar and text on the INSTFILES page; 
+<LI>POPUP dialog mode with detailed info; 
+<LI>BANNER mode with simple popup window. 
+</UL>
+Plug-in recognizes Installer's Silent mode and this case hides any output (this feature 
+requires NSIS 2.03 or later). Program implements simple re-get functionality - host 
+reconnect and download from current position after short pause. While program depends on IE settings, 
+it changes current IE mode to online. NSISdl code fragment was used for progress bar displaying 
+in the "old style" mode. For ftp use "host/path" for file location relative to user's home dir and 
+"host//path" for absolute path.
+
+<h2>Command line</h2>
+
+Plug-in DLL functions (entry points): get, post, head, put 
+
+<h3>get DLL Function </h3>
+
+<i>inetc::get [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOCOOKIES] 
+ [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC]  [/RECEIVETIMEOUT TO_SEC] [/SILENT] 
+ [/CAPTION TEXT] [/NOCOOKIES]  [/RESUME RETRY_QUESTION] [/POPUP HOST_ALIAS | /BANNER TEXT] 
+ [/CANCELTEXT CANCEL_TEXT] [/QUESTION CANCEL_QUESTION] [/USER_AGENT USER_AGENT_TEXT] 
+ [/HEADER HEADER_TEXT] [/TRANSLATE LANG_PARAMS]
+ URL1 local_file1 [URL2 local_file2 [...]] [/END]</i>
+<p>This call returns "OK" string if successful, error description string if failed (see included InetLoad.cpp file for a full set of status strings). Usage and result processing samples are included to the package. 
+<p>/PROXY - 
+Overwrites current proxy settings, not required in most cases. IE settings will be used by default. 
+<p>/USERNAME - 
+Proxy username (http only). 
+<p>/PASSWORD - 
+Proxy password (http only). For server (http/ftp) authentication it is possible to use URL encoded name and password, for example http://username:password@nsis.sourceforge.net. 
+<p>/NOPROXY - 
+Disables proxy settings for this connection (if any) 
+<p>/NOCANCEL - 
+Prevents download from being interrupted by user (locks Esc, Alt-F4, Cancel handling, removes sysmenu) 
+<p>/CONNECTTIMEOUT - 
+Sets INTERNET_OPTION_CONNECT_TIMEOUT, seconds, default - IE current parameter value. 
+<p>/RECEIVETIMEOUT - 
+Sets INTERNET_OPTION_RECEIVE_TIMEOUT, seconds, default - IE current parameter value. 
+<p>/SILENT - 
+Key hides plug-in' output (both popup dialog and embedded progress bar). Not required if 'SilentInstall silent' mode was defined in script (NSIS 2.03 or later). 
+<p>/RESUME - 
+On the permanent connection/transfer error instead of exit first displays message box with "resume download" question. Useful for dial-up connections and big files - allows user to restore connection and resume download. Default is "Your internet connection seems to have dropped out!\nPlease reconnect and click Retry to resume downloading...". 
+<p>/CAPTION - 
+Defines caption text for /BANNER mode, caption prefix (left of '-') for /POPUP mode and caption for RESUME MessageBox. Default is "InetLoad plug-in" if not set or "". 127 chars maximum. 
+<p>/POPUP - 
+This mode displays detailed download dialog instead of embedded progress bar. Also useful in .onInit function (i.e. not in Section). If HOST_ALIAS is not "", text will replace URL in the dialog - this allows to hide real URL (including password). 
+<p>/BANNER - 
+Displays simple popup dialog (MSI Banner mode) and sets dialog TEXT (up to 3 lines using $\n). 
+<p>/CANCELTEXT - 
+Text for the Cancel button in the NSISdl mode. Default is NSIS dialog Cancel button text (current lang). 
+<p>/QUESTION - 
+Text for the optional MessageBox if user tries to cancel download. If /QUESTION "" was used default
+"Are you sure that you want to stop download?" will be substituted.
+<p>/USERAGENT - 
+UserAgent http request header value. Default is "NSIS_Inetc (Mozilla)". 256 chars maximum. 
+<p>/HEADER - 
+Adds or replaces http request header. Common HEADER_TEXT format is "header: value". 
+<p>/NOCOOKIES - 
+Removes cookies from http request 
+<p>/END - 
+Allows to limit plug-in stack reading (optional, required if you stores other vars in the stack). 
+<p>/TRANSLATE - 
+Allows translating plug-in text in the POPUP or NSISdl modes. 8 parameters both cases.<br>
+
+NSISdl mode parameters:<br>
+  /TRANSLATE downloading connecting second minute hour plural progress remaining<br>
+With default values:<br>
+  "Downloading %s" "Connecting ..." second minute hour s "%dkB (%d%%) of %dkB @ %d.%01dkB/s" "(%d %s%s remaining)"<br>
+
+POPUP mode parameters:<br>
+  /TRANSLATE url downloading connecting file_name received file_size remaining_time total_time<br>
+With default values:<br>
+  URL Downloading Connecting "File Name" Received "File Size" "Remaining Time" "Total Time"<br>
+
+<h3>post DLL Function </h3>
+
+<i>inetc::post TEXT2POST [/FILE] [/PROXY IP:PORT] [/NOPROXY] [/NOCANCEL]
+ [/USERNAME PROXY_LOGIN  /PASSWORD PROXY_PASSWD] [/TIMEOUT INT_MS] [/SILENT]
+ [/CAPTION TEXT] [/POPUP | /BANNER TEXT] [/CANCELTEXT CANCEL_TEXT] 
+ [/USER_AGENT USER_AGENT_TEXT] [/TRANSLATE LANG_PARAMS]
+ URL1 local_file1 [URL2 local_file2 [...]] [/END]</i>
+<p>Sets POST http mode and defines text string to be used in the POST (http only). Disables auto re-get. No char replaces used (%20 and others). 
+If /FILE presents in command line, TEXT2POST is filename to be sent in POST request. Also 'Filename:' header will be added to HTTP headers. 
+
+<h3>head DLL Function </h3>
+
+The same as get, but requests http headers only. Writes raw headers to file. 
+
+<h3>put DLL Function </h3>
+
+<i>inetc::put [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY]
+ [/NOCANCEL] [/TIMEOUT INT_MS] [/SILENT] [/CAPTION TEXT] [/POPUP | /BANNER TEXT] 
+ [/CANCELTEXT CANCEL_TEXT] [/USER_AGENT USER_AGENT_TEXT] 
+ [/TRANSLATE LANG_PARAMS] URL1 local_file1 [URL2 local_file2 [...]] [/END]</i>
+<p>Return value and parameters (if applicable) are the same as for previous entry point. 
+
+<h2>Examples </h2>
+<pre>  inetc::get "http://dl.zvuki.ru/6306/mp3/12.mp3" "$EXEDIR\12.mp3" \
+     "ftp://dl.zvuki.ru/6306/mp3/11.mp3" "$EXEDIR\11.mp3"
+  Pop $0
+  inetc::put /BANNER "Cameron Diaz upload in progress..." \
+    "http://www.dreamgirlswallpaper.co.uk/fiveyearsonline/wallpaper/Cameron_Diaz/camerond09big.JPG" \
+    "$EXEDIR\cd.jpg"
+  Pop $0
+  StrCmp $0 "OK" dlok
+  MessageBox MB_OK|MB_ICONEXCLAMATION "http upload Error, click OK to abort installation" /SD IDOK
+  Abort
+dlok:
+  ...</pre>
+
+<h2>Credits</h2> 
+Many thanks to Backland who offered a simple way to fix NSISdl mode crashes and added 'center parent' function.
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/auth_dlg.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/auth_dlg.nsi
new file mode 100644
index 000000000..b322f421b
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/auth_dlg.nsi
@@ -0,0 +1,31 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc http auth Test"
+OutFile "auth_dlg.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; Displays IE auth dialog.
+; Both server and proxy auth.
+; Please test this with your own link.
+
+    inetc::get "http://www.cnt.ru/personal" "$EXEDIR\auth.html"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/ftp_auth.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/ftp_auth.nsi
new file mode 100644
index 000000000..5e15776f1
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/ftp_auth.nsi
@@ -0,0 +1,31 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc ftp authentication Test"
+OutFile "ftp_auth.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; use your own URL and login@pwd. Password hidden from user with /popup "ALIAS"
+
+    inetc::get /caption "service pack download" /popup "ftp://localhost/" "ftp://login:pwd@localhost/W2Ksp3.exe" "$EXEDIR\sp3.exe"
+;    inetc::put /caption "service pack upload" /popup "" "ftp://login:pwd@localhost/W2Ksp3.bu.exe" "$EXEDIR\sp3.exe"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/head.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/head.nsi
new file mode 100644
index 000000000..2ad7ff702
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/head.nsi
@@ -0,0 +1,29 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Head Test"
+OutFile "head.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+    DetailPrint "New version check out (internet connection)"
+    inetc::head /silent "http://ineum.narod.ru/spr_2006.htm" "$EXEDIR\head.txt"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.nsi
new file mode 100644
index 000000000..1eb77c2a0
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.nsi
@@ -0,0 +1,31 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Headers Test"
+OutFile "headers.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; additional headers. Sample php returns raw headers
+    inetc::get /useragent "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)" /header "SOAPAction: urn:anonOutInOpe" "http://localhost/headers.php" "$EXEDIR\headers.html"
+    Pop $0
+
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.php b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.php
new file mode 100644
index 000000000..e33b0d8ed
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/headers.php
@@ -0,0 +1,7 @@
+<?php
+$headers = apache_request_headers();
+
+foreach ($headers as $header => $value) {
+    echo "$header: $value <br />\n";
+}
+?> 
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/https.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/https.nsi
new file mode 100644
index 000000000..ccf7c58b3
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/https.nsi
@@ -0,0 +1,26 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc https Test"
+OutFile "https.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+    inetc::get /POPUP "" /CAPTION "bending_property_demo.zip" "https://secure.codeproject.com/cs/miscctrl/bending_property/bending_property_src.zip" "$EXEDIR\bending_property_src.zip"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.cpp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.cpp
new file mode 100644
index 000000000..fcea2778b
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.cpp
@@ -0,0 +1,1622 @@
+/*******************************************************
+* FILE NAME: inetc.cpp
+*
+* Copyright 2004 - Present NSIS
+*
+* PURPOSE:
+*    ftp/http file download plug-in
+*    on the base of MS Inet API
+*          4 GB limit (http support?)
+*
+* CHANGE HISTORY
+*
+* Author      Date  Modifications
+* Takhir Bedertdinov
+*     Nov 11, 2004  Original
+*     Dec 17, 2004  Embedded edition -
+*              NSISdl GUI style as default
+*              (nsisdl.cpp code was partly used)
+*     Dec 17, 2004  MSI Banner style
+*     Feb 20, 2005  Resume download
+*              feature for big files and bad connections
+*     Mar 05, 2005  Proxy authentication
+*              and /POPUP caption prefix option
+*     Mar 25, 2005  Connect timeout option
+*              and FTP switched to passive mode
+*     Apr 18, 2005  Crack URL buffer size 
+*              bug fixed (256->string_size)
+*              HTTP POST added
+*     Jun 06, 2005  IDOK on "Enter" key locked
+*              POST HTTP header added 
+*     Jun 22, 2005  non-interaptable mode /nocancel
+*              and direct connect /noproxy
+*     Jun 29, 2005  post.php written and tested
+*     Jul 05, 2005  60 sec delay on WinInet detach problem
+*              solved (not fine, but works including
+*              installer exit and system reboot) 
+*     Jul 08, 2005  'set foreground' finally removed
+*     Jul 26, 2005  POPUP translate option
+*     Aug 23, 2005  https service type in InternetConnect
+*              and "ignore certificate" flags
+*     Sep 30, 2005  https with bad certificate from old OS;
+*              Forbidden handling
+*     Dec 23, 2005  'put' entry point, new names, 12003 
+*              ftp error handling (on ftp write permission)
+*              405 http error (method not allowed)
+*     Mar 12, 2006  Internal authorization via InternetErrorDlg()
+*              and Unauthorized (401) handling.
+*     Jun 10, 2006 Caption text option for Resume download
+*              MessageBox
+*     Jun 24, 2006 HEAD method, silent mode clean up
+*     Sep 05, 2006 Center dialog code from Backland
+*     Sep 07, 2006 NSISdl crash fix /Backland idea/
+*     Sep 08, 2006 POST as dll entry point.
+*     Sep 21, 2006 parent dlg progr.bar style and font, 
+*              nocancel via ws_sysmenu
+*     Sep 22, 2006 current lang IDCANCEL text, /canceltext
+*              and /useragent options
+*     Sep 24, 2006 .onInit improvements and defaults
+*     Nov 11, 2006 FTP path creation, root|current dir mgmt
+*     Jan 01, 2007 Global char[] cleanup, GetLastError() to 
+*              status string on ERR_DIALOG, few MSVCRT replaces
+*     Jan 13, 2007 /HEADER option added
+*     Jan 28, 2007 _open -> CreateFile and related
+*     Feb 18, 2007 Speed calculating improved (pauses),
+*              /popup text parameter to hide URL
+*     Jun 07, 2007 Local file truncation added for download
+*              (CREATE_ALWAYS)
+*     Jun 11, 2007 FTP download permitted even if server rejects
+*              SIZE request (ProFTPD). 
+*     Aug 11, 2007 Backland' fix for progress bar redraw/style
+*              issue in NSISdl display mode.
+*     Jan 09, 2008 {_trueparuex^}' fix - InternetSetFilePointer()
+*              returns -1 on error.
+*              /question option added for cancel question.
+*     Feb 15, 2008 PUT content-length file size fix
+*     Feb 17, 2008 char -> TCHAR replace for UNICODE option
+*     Feb 19, 2008 janekschwarz fix for HTTP PUT with auth
+*              CreateFile INVALID_HANDLE_VALUE on error fix
+*     Feb 20, 2008 base64 encoder update for unicode
+*     Feb 27, 2008 Unicode configurations added to VS 6 dsp
+*     Mar 20, 2008 HTTP PUT with proxy auth finally fixed
+*              FTP errors handling improved.
+*              HEAD bug fixed
+*     Mar 27, 2008 Details window hide/show in NSISdl mode
+*     Apr 10, 2008 Auth test method changed to HEAD for
+*              old proxy's
+*     Apr 30, 2008 InternetErrorDlg() ERROR_SUCESS on cancel
+*              click patched
+*              3xx errors added to status list.
+*     May 20, 2008 InternetReadFile on cable disconnect patched
+*     May 20, 2008 Reply status "0" patch (name resolution?)
+*     Jul 15, 2008 HTTP 304 parsing. Incorrect size reported fix.
+*     Aug 21, 2009 Escape sequence convertion removed (caused 
+*              error in signature with %2b requests)
+*              Marqueue progess bar style for unknown file size.
+*     Feb 04, 2010 Unicode POST patch - body converted to multibyte
+*     Jul 11, 2010 /FILE POST option added
+*     Nov 04, 2010 Disabled cookies and cache for cleanliness
+*     Feb 14, 2011 Fixed reget bug introduced in previous commit
+*     Feb 18, 2011 /NOCOOKIES option added
+*     Mar 02, 2011 User-agent buffer increased. Small memory leak fix
+*	  Mar 23, 2011 Use caption on embedded progressbar - zenpoy
+*     Apr 05, 2011 reget fix - INTERNET_FLAG_RELOAD for first connect only
+*     Apr 27, 2011 /receivetimeout option added for big files and antivirus
+*     Jun 15, 2011 Stack clean up fix on cancel - zenpoy
+*     Oct 19, 2011 FTP PUT error parsing fix - tperquin
+*******************************************************/
+
+
+#define _WIN32_WINNT 0x0500
+
+#include <windows.h>
+#include <tchar.h>
+#include <wininet.h>
+#include <commctrl.h>
+#include "exdll.h"
+#include "resource.h"
+
+#ifndef PBM_SETMARQUEE
+#define PBM_SETMARQUEE  (WM_USER + 10)
+#define PBS_MARQUEE  0x08
+#endif
+
+// IE 4 safety and VS 6 compatibility
+typedef BOOL (__stdcall *FTP_CMD)(HINTERNET,BOOL,DWORD,LPCTSTR,DWORD,HINTERNET *);
+FTP_CMD myFtpCommand;
+
+#define PLUGIN_NAME _T("Inetc plug-in")
+#define INETC_USERAGENT _T("NSIS_Inetc (Mozilla)")
+#define PB_RANGE 400 // progress bar values range
+#define PAUSE1_SEC 2 // transfer error indication time, for reget only
+#define PAUSE2_SEC 3 // paused state time, increase this if need (60?)
+#define PAUSE3_SEC 1 // pause after resume button pressed
+#define NOT_AVAILABLE 0xffffffff
+#define POST_HEADER _T("Content-Type: application/x-www-form-urlencoded")
+#define PUT_HEADER _T("Content-Type: octet-stream\nContent-Length: %d")
+#define INTERNAL_OK 0xFFEE
+#define PROGRESS_MS 1000 // screen values update interval
+#define DEF_QUESTION _T("Are you sure that you want to stop download?")
+#define HOST_AUTH_HDR  _T("Authorization: basic %s")
+#define PROXY_AUTH_HDR _T("Proxy-authorization: basic %s")
+
+//#define MY_CERT_FLAGS SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_CERT_CN_INVALID
+#define MY_CERT_FLAGS SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION
+#define MY_REDIR_FLAGS INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
+#define MY_HTTPS_FLAGS (MY_CERT_FLAGS | MY_REDIR_FLAGS | INTERNET_FLAG_SECURE)
+
+enum STATUS_CODES {
+	ST_OK = 0,
+	ST_CONNECTING,
+	ST_DOWNLOAD,
+	ST_CANCELLED,
+	ST_URLOPEN,
+	// ST_OPENING,
+	ST_PAUSE,
+	ERR_TERMINATED,
+	ERR_DIALOG,
+	ERR_INETOPEN,
+	ERR_URLOPEN,
+	ERR_TRANSFER,
+	ERR_FILEOPEN,
+	ERR_FILEWRITE,
+	ERR_FILEREAD,
+	ERR_REGET,
+	ERR_CONNECT,
+	ERR_OPENREQUEST,
+	ERR_SENDREQUEST,
+	ERR_CRACKURL,
+	ERR_NOTFOUND,
+	ERR_THREAD,
+	ERR_PROXY,
+	ERR_FORBIDDEN,
+	ERR_NOTALLOWED,
+	ERR_REQUEST,
+	ERR_SERVER,
+	ERR_AUTH,
+	ERR_CREATEDIR,
+	ERR_PATH,
+	ERR_NOTMODIFIED,
+	ERR_REDIRECTION
+};
+
+
+static TCHAR szStatus[][32] = {
+	_T("OK"),_T("Connecting"),_T("Downloading"),_T("Cancelled"),_T("Connecting"), //_T("Opening URL")),
+	_T("Reconnect Pause"),_T("Terminated"),_T("Dialog Error"),_T("Open Internet Error"),
+	_T("Open URL Error"),_T("Transfer Error"),_T("File Open Error"),_T("File Write Error"),_T("File Read Error"),
+	_T("Reget Error"),_T("Connection Error"),_T("OpenRequest Error"),_T("SendRequest Error"),
+	_T("URL Parts Error"),_T("File Not Found (404)"),_T("CreateThread Error"),_T("Proxy Error (407)"),
+	_T("Access Forbidden (403)"),_T("Not Allowed (405)"),_T("Request Error"),_T("Server Error"),
+	_T("Unauthorized (401)"),_T("FtpCreateDir failed (550)"),_T("Error FTP path (550)"),_T("Not Modified"), 
+	_T("Redirection")
+};
+
+HINSTANCE g_hInstance;
+TCHAR fn[MAX_PATH]=_T(""),
+*url = NULL,
+*szAlias = NULL,
+*szProxy = NULL,
+*szHeader = NULL,
+*szBanner = NULL,
+*szQuestion = NULL,
+szCancel[64]=_T(""),
+szCaption[128]=_T(""),
+szUserAgent[256]=_T(""),
+szResume[256] = _T("Your internet connection seems to be not permitted or dropped out!\nPlease reconnect and click Retry to resume installation.");
+CHAR *szPost = NULL,
+post_fname[MAX_PATH] = "";
+DWORD fSize = 0;
+
+int status;
+DWORD cnt = 0,
+fs = 0,
+timeout = 0,
+receivetimeout = 0;
+DWORD startTime, transfStart, openType;
+bool silent, popup, resume, nocancel, noproxy, nocookies;
+
+HWND childwnd;
+HWND hDlg;
+bool fput = false, fhead = false;
+
+
+/*****************************************************
+* FUNCTION NAME: sf(HWND)
+* PURPOSE: 
+*    moves HWND to top and activates it
+* SPECIAL CONSIDERATIONS:
+*    commented because annoying
+*****************************************************/
+/*
+void sf(HWND hw)
+{
+DWORD ctid = GetCurrentThreadId();
+DWORD ftid = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
+AttachThreadInput(ftid, ctid, TRUE);
+SetForegroundWindow(hw);
+AttachThreadInput(ftid, ctid, FALSE);
+}
+*/
+
+static TCHAR szUrl[64] = _T("");
+static TCHAR szDownloading[64] = _T("Downloading %s");
+static TCHAR szConnecting[64] = _T("Connecting ...");
+static TCHAR szSecond[64] = _T("second");
+static TCHAR szMinute[32] = _T("minute");
+static TCHAR szHour[32] = _T("hour");
+static TCHAR szPlural[32] = _T("s");
+static TCHAR szProgress[128] = _T("%dkB (%d%%) of %dkB @ %d.%01dkB/s");
+static TCHAR szRemaining[64] = _T(" (%d %s%s remaining)");
+static TCHAR szBasic[128] = _T("");
+static TCHAR szAuth[128] = _T("");
+
+// is it possible to make it working with unicode strings?
+
+/* Base64 encode one byte */
+static TCHAR encode(unsigned char u) {
+
+	if(u < 26)  return _T('A')+u;
+	if(u < 52)  return _T('a')+(u-26);
+	if(u < 62)  return _T('0')+(u-52);
+	if(u == 62) return _T('+');
+	return _T('/');
+}
+
+TCHAR *encode_base64(int size, TCHAR *src, TCHAR *dst) {
+
+	int i;
+	TCHAR *p;
+
+	if(!src)
+		return NULL;
+
+	if(!size)
+		size= lstrlen(src);
+
+	p = dst;
+
+	for(i=0; i<size; i+=3) {
+
+		unsigned char b1=0, b2=0, b3=0, b4=0, b5=0, b6=0, b7=0;
+
+		b1 = (unsigned char)src[i];
+
+		if(i+1<size)
+			b2 = (unsigned char)src[i+1];
+
+		if(i+2<size)
+			b3 = (unsigned char)src[i+2];
+
+		b4= b1>>2;
+		b5= ((b1&0x3)<<4)|(b2>>4);
+		b6= ((b2&0xf)<<2)|(b3>>6);
+		b7= b3&0x3f;
+
+		*p++= encode(b4);
+		*p++= encode(b5);
+
+		if(i+1<size) {
+			*p++= encode(b6);
+		} else {
+			*p++= _T('=');
+		}
+
+		if(i+2<size) {
+			*p++= encode(b7);
+		} else {
+			*p++= _T('=');
+		}
+
+	}
+
+	return dst;
+}
+
+/*****************************************************
+* FUNCTION NAME: fileTransfer()
+* PURPOSE: 
+*    http/ftp file transfer itself
+*    for any protocol and both directions I guess
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+void fileTransfer(HANDLE localFile,
+									HINTERNET hFile)
+{
+	byte data_buf[1024*8];
+	byte *dw;
+	DWORD rslt = 0;
+	DWORD bytesDone;
+
+	status = ST_DOWNLOAD;
+	while(status == ST_DOWNLOAD)
+	{
+		if(fput)
+		{
+			if(!ReadFile(localFile, data_buf, rslt = sizeof(data_buf), &bytesDone, NULL))
+			{
+				status = ERR_FILEREAD;
+				break;
+			}
+			if(bytesDone == 0) // EOF reached
+			{
+				status = ST_OK;
+				break;
+			}
+			while(bytesDone > 0)
+			{
+				dw = data_buf;
+				if(!InternetWriteFile(hFile, dw, bytesDone, &rslt) || rslt == 0)
+				{
+					status = ERR_TRANSFER;
+					break;
+				}
+				dw += rslt;
+				cnt += rslt;
+				bytesDone -= rslt;
+			}
+		}
+		else
+		{
+			if(!InternetReadFile(hFile, data_buf, sizeof(data_buf), &rslt))
+			{
+				status = ERR_TRANSFER;
+				break;
+			}
+			if(rslt == 0) // EOF reached or cable disconnect
+			{
+// on cable disconnect returns TRUE and 0 bytes. is cnt == 0 OK (zero file size)?
+// cannot check this if reply is chunked (no content-length, http 1.1)
+				status = (fs != NOT_AVAILABLE && cnt < fs) ? ERR_TRANSFER : ST_OK;
+				break;
+			}
+			if(!WriteFile(localFile, data_buf, rslt, &bytesDone, NULL) ||
+				rslt != bytesDone)
+			{
+				status = ERR_FILEWRITE;
+				break;
+			}
+			cnt += rslt;
+		}
+	}
+}
+
+/*****************************************************
+* FUNCTION NAME: mySendRequest()
+* PURPOSE: 
+*    HttpSendRequestEx() sends headers only - for PUT
+*    We also can use InetWriteFile for POST body I guess
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+int mySendRequest(HINTERNET hFile)
+{
+	INTERNET_BUFFERS BufferIn = {0};
+	if(fput)
+	{
+		BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
+		BufferIn.dwBufferTotal = fs;
+		return HttpSendRequestEx( hFile, &BufferIn, NULL, HSR_INITIATE, 0);
+	}
+	return HttpSendRequest(hFile, NULL, 0, szPost, fSize);
+}
+
+/*****************************************************
+* FUNCTION NAME: queryStatus()
+* PURPOSE: 
+*    http status code comes before download (get) and
+*    after upload (put), so this is called from 2 places
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+bool queryStatus(HINTERNET hFile)
+{
+	TCHAR buf[256] = _T("");
+	DWORD rslt;
+	if(HttpQueryInfo(hFile, HTTP_QUERY_STATUS_CODE,
+		buf, &(rslt = sizeof(buf)), NULL))
+	{
+		buf[3] = 0;
+		if(lstrcmp(buf, _T("0")) == 0 || *buf == 0)
+			status = ERR_SENDREQUEST;
+		else if(lstrcmp(buf, _T("401")) == 0)
+			status = ERR_AUTH;
+		else if(lstrcmp(buf, _T("403")) == 0)
+			status = ERR_FORBIDDEN;
+		else if(lstrcmp(buf, _T("404")) == 0)
+			status = ERR_NOTFOUND;
+		else if(lstrcmp(buf, _T("407")) == 0)
+			status = ERR_PROXY;
+		else if(lstrcmp(buf, _T("405")) == 0)
+			status = ERR_NOTALLOWED;
+		else if(lstrcmp(buf, _T("304")) == 0)
+			status = ERR_NOTMODIFIED;
+		else if(*buf == _T('3'))
+		{
+			status = ERR_REDIRECTION;
+			wsprintf(szStatus[status] + lstrlen(szStatus[status]), _T(" (%s)"), buf);
+		}
+		else if(*buf == _T('4'))
+		{
+			status = ERR_REQUEST;
+			wsprintf(szStatus[status] + lstrlen(szStatus[status]), _T(" (%s)"), buf);
+		}
+		else if(*buf == _T('5'))
+		{
+			status = ERR_SERVER;
+			wsprintf(szStatus[status] + lstrlen(szStatus[status]), _T(" (%s)"), buf);
+		}
+		return true;
+	}
+	return false;
+}
+
+/*****************************************************
+* FUNCTION NAME: openFtpFile()
+* PURPOSE: 
+*    control connection, size request, re-get lseek
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+HINTERNET openFtpFile(HINTERNET hConn,
+											TCHAR *path)
+{
+	TCHAR buf[256] = _T(""), *movp;
+	HINTERNET hFile;
+	DWORD rslt, err, gle;
+	bool https_req_ok = false;
+
+	/* reads connection / auth responce info and cleares 'control' buffer this way */
+	InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf)));
+	if(cnt == 0)
+	{
+		if(!fput) // we know local file size already
+		{
+			/* too clever myFtpCommand returnes false on the valid _T("550 Not found/Not permitted" server answer,
+			to read answer I had to ignory returned false (!= 999999) :-( 
+			GetLastError also possible, but MSDN description of codes is very limited */
+			wsprintf(buf, _T("SIZE %s"), path + 1);
+			if(myFtpCommand != NULL &&
+				myFtpCommand(hConn, false, FTP_TRANSFER_TYPE_ASCII, buf, 0, &hFile) != 9999 &&
+				memset(buf, 0, sizeof(buf)) != NULL &&
+				InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf))))
+			{
+				if(_tcsstr(buf, _T("213 ")))
+				{
+					fs = _tcstol(_tcschr(buf, _T(' ')) + 1, NULL, 0);
+				}
+				/* stupid ProFTPD returns error on SIZE request. let's continue without size.
+				But IE knows some trick to get size from ProFTPD......
+				else if(_tcsstr(buf, _T("550 _T("))
+				{
+				status = ERR_SIZE_NOT_PERMITTED;
+				return NULL;
+				}
+				*/
+			}
+			if(fs == 0)
+			{
+				fs = NOT_AVAILABLE;
+			}
+
+		}
+	}
+	else
+	{
+		wsprintf(buf, _T("REST %d"), cnt);
+		if(myFtpCommand == NULL ||
+			!myFtpCommand(hConn, false, FTP_TRANSFER_TYPE_BINARY, buf, 0, &hFile) ||
+			memset(buf, 0, sizeof(buf)) == NULL ||
+			!InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf))) ||
+			(_tcsstr(buf, _T("350")) == NULL && _tcsstr(buf, _T("110")) == NULL))
+		{
+			status = ERR_REGET;
+			return NULL;
+		}
+	}
+	if((hFile = FtpOpenFile(hConn, path + 1, fput ? GENERIC_WRITE : GENERIC_READ,
+		FTP_TRANSFER_TYPE_BINARY|INTERNET_FLAG_RELOAD,0)) == NULL)
+	{
+		gle = GetLastError();
+		*buf = 0;
+		InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf)));
+		// wrong path - dir may not exist or upload may be not allowed
+		// we use ftp://host//path (double /) to define path from FS root
+		if(fput && (_tcsstr(buf, _T("550")) != NULL ||  _tcsstr(buf, _T("553")) != NULL))
+		{
+
+			movp = path + 1;
+			if(*movp == _T('/')) movp++; // don't need to creat root
+			while(_tcschr(movp, _T('/')))
+			{
+				*_tcschr(movp,_T('/')) = 0;
+				FtpCreateDirectory(hConn, path + 1);
+				InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf)));
+				*(movp + lstrlen(movp)) = _T('/');
+				movp = _tcschr(movp, _T('/')) + 1;
+			}
+			if(status != ERR_CREATEDIR &&
+				(hFile = FtpOpenFile(hConn, path + 1, GENERIC_WRITE,
+				FTP_TRANSFER_TYPE_BINARY|INTERNET_FLAG_RELOAD,0)) == NULL)
+			{
+				status = ERR_PATH;
+				if(InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf))))
+					lstrcpyn(szStatus[status], _tcsstr(buf, _T("550")), sizeof(szStatus[0]) / sizeof(TCHAR));
+			}         
+		}
+		// may be firewall related error, let's give user time to disable it
+		else if(gle == 12003)
+		{
+			if(_tcsstr(buf, _T("550")))
+			{
+				status = ERR_NOTFOUND;
+				lstrcpyn(szStatus[status], _tcsstr(buf, _T("550")), sizeof(szStatus[0]) / sizeof(TCHAR));
+			}
+			else
+			{
+				lstrcpyn(szStatus[status], buf, sizeof(szStatus[0]) / sizeof(TCHAR));
+			}
+		}
+		// timeout (firewall or dropped connection problem)
+		else if(gle == 12002)
+		{
+			if(!silent)
+				resume = true;
+			status = ERR_URLOPEN;
+		}
+	}
+	else InternetGetLastResponseInfo(&err, buf, &(rslt = sizeof(buf)));
+	return hFile;
+}
+
+
+/*****************************************************
+* FUNCTION NAME: openHttpFile()
+* PURPOSE: 
+*    file open, size request, re-get lseek
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+HINTERNET openHttpFile(HINTERNET hConn,
+											 INTERNET_SCHEME nScheme,
+											 TCHAR *path)
+{
+	TCHAR buf[256] = _T("");
+	HINTERNET hFile;
+	DWORD rslt, err;
+	bool first_attempt = true;;
+
+// test connection for PUT, the only way to do this before sending data
+// OPTIONS fails on HttpOpenRequest step for HTTPS
+// but works for HEAD I guess
+	if(fput)// && nScheme != INTERNET_SCHEME_HTTPS)
+	{
+// old proxy's may not support OPTIONS request, so changed to HEAD....
+		if((hFile = HttpOpenRequest(hConn, _T("HEAD"), path, NULL, NULL, NULL,
+//		if((hFile = HttpOpenRequest(hConn, _T("OPTIONS"), path, NULL, NULL, NULL,
+			INTERNET_FLAG_RELOAD | INTERNET_FLAG_KEEP_CONNECTION |
+			(nocookies ? (INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_NO_COOKIES) : 0), 0)) != NULL)
+		{
+			if(*szAuth)
+			{
+				wsprintf(buf, PROXY_AUTH_HDR, szAuth);
+				HttpAddRequestHeaders(hFile, buf, -1,
+					HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			}
+resend_proxy1:
+			if(*szBasic)
+			{
+				wsprintf(buf, HOST_AUTH_HDR, szBasic);
+				HttpAddRequestHeaders(hFile, buf, -1,
+					HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			}
+resend_auth1:
+			if(HttpSendRequest(hFile, NULL, 0, NULL, 0))
+			{
+				queryStatus(hFile);
+// may be don't need to read all from socket, but this looks safer
+				while(InternetReadFile(hFile, buf, sizeof(buf), &rslt) && rslt > 0) {}
+				if(!silent && (status == ERR_PROXY || status == ERR_AUTH))// ||  status == ERR_FORBIDDEN))
+				{
+					rslt = InternetErrorDlg(hDlg, hFile,
+						ERROR_INTERNET_INCORRECT_PASSWORD,
+						FLAGS_ERROR_UI_FILTER_FOR_ERRORS | 
+						FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
+						FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
+						NULL);
+					if (rslt == ERROR_INTERNET_FORCE_RETRY)
+					{
+						status = ST_URLOPEN;
+						if(status == ERR_PROXY) goto resend_proxy1;
+						else goto resend_auth1;
+					}
+					else
+					{
+						status = ST_CANCELLED;
+					}
+					
+				}
+				// no such file is OK for PUT. server first checks authentication
+				if(status == ERR_NOTFOUND || status == ERR_FORBIDDEN || status == ERR_NOTALLOWED)
+				{
+//					MessageBox(childwnd, _T("NOT_FOUND"), "", 0);
+					status = ST_URLOPEN;
+				}
+				// parameters might be updated during dialog popup
+				if(status == ST_URLOPEN)
+				{
+					*buf = 0;
+					if(HttpQueryInfo(hFile, HTTP_QUERY_AUTHORIZATION, buf, &(rslt = sizeof(buf)), NULL) && *buf)
+						lstrcpyn(szBasic, buf, rslt);
+					*buf = 0;
+					if(HttpQueryInfo(hFile, HTTP_QUERY_PROXY_AUTHORIZATION, buf, &(rslt = sizeof(buf)), NULL) && *buf)
+						lstrcpyn(szAuth, buf, rslt);
+				}
+			}
+			else status = ERR_SENDREQUEST;
+			InternetCloseHandle(hFile);
+		}
+		else status = ERR_OPENREQUEST;
+	}
+// request itself
+	if(status == ST_URLOPEN)
+	{
+		if((hFile = HttpOpenRequest(hConn, fput ? _T("PUT") : (fhead ? _T("HEAD") : (szPost ? _T("POST") : NULL)),
+			path, NULL, NULL, NULL,
+			// INTERNET_FLAG_RELOAD conflicts with reget - hidden re-read from beginning has place
+			// INTERNET_FLAG_RESYNCHRONIZE // note - sync may not work with some http servers
+			// reload on first connect (and any req. except GET), just continue on resume.
+			// HTTP Proxy still is a problem for reget
+			(cnt ? 0 : INTERNET_FLAG_RELOAD)
+			| INTERNET_FLAG_KEEP_CONNECTION |
+			(nocookies ? (INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_NO_COOKIES) : 0) | 
+			(nScheme == INTERNET_SCHEME_HTTPS ? MY_HTTPS_FLAGS : 0), 0)) != NULL)
+		{
+			if(*szAuth)
+			{
+				wsprintf(buf, PROXY_AUTH_HDR, szAuth);
+				HttpAddRequestHeaders(hFile, buf, -1,
+					HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			}
+resend_proxy2:
+			if(szPost != NULL)
+				HttpAddRequestHeaders(hFile, POST_HEADER,
+				-1, HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			if(*post_fname)
+				HttpAddRequestHeadersA(hFile, post_fname,
+				-1, HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			if(szHeader != NULL)
+				HttpAddRequestHeaders(hFile, szHeader, -1,
+				HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			if(*szBasic)
+			{
+				wsprintf(buf, HOST_AUTH_HDR, szBasic);
+				HttpAddRequestHeaders(hFile, buf, -1,
+					HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			}
+			if(fput)
+			{
+				wsprintf(buf, PUT_HEADER, fs);
+				HttpAddRequestHeaders(hFile, buf, -1,
+					HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
+			}
+resend_auth2:
+			first_attempt = true;
+			if(nScheme == INTERNET_SCHEME_HTTPS)
+			{
+				if(!mySendRequest(hFile))
+				{
+					InternetQueryOption (hFile, INTERNET_OPTION_SECURITY_FLAGS,
+						(LPVOID)&rslt, &(err = sizeof(rslt)));
+					rslt |= MY_CERT_FLAGS;
+					InternetSetOption (hFile, INTERNET_OPTION_SECURITY_FLAGS,
+						&rslt, sizeof(rslt) );
+				}
+				else first_attempt = false;
+			}
+// https Request answer may be after optional second Send only on Win98
+			if(!first_attempt || mySendRequest(hFile))
+			{
+// no status for PUT - headers were sent only. And not need to get size / set position
+				if(!fput)
+				{
+					queryStatus(hFile);
+					if(!silent && (status == ERR_PROXY || status == ERR_AUTH))
+					{
+						rslt = InternetErrorDlg(hDlg, hFile,
+							ERROR_INTERNET_INCORRECT_PASSWORD,
+							FLAGS_ERROR_UI_FILTER_FOR_ERRORS | 
+							FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
+							FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
+							NULL);
+						if (rslt == ERROR_INTERNET_FORCE_RETRY)
+						{
+							status = ST_URLOPEN;
+							if(status == ERR_PROXY) goto resend_proxy2;
+							else goto resend_auth2;
+						}
+						else
+							status = ST_CANCELLED;
+						
+					}
+// get size / set position
+					if(status == ST_URLOPEN)
+					{
+						if(cnt == 0)
+						{
+							if(HttpQueryInfo(hFile, HTTP_QUERY_CONTENT_LENGTH, buf,
+								&(rslt = sizeof(buf)), NULL))
+								fs = _tcstoul(buf, NULL, 0);
+							else fs = NOT_AVAILABLE;
+						}
+						else
+						{
+							if((int)InternetSetFilePointer(hFile, cnt, NULL, FILE_BEGIN, 0) == -1)
+								status = ERR_REGET;
+						}
+					}
+				}
+				
+			}
+			else
+			{
+				if(!queryStatus(hFile))
+					status = ERR_SENDREQUEST;
+			}
+		}
+		else status = ERR_OPENREQUEST;
+	}
+	return hFile;
+}
+
+/*****************************************************
+* FUNCTION NAME: inetTransfer()
+* PURPOSE: 
+*    http/ftp file transfer
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+DWORD __stdcall inetTransfer(void *hw)
+{
+	HINTERNET hSes, hConn, hFile;
+	HINSTANCE hInstance = NULL;
+	HANDLE localFile = NULL;
+	HWND hDlg = (HWND)hw;
+	DWORD lastCnt, rslt, err;
+	TCHAR hdr[2048];
+	TCHAR *host = (TCHAR*)GlobalAlloc(GPTR, g_stringsize * sizeof(TCHAR)),
+		*path = (TCHAR*)GlobalAlloc(GPTR, g_stringsize * sizeof(TCHAR)),
+		*params = (TCHAR*)GlobalAlloc(GPTR, g_stringsize * sizeof(TCHAR)),
+		*user = (TCHAR*)GlobalAlloc(GPTR, g_stringsize * sizeof(TCHAR)),
+		*passwd = (TCHAR*)GlobalAlloc(GPTR, g_stringsize * sizeof(TCHAR));
+
+	URL_COMPONENTS uc = {sizeof(URL_COMPONENTS), NULL, 0,
+		(INTERNET_SCHEME)0, host, g_stringsize, 0 , user, g_stringsize,
+		passwd, g_stringsize, path, g_stringsize, params, g_stringsize};
+
+	if((hSes = InternetOpen(szUserAgent, openType, szProxy, NULL, 0)) != NULL)
+	{
+		if(InternetQueryOption(hSes, INTERNET_OPTION_CONNECTED_STATE, &(rslt=0),
+			&(lastCnt=sizeof(DWORD))) &&
+			(rslt & INTERNET_STATE_DISCONNECTED_BY_USER))
+		{
+			INTERNET_CONNECTED_INFO ci = {INTERNET_STATE_CONNECTED, 0};
+			InternetSetOption(hSes, 
+				INTERNET_OPTION_CONNECTED_STATE, &ci, sizeof(ci));
+		}
+		if(timeout > 0)
+			lastCnt = InternetSetOption(hSes, INTERNET_OPTION_CONNECT_TIMEOUT, &timeout, sizeof(timeout));
+		if(receivetimeout > 0)
+			InternetSetOption(hSes, INTERNET_OPTION_RECEIVE_TIMEOUT, &receivetimeout, sizeof(receivetimeout));
+		// 60 sec WinInet.dll detach delay on socket time_wait fix
+		//      if(hInstance = GetModuleHandle("wininet.dll"))
+		if(hInstance = LoadLibrary(_T("wininet.dll")))
+			myFtpCommand = (FTP_CMD)GetProcAddress(hInstance,
+#ifdef UNICODE
+			"FtpCommandW"
+#else
+			"FtpCommandA"
+#endif
+			);
+		while(!popstring(url) && lstrcmpi(url, _T("/end")) != 0)
+		{
+			// too many customers requested not to do this
+			//         sf(hDlg);
+			if(popstring(fn) != 0 || lstrcmpi(url, _T("/end")) == 0) break;
+			status = ST_CONNECTING;
+			cnt = fs = *host = *user = *passwd = *path = *params = 0;
+			PostMessage(hDlg, WM_TIMER, 1, 0); // show url & fn, do it sync
+			if((localFile = CreateFile(fn, fput ? GENERIC_READ : GENERIC_WRITE, FILE_SHARE_READ,
+				NULL, fput ? OPEN_EXISTING : CREATE_ALWAYS, 0, NULL)) != INVALID_HANDLE_VALUE)
+			{
+				uc.dwHostNameLength = uc.dwUserNameLength = uc.dwPasswordLength =
+					uc.dwUrlPathLength = uc.dwExtraInfoLength = g_stringsize;
+				if(fput)
+				{
+					fs = GetFileSize(localFile, NULL);
+				}
+				if(InternetCrackUrl(url, 0, 0/*ICU_ESCAPE*/ , &uc))
+				{
+					// auth headers for HTTP PUT seems to be lost, preparing encoded login:password
+					if(*user && *passwd)
+					{
+						wsprintf(hdr, _T("%s:%s"), user, passwd);
+						// does unicode version of encoding works correct?
+						// are user and passwd ascii only?
+						encode_base64(lstrlen(hdr), hdr, szBasic);
+						*hdr = 0;
+					}
+					lstrcat(path, params);
+					transfStart = GetTickCount();
+					do
+					{
+						// re-PUT to already deleted tmp file on http server is not possible.
+						// the same with POST - must re-send data to server. for 'resume' loop
+						if((fput && uc.nScheme != INTERNET_SCHEME_FTP) || szPost)
+						{
+							cnt = 0;
+							SetFilePointer(localFile, 0, NULL, SEEK_SET);
+						}
+						status = ST_CONNECTING;
+						lastCnt = cnt;
+						if((hConn = InternetConnect(hSes, host, uc.nPort,
+							lstrlen(user) > 0 ? user : NULL,
+							lstrlen(passwd) > 0 ? passwd : NULL,
+							uc.nScheme == INTERNET_SCHEME_FTP ? INTERNET_SERVICE_FTP : INTERNET_SERVICE_HTTP,
+							uc.nScheme == INTERNET_SCHEME_FTP ? INTERNET_FLAG_PASSIVE : 0, 0)) != NULL)
+						{
+							status = ST_URLOPEN;
+							hFile = uc.nScheme == INTERNET_SCHEME_FTP ?
+								openFtpFile(hConn, path) : openHttpFile(hConn, uc.nScheme, path);
+							if(status != ST_URLOPEN && hFile != NULL)
+							{
+								InternetCloseHandle(hFile);
+								hFile = NULL;
+							}
+							if(hFile != NULL)
+							{
+								if(fhead)
+								{// repeating calls clear headers..
+									if(HttpQueryInfo(hFile, HTTP_QUERY_RAW_HEADERS_CRLF, hdr, &(rslt=2048), NULL))
+										WriteFile(localFile, hdr, rslt, &lastCnt, NULL);
+									status = ST_OK;
+								}
+								else
+								{
+									HWND hBar = GetDlgItem(hDlg, IDC_PROGRESS1);
+									SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, 0, 0);
+									SetWindowText(GetDlgItem(hDlg, IDC_STATIC5), fs == NOT_AVAILABLE ? _T("Not Available") : _T(""));
+									SetWindowText(GetDlgItem(hDlg, IDC_STATIC4), fs == NOT_AVAILABLE ? _T("Unknown") : _T(""));
+									SetWindowLong(hBar, GWL_STYLE, fs == NOT_AVAILABLE ?
+										(GetWindowLong(hBar, GWL_STYLE) | PBS_MARQUEE) : (GetWindowLong(hBar, GWL_STYLE) & ~PBS_MARQUEE)); 
+									SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETMARQUEE, (WPARAM)(fs == NOT_AVAILABLE ? 1 : 0), (LPARAM)50 );
+									fileTransfer(localFile, hFile);
+									if(fput && uc.nScheme != INTERNET_SCHEME_FTP)
+									{
+										rslt = HttpEndRequest(hFile, NULL, 0, 0);
+										queryStatus(hFile);
+									}
+								}
+								InternetCloseHandle(hFile);
+							}
+							InternetCloseHandle(hConn);
+						}
+						else
+						{
+							status = ERR_CONNECT;
+							if(uc.nScheme == INTERNET_SCHEME_FTP &&
+								InternetGetLastResponseInfo(&err, hdr, &(rslt = sizeof(hdr))) &&
+								_tcsstr(hdr, _T("530")))
+							{
+								lstrcpyn(szStatus[status], _tcsstr(hdr, _T("530")), sizeof(szStatus[0]) / sizeof(TCHAR));
+							}
+							else
+							{
+								rslt = GetLastError();
+								if((rslt == 12003 || rslt == 12002) && !silent)
+									resume = true;
+							}
+						}
+					} while(((!fput || uc.nScheme == INTERNET_SCHEME_FTP) &&
+						cnt > lastCnt &&
+						status == ERR_TRANSFER &&
+						SleepEx(PAUSE1_SEC * 1000, false) == 0 &&
+						(status = ST_PAUSE) != ST_OK &&
+						SleepEx(PAUSE2_SEC * 1000, false) == 0)
+						|| (resume &&
+						status != ST_OK &&
+						status != ST_CANCELLED &&
+						status != ERR_NOTFOUND &&
+						ShowWindow(hDlg, SW_HIDE) != -1 &&
+						MessageBox(GetParent(hDlg), szResume, *szCaption ? szCaption : PLUGIN_NAME, MB_RETRYCANCEL|MB_ICONWARNING) == IDRETRY &&
+						(status = ST_PAUSE) != ST_OK &&
+						ShowWindow(hDlg, silent ? SW_HIDE : SW_SHOW) == false &&
+						SleepEx(PAUSE3_SEC * 1000, false) == 0));
+				}
+				else status = ERR_CRACKURL;
+				CloseHandle(localFile);
+				if(!fput && status != ST_OK)
+				{
+					rslt = DeleteFile(fn);
+					break;
+				}
+			}
+			else status = ERR_FILEOPEN;
+		}
+		InternetCloseHandle(hSes);
+		if (lstrcmpi(url, _T("/end"))==0)
+			pushstring(url);
+	}
+	else status = ERR_INETOPEN;
+	GlobalFree(host);
+	GlobalFree(path);
+	GlobalFree(user);
+	GlobalFree(passwd);
+	GlobalFree(params);
+	if(IsWindow(hDlg))
+		PostMessage(hDlg, WM_COMMAND, MAKELONG(IDOK, INTERNAL_OK), 0);
+	return status;
+}
+
+/*****************************************************
+* FUNCTION NAME: fsFormat()
+* PURPOSE: 
+*    formats DWORD (max 4 GB) file size for dialog, big MB
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+void fsFormat(DWORD bfs,
+							TCHAR *b)
+{
+	if(bfs == NOT_AVAILABLE)
+		lstrcpy(b, _T("???"));
+	else if(bfs == 0)
+		lstrcpy(b, _T("0"));
+	else if(bfs < 10 * 1024)
+		wsprintf(b, _T("%u bytes"), bfs);
+	else if(bfs < 10 * 1024 * 1024)
+		wsprintf(b, _T("%u kB"), bfs / 1024);
+	else wsprintf(b, _T("%u MB"), (bfs / 1024 / 1024));
+}
+
+
+/*****************************************************
+* FUNCTION NAME: progress_callback
+* PURPOSE: 
+*    old-style progress bar text updates
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+
+void progress_callback(void)
+{
+	TCHAR buf[1024] = _T(""), b[1024] = _T("");
+	int time_sofar = max(1, (GetTickCount() - transfStart) / 1000);
+	int bps = cnt / time_sofar;
+	int remain = (cnt > 0 && fs != NOT_AVAILABLE) ? (MulDiv(time_sofar, fs, cnt) - time_sofar) : 0;
+	TCHAR *rtext=szSecond;
+	if(remain < 0) remain = 0;
+	if (remain >= 60)
+	{
+		remain/=60;
+		rtext=szMinute;
+		if (remain >= 60)
+		{
+			remain/=60;
+			rtext=szHour;
+		}
+	}
+	wsprintf(buf,
+		szProgress,
+		cnt/1024,
+		fs > 0 && fs != NOT_AVAILABLE ? MulDiv(100, cnt, fs) : 0,
+		fs != NOT_AVAILABLE ? fs/1024 : 0,
+		bps/1024,((bps*10)/1024)%10
+		);
+	if (remain) wsprintf(buf + lstrlen(buf),
+		szRemaining,
+		remain,
+		rtext,
+		remain==1?_T(""):szPlural
+		);
+	SetDlgItemText(hDlg, IDC_STATIC1, (cnt == 0 || status == ST_CONNECTING) ? szConnecting : buf);
+	if(fs > 0 && fs != NOT_AVAILABLE)
+		SendMessage(GetDlgItem(hDlg, IDC_PROGRESS1), PBM_SETPOS, MulDiv(cnt, PB_RANGE, fs), 0);
+	if (*szCaption == 0)
+		wsprintf(buf, szDownloading,
+			_tcschr(fn, _T('\\')) ? _tcsrchr(fn, _T('\\')) + 1 : fn);
+	else wsprintf(buf, _T("%s"),szCaption);
+	HWND hwndS = GetDlgItem(childwnd, 1006);
+	if(!silent && hwndS != NULL && IsWindow(hwndS))
+	{
+		GetWindowText(hwndS, b, sizeof(b));
+		if(lstrcmp(b, buf) != 0)
+			SetWindowText(hwndS, buf);
+	}
+}
+
+/*****************************************************
+* FUNCTION NAME: onTimer()
+* PURPOSE: 
+*    updates text fields every second
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+void onTimer(HWND hDlg)
+{
+	TCHAR b[128];
+	DWORD ct = (GetTickCount() - transfStart) / 1000,
+		tt = (GetTickCount() - startTime) / 1000;
+	// dialog window caption
+	wsprintf(b,  _T("%s - %s"), *szCaption ? szCaption : PLUGIN_NAME, szStatus[status]);
+	if(fs > 0 && fs != NOT_AVAILABLE && status == ST_DOWNLOAD)
+	{
+		wsprintf(b + lstrlen(b), _T(" %d%%"), MulDiv(100, cnt, fs));
+	}
+	if(szBanner == NULL) SetWindowText(hDlg, b);
+	// current file and url
+	SetDlgItemText(hDlg, IDC_STATIC1, (szAlias && *szAlias) ? szAlias : url);
+	SetDlgItemText(hDlg, IDC_STATIC2, /*_tcschr(fn, '\\') ? _tcsrchr(fn, '\\') + 1 : */fn);
+	// bytes done and rate
+	if(cnt > 0)
+	{
+		fsFormat(cnt, b);
+		if(ct > 1 && status == ST_DOWNLOAD)
+		{
+			lstrcat(b, _T("   ( "));
+			fsFormat(cnt / ct, b + lstrlen(b));
+			lstrcat(b, _T("/sec )"));
+		}
+	}
+	else *b = 0;
+	SetDlgItemText(hDlg, IDC_STATIC3, b);
+	// total download time
+	wsprintf(b, _T("%d:%02d:%02d"), tt / 3600, (tt / 60) % 60, tt % 60);
+	SetDlgItemText(hDlg, IDC_STATIC6, b);
+	// file size, time remaining, progress bar
+	if(fs > 0 && fs != NOT_AVAILABLE)
+	{
+		fsFormat(fs, b);
+		SetDlgItemText(hDlg, IDC_STATIC5, b);
+		SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, MulDiv(cnt, PB_RANGE, fs), 0);
+		if(cnt > 5000)
+		{
+			ct = MulDiv(fs - cnt, ct, cnt);
+			wsprintf(b, _T("%d:%02d:%02d"), ct / 3600, (ct / 60) % 60, ct % 60);
+		}
+		else *b = 0;
+		SetWindowText(GetDlgItem(hDlg, IDC_STATIC4), b);
+	}
+}
+
+/*****************************************************
+* FUNCTION NAME: centerDlg()
+* PURPOSE: 
+*    centers dlg on NSIS parent 
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+void centerDlg(HWND hDlg)
+{
+	HWND hwndParent = GetParent(hDlg);
+	RECT nsisRect, dlgRect, waRect;
+	int dlgX, dlgY, dlgWidth, dlgHeight;
+
+	if(hwndParent == NULL || silent)
+		return;
+	if(popup)
+		GetWindowRect(hwndParent, &nsisRect);
+	else GetClientRect(hwndParent, &nsisRect);
+	GetWindowRect(hDlg, &dlgRect);
+
+	dlgWidth = dlgRect.right - dlgRect.left;
+	dlgHeight = dlgRect.bottom - dlgRect.top;
+	dlgX = (nsisRect.left + nsisRect.right - dlgWidth) / 2;
+	dlgY = (nsisRect.top + nsisRect.bottom - dlgHeight) / 2;
+
+	if(popup)
+	{
+		SystemParametersInfo(SPI_GETWORKAREA, 0, &waRect, 0);
+		if(dlgX > waRect.right - dlgWidth)
+			dlgX = waRect.right - dlgWidth;
+		if(dlgX < waRect.left) dlgX = waRect.left;
+		if(dlgY > waRect.bottom - dlgHeight)
+			dlgY = waRect.bottom - dlgHeight;
+		if(dlgY < waRect.top) dlgY = waRect.top;
+	}
+	else dlgY += 20;
+
+	SetWindowPos(hDlg, HWND_TOP, dlgX, dlgY, 0, 0, SWP_NOSIZE);
+}
+
+/*****************************************************
+* FUNCTION NAME: onInitDlg()
+* PURPOSE: 
+*    dlg init
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+void onInitDlg(HWND hDlg)
+{
+	HFONT hFont;
+	HWND hPrbNew;
+	HWND hPrbOld;
+	HWND hCan = GetDlgItem(hDlg, IDCANCEL);
+
+	if(childwnd)
+	{
+		hPrbNew = GetDlgItem(hDlg, IDC_PROGRESS1);
+		hPrbOld = GetDlgItem(childwnd, 0x3ec);
+
+		// Backland' fix for progress bar redraw/style issue.
+		// Original bar may be hidden because of interfernce with other plug-ins.
+		LONG prbStyle = WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
+		if(hPrbOld != NULL)
+		{ 
+			prbStyle |= GetWindowLong(hPrbOld, GWL_STYLE); 
+		} 
+		SetWindowLong(hPrbNew, GWL_STYLE, prbStyle); 
+
+		if(!popup)
+		{
+			if((hFont = (HFONT)SendMessage(childwnd, WM_GETFONT, 0, 0)) != NULL)
+			{
+				SendDlgItemMessage(hDlg, IDC_STATIC1, WM_SETFONT, (WPARAM)hFont, 0);
+				SendDlgItemMessage(hDlg, IDCANCEL, WM_SETFONT, (WPARAM)hFont, 0);
+			}
+			if(*szCancel == 0)
+				GetWindowText(GetDlgItem(GetParent(childwnd), IDCANCEL), szCancel, sizeof(szCancel));
+			SetWindowText(hCan, szCancel);
+			SetWindowPos(hPrbNew, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
+		}
+	}
+
+	if(nocancel)
+	{
+		if(hCan != NULL)
+			ShowWindow(hCan, SW_HIDE);
+		if(popup)
+			SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) ^ WS_SYSMENU);
+	}
+	SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETRANGE,
+		0, MAKELPARAM(0, PB_RANGE));
+	if(szBanner != NULL)
+	{
+		SendDlgItemMessage(hDlg, IDC_STATIC13, STM_SETICON,
+			(WPARAM)LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(103)), 0);
+		SetDlgItemText(hDlg, IDC_STATIC12, szBanner);
+		SetWindowText(hDlg, *szCaption ? szCaption : PLUGIN_NAME);
+	}
+	SetTimer(hDlg, 1, 1000, NULL);
+	if(*szUrl != 0)
+	{
+		SetDlgItemText(hDlg, IDC_STATIC20, szUrl);
+		SetDlgItemText(hDlg, IDC_STATIC21, szDownloading);
+		SetDlgItemText(hDlg, IDC_STATIC22, szConnecting);
+		SetDlgItemText(hDlg, IDC_STATIC23, szProgress);
+		SetDlgItemText(hDlg, IDC_STATIC24, szSecond);
+		SetDlgItemText(hDlg, IDC_STATIC25, szRemaining);
+	}
+}
+
+/*****************************************************
+* FUNCTION NAME: dlgProc()
+* PURPOSE: 
+*    dlg message handling procedure
+* SPECIAL CONSIDERATIONS:
+*    todo: better dialog design
+*****************************************************/
+BOOL WINAPI dlgProc(HWND hDlg,
+										UINT message,
+										WPARAM wParam,
+										LPARAM lParam )  {
+											switch(message)    {
+	 case WM_INITDIALOG:
+		 onInitDlg(hDlg);
+		 centerDlg(hDlg);
+		 break;
+	 case WM_PAINT:
+		 // child dialog redraw problem. return false is important
+		 RedrawWindow(GetDlgItem(hDlg, IDC_STATIC1), NULL, NULL, RDW_INVALIDATE);
+		 RedrawWindow(GetDlgItem(hDlg, IDCANCEL), NULL, NULL, RDW_INVALIDATE);
+		 RedrawWindow(GetDlgItem(hDlg, IDC_PROGRESS1), NULL, NULL, RDW_INVALIDATE);
+		 UpdateWindow(GetDlgItem(hDlg, IDC_STATIC1));
+		 UpdateWindow(GetDlgItem(hDlg, IDCANCEL));
+		 UpdateWindow(GetDlgItem(hDlg, IDC_PROGRESS1));
+		 return false;
+	 case WM_TIMER:
+		 if(!silent && IsWindow(hDlg))
+		 {
+			 //  long connection period and paused state updates
+			 if(status != ST_DOWNLOAD && GetTickCount() - transfStart > PROGRESS_MS)
+				 transfStart += PROGRESS_MS;
+			 if(popup) onTimer(hDlg);
+			 else progress_callback();
+			 RedrawWindow(GetDlgItem(hDlg, IDC_STATIC1), NULL, NULL, RDW_INVALIDATE);
+			 RedrawWindow(GetDlgItem(hDlg, IDCANCEL), NULL, NULL, RDW_INVALIDATE);
+			 RedrawWindow(GetDlgItem(hDlg, IDC_PROGRESS1), NULL, NULL, RDW_INVALIDATE);
+		 }
+		 break;
+	 case WM_COMMAND:
+		 switch(LOWORD(wParam))
+		 {
+		 case IDCANCEL:
+			 if(nocancel) break;
+			 if(szQuestion &&
+				 MessageBox(hDlg, szQuestion, *szCaption ? szCaption : PLUGIN_NAME, MB_ICONWARNING|MB_YESNO) == IDNO)
+				 break;
+			 status = ST_CANCELLED;
+		 case IDOK:
+			 if(status != ST_CANCELLED && HIWORD(wParam) != INTERNAL_OK) break;
+			 // otherwise in the silent mode next banner windows may go to background
+			 //         if(silent) sf(hDlg);
+			 KillTimer(hDlg, 1);
+			 DestroyWindow(hDlg);
+			 break;
+		 }
+	 default: return false;
+											}
+											return true;
+}
+
+/*****************************************************
+* FUNCTION NAME: get()
+* PURPOSE: 
+*    http/https/ftp file download entry point
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+extern "C"
+void __declspec(dllexport) get(HWND hwndParent,
+															 int string_size,
+															 TCHAR *variables,
+															 stack_t **stacktop,
+															 extra_parameters *extra
+															 )
+{
+	HANDLE hThread;
+	DWORD dwThreadId;
+	MSG msg;
+	TCHAR szUsername[64]=_T(""), // proxy params
+		szPassword[64]=_T("");
+
+
+	EXDLL_INIT();
+
+// for repeating /nounload plug-un calls - global vars clean up
+	silent = popup = resume = nocancel = noproxy = nocookies = false;
+	myFtpCommand = NULL;
+	openType = INTERNET_OPEN_TYPE_PRECONFIG;
+	status = ST_CONNECTING;
+	*szCaption = *szCancel = *szUserAgent = *szBasic = *szAuth = 0;
+
+	url = (TCHAR*)GlobalAlloc(GPTR, string_size * sizeof(TCHAR));
+	if(szPost)
+	{
+		popstring(url);
+#ifdef UNICODE
+		WideCharToMultiByte(CP_ACP, 0, url, -1, szPost, string_size, NULL, NULL);
+#else
+		lstrcpy(szPost, url);
+#endif
+		fSize = strlen(szPost);
+	}
+	// global silent option
+	if(extra->exec_flags->silent != 0)
+		silent = true;
+	// we must take this from stack, or push url back
+	while(!popstring(url) && *url == _T('/'))
+	{
+		if(lstrcmpi(url, _T("/silent")) == 0)
+			silent = true;
+		else if(lstrcmpi(url, _T("/caption")) == 0)
+			popstring(szCaption);
+		else if(lstrcmpi(url, _T("/username")) == 0)
+			popstring(szUsername);
+		else if(lstrcmpi(url, _T("/password")) == 0)
+			popstring(szPassword);
+		else if(lstrcmpi(url, _T("/nocancel")) == 0)
+			nocancel = true;
+		else if(lstrcmpi(url, _T("/nocookies")) == 0)
+			nocookies = true;
+		else if(lstrcmpi(url, _T("/noproxy")) == 0)
+			openType = INTERNET_OPEN_TYPE_DIRECT;
+		else if(lstrcmpi(url, _T("/popup")) == 0)
+		{
+			popup = true;
+			szAlias = (TCHAR*)GlobalAlloc(GPTR, string_size);
+			popstring(szAlias);
+		}
+		else if(lstrcmpi(url, _T("/resume")) == 0)
+		{
+			popstring(url);
+			if(lstrlen(url) > 0)
+				lstrcpy(szResume, url);
+			resume = true;
+		}
+		else if(lstrcmpi(url, _T("/translate")) == 0)
+		{
+			if(popup)
+			{
+				popstring(szUrl);
+				popstring(szStatus[ST_DOWNLOAD]); // Downloading
+				popstring(szStatus[ST_CONNECTING]); // Connecting
+				lstrcpy(szStatus[ST_URLOPEN], szStatus[ST_CONNECTING]);
+				popstring(szDownloading);// file name
+				popstring(szConnecting);// received
+				popstring(szProgress);// file size
+				popstring(szSecond);// remaining time
+				popstring(szRemaining);// total time
+			}
+			else
+			{
+				popstring(szDownloading);
+				popstring(szConnecting);
+				popstring(szSecond);
+				popstring(szMinute);
+				popstring(szHour);
+				popstring(szPlural);
+				popstring(szProgress);
+				popstring(szRemaining);
+			}
+		}
+		else if(lstrcmpi(url, _T("/banner")) == 0)
+		{
+			popup = true;
+			szBanner = (TCHAR*)GlobalAlloc(GPTR, string_size);
+			popstring(szBanner);
+		}
+		else if(lstrcmpi(url, _T("/canceltext")) == 0)
+		{
+			popstring(szCancel);
+		}
+		else if(lstrcmpi(url, _T("/question")) == 0)
+		{
+			szQuestion = (TCHAR*)GlobalAlloc(GPTR, string_size);
+			popstring(szQuestion);
+			if(*szQuestion == 0) lstrcpy(szQuestion, DEF_QUESTION);
+		}
+		else if(lstrcmpi(url, _T("/useragent")) == 0)
+		{
+			popstring(szUserAgent);
+		}
+		else if(lstrcmpi(url, _T("/proxy")) == 0)
+		{
+			szProxy = (TCHAR*)GlobalAlloc(GPTR, string_size * sizeof(TCHAR));
+			popstring(szProxy);
+			openType = INTERNET_OPEN_TYPE_PROXY;
+		}
+		else if(lstrcmpi(url, _T("/connecttimeout")) == 0)
+		{
+			popstring(url);
+			timeout = _tcstol(url, NULL, 10) * 1000;
+		}
+		else if(lstrcmpi(url, _T("/receivetimeout")) == 0)
+			
+		{
+			popstring(url);
+			receivetimeout = _tcstol(url, NULL, 10) * 1000;
+		}
+		else if(lstrcmpi(url, _T("/header")) == 0)
+		{
+			szHeader = (TCHAR*)GlobalAlloc(GPTR, string_size);
+			popstring(szHeader);
+		}
+		else if(lstrcmpi(url, _T("/file")) == 0)
+		{
+			HANDLE hFile = CreateFileA(szPost, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+			DWORD rslt;
+			if(hFile == INVALID_HANDLE_VALUE)
+			{
+				status = ERR_FILEOPEN;
+				goto cleanup;
+			}
+			if((fSize = GetFileSize(hFile, NULL)) == 0)
+			{
+				CloseHandle(hFile);
+				status = ERR_FILEREAD;
+				goto cleanup;
+			}
+			wsprintfA(post_fname, "Filename: %s",
+				strchr(szPost, '\\') ? strrchr(szPost, '\\') + 1 : szPost);
+			GlobalFree(szPost);
+			szPost = (char*)GlobalAlloc(GPTR, fSize);
+			if(ReadFile(hFile, szPost, fSize, &rslt, NULL) == 0 || rslt != fSize)
+			{
+				CloseHandle(hFile);
+				status = ERR_FILEREAD;
+				goto cleanup;
+			}
+			CloseHandle(hFile);
+		}
+	}
+	pushstring(url);
+//	if(*szCaption == 0) lstrcpy(szCaption, PLUGIN_NAME);
+	if(*szUserAgent == 0) lstrcpy(szUserAgent, INETC_USERAGENT);
+	if(*szPassword && *szUsername)
+	{
+		wsprintf(url, _T("%s:%s"), szUsername, szPassword);
+		encode_base64(lstrlen(url), url, szAuth);
+	}
+	// may be silent for plug-in, but not so for installer itself - let's try to define 'progress text'
+	if(hwndParent != NULL &&
+		(childwnd = FindWindowEx(hwndParent, NULL, _T("#32770"), NULL)) != NULL &&
+		!silent)
+		SetDlgItemText(childwnd, 1006, *szCaption ? szCaption : PLUGIN_NAME);
+	else InitCommonControls(); // or NSIS do this before .onInit?
+	// cannot embed child dialog to non-existing parent. Using 'silent' to hide it
+	if(childwnd == NULL && !popup) silent = true;
+	// let's use hidden popup dlg in the silent mode - works both on .onInit and Page
+	if(silent) { resume = false; popup = true; }
+	// google says WS_CLIPSIBLINGS helps to redraw... not in my tests...
+	if(!popup)
+	{
+		unsigned int wstyle = GetWindowLong(childwnd, GWL_STYLE);
+		wstyle |= WS_CLIPSIBLINGS;
+		SetWindowLong(childwnd, GWL_STYLE, wstyle);
+	}
+	startTime = GetTickCount();
+	if((hDlg = CreateDialog(g_hInstance,
+		MAKEINTRESOURCE(szBanner ? IDD_DIALOG2 : (popup ? IDD_DIALOG1 : IDD_DIALOG3)),
+		(popup ? hwndParent : childwnd), dlgProc)) != NULL)
+	{
+
+		if((hThread = CreateThread(NULL, 0, inetTransfer, (LPVOID)hDlg, 0,
+			&dwThreadId)) != NULL)
+		{
+			HWND hButton = GetDlgItem(childwnd, 0x403);
+			HWND hList = GetDlgItem(childwnd, 0x3f8);
+			DWORD dwStyleButton = 0;
+			BOOL fVisibleList = false;
+			if(!silent)
+			{
+				ShowWindow(hDlg, SW_NORMAL);
+				if(childwnd && !popup)
+				{
+					if(hButton)
+					{
+						dwStyleButton = GetWindowLong(hButton, GWL_STYLE);
+						EnableWindow(hButton, false);
+					}
+					if(hList)
+					{
+						fVisibleList = IsWindowVisible(hList);
+						ShowWindow(hList, SW_HIDE);
+					}
+				}
+			}
+
+			while(IsWindow(hDlg) &&
+				GetMessage(&msg, NULL, 0, 0) > 0)
+			{
+				if(!IsDialogMessage(hDlg, &msg) &&
+					!IsDialogMessage(hwndParent, &msg) &&
+					!TranslateMessage(&msg))
+					DispatchMessage(&msg);
+			}
+
+			if(WaitForSingleObject(hThread, 3000) == WAIT_TIMEOUT)
+			{
+				TerminateThread(hThread, 1);
+				status = ERR_TERMINATED;
+			}
+			CloseHandle(hThread);
+			if(!silent && childwnd)
+			{
+				SetDlgItemText(childwnd, 1006, _T(""));
+				if(!popup)
+				{
+					if(hButton)
+						SetWindowLong(hButton, GWL_STYLE, dwStyleButton);
+					if(hList && fVisibleList)
+						ShowWindow(hList, SW_SHOW);
+				}
+				//            RedrawWindow(childwnd, NULL, NULL, RDW_INVALIDATE|RDW_ERASE);
+			}
+		}
+		else
+		{
+			status = ERR_THREAD;
+			DestroyWindow(hDlg);
+		}
+	}
+	else {
+		status = ERR_DIALOG;
+		wsprintf(szStatus[status] + lstrlen(szStatus[status]), _T(" (Err=%d)"), GetLastError());
+	}
+cleanup:
+	// we need to clean up stack from remaining url/file pairs.
+	// this multiple files download head pain and may be not safe
+	while(!popstring(url) && lstrcmpi(url, _T("/end")) != 0)
+	{
+		/* nothing MessageBox(NULL, url, _T(""), 0);*/
+	}
+	GlobalFree(url);
+	if(szAlias) GlobalFree(szAlias);
+	if(szBanner) GlobalFree(szAlias);
+	if(szQuestion) GlobalFree(szQuestion);
+	if(szProxy) GlobalFree(szProxy);
+	if(szPost) GlobalFree(szPost);
+	if(szHeader) GlobalFree(szHeader);
+
+	url = szProxy = szHeader = szAlias = szQuestion = NULL;
+	szPost = NULL;
+	fput = fhead = false;
+
+	pushstring(szStatus[status]);
+}
+
+/*****************************************************
+* FUNCTION NAME: put()
+* PURPOSE: 
+*    http/ftp file upload entry point
+* SPECIAL CONSIDERATIONS:
+*    re-put not works with http, but ftp REST - may be.
+*****************************************************/
+extern "C"
+void __declspec(dllexport) put(HWND hwndParent,
+															 int string_size,
+															 TCHAR *variables,
+															 stack_t **stacktop,
+															 extra_parameters *extra
+															 )
+{
+	fput = true;
+	lstrcpy(szDownloading, _T("Uploading %s"));
+	lstrcpy(szStatus[2], _T("Uploading"));
+	get(hwndParent, string_size, variables, stacktop, extra);
+}
+
+/*****************************************************
+* FUNCTION NAME: post()
+* PURPOSE: 
+*    http post entry point
+* SPECIAL CONSIDERATIONS:
+*
+*****************************************************/
+extern "C"
+void __declspec(dllexport) post(HWND hwndParent,
+																int string_size,
+																TCHAR *variables,
+																stack_t **stacktop,
+																extra_parameters *extra
+																)
+{
+	szPost = (CHAR*)GlobalAlloc(GPTR, string_size);
+	get(hwndParent, string_size, variables, stacktop, extra);
+}
+
+/*****************************************************
+* FUNCTION NAME: head()
+* PURPOSE: 
+*    http/ftp file upload entry point
+* SPECIAL CONSIDERATIONS:
+*    re-put not works with http, but ftp REST - may be.
+*****************************************************/
+extern "C"
+void __declspec(dllexport) head(HWND hwndParent,
+																int string_size,
+																TCHAR *variables,
+																stack_t **stacktop,
+																extra_parameters *extra
+																)
+{
+	fhead = true;
+	get(hwndParent, string_size, variables, stacktop, extra);
+}
+
+/*****************************************************
+* FUNCTION NAME: DllMain()
+* PURPOSE: 
+*    Dll main (initialization) entry point
+* SPECIAL CONSIDERATIONS:
+*    
+*****************************************************/
+BOOL WINAPI DllMain(HANDLE hInst,
+										ULONG ul_reason_for_call,
+										LPVOID lpReserved)
+{
+	g_hInstance=(HINSTANCE)hInst;
+	return TRUE;
+}
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsp b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsp
new file mode 100644
index 000000000..2a4d46410
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsp
@@ -0,0 +1,175 @@
+# Microsoft Developer Studio Project File - Name="inetc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=inetc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "inetc.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "inetc.mak" CFG="inetc - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "inetc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "inetc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "inetc - Win32 Release_Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "inetc - Win32 Debug_Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "inetc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "debug"
+# PROP Intermediate_Dir "debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O1 /I "..\ExDll" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib wininet.lib comctl32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /nodefaultlib /out:"..\..\plugins\inetc.dll" /opt:nowin98
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF  "$(CFG)" == "inetc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\ExDll" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib wininet.lib comctl32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\plugins\inetc.dll" /pdbtype:sept
+# SUBTRACT LINK32 /incremental:no /debug
+
+!ELSEIF  "$(CFG)" == "inetc - Win32 Release_Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_Unicode"
+# PROP BASE Intermediate_Dir "Release_Unicode"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Debug_Unicode"
+# PROP Intermediate_Dir "Debug_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O1 /I "..\ExDll" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib wininet.lib comctl32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /nodefaultlib /out:"..\..\Unicode\plugins\inetc.dll" /opt:nowin98
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF  "$(CFG)" == "inetc - Win32 Debug_Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_Unicode"
+# PROP BASE Intermediate_Dir "Debug_Unicode"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_Unicode"
+# PROP Intermediate_Dir "Debug_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\ExDll" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /D "inetc_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib wininet.lib comctl32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Unicode\plugins\inetc.dll" /pdbtype:sept
+# SUBTRACT LINK32 /incremental:no /debug
+
+!ENDIF 
+
+# Begin Target
+
+# Name "inetc - Win32 Release"
+# Name "inetc - Win32 Debug"
+# Name "inetc - Win32 Release_Unicode"
+# Name "inetc - Win32 Debug_Unicode"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\inetc.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE="..\Graphics\Icons\classic-install.ico"
+# End Source File
+# Begin Source File
+
+SOURCE=.\inetc.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsw b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsw
new file mode 100644
index 000000000..98a25c5b2
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "ftpc"=".\inetc.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.rc b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.rc
new file mode 100644
index 000000000..6a29a56f3
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc.rc
@@ -0,0 +1,170 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Russian resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+#ifdef _WIN32
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // Russian resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_DIALOG1 DIALOGEX 0, 0, 286, 71
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Inetc plug-in"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LTEXT           "",IDC_STATIC1,50,4,230,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    LTEXT           "",IDC_STATIC2,50,18,230,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    CTEXT           "",IDC_STATIC3,50,32,102,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    CTEXT           "",IDC_STATIC4,220,32,60,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    CONTROL         "Progress1",IDC_PROGRESS1,"msctls_progress32",NOT 
+                    WS_VISIBLE,5,62,275,7
+    CTEXT           "",IDC_STATIC5,50,46,102,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    CTEXT           "",IDC_STATIC6,220,46,60,12,SS_CENTERIMAGE,
+                    WS_EX_STATICEDGE
+    CONTROL         "URL",IDC_STATIC20,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,
+                    5,6,44,10
+    CONTROL         "File name",IDC_STATIC21,"Static",SS_LEFTNOWORDWRAP | 
+                    WS_GROUP,5,20,44,10
+    CONTROL         "Transfered",IDC_STATIC22,"Static",SS_LEFTNOWORDWRAP | 
+                    WS_GROUP,5,34,44,10
+    CONTROL         "File size",IDC_STATIC23,"Static",SS_LEFTNOWORDWRAP | 
+                    WS_GROUP,5,48,44,10
+    CONTROL         "Remaining time",IDC_STATIC24,"Static",SS_LEFTNOWORDWRAP | 
+                    WS_GROUP,164,34,55,10
+    CONTROL         "Total time",IDC_STATIC25,"Static",SS_LEFTNOWORDWRAP | 
+                    WS_GROUP,164,48,55,10
+END
+
+IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 226, 62
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Inetc plug-in"
+FONT 8, "MS Sans Serif"
+BEGIN
+    ICON            103,IDC_STATIC13,4,4,20,20
+    LTEXT           "Please wait",IDC_STATIC12,35,6,184,28
+    CONTROL         "Progress1",IDC_PROGRESS1,"msctls_progress32",NOT 
+                    WS_VISIBLE,12,40,201,11
+END
+
+IDD_DIALOG3 DIALOG DISCARDABLE  0, 0, 266, 62
+STYLE DS_CONTROL | WS_CHILD | WS_VISIBLE
+FONT 8, "MS Sans Serif"
+BEGIN
+    CONTROL         "Progress1",IDC_PROGRESS1,"msctls_progress32",0x0,0,23,
+                    266,11
+    CTEXT           "",IDC_STATIC1,0,8,266,11
+    PUSHBUTTON      "Cancel",IDCANCEL,166,41,80,16
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_DIALOG1, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 279
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 64
+    END
+
+    IDD_DIALOG2, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 219
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 55
+    END
+
+    IDD_DIALOG3, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 259
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 55
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc_local.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc_local.nsi
new file mode 100644
index 000000000..845a18d64
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/inetc_local.nsi
@@ -0,0 +1,80 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Local Test"
+OutFile "inetc_local.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+
+;                     PUT test
+
+; FTP requires anonymous access in sample below.
+; HTTP sample put.php included to package. Stores test.jpg as m2.bmp
+; check server files present after upload
+
+    inetc::put "http://localhost/put.php" "$EXEDIR\test.jpg"
+    Pop $0
+
+    inetc::put "ftp://localhost/test.jpg" "$EXEDIR\test.jpg"
+; not anonymous format
+;    inetc::put "ftp://login:password@localhost/test.jpg" "$EXEDIR\test.jpg"
+    Pop $1
+
+	DetailPrint "PUT: HTTP $0, FTP $1 (verify server files)"
+
+
+;                    POST test
+
+; HTTP sample post.php and post_form.htm (to compare results) included
+
+    inetc::post "login=ami&passwd=333" "http://localhost/post.php?lg=iam&pw=44" "$EXEDIR\post_reply.htm"
+    Pop $2
+
+	DetailPrint "POST: $2 (post_reply.htm)"
+
+
+;                   HEAD test
+
+; uses uploaded earlier test.jpg
+
+    inetc::head /silent "http://localhost/m2.bmp" "$EXEDIR\head.txt"
+    Pop $3
+
+	DetailPrint "HEAD: $3 (head.txt)"
+
+
+;                   GET test
+
+; 2 files download in nsisdl mode 
+    inetc::get "http://localhost/m2.bmp" "$EXEDIR\get1.jpg" "http://localhost/m2.bmp" "$EXEDIR\get2.jpg"
+    Pop $4
+
+    inetc::get /popup "Localhost:GET with Popup" "http://localhost/m2.bmp" "$EXEDIR\get3.jpg"
+    Pop $5
+
+    inetc::get /banner "Local Test GET with Banner" "http://localhost/m2.bmp" "$EXEDIR\get4.jpg"
+    Pop $6
+
+    inetc::get /silent "ftp://localhost/test.jpg" "$EXEDIR\get5.jpg"
+    Pop $7
+
+	DetailPrint "GET: NSISDL $4, POPUP $5, BANNER $6, FTP $7 (get1-5.jpg)"
+
+	SetDetailsView show
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.nsi
new file mode 100644
index 000000000..9dcf0d2bb
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.nsi
@@ -0,0 +1,30 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Post Test"
+OutFile "post.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; this is my LAN sample, use your own URL for tests. Sample post.php included
+
+    inetc::post "login=ami&passwd=333" "http://localhost/post.php?lg=iam&pw=44" "$EXEDIR\post_reply.htm"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.php b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.php
new file mode 100644
index 000000000..f6a894964
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post.php
@@ -0,0 +1,13 @@
+<html>
+<head>
+</head>
+<body>
+<?php
+echo "post.login=".$_POST['login']."<br>";
+echo "post.passwd=".$_POST['passwd']."<br>";
+echo "get.lg=".$_GET['lg']."<br>";
+echo "get.pw=".$_GET['pw']."<br>";
+?>
+</body>
+
+</html>
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.nsi
new file mode 100644
index 000000000..7bb7b7704
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.nsi
@@ -0,0 +1,30 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Post Test"
+OutFile "post_file.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; this is my LAN sample, use your own URL for tests. Sample post.php included
+
+    inetc::post "$EXEDIR\inetc.cpp" /file "http://localhost/post_file.php" "$EXEDIR\post_file.htm"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.php b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.php
new file mode 100644
index 000000000..07ab4fbf2
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_file.php
@@ -0,0 +1,10 @@
+<?php
+$headers = apache_request_headers();
+
+foreach ($headers as $header => $value) {
+    echo "$header: $value <br />\n";
+}
+echo "new <br />";
+foreach ($_FILES as $key => $value) echo $key . "<>" . $value . "<br/>\n";
+echo file_get_contents('php://input');
+?> 
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_form.html b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_form.html
new file mode 100644
index 000000000..046d60533
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/post_form.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+<title>Registration form for post.php test</title>
+</head>
+<body>
+This form sends POST request to server. It was interesting to compare server echo <br>
+reply (by included post.php) for this form and InetLoad plug-in - in my <br>
+tests server did not see any difference between them :)<br> 
+<form name="MainLogin" action="/post.php?lg=ami&pw=333" method="post">
+
+<input type="text" name="login" value="" tabindex="1"><br>
+<input type="password" name="passwd" value="" tabindex="2"><br>
+<input type="submit" name="In" value="Enter"  tabindex="3">
+
+</form>
+
+</body>
+</html>
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.nsi
new file mode 100644
index 000000000..95cc8dda4
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.nsi
@@ -0,0 +1,30 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Test"
+OutFile "put.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; this is my LAN sample, use your own URL for tests. Login/pwd hidden from user. Sample put.php (for http request) included
+
+    inetc::put "http://localhost/put.php" "$EXEDIR\test.jpg"
+;    inetc::put /POPUP "ftp://localhost/" /CAPTION "my local ftp upload" "ftp://localhost/test.jpg" "$EXEDIR\test.jpg"
+    Pop $0
+    MessageBox MB_OK "Upload Status: $0"
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.php b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.php
new file mode 100644
index 000000000..7bb2bf526
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/put.php
@@ -0,0 +1,19 @@
+<?php
+/* 
+   PUT data comes in on the stdin stream, which is php://input
+   for PHP compiled as a module, although most documentation claim
+   it's php://stdin
+*/
+$putdata = fopen("php://input", "r");
+$fp = fopen("m2.bmp", "w");
+$i = 0;
+while ($data = fread($putdata, 1024))
+{
+    echo "data pass: " . $i++ . "\n";
+    fwrite($fp, $data);
+}
+fflush($fp);
+fclose($fp);
+fclose($putdata);
+copy("m2.bmp", $request_uri);
+?>
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/recursive.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/recursive.nsi
new file mode 100644
index 000000000..52e032663
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/recursive.nsi
@@ -0,0 +1,64 @@
+Name "Inetc Recursive Dir Upload Test"
+OutFile "recursive.exe"
+
+!include "MUI.nsh"
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_LANGUAGE "English"
+!include "FileFunc.nsh"
+!insertmacro GetFileAttributes
+
+var url
+var path
+
+Function dirul
+
+  Push $0 ; search handle
+  Push $1 ; file name
+  Push $2 ; attributes
+
+  FindFirst $0 $1 "$path\*"
+loop:
+  StrCmp $1 "" done
+  ${GetFileAttributes} "$path\$1" DIRECTORY $2
+  IntCmp $2 1 isdir
+retry:
+  Inetc::put $url/$1 "$path\$1" /end
+  Pop $2
+  DetailPrint "$2 $path\$1"
+  StrCmp $2 "OK" cont
+  MessageBox MB_YESNO "$path\$1 file upload failed. Retry?" IDYES retry
+  Abort "terminated by user"
+  Goto cont
+isdir:
+  StrCmp $1 . cont
+  StrCmp $1 .. cont
+  Push $path
+  Push $url
+  StrCpy $path "$path\$1"
+  StrCpy $url "$url/$1"
+  Call dirul
+  Pop $url
+  Pop $path
+cont:
+  FindNext $0 $1
+  Goto loop
+done:
+  FindClose $0
+
+  Pop $2
+  Pop $1
+  Pop $0
+
+FunctionEnd
+
+
+Section "Dummy Section" SecDummy
+
+  SetDetailsView hide
+  StrCpy $path "$EXEDIR"
+; put is dir in the user's ftp home, use //put for root-relative path
+  StrCpy $url ftp://takhir:pwd@localhost/put
+  Call dirul
+  SetDetailsView show
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.nsi
new file mode 100644
index 000000000..cd2943420
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.nsi
@@ -0,0 +1,30 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Redirect Test"
+OutFile "redirect.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+    SetDetailsView hide
+
+    inetc::get "http://localhost/redirect.php" "$EXEDIR\redirect.htm" /end
+    Pop $1
+
+    MessageBox MB_OK "Download Status: $1"
+
+SectionEnd
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.php b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.php
new file mode 100644
index 000000000..afe455283
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/redirect.php
@@ -0,0 +1,6 @@
+<?php
+/* 
+   Location header sets 302 status
+*/
+header("Location: http://localhost/index.htm")
+?>
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/resource.h b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/resource.h
new file mode 100644
index 000000000..d7fc835a6
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/resource.h
@@ -0,0 +1,47 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by inetc.rc
+//
+#define IDC_SLOGIN                      8
+#define IDC_PROGRESS                    10
+#define IDC_SUBTEXT                     11
+#define IDC_SPWD                        11
+#define IDC_ICON1                       12
+#define IDD_DIALOG1                     101
+#define IDI_ICON1                       102
+#define IDI_ICON2                       103
+#define IDD_AUTH                        104
+#define IDI_ICON3                       105
+#define IDI_ICON4                       106
+#define IDI_ICON5                       107
+#define IDD_DIALOG2                     108
+#define IDI_ICON6                       109
+#define IDD_DIALOG3                     110
+#define IDC_STATIC1                     1001
+#define IDC_STATIC2                     1002
+#define IDC_STATIC3                     1003
+#define IDC_STATIC4                     1004
+#define IDC_PROGRESS1                   1005
+#define IDC_STATIC5                     1006
+#define IDC_STATIC6                     1007
+#define IDC_STATIC12                    1008
+#define IDC_STATIC13                    1009
+#define IDC_STATIC20                    1009
+#define IDC_STATIC21                    1010
+#define IDC_STATIC22                    1011
+#define IDC_STATIC23                    1012
+#define IDC_STATIC24                    1013
+#define IDC_STATIC25                    1014
+#define IDC_ELOGIN                      1015
+#define IDC_EPWD                        1016
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        111
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1018
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/timeout.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/timeout.nsi
new file mode 100644
index 000000000..7ff5688af
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/timeout.nsi
@@ -0,0 +1,31 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Timeout Test"
+OutFile "to.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_LANGUAGE "English"
+
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; additional headers. Sample php returns raw headers
+    inetc::get /receivetimeout 12 "http://localhost/to.php" "$EXEDIR\to.html"
+    Pop $0
+
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
+
+
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/translate.nsi b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/translate.nsi
new file mode 100644
index 000000000..053a8155e
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/translate.nsi
@@ -0,0 +1,32 @@
+
+;--------------------------------
+; General Attributes
+
+Name "Inetc Translate Test"
+OutFile "Translate.exe"
+
+
+;--------------------------------
+;Interface Settings
+
+  !include "MUI.nsh"
+  !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
+  !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_PAGE_FINISH
+  !insertmacro MUI_LANGUAGE "Russian"
+
+
+;--------------------------------
+;Installer Sections
+
+Section "Dummy Section" SecDummy
+
+; This is russian variant. See Readme.txt for a list of parameters.
+; Use LangStrings as TRANSLATE parameters for multilang options
+
+    inetc::load /POPUP "" /CAPTION "���� �������" /TRANSLATE "URL" "��������" "������� ����������" "��� �����" �������� "������" "��������" "������" "http://ineum.narod.ru/g06s.htm" "$EXEDIR\g06s.htm"
+    Pop $0 # return value = exit code, "OK" if OK
+    MessageBox MB_OK "Download Status: $0"
+
+SectionEnd
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/wiki.txt b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/wiki.txt
new file mode 100644
index 000000000..f7fccb58e
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Inetc/wiki.txt
@@ -0,0 +1,169 @@
+{{PageAuthor|Takhir}}
+
+== Links ==
+
+Download:<br>
+<attach>Inetc.zip</attach><br>
+
+[http://forums.winamp.com/showthread.php?threadid=198596 Forum thread]
+
+== Description ==
+
+Internet client plug-in for files download and upload. Based on the InetLoad plug-in. Network implementation uses MS WinInet API, supports http/https and ftp protocols. Plugin has better proxy support compared to NSISdl plug-in. Command line may include few URL/File pairs to be transfered. If server or proxy login/password are not set in the script, it displays IE-style authentication dialog (except silent mode). Plug-in supports 3 "transfer in progress" display modes:
+
+# old NSISdl style - additional embedded progress bar and text on the INSTFILES page;
+# POPUP dialog mode with detailed info;
+# BANNER mode with simple popup window.
+
+Plug-in recognizes Installer's Silent mode and this case hides any output (this feature requires NSIS 2.03 or later). Program implements simple re-get functionality - host reconnect and download from current position after short pause. While program depends on IE settings, it changes current IE mode to online. NSISdl code fragment was used for progress bar displaying in the "old style" mode.
+For ftp use "host/path" for file location relative to user's home dir and 
+"host//path" for absolute path.
+
+== Command line ==
+
+Plug-in DLL functions (entry points): get, post, head, put
+
+=== get DLL Function ===
+
+<highlight-nsis>inetc::get [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD]
+ [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC]  [/RECEIVETIMEOUT TO_SEC] [/SILENT] 
+ [/CAPTION TEXT] [/NOCOOKIES]  [/RESUME RETRY_QUESTION] [/POPUP HOST_ALIAS | /BANNER TEXT] 
+ [/CANCELTEXT CANCEL_TEXT] [/QUESTION CANCEL_QUESTION] [/USER_AGENT USER_AGENT_TEXT] 
+ [/HEADER HEADER_TEXT] [/TRANSLATE LANG_PARAMS]
+ URL1 local_file1 [URL2 local_file2 [...]] [/END]</highlight-nsis>
+This call returns "OK" string if successful, error description string if failed (see included InetLoad.cpp file for a full set of status strings). Usage and result processing samples are included to the package.
+
+; /PROXY
+: Overwrites current proxy settings, not required in most cases. IE settings will be used by default.
+
+; /USERNAME
+: Proxy username (http only).
+
+; /PASSWORD
+: Proxy password (http only).  For server (http/ftp) authentication it is possible to use URL encoded name and password, for example <nowiki>http://username:password@nsis.sourceforge.net</nowiki>.
+
+;/NOPROXY
+: Disables proxy settings for this connection (if any)
+
+;/NOCANCEL
+: Prevents download from being interrupted by user (locks Esc, Alt-F4, Cancel handling)
+
+;/CONNECTTIMEOUT - 
+:Sets INTERNET_OPTION_CONNECT_TIMEOUT, seconds, default - IE current parameter value. 
+
+;/RECEIVETIMEOUT - 
+:Sets INTERNET_OPTION_RECEIVE_TIMEOUT, seconds, default - IE current parameter value. 
+
+; /SILENT
+: Key hides plug-in' output (both popup dialog and embedded progress bar). Not required if 'SilentInstall silent' mode was defined in script (NSIS 2.03 or later).
+
+; /RESUME
+: On the permanent connection/transfer error instead of exit first displays message box with "resume download" question. Useful for dial-up connections and big files - allows user to restore connection and resume download. Default is "Your internet connection seems to have dropped out!\nPlease reconnect and click Retry to resume downloading...".
+
+; /CAPTION
+: Defines caption text for /BANNER mode, caption prefix (left of '-') for /POPUP mode and caption for RESUME MessageBox. Default is "InetLoad plug-in" if not set or "".
+
+; /POPUP
+: This mode displays detailed download dialog instead of embedded progress bar. Also useful in .onInit function (i.e. not in Section). If HOST_ALIAS is not "", text will replace URL in the dialog - this allows to hide real URL (including password). 
+
+; /BANNER 
+: Displays simple popup dialog (MSI Banner mode) and sets dialog TEXT (up to 3 lines using $\n).
+
+; /CANCELTEXT
+: Text for the Cancel button in the NSISdl mode. Default is NSIS dialog Cancel button text (current lang). 
+
+; /QUESTION
+: Text for the optional MessageBox if user tries to cancel download. If /QUESTION "" was used default "Are you sure that you want to stop download?" will be substituted.
+
+; /USERAGENT
+: UserAgent http request header value. Default is "NSIS_Inetc (Mozilla)". 
+
+; /HEADER
+: Adds or replaces http request header. Common HEADER_TEXT format is "header: value". 
+
+; /NOCOOKIES 
+: Removes cookies from http request
+
+; /END
+: Allows to limit plug-in stack reading (optional, required if you stores other vars in the stack).
+
+; /TRANSLATE
+: Allows translating plug-in text in the POPUP or "old style" (NSISdl) modes (see Readme for parameters). In the BANNER mode text is also customizable.
+
+=== post DLL Function ===
+
+<highlight-nsis>inetc::post TEXT2POST [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN  /PASSWORD PROXY_PASSWD]
+ [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC]  [/RECEIVETIMEOUT TO_SEC] [/SILENT]
+ [/FILE] [/CAPTION TEXT] [/NOCOOKIES] [/POPUP HOST_ALIAS | /BANNER TEXT]
+ [/CANCELTEXT CANCEL_TEXT] [/USER_AGENT USER_AGENT_TEXT] [/TRANSLATE LANG_PARAMS]
+ URL1 local_file1 [URL2 local_file2 [...]] [/END]</highlight-nsis>
+Sets POST http mode and defines text string or file name to be used in the POST (http only). Disables auto re-get. No char replaces used (%20 and others). /FILE option allows to send TEXT2POST file content to server, additional 'Filename:' header added to request this case. 
+
+=== head DLL Function ===
+
+The same as get, but requests http headers only. Writes raw headers to file.
+
+=== put DLL Function ===
+
+<highlight-nsis>inetc::put [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY]
+ [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC]  [/RECEIVETIMEOUT TO_SEC] [/SILENT] [/CAPTION TEXT]
+ [/POPUP HOST_ALIAS | /BANNER TEXT] [/CANCELTEXT CANCEL_TEXT] [/USER_AGENT USER_AGENT_TEXT]
+ [/TRANSLATE LANG_PARAMS] [/NOCOOKIES]
+ URL1 local_file1 [URL2 local_file2 [...]] [/END]</highlight-nsis>
+Return value and parameters (if applicable) are the same as for previous entry point.
+
+== Examples ==
+
+<highlight-nsis>
+inetc::get "http://dl.zvuki.ru/6306/mp3/12.mp3" "$EXEDIR\12.mp3" \
+               "ftp://dl.zvuki.ru/6306/mp3/11.mp3" "$EXEDIR\11.mp3"
+Pop $0
+</highlight-nsis>
+
+<highlight-nsis>
+inetc::put /BANNER "Cameron Diaz upload in progress..." \
+"http://www.dreamgirlswallpaper.co.uk/fiveyearsonline/wallpaper/Cameron_Diaz/camerond09big.JPG" \
+"$EXEDIR\cd.jpg"
+  Pop $0
+  StrCmp $0 "OK" dlok
+  MessageBox MB_OK|MB_ICONEXCLAMATION "http upload Error, click OK to abort installation" /SD IDOK
+  Abort
+dlok:
+  ...
+</highlight-nsis>
+
+<highlight-nsis>
+;installer window restoring after silent calls from .onGUIInit
+;by Edward Marshall & Jonathan Beddoes
+;temporarily makes the installer window topmost so that inetc doesn't drop our focus
+
+Function .onGUIInit
+
+  ; Get window handle of installer into register 0.
+  ; This only works in onGUIInit! (so you still can't silently call inetc from onInit)
+  StrCpy $0 $HWNDPARENT
+
+  ; Make window always-on-top. Yes, this is bad but we are only doing it temporarily!
+  ; This prevents inetc's hidden dialog from getting foreground precedence over the installer.
+  ; This must be done before any inetc calls.
+  ; -1 = HWND_TOPMOST, 3 = SWP_NOSIZE|SWP_NOMOVE
+  System::Call "user32::SetWindowPos(i r0, i -1, i 0, i 0, i 0, i 0, i 3)"
+
+  ; Now do whatever you want with inetc.
+  inetc::head /silent "http://ineum.narod.ru/spr_2006.htm" "$EXEDIR\head.txt"
+
+  ; Now set the installer window back to normal (not always-on-top).
+  ; -2 = HWND_NOTOPMOST, 3 = SWP_NOSIZE|SWP_NOMOVE
+  System::Call "user32::SetWindowPos(i r0, i -2, i 0, i 0, i 0, i 0, i 3)"
+
+FunctionEnd
+</highlight-nsis>
+<highlight-nsis>
+; Following attribute also can restore installer Window
+; BGGradient 000000 000080 FFFFFF
+</highlight-nsis>
+== Credits ==
+
+Many thanks to Backland who offered a simple way to fix NSISdl mode crashes, added 'center parent' function, offers few nice design ideas and spent a lot of time testing the plug-in. 
+
+[[Category:Plugins]]
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nlf
new file mode 100644
index 000000000..1ec535899
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nsh
new file mode 100644
index 000000000..154afb60a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Afrikaans.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nlf
new file mode 100644
index 000000000..a27dbd8d6
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nsh
new file mode 100644
index 000000000..faf9224e7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Albanian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nlf
new file mode 100644
index 000000000..e8ba22303
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nsh
new file mode 100644
index 000000000..1f6f3b51c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Arabic.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nlf
new file mode 100644
index 000000000..182ce50a9
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nsh
new file mode 100644
index 000000000..67884c57a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Armenian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nlf
new file mode 100644
index 000000000..2f46f500e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nsh
new file mode 100644
index 000000000..bf5939bcd
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Basque.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nlf
new file mode 100644
index 000000000..3730e75a5
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nsh
new file mode 100644
index 000000000..57089408c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Belarusian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nlf
new file mode 100644
index 000000000..d7d7ebb34
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nsh
new file mode 100644
index 000000000..e9df25470
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bosnian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nlf
new file mode 100644
index 000000000..a908febc6
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nsh
new file mode 100644
index 000000000..e80cb1b94
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Breton.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nlf
new file mode 100644
index 000000000..de8fe4ad3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nsh
new file mode 100644
index 000000000..d8d9fdbc8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Bulgarian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nlf
new file mode 100644
index 000000000..8800ef074
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nsh
new file mode 100644
index 000000000..931cc43ce
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Catalan.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nlf
new file mode 100644
index 000000000..8faaec4bf
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nsh
new file mode 100644
index 000000000..038825ddb
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Cibemba.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nlf
new file mode 100644
index 000000000..97a7f2b14
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nsh
new file mode 100644
index 000000000..0670d63b6
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Croatian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nlf
new file mode 100644
index 000000000..2a337ea73
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nsh
new file mode 100644
index 000000000..ae1f19b10
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Czech.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nlf
new file mode 100644
index 000000000..943749e5d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nsh
new file mode 100644
index 000000000..ae4ebd45f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Danish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nlf
new file mode 100644
index 000000000..a556efa3a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nsh
new file mode 100644
index 000000000..b3fb5c232
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Dutch.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nlf
new file mode 100644
index 000000000..70b9cd88c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nsh
new file mode 100644
index 000000000..bf8ae0ee3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Efik.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nlf
new file mode 100644
index 000000000..09cc0b80c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nsh
new file mode 100644
index 000000000..cc8cdc911
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/English.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nlf
new file mode 100644
index 000000000..61d26c34c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nsh
new file mode 100644
index 000000000..771eb24ab
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/EnglishGB.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nlf
new file mode 100644
index 000000000..2636fce9d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nsh
new file mode 100644
index 000000000..c01b319f7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Esperanto.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nlf
new file mode 100644
index 000000000..5317a1c8b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nsh
new file mode 100644
index 000000000..b75660f6c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Estonian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nlf
new file mode 100644
index 000000000..0f62cf696
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nsh
new file mode 100644
index 000000000..44f6b4e64
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Farsi.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nlf
new file mode 100644
index 000000000..8d64dd3c1
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nsh
new file mode 100644
index 000000000..2c003fbde
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Finnish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nlf
new file mode 100644
index 000000000..613491767
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nsh
new file mode 100644
index 000000000..81b6b2afc
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/French.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nlf
new file mode 100644
index 000000000..456b9d878
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nsh
new file mode 100644
index 000000000..ac5b8846d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Galician.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nlf
new file mode 100644
index 000000000..8f49e35ad
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nsh
new file mode 100644
index 000000000..730b550be
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Georgian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nlf
new file mode 100644
index 000000000..16969cb68
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nsh
new file mode 100644
index 000000000..807bc8fbe
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/German.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nlf
new file mode 100644
index 000000000..a7fbcd542
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nsh
new file mode 100644
index 000000000..c8b07c661
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Greek.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nlf
new file mode 100644
index 000000000..22781ff24
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nsh
new file mode 100644
index 000000000..b95289f81
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hebrew.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nlf
new file mode 100644
index 000000000..5f95e49e8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nsh
new file mode 100644
index 000000000..f68f90697
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hindi.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nlf
new file mode 100644
index 000000000..dde9b3191
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nsh
new file mode 100644
index 000000000..e117f7fb4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Hungarian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nlf
new file mode 100644
index 000000000..565d05a5d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nsh
new file mode 100644
index 000000000..5806041d4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Icelandic.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nlf
new file mode 100644
index 000000000..f7c914238
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nsh
new file mode 100644
index 000000000..80ef89868
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Igbo.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nlf
new file mode 100644
index 000000000..2e18276f1
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nsh
new file mode 100644
index 000000000..daaba7f34
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Indonesian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nlf
new file mode 100644
index 000000000..a89970ab7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nsh
new file mode 100644
index 000000000..fe46098eb
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Irish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nlf
new file mode 100644
index 000000000..617d4af82
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nsh
new file mode 100644
index 000000000..5f7077881
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Italian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nlf
new file mode 100644
index 000000000..9b94418ba
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nsh
new file mode 100644
index 000000000..d52b12c27
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Japanese.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nlf
new file mode 100644
index 000000000..17010c2f0
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nlf	
@@ -0,0 +1,191 @@
+# Header, don't edit
+NLF v6
+# Start editing here
+# Language ID
+10311
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+1200
+# RTL - anything else than RTL means LTR
+-
+# Translation by .....សុផល្លី (yi sophally, yi.sophally at gmail dot com)
+# ^Branding
+Nullsoft Install System %s
+# ^SetupCaption
+ដំឡើងកម្មវិធី $(^Name) 
+# ^UninstallCaption
+លុប​ $(^Name) ចេញ
+#^LicenseSubCaption
+: កិច្ចសន្យា​អាជ្ញាបប័ណ្ណ
+# ^ComponentsSubCaption
+: ជំរើស​នៃ​ការ​ដំឡើង
+# ^DirSubCaption
+: ថត​ដើម្បី​ដំឡើង
+# ^InstallingSubCaption
+: កំពុងដំឡើង​
+# ^CompletedSubCaption
+: ដំឡើង​រួចរាល់​
+# ^UnComponentsSubCaption
+: ជំរើស​នៃការ​លុបកម្មវិធី​ចេញ​
+# ^UnDirSubCaption
+: ថត​ដែល​ត្រូវលុបកម្មវិធី​ចេញ​
+# ^ConfirmSubCaption
+: ការបញ្ជាក់​ទទួលយក​
+# ^UninstallingSubCaption
+: កំពុង​លុប​ចេញ​
+# ^UnCompletedSubCaption
+: លុបចេញ​រួចរាល់​
+# ^BackBtn
+< &ត្រលប់​ក្រោយ​
+# ^NextBtn
+&ទៅ​មុខ​​ >
+# ^AgreeBtn
+I &យល់​ព្រម​
+# ^AcceptBtn
+ខ្ញុំ​ &យល់ព្រមតាម​កិច្ច​ព្រម​ព្រាង​អាជ្ញាប័ណ្ណ
+# ^DontAcceptBtn
+&ខ្ញុំ​មិន​យល់ព្រមតាម​កិច្ច​ព្រម​ព្រាង​អាជ្ញាប័ណ្ណទេ​
+# ^InstallBtn
+&ដំឡើង​
+# ^UninstallBtn
+&លុប​ចេញ​
+# ^CancelBtn
+បដិសេធ​
+# ^CloseBtn
+&បិទ​
+# ^BrowseBtn
+ស្វែង​&រក​...
+# ^ShowDetailsBtn
+បង្ហាញ​ &​លំអិត​សេចក្តី​
+# ^ClickNext
+ចុច​ទៅមុខ​ដើម្បី​បន្ត​
+# ^ClickInstall
+ចុច​លើ​ដំឡើង​ដើម្បី​ចាប់​ផ្តើម​ដំណើរ​ការ
+# ^ClickUninstall
+ចុច​លើ​លុប​ចេញ​ដើម្បី​ចាប់​ផ្តើម​លុប​​
+# ^Name
+ឈ្មោះ​
+# ^Completed
+រួចរាល់​
+# ^LicenseText
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេល​ដំឡើង​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ចុច​យក​ ខ្ញុំ​យល់​ព្រម​
+# ^LicenseTextCB
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេល​ដំឡើង​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ធិក​យក​ប្រអប់​ខាង​ក្រោម​$_CLICK 
+# ^LicenseTextRB
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេល​ដំឡើង​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ជ្រើស​​យក​ជំរើស​ទី​មួយ​​ខាង​ក្រោម​ $_CLICK 
+# ^UnLicenseText
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេលលុប​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ចុច​យក​ ខ្ញុំ​យល់​ព្រម​
+# ^UnLicenseTextCB
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេល​លុប​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ធិក​យក​ប្រអប់​ខាង​ក្រោម​$_CLICK 
+# ^UnLicenseTextRB
+សូម​អាន​កិច្ចព្រមព្រាង​អាជ្ញាប័ណ្ណ​មុន​ពេល​លុប​កម្មវិធី​​ $(^NameDA) នេះ។ ប្រសិន​បើ​អ្នក​យល់​ស្រប​សូម​ជ្រើស​​យក​ជំរើស​ទី​មួយ​​ខាង​ក្រោម​ $_CLICK 
+# ^Custom
+ជំរើសផ្ទាល់​ខ្លួន​
+# ^ComponentsText
+ធិក​យកសមាសភាគ​ដែល​អ្នក​ចង់​ដំឡើង​និង​ដោះធិក​ពី​សមាស​ភាគ​ដែល​អ្នក​មិន​ចង់​ដំឡើង​ ​$_CLICK
+# ^ComponentsSubText1
+សូមជ្រើស​រើស​ប្រភេទ​នៃ​ការ​ដំឡើង​:
+# ^ComponentsSubText2_NoInstTypes
+សូមជ្រើសរើស​សមាសភាគ​ដើម្បី​ដំឡើង​:
+# ^ComponentsSubText2
+ឬ ជ្រើស​រើស​សមាសភាគ​ជាជំរើស​ណាមួយ​ដែល​អ្នក​ចង់​ដំឡើង​:
+# ^UnComponentsText
+ធិក​យកសមាសភាគ​ដែល​អ្នក​ចង់លុបចេញ​និង​ដោះធិក​ពី​សមាស​ភាគ​ដែល​អ្នក​មិន​ចង់លុបចេញ​​ ​$_CLICK
+# ^UnComponentsSubText1
+សូមជ្រើស​រើស​ប្រភេទ​នៃ​ការលុបកម្មវិធី​:
+# ^UnComponentsSubText2_NoInstTypes
+សូមជ្រើសរើស​សមាសភាគ​ដើម្បីកាត់ចេញ​​:
+# ^UnComponentsSubText2
+ឬ ជ្រើស​រើស​សមាសភាគ​ជាជំរើស​ណាមួយ​ដែល​អ្នក​ចង់​កាត់ចេញ​​:
+# ^DirText
+កម្មវិធី​ជំនួយ​នេះ​នឹង​ដំឡើង​$(^NameDA)នៅក្នុង​ថត​ខាង​ក្រោម​នេះ​។ ដើម្បី​ដំឡើង​នៅ​ក្នុង​ថត​ដទៃ​ទៀត​សូម​ចុច​លើ​ស្វែងរក​ ហើយ​ជ្រើសរើស​ថត​ផ្សេង​ទៀត​។ ​$_CLICK
+# ^DirSubText
+ថត​គោល​ដៅ​
+# ^DirBrowseText
+ជ្រើសរើស​ថត​ដើម្បី​ដំឡើង​កម្មវិធី​$(^NameDA):
+# ^UnDirText
+កម្មវិធី​ជំនួយ​នេះ​នឹងលុប​​$(^NameDA)ចេញពី​ថត​ខាង​ក្រោម​នេះ​។ ដើម្បី​ចេញពី​ក្នុង​ថត​ដទៃ​ទៀត​សូម​ចុច​លើ​ស្វែងរក​ ហើយ​ជ្រើសរើស​ថត​ផ្សេង​ទៀត​។ ​$_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+ជ្រើសរើស​ថត​ដើម្បី​លុប​​កម្មវិធី​$(^NameDA)ចេញ​:
+# ^SpaceAvailable
+"ចណ្លោះទំហំ​ដែលអាចប្រើប្រាស់បាន​: "
+# ^SpaceRequired
+"តំរូវការ​ទំហំ​: "
+# ^UninstallingText
+$(^NameDA) នឹង​ត្រូវ​បាន​លុប​ចេញ​ពី​ថត​ខាង​ក្រោម​នេះ​។ $_CLICK
+# ^UninstallingSubText
+កំពុង​លុប​ចេញពី:​
+# ^FileError
+មាន​កំហុស​ក្នុង​ការ​បើក​ឯកសារ​ដើម្បី​សរសេរ​ចូល​:\r\n\r\n$0\r\n\r\n​ សូមចុចលើ​ បញ្ឈប់​ ដើម្បី​បញ្ចប់ការ​ដំឡើង​ \r\n Retry ដើម្បី​ព្យាយាម​ម្តង​ទៀត​ ឫ បដិសេធ​ដើម្បី​បញ្ឈប់​ឯកសារនេះ​។​
+# ^FileError_NoIgnore
+មាន​កំហុស​ក្នុង​ការ​បើក​ឯកសារ​ដើម្បី​សរសេរ​ចូល​:​\r\n\r\n$0\r\n\r\n សូមចុចលើ​ Retry ដើម្បី​ព្យាយាម​ម្តង​ទៀត ឫ \r\nបដិសេធ ដើម្បី​បញ្ឈប់​ការ​ដំឡើង​។​
+# ^CantWrite
+"មិនអាច​សរសេរ​ចូល​បាន​: "
+# ^CopyFailed
+ការចំលងបរាជ័យ
+​# ^CopyTo
+"ចំលង​ទៅកាន់ "
+# ^Registering
+"កំពុង​ចុះឈ្មោះ​: "
+# ^Unregistering
+"កំពុង​លុប​ឈ្មោះ​: "
+# ^SymbolNotFound
+"មិនអាច​រក​និមិត្ត​សញ្ញាឃើញ​: "
+# ^CouldNotLoad
+"មិន​អាច​ទាញមក​បាន: "
+# ^CreateFolder
+"​បង្កើត​ថត​: "
+# ^CreateShortcut
+"បង្កើត​ផ្លូវកាត់​: "
+# ^CreatedUninstaller
+"កម្មវិធី​ដើម្បី​លុប​ត្រូវបាន​បង្កើត​: "
+# ^Delete
+"លុប​ឯកសា​: "
+# ^DeleteOnReboot
+"លុប​ពេលកុំព្យូទ័រ​​ដំណើរការ​ឡើង​វិញ: "
+# ^ErrorCreatingShortcut
+"មានកំហុស​ក្នុងការ​បង្កើត​ផ្លូវកាត់​: "
+# ^ErrorCreating
+"មាន​កំហុស​ក្នុង​ការ​បង្កើត​: "
+# ^ErrorDecompressing
+មាន​កំហុស​ក្នុង​ការ​ពន្លា​ទិន្នន័យ! កម្មវិធី​ដំឡើង​មាន​បញ្ហា​?
+# ^ErrorRegistering
+មាន​កំហុស​ក្នុង​ការ​ចុះឈ្មោះ​ ឌីអិល​អិល​
+# ^ExecShell
+"ប្រតិប័ត្តសែល​: "
+# ^Exec
+"ប្រតិប័ត្ត: "
+# ^Extract
+"ពន្លា: "
+# ^ErrorWriting
+"ពន្លា​ឯកសារ​: មាន​បញ្ហាពេល​សរសេរ​ចូល​ឯកសារ​ "
+# ^InvalidOpcode
+កម្មវិធី​ដំឡើង​មាន​បញ្ហា​: opcode មិនត្រឹមត្រូវ​
+# ^NoOLE
+"អត់មាន​ OLE សំរាប់​: "
+# ^OutputFolder
+"ថតសំរាប់ដាក់​ទិន្នផល​: "
+# ^RemoveFolder
+"លុបថត​ឯកសារ​: "
+# ^RenameOnReboot
+"ប្តូរឈ្មោះ​នៅពេល​កុំព្យូទ័រ​ដំណើរ​ការ​ឡើង​វិញ​: "
+# ^Rename
+"ប្តូរ​ឈ្មោះ​: "
+# ^Skipped
+"ត្រូវបាន​រំលង​: "
+# ^CopyDetails
+ចំលង​ពិពណ៌នាទៅ​ Clipboard
+# ^LogInstall
+កត់ត្រា​ដំណើរការ​ដំឡើង​
+# ^Byte
+B
+# ^Kilo
+K
+# ^Mega
+M
+# ^Giga
+G
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nsh
new file mode 100644
index 000000000..ec33eead1
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Khmer.nsh	
@@ -0,0 +1,129 @@
+;Language: Khmer (1033)
+;By yi.sophally
+
+!insertmacro LANGFILE "Khmer" "ភាសាខ្មែរ"
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "សូមស្វាគមន៍ចំពោះការ​ដំឡើង​កម្មវិធី​ $(^NameDA)"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "កម្មវិធីជំនួយនេះនឹងនាំអ្នកដល់​ការ​ដំឡើង​កម្មវិធី​នៃកម្មវិធី $(^NameDA).$\r$\n$\r$\nIt ដែល​សូម​អោយ​អ្នក​បិទ​នូវ​កម្ម​វិធី​ទាំងឡាយ​ផ្សេង​ទៀត​មុន​ពេល​ចាប់ផ្តើម​ការ​ដំឡើង​។ ដើម្បី​ងាយ​ស្រួល​ក្នុង​ការ​កែប្រែ​ឯកសារ​នៃប្រព័ន្ធប្រតិបត្តការ​ដោយ​មិន​ចាំបាច់​ចាប់​ផ្តើម​ដំណើរ​ការ​ម៉ាស៊ីនរបស់​អ្នក​​សារ​ជា​ថ្មី។​ $\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "ស្វាគមន៍​ចំពោះ​ការ​លុបកម្មវិធី​ $(^NameDA)​ នេះ"
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "កម្មវិធីជំនួយនេះនឹងនាំអ្នកដល់​ការលុបចេញ​​នៃកម្មវិធី$(^NameDA).$\r$\n$\r$\n​ មុន​ពេល​ចាប់​ផ្តើម​លុប​ចេញ​ សូម​អោយ​ប្រាកដ​ថា​កម្មវិធី​ $(^NameDA) មិនមែន​កំពុង​ដំណើរ​ការ​$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "កិច្ចព្រមព្រាង​អាជ្ញា​ប័ណ្ណ"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "សូម​អាន​អាជ្ញាប័ណ្ណ​អោយ​បាន​ត្រឹម​ត្រូវ​មុន​ពេល​ដំឡើង​កម្មវិធី​ $(^NameDA)។​"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​ សូម​ចុច​ ខ្ញុំយល់ព្រម​ ដើម្បី​ដំណើរការ​បន្ត។ ដើម្បីដំឡើង​​កម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង​។"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​សូម​ចុច​ធិច​ប្រអប់​ខាងក្រោម​។ ដើម្បីដំឡើង​កម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង​ $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​សូមជ្រើសរើស​ជំរើស​ទីមួយ​ខាង​ក្រោម​។ ដើម្បីដំឡើង​កម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "កិច្ចព្រមព្រាង​អាជ្ញា​ប័ណ្ណ"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "សូម​អាន​អាជ្ញាប័ណ្ណ​អោយ​បាន​ត្រឹម​ត្រូវ​មុន​ពេល​លុប​កម្មវិធី​ $(^NameDA)ចេញ។​"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​ សូម​ចុច​ I Agree ដើម្បី​ដំណើរការ​បន្ត។ ដើម្បីលុប​កម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង​ $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​សូម​ចុច​ធិច​ប្រអប់​ខាងក្រោម​។ ដើម្បីលុបកម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង​ $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "ប្រសិន​បើ​អ្នក​យល់​ព្រម​តាម​កិច្ចព្រម​ព្រាង​សូមជ្រើសរើស​ជំរើស​ទីមួយ​ខាង​ក្រោម​។ ដើម្បីលុប​កម្មវិធី​ $(^NameDA) នេះ​អ្នក​ត្រូវ​តែ​យល់ព្រម​តាម​កិច្ចព្រមព្រាង $_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "សូម​ចុច Page Down ដើម្បី​មើល​កិច្ច​ព្រម​ព្រាង​ដែល​នៅសល់​"
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "ជ្រើសរើស​សមាសភាគ"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "ជ្រើសរើស​ដំណើរ​ការ​នៃកម្មវិធី​ $(^NameDA) ​ដែល​អ្នក​ចង់​ដំឡើង​"
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "ជ្រើសរើស​សមាសភាគ"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "ជ្រើសរើស​ដំណើរ​ការ​នៃកម្មវិធី​ $(^NameDA) ​ដែល​អ្នក​ចង់​លប់​​"
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "ការពិពណ័នា"
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "ដាក់កណ្តុរ​បញ្ជារបស់​អ្នក​លើ​សមាសភាគ​ណា​មួយ​ដើម្បី​មើល​ការ​ពិពណ៍នារបស់​វា​​។"
+  !else
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "ដាក់កណ្តុរ​បញ្ជារបស់​អ្នក​លើ​សមាសភាគ​ណា​មួយ​ដើម្បី​មើល​ការ​ពិពណ៍នារបស់​វា​​។"
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "ជ្រើសរើស​កន្លែង​ដើម្បី​ដំឡើង​"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "ជ្រើសរើសថត​ដើម្បី​ដំឡើង​កម្មវិធី​ $(^NameDA)​ ។"
+!endif
+
+!ifdef MUI_UNDIRECTORYPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "ជ្រើសរើស​កន្លែង​ដែលត្រូវ​លប់​ចេញ​"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "ជ្រើសរើសថត​ដើម្បី​លប់​កម្មវិធី​ $(^NameDA)​ ចេញ។"
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "កំពុងដំឡើង​"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "សូម​មេត្តា​រង់ចាំ​ខណះដែល​កម្មវិធី​ $(^NameDA) កំពុង​ត្រូវបាន​ដំឡើង​។"
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "ការដំឡើង​រួចរាល់​"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "ការ​ដំឡើង​ត្រូវ​បាន​បញ្ចប់ដោយ​ជោគជ័យ​"
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "ការដំឡើង​ត្រូវបាន​បញ្ឈប់​"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "ការ​ដំឡើង​ត្រូវបានបរាជ័យ។"
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "កំពុងដំណើរការ​លុប​"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "សូមមេត្តារង់ចាំ​ខណះដែល​កម្មវិធី​ $(^NameDA) កំពុង​ត្រូវ​បាន​លុប​។"
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "ការ​លុប​ចេញ​រួច​រាល់​"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "ការ​លុប​ចេញ​ត្រូវបាន​បរាជ័យ​​។"
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "ការ​លុប​ចេញ​ត្រូវបាន​បញ្ឈប់​"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "ការ​លុប​ចេញ​ត្រូវបាន​បរាជ័យ"
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "កម្មវិធី​ជំនួយ​ក្នុងការ​ដំឡើង​ $(^NameDA) កំពុងត្រូវ​បាន​បញ្ចប់​"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "កម្មវិធី​ $(^NameDA) បាន​ត្រូវ​ដំឡើង​រួចរាល់​នៅក្នុង​កុំព្យូទ័រ​របស់​អ្នក​។ $\r$\n$\r$\nចុច​ Finish ដើម្បីបិទកម្មវិធីជំនួយ​នេះ​"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "កុំព្យូទ័រ​របស់​អ្នក​ត្រូវតែ​ចាប់​ដំណើរ​ការ​សារ​ជាថ្មី​ដើម្បី​បំពេញ​ការ​ដំឡើង​កម្មវិធី​ $(^NameDA)​ នេះ។ តើ​អ្នក​ចង់ចាប់ផ្តើមដំណើរការ​​កុំព្យូទ័រអ្នក​ឡើង​វិញ​ពេល​នេះ​?"
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "កម្មវិធី​ជំនួយ​ក្នុងការ​លុប​ $(^NameDA) កំពុងត្រូវ​បាន​បញ្ចប់"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "កម្មវិធី​ $(^NameDA) បាន​ត្រូវ​លុប​រួចរាល់​ពី​ក្នុង​កុំព្យូទ័រ​របស់​អ្នក​។ $\r$\n$\r$\nចុច​ Finish ដើម្បីបិទកម្មវិធីជំនួយ​នេះ​"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "កុំព្យូទ័រ​របស់​អ្នក​ត្រូវតែ​ចាប់​ដំណើរ​ការ​សារ​ជាថ្មី​ដើម្បី​បំពេញ​ការ​ដំឡើង​កម្មវិធី​ $(^NameDA)​ នេះ។ តើ​អ្នក​ចង់ចាប់ផ្តើមដំណើរការ​​កុំព្យូទ័រអ្នក​ឡើង​វិញ​ពេល​នេះ​?"
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "ចាប់ផ្តើមដំណើរការ​​កុំព្យូទ័រឡើង​វិញ​ពេល​នេះ​"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "ចង់​ដំណើរការ​កុំព្យូទ័រ​ដោយ​ខ្លួន​ឯង​ពេល​ក្រោយ​"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&Run $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Show Readme"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&Finish"  
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "ជ្រើសរើស​ថត​ម៉ឺនុយ Start "
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "ជ្រើសរើស​ថត​ម៉ឺនុយ Start ដើម្បី​បង្កើត​ផ្លូវ​កាត់​ទៅ​កម្ម​វិធី​ $(^NameDA) ។"
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "ជ្រើសរើស​ថត​ម៉ឺនុយ Start ដែល​អ្នក​ចង់​បង្កើត​ផ្លូវកាត់​ទៅ​កម្មវិធី​​នេះ​។​ អ្នក​ក៏​អាច​បញ្ចូលឈ្មោះមួយ​ដើម្បី​បង្កើត​ថត​ថ្មីមួយទៀត​។"
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "មិនបាច់​បង្កើត​ផ្លូវកាត់​"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "លុបកម្មវិធី​ $(^NameDA)​​ ចេញ​"
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "លុបកម្មវិធី​ $(^NameDA) ចេញពីកុំព្យូទ័រ​របស់​អ្នក​។​"
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING "តើ​អ្នក​ប្រាកដ​ថា​នឹង​ចាក​ចេញ​ពី​ការ​ដំឡើង​កម្មវិធី​​ $(^Name) នេះ​មែន​ទេ​?"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING "តើ​អ្នក​ប្រាកដ​ថា​នឹង​ចាក​ចេញ​ពី​ការ​លុបកម្មវិធី​​ $(^Name) នេះ​មែន​ទេ​?"
+!endif
+
+!ifdef MULTIUSER_INSTALLMODEPAGE
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "ជ្រើសរើស​អ្នក​ប្រើប្រាស់​"
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "ជ្រើសរើស​អ្នក​ប្រើប្រាស់​ទាំង​ឡាយណា​ដែល​អ្នក​ចង់​អោយ​ប្រើ​កម្មវិធី​ $(^NameDA)​ នេះ។​"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "សូមជ្រើសរើស​ថាតើ​អ្នក​ចង់​ដំឡើង​កម្មវិធី $(^NameDA) សំរាប់​តែខ្លួន​អ្នក​ រឺ សំរាប់​អ្នករាល់​គ្នា​ដែល​ប្រើ​កុំព្យូទ័រ​នេះ​។ $(^ClickNext)"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "ដំឡើង​សំរាប់​អ្នកទាំង​ឡាយដែល​ប្រើ​កុំព្យូទ័រនេះ"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "ដំឡើងសំរាប់តែខ្ញុំម្នាក់​"
+!endif
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nlf
new file mode 100644
index 000000000..6160fd837
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nsh
new file mode 100644
index 000000000..615227f7b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Korean.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nlf
new file mode 100644
index 000000000..5f244548d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nsh
new file mode 100644
index 000000000..c5d33d2be
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Kurdish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nlf
new file mode 100644
index 000000000..03a5baeff
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nsh
new file mode 100644
index 000000000..273331eae
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Latvian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nlf
new file mode 100644
index 000000000..bc3dd775f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nsh
new file mode 100644
index 000000000..78880deac
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Lithuanian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nlf
new file mode 100644
index 000000000..20c879bc3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nsh
new file mode 100644
index 000000000..c18a407ed
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Luxembourgish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nlf
new file mode 100644
index 000000000..69bd7d890
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nsh
new file mode 100644
index 000000000..f1d4fae8d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Macedonian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nlf
new file mode 100644
index 000000000..dd73961a1
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nsh
new file mode 100644
index 000000000..d84573eda
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malagasy.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nlf
new file mode 100644
index 000000000..8072d5454
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nsh
new file mode 100644
index 000000000..feaea4134
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Malay.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nlf
new file mode 100644
index 000000000..c9f7fe38f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nsh
new file mode 100644
index 000000000..b9a6d4938
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Mongolian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nlf
new file mode 100644
index 000000000..eef204b46
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nsh
new file mode 100644
index 000000000..4ae470a68
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Norwegian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nlf
new file mode 100644
index 000000000..4536a8c8a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nsh
new file mode 100644
index 000000000..dd6f8fb6c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/NorwegianNynorsk.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nlf
new file mode 100644
index 000000000..884e2b7d6
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nsh
new file mode 100644
index 000000000..4cabf6b90
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Pashto.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nlf
new file mode 100644
index 000000000..491629bc6
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nsh
new file mode 100644
index 000000000..d92e470e5
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Polish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nlf
new file mode 100644
index 000000000..082fb1b4e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nsh
new file mode 100644
index 000000000..2974313fa
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Portuguese.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nlf
new file mode 100644
index 000000000..505844b70
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nsh
new file mode 100644
index 000000000..01d6183f9
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/PortugueseBR.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nlf
new file mode 100644
index 000000000..b69ebe91f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nsh
new file mode 100644
index 000000000..9898022f1
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Romanian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nlf
new file mode 100644
index 000000000..253fa5995
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nsh
new file mode 100644
index 000000000..df536bb51
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Russian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nlf
new file mode 100644
index 000000000..32404fd08
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nsh
new file mode 100644
index 000000000..aa3d93edb
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Serbian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nlf
new file mode 100644
index 000000000..5ef26d210
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nsh
new file mode 100644
index 000000000..66b443176
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SerbianLatin.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nlf
new file mode 100644
index 000000000..ad66c887b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nsh
new file mode 100644
index 000000000..59a5e295d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sesotho.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nlf
new file mode 100644
index 000000000..344bb35fd
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nsh
new file mode 100644
index 000000000..68d1dcc00
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SimpChinese.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nlf
new file mode 100644
index 000000000..8020787ae
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nsh
new file mode 100644
index 000000000..eac523832
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovak.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nlf
new file mode 100644
index 000000000..ba985650c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nsh
new file mode 100644
index 000000000..52db6a368
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Slovenian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nlf
new file mode 100644
index 000000000..f78148893
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nsh
new file mode 100644
index 000000000..15281a0d3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Spanish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nlf
new file mode 100644
index 000000000..6134f11fd
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nsh
new file mode 100644
index 000000000..4a4b59010
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/SpanishInternational.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nlf
new file mode 100644
index 000000000..143ba7a9d
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nlf	
@@ -0,0 +1,191 @@
+# Header, Ulah dirop�a
+NLF v6
+# mimitian ti dieu
+# ID Sundanese
+33
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+-
+# RTL - anything else than RTL means LTR
+-
+# Translation sukma gemala [http://facebook.com/sukma.gemala]
+# ^Branding
+Sistem Pamasang Nullsoft %s
+# ^SetupCaption
+Masangkeun $(^Name)
+# ^UninstallCaption
+Miceun $(^Name)
+# ^LicenseSubCaption
+: Aturan jeung Kasapukan
+# ^ComponentsSubCaption
+: Pilihan Instalasi
+# ^DirSubCaption
+: Map Instalasi
+# ^InstallingSubCaption
+: Masangkeun
+# ^CompletedSubCaption
+: R�ngs�
+# ^UnComponentsSubCaption
+: Pilihan Miceun
+# ^UnDirSubCaption
+: Map Miceun
+# ^ConfirmSubCaption
+: Muguhkeun
+# ^UninstallingSubCaption
+: Miceun instalasi
+# ^UnCompletedSubCaption
+: R�ngs�
+# ^BackBtn
+< Sam&�m�hna
+# ^NextBtn
+Tulu&ykeun >
+# ^AgreeBtn
+&Sapuk
+# ^AcceptBtn
+S&apuk
+# ^DontAcceptBtn
+Te&u sapuk
+# ^InstallBtn
+&Pasang
+# ^UninstallBtn
+Pi&ceun
+# ^CancelBtn
+&Bolay
+# ^CloseBtn
+&Tutup
+# ^BrowseBtn
+Pili&h...
+# ^ShowDetailsBtn
+&Detil
+# ^ClickNext
+Klik Tuluykeun pikeun nuluykeun.
+# ^ClickInstall
+Klik Pasang pikeun ngamimitian masang $(^Name).
+# ^ClickUninstall
+Klik Piceun pikeun ngamimitian miceun $(^Name).
+# ^Name
+Ngaran
+# ^Completed
+R�ngs�
+# ^LicenseText
+Imeutan ieu kasapukan sam�m�h masangkeun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, klik Sapuk.
+# ^LicenseTextCB
+Imeutan ieu kasapukan sam�m�h masangkeun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, b�r� contr�ng. $_CLICK
+# ^LicenseTextRB
+Imeutan ieu kasapukan sam�m�h masangkeun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, pilih salah sahiji anu aya di handap. $_CLICK
+# ^UnLicenseText
+Imeutan ieu kasapukan sam�m�h miceun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, klik Sapuk.
+# ^UnLicenseTextCB
+Imeutan ieu kasapukan sam�m�h miceun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, b�r� contr�ng. $_CLICK
+# ^UnLicenseTextRB
+Imeutan ieu kasapukan sam�m�h miceun $(^NameDA). Lamun anjeun narima sakab�h anu dipedar dina kasapukan, pilih salah sahiji anu aya di handap. $_CLICK
+# ^Custom
+Reka
+# ^ComponentsText
+Contr�ng dina kompon�n anu r�k dipasang atawa piceun contr�ngna lamun teu pati perlu. $_CLICK
+# ^ComponentsSubText1
+Pilih tipeu instalasi:
+# ^ComponentsSubText2_NoInstTypes
+Pilih kompon�n-kompon�n anu bakal dipasang:
+# ^ComponentsSubText2
+Atawa, pilih ieu kompon�n anu bakal dipasang:
+# ^UnComponentsText
+Contr�ng dina kompon�n anu r�k dipiceun. $_CLICK
+# ^UnComponentsSubText1
+Pilih tipeu miceun:
+# ^UnComponentsSubText2_NoInstTypes
+Pilih kompon�n-kompon�n anu r�k dipiceun:
+# ^UnComponentsSubText2
+Atawa, pilih ieu kompon�n anu r�k dipiceun:
+# ^DirText
+$(^NameDA) bakal dipasang dina ieu map. Pikeun milih map s�j�n, klik Pilih tuluy tangtukeun map nu dipikahayang ku ajeun. $_CLICK
+# ^DirSubText
+Map anu dituju
+# ^DirBrowseText
+Pilih map pikeun tempat masangkeun $(^NameDA):
+# ^UnDirText
+$(^NameDA) bakal dipiceun tina ieu map. Pikeun milih map s�j�n, klik Pilih tuluy tangtukeun map nu dipikahayang ku ajeun. $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+Pilih map pikeun tempat miceun $(^NameDA):
+# ^SpaceAvailable
+"Rohang disk anu nyampak: "
+# ^SpaceRequired
+"Rohang disk anu dibutuhkeun: "
+# ^UninstallingText
+$(^NameDA) bakal dipiceun tina ieu map. $_CLICK
+# ^UninstallingSubText
+Miceun instalasi:
+# ^FileError
+Henteu bisa nulis koropak: \r\n\t"$0"\r\nKlik abort pikeun ngabolaykeun instalasi,\r\nretry pikeun nyoba deui, atawa\r\nignore lamun moal dipalir�.
+# ^FileError_NoIgnore
+Henteu bisa nulis koropak: \r\n\t"$0"\r\nKlik retry pikeun nyobaan deui, atawa\r\ncancel pikeun ngabolaykeun instalasi
+# ^CantWrite
+"Henteu bisa nulis dina: "
+# ^CopyFailed
+Pros�s niron gagal
+# ^CopyTo
+"Ditiron kana "
+# ^Registering
+"Ngadaftarkeun modul: "
+# ^Unregistering
+"Ngudar modul: "
+# ^SymbolNotFound
+"Henteu manggih : "
+# ^CouldNotLoad
+"Henteu bisa muka: "
+# ^CreateFolder
+"Nyieun map: "
+# ^CreateShortcut
+"Nyieun tumbu: "
+# ^CreatedUninstaller
+"Nyieun aplikasi pamiceun instalasi: "
+# ^Delete
+"Mupus koropak: "
+# ^DeleteOnReboot
+"Bakal dipupus nalika komputer dimimitian-deui: "
+# ^ErrorCreatingShortcut
+"Henteu bisa nyieun tumbu: "
+# ^ErrorCreating
+"Kasalahan dina nyieun: "
+# ^ErrorDecompressing
+Kasalahan nalika muka g�mbolan data! Aplikasi Pamasang ruksak
+# ^ErrorRegistering
+Kasalahan nalika ngadaftarkeun modul DLL
+# ^ExecShell
+"ExecShell: "
+# ^Exec
+"Ngajalankeun: "
+# ^Extract
+"Muka g�mbolan: "
+# ^ErrorWriting
+"G�mbolan: kasalahan nalika nulis koropak "
+# ^InvalidOpcode
+Program Pamasang: opcode henteu lengkep
+# ^NoOLE
+"OLE henteu kapanggih: "
+# ^OutputFolder
+"Map anu dituju: "
+# ^RemoveFolder
+"Mupus map: "
+# ^RenameOnReboot
+"Bakal diganti ngaranna nalika dimimitian-deui (restart): "
+# ^Rename
+"Ngaganti ngaran: "
+# ^Skipped
+Diliwat: "
+# ^CopyDetails
+Tiron Detil kana Clipboard
+# ^LogInstall
+Catet pros�s instalasi
+# ^Byte
+B
+# ^Kilo
+K
+# ^Mega
+M
+# ^Giga
+G
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nsh
new file mode 100644
index 000000000..2397ec9ad
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Sundanese.nsh	
@@ -0,0 +1,129 @@
+;Language: Sundanese  (33)
+;By sukma gemala - http://facebook.com/sukma.gemala
+
+!insertmacro LANGFILE "Sundanese" "Basa Sunda"
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bag�a, ieu t�h Apingan Masang $(^NameDA)"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Apingan Masang bakal ngaping anjeun dina pros�s masangkeun $(^NameDA).$\r$\n$\r$\nAlusna mah tutupkeun heula program s�j�n anu ayeuna keur dijalankeun sam�m�h nuluykeun masang ieu program. Eta hal aya patalina jeung kaperluan ngarobah file anu keur dipak� ku sistem tanpa kudu ngamimitian-deui (restart) komputer anjeun.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bag�a, ieu t�h Apingan Miceun $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Apingan Miceun bakal ngaping anjeun dina pros�s miceun $(^NameDA).$\r$\n$\r$\nSamemeh ngamimitian miceun instalasina, anjeun kudu yakin heula y�n $(^NameDA) henteu eukeur dijalankeun.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "Aturan jeung Kasapukan"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Imeutan ieu aturan jeung kasapukan sam�m�h masangkeun $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Lamun anjeun narima sakab�h anu dipedar, klik Sapuk pikeun nuluykeun. Anjeun kudu satuju sangkan bisa masangkeun $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Lamun anjeun narima sakab�h anu dipedar dina kasapukan, b�r� contr�ng. Anjeun kudu satuju sangkan bisa masangkeun $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Lamun anjeun narima sakab�h anu dipedar dina kasapukan, pilih salah sahiji anu aya dihandap. Anjeun kudu satuju sangkan bisa masangkeun $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Aturan jeung Kasapukan"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Imeutan ieu aturan jeung kasapukan sam�m�h miceun $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Lamun anjeun narima sakab�h anu dipedar, klik Sapuk pikeun nuluykeun. Anjeun kudu satuju sangkan bisa miceun $(^NameDA)."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Lamun anjeun narima sakab�h anu dipedar dina kasapukan, b�r� contr�ng. Anjeun kudu satuju sangkan bisa miceun $(^NameDA). $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Lamun anjeun narima sakab�h anu dipedar dina kasapukan, pilih salah sahiji anu aya dihandap. Anjeun kudu satuju sangkan bisa miceun $(^NameDA). $_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Penc�t Page Down pikeun ningali tuluyanana."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Milih Kompon�n"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Pilih fitur ti $(^NameDA) anu r�k dipasang."
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Wangenan"
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Milih Kompon�n"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Pilih fitur ti $(^NameDA) anu r�k dipiceun."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Tunjuk salah sahiji pikeun ningali kateranganana."
+  !else
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Tunjuk salah sahiji pikeun ningali kateranganana."
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Milih Lokasi Masang"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Pilih map pikeun tempat masangkeun $(^NameDA)."
+!endif
+
+!ifdef MUI_UNDIRECTORYSPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Milih Lokasi Miceun"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Pilih map pikeun tempat miceun $(^NameDA)."
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Masang"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Tungguan,  $(^NameDA) eukeur dipasangkeun."
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "Pros�s Masangkeun R�ngs�"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "$(^NameDA) r�ngs� dipasangkeun."
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "Pros�s Masang Dibolaykeun"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Masangkeun r�ngs� tapi can sampurna."
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Miceun"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Tungguan,  $(^NameDA) eukeur dipiceun."
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Pros�s Miceun R�ngs�"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "$(^NameDA) r�ngs� dipiceun."
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Pros�s Miceun Dibolaykeun"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Miceun r�ngs� tapi can sampurna."
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Ngar�ngs�keun Apingan Masang $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) geus dipasangkeun kana komputer anjeun.$\r$\n$\r$\nKlik R�ngs� pikeun nutup Apingan Masang."
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Komputer anjeun kudu dimimitian-deui (restart) pikeun ngar�ngs�keun pros�s instalasi $(^NameDA). Mmimitian-deui ayeuna?"
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Ngar�ngs�keun Apingan Miceun $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) geus dipiceun tina komputer anjeun.$\r$\n$\r$\nKlik R�ngs� pikeun nutup Apingan Miceun."
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Komputer anjeun kudu dimimitian-deui (restart) pikeun ngar�ngs�keun pros�s uninstall $(^NameDA). Mmimitian-deui ayeuna?"
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Mimitian-deui"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Moal waka"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&Jalankeun $(^NameDA)"
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Buka Koropak Bacaheula"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&R�ngs�"
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Milih Menu Mimiti"
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Pilih map Menu Mimiti (Start Menu) pikeun nempatkeun tumbu $(^NameDA)."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Pilih map Menu Mimiti (Start Menu) pikeun nempatkeun tumbu ieu program. Og� bisa nyieun ngaran map anyar."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ulah nyieun tumbu"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Miceun $(^NameDA)"
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Miceun $(^NameDA) tina komputer anjeun."
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING "Bener, r�k kaluar tina pros�s masangkeun $(^Name)?"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING "Bener, r�k kaluar tina pros�s miceun $(^Name)?"
+!endif
+
+!ifdef MULTIUSER_INSTALLMODEPAGE
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Milih Pamak�"
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Milih pamak� anu r�k dipasangkeun $(^NameDA)."
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Pilih tujuan masangkeun $(^NameDA) keur soranganeun atawa keur kab�h pamak� komputer ieu. $(^ClickNext)"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Pasangkeun keur kab�h pamak� komputer ieu"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Kuring wungkul"
+!endif
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nlf
new file mode 100644
index 000000000..4a498ed90
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nsh
new file mode 100644
index 000000000..0bb6cbceb
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swahili.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nlf
new file mode 100644
index 000000000..20e1b4ee0
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nsh
new file mode 100644
index 000000000..f1525fc8d
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Swedish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nlf
new file mode 100644
index 000000000..d1dce0540
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nsh
new file mode 100644
index 000000000..b47ad88e7
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Tamil.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nlf
new file mode 100644
index 000000000..34ec33370
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nsh
new file mode 100644
index 000000000..29e74dce9
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Thai.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nlf
new file mode 100644
index 000000000..90700348b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nsh
new file mode 100644
index 000000000..b46dd6fd5
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/TradChinese.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nlf
new file mode 100644
index 000000000..bd1968b4b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nsh
new file mode 100644
index 000000000..2f5586df2
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Turkish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nlf
new file mode 100644
index 000000000..5d2a6bc2c
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nsh
new file mode 100644
index 000000000..8aeea8f4e
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Twi.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nlf
new file mode 100644
index 000000000..e556221fd
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nsh
new file mode 100644
index 000000000..7111d5193
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Ukrainian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nlf
new file mode 100644
index 000000000..6d0aed542
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nlf	
@@ -0,0 +1,191 @@
+# Header, don't edit
+NLF v6
+# Start editing here
+# Language ID
+1152
+# Font and size - dash (-) means default  فونت نامى ۋە چوڭلىقى 
+Arial
+9
+# Codepage - dash (-) means ANSI code page كودبېتى
+65001
+# RTL - anything else than RTL means LTR ئوڭدىن سولغا يېزىش
+RTL
+# Translation by Yasinjan Ghupur (yasenghupur@sina.com) 26 April 2012
+# ^Branding
+Nullsoft Install System %s
+# ^SetupCaption
+$(^Name) قاچىلاش
+# ^UninstallCaption
+$(^Name)  ئۆچۈرۈش 
+# ^LicenseSubCaption
+: ئىجازەت كېلىشىمى 
+# ^ComponentsSubCaption
+: قاچىلاش تاللاشلىرى
+# ^DirSubCaption
+: قاچىلايدىغان قىسقۇچ
+# ^InstallingSubCaption
+: قاچىلاۋاتىدۇ
+# ^CompletedSubCaption
+: تاماملاندى
+# ^UnComponentsSubCaption
+: ئۆچۈرۈش تاللاشلىرى
+# ^UnDirSubCaption
+: ئۆچۈرۈدىغان قىسقۇچ
+# ^ConfirmSubCaption
+: جەزىملەش
+# ^UninstallingSubCaption
+: ئۆچۈرۈۋاتىدۇ
+# ^UnCompletedSubCaption
+: تاماملاندى
+# ^BackBtn
+< &كەينىگە
+# ^NextBtn
+&ئالدىغا >
+# ^AgreeBtn
+قوشۇلىمەن
+# ^AcceptBtn
+ ئىجازەت كېلىشىمىدىكى تۈرلەرگە قوشۇلىمەن 
+# ^DontAcceptBtn
+ ئىجازەت كېلىشىمىدىكى تۈرلەرگە قوشۇلمايمەن
+# ^InstallBtn
+&قاچىلاش
+# ^UninstallBtn
+& ئۆچۈرۈش 
+# ^CancelBtn
+قالدۇرۇش
+# ^CloseBtn
+&يېپىش
+# ^BrowseBtn
+كۆرۈش...
+# ^ShowDetailsBtn
+تەپسىلاتىنى كۆرۈش
+# ^ClickNext
+ئالدىغا نى چېكىپ داۋاملاشتۇرۇڭ.
+# ^ClickInstall
+قاچىلاش نى چېكىپ قاچىلاشنى باشلاڭ.
+# ^ClickUninstall
+ئۆچۈرۈش نى چېكىپ ئۆچۈرۈشنى باشلاڭ.
+# ^Name
+نامى
+# ^Completed
+تاماملاندى
+# ^LicenseText
+$(^NameDA) نى قاچىلاشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ چىقىڭ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،قوشۇلىمەن نى بېسىڭ .
+# ^LicenseTextCB
+$(^NameDA) نى قاچىلاشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ چىقىڭ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،تاللاش كاتەكچىسى نى چېكىڭ . $_CLICK
+# ^LicenseTextRB
+$(^NameDA) نى قاچىلاشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ چىقىڭ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،بىرىنجى تاللاش  نى تاللاڭ . $_CLICK
+# ^UnLicenseText
+$(^NameDA) نى ئۆچۈرۈشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،قوشۇلىمەن نى بېسىڭ .
+# ^UnLicenseTextCB
+$(^NameDA) نى ئۆچۈرۈشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ چىقىڭ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،تاللاش كاتەكچىسى نى چېكىڭ . $_CLICK
+# ^UnLicenseTextRB
+$(^NameDA) نى ئۆچۈرۈشتىن بۇرۇن ئىجازەت كېلىشىمىنى كۆرۈپ چىقىڭ. كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،بىرىنجى تاللاش  نى تاللاڭ . $_CLICK
+# ^Custom
+ئۆزى بېكىتىش
+# ^ComponentsText
+قاچىلايدىغان بۆلەكلەرنى تاللاڭ ۋە قاچىلىمايدىغان بۆلەكلەرنى تاللىماڭ. $_CLICK
+# ^ComponentsSubText1
+قاچىلاش ئۇسلۇبىنى تاللاڭ:
+# ^ComponentsSubText2_NoInstTypes
+قاچىلاش بۆلىكىنى تاللاڭ:
+# ^ComponentsSubText2
+ياكى قاچىلىماقچى بولغان بۆلەكنى تاللاڭ:
+# ^UnComponentsText
+ئۆچۈرمەكچى بولغان بۆلەكنى تاللاڭ ھەمدە ئۆچۈرمەيدىغان بۆلەكنى تاللىماڭ. $_CLICK
+# ^UnComponentsSubText1
+ئۆچۈرۈش ئۇسلۇبىنى تاللاڭ:
+# ^UnComponentsSubText2_NoInstTypes
+ئۆچۈرۈش بۆلىكىنى تاللاڭ:
+# ^UnComponentsSubText2
+ياكى ئۆچۈرمەكچى بولغان بۆلەكنى تاللاڭ:
+# ^DirText
+ قاچىلاش يېتەكچىسى $(^NameDA) نى بۇ قىسقۇچنىڭ ئاستىغا قاچىلايدۇ.باشقا قىسقۇچقا قاچىلماقچى بولسىڭىز،كۆرۈش نى چېكىپ باشقا قىسقۇچنى تاللاڭ . $_CLICK
+# ^DirSubText
+نىشان قىسقۇچ
+# ^DirBrowseText
+نى قاچىلايدىغان قىسقۇچنى تاللاڭ $(^NameDA):
+# ^UnDirText
+قاچىلاش يېتەكچىسى $(^NameDA) نى بۇ قىسقۇچنىڭ ئاستىدىن ئۆچۈرۈدۇ.باشقا قىسقۇچتىن ئۆچۈرمەكچى بولسىڭىز،كۆرۈش نى چېكىپ باشقا قىسقۇچنى تاللاڭ . $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+ $(^NameDA) نى ئۆچۈرۈدىغان قىسقۇچنى تاللاڭ :
+# ^SpaceAvailable
+"قاچىلاش بوشلۇقى يېتەرلىك: "
+# ^SpaceRequired
+" ئېھتىياجلىق قاچىلاش بوشلۇقى : "
+# ^UninstallingText
+$(^NameDA) نى تۆۋەندىكى قىسقۇچتىن ئۆچۈرۈدۇ. $_CLICK
+# ^UninstallingSubText
+دىن ئۆچۈرۈۋاتىدۇ:
+# ^FileError
+يازىدىغان ھۆججەتنى ئېچىش خاتالىقى: \r\n\r\n$0\r\n\r\nتوختىتۇش نى بېسىپ قاچىلاشنى توختۇتۇش,\r\nقايتىلاش ياكى \r\nبۇ ھۆججەتتىن ئاتلاپ ئۆتۈپ كېتىش.
+# ^FileError_NoIgnore
+يازىدىغان ھۆججەتنى ئېچىش خاتالىقى: \r\n\r\n$0\r\n\r\nقايتىلاش  نى بېسىپ قاچىلاشنى قايتىلاش ياكى \r\n قاچىلاشنى قالدۇرۇش .
+# ^CantWrite
+"يازالمىدى: "
+# ^CopyFailed
+كۆچۈرەلمىدى
+# ^CopyTo
+"گە كۆچۈرۈش "
+# ^Registering
+"رۇيخەتكە ئېلىۋاتىدۇ: "
+# ^Unregistering
+"رۇيخەتتىن ئۆچۈرۈۋاتىدۇ: "
+# ^SymbolNotFound
+"بەلگىنى تاپالمىدى: "
+# ^CouldNotLoad
+"يۈكلىيەلمىدى: "
+# ^CreateFolder
+"قىسقۇچ  قۇرۇش: "
+# ^CreateShortcut
+"تېزكۆرگۈچ  قۇرۇش: "
+# ^CreatedUninstaller
+" ئۆچۈرۈش يېتەكچىسى ياسالدى: "
+# ^Delete
+"ھۆججەت ئۆچۈرۈش: "
+# ^DeleteOnReboot
+"قايتا قوزغالغاندا  ئۆچۈرۈش: "
+# ^ErrorCreatingShortcut
+"تېزكۆرگۈچ  قۇرۇش خاتالىقى: "
+# ^ErrorCreating
+"قۇرۇش خاتالىقى: "
+# ^ErrorDecompressing
+مەلۇماتلارنى ئەسلىگە قايتۇرۇش خاتالىقى! قاچىلاش يېتەكچىسى بۇزۇلغانمۇ؟
+# ^ErrorRegistering
+DLL نى رۇيخەتكە ئېلىش خاتالىقى 
+# ^ExecShell
+"قاپلىنىش بۇيرۇقى ئىجرا قىلىش : "
+# ^Exec
+"ئىجرا قىلىش: "
+# ^Extract
+"يېيىش: "
+# ^ErrorWriting
+"يېيىش  : ھۆججەتكە يېزىش خاتالىقى   "
+# ^InvalidOpcode
+قاچىلاش يېتەكچىسى بۇزۇلغان : ئىناۋەتسىز كود
+# ^NoOLE
+"گە OLE يوق : "
+# ^OutputFolder
+"چىقىرىدىغان قىسقۇچ: "
+# ^RemoveFolder
+"قىسقۇچنى ئۆچۈرۈش: "
+# ^RenameOnReboot
+" قايتا قوزغالغاندا نامىنى ئۆزگەرتىش: "
+# ^Rename
+"نامىنى ئۆزگەرتىش: "
+# ^Skipped
+"ئاتلاپ ئۆتتى: "
+# ^CopyDetails
+تەپسىلاتىنى ئىشتاختىغا كۆچۈرۈش
+# ^LogInstall
+قاچىلاش جەريانى خاتىرسى
+# ^Byte
+بايىت 
+# ^Kilo
+ كىلو
+# ^Mega
+ مېگا 
+# ^Giga
+ گىگا
\ No newline at end of file
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nsh
new file mode 100644
index 000000000..76bf6a615
--- /dev/null
+++ b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uyghur.nsh	
@@ -0,0 +1,129 @@
+;Language: Uyghur (1152)
+;Uyghur(China), Translated By Yasinjan Ghupur (yasenghupur@sina.com)
+
+!insertmacro LANGFILE "Uyghur" "Uyghur"
+
+!ifdef MUI_WELCOMEPAGE
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE " $(^NameDA) نى قاچىلاش يېتەكچىسىنى ئىشلىتىشىڭىزنى قارشى ئالىدۇ"
+  ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "قاچىلاش يېتەكچىسى $(^NameDA)نى قاچىلاش جەريانىغا يېتەكچىلىك قىلىدۇ  .$\r$\n$\r$\nقاچىلاشتىن بۇرۇن بارلىق پروگراممىلارنى يېپىۋېتىشنى تەۋسىيە قىلىدۇ،بۇنىڭ بىلەن قاچىلاپ بولغاندىن كېيىن كومپيۇتېرىڭىزنى قايتا قوزغاتمىسىڭىزمۇ بولىدۇ.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_UNWELCOMEPAGE
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE " $(^NameDA) نى ئۆچۈرۈش يېتەكچىسىنى ئىشلىتىشىڭىزنى قارشى ئالىدۇ"
+  ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "ئۆچۈرۈش يېتەكچىسى$(^NameDA)نى ئۆچۈرۈش جەريانىغا يېتەكچىلىك قىلىدۇ   .$\r$\n$\r$\n ئۆچۈرۈشتىن بۇرۇن $(^NameDA)نىڭ قوزغىتىلمىغانلىقىنى جەزىملەشتۈرۈڭ.$\r$\n$\r$\n$_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE
+  ${LangFileString} MUI_TEXT_LICENSE_TITLE "ئىجازەت كېلىشىمى"
+  ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "$(^NameDA)نى قاچىلىشتىن بۇرۇن  ئىجازەت تۈرلىرىنى كۆرۈپ چىقىڭ ."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "$(^NameDA)نى قاچىلىش ئۈچۈن،كېلىشىم تۈرلىرىگە قوشۇلىشىڭىز كېرەك. قوشۇلسىڭىز،قوشۇلىمەن نى بېسىپ داۋاملاشتۇرۇڭ ."
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX  "$(^NameDA)نى قاچىلاش ئۈچۈن كېلىشىمگە قوشۇلىشىڭىز كېرەك   كېلىشىم تۈرلىرىگە قوشۇلسىڭىز،تاللاش كاتىكىنى بېسىڭ. $_CLICK"
+  ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "$(^NameDA)نى قاچىلىش ئۈچۈن،كېلىشىم تۈرلىرىگە قوشۇلىشىڭىز كېرەك. قوشۇلسىڭىز،بىرىنجى تاللاشنى تاللاڭ. $_CLICK"
+!endif
+
+!ifdef MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "ئىجازەت كېلىشىمى"
+  ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE " $(^NameDA)نى ئۆچۈرۈشتىن بۇرۇن ئىجازەت كېلىشىم تۈرلىرىنى كۆرۈپ چىقىڭ ."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "$(^NameDA)نى ئۆچۈرۈش ئۈچۈن، كېلىشىمگە قوشۇلىشىڭىز كېرەك .كېلىشىم تۈرلىرىگە قوشۇلسىڭىز, قوشۇلىمەن نى بېسىپ داۋاملاشتۇرۇڭ ."
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "$(^NameDA) نى ئۆچۈرۈش  ئۈچۈن كېلىشىم تۈرلىرىگە قوشۇلىشىڭىز كېرەك .قوشۇلسىڭىز, تاللاش كاتەكچىسىنى چېكىڭ. $_CLICK"
+  ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "$(^NameDA)نى ئۆچۈرۈش ئۈچۈن كېلىشىم تۈرلىرىگە قوشۇلىشىڭىز كېرەك. قوشۇلسىڭىز،بىرىنجى تاللاشنى تاللاڭ . $_CLICK"
+!endif
+
+!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
+  ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "كېلىشىمنىڭ قالغان قىسمىنى كۆرۈش ئۈچۈن Page Down نى بېسىڭ  ."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE
+  ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "بۆلەك تاللاش"
+  ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "$(^NameDA) نى قاچىلاش ئۈچۈن ،ئېھتىياجىلىق ئىقتىدارلارنى تاللاڭ"
+!endif
+
+!ifdef MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "بۆلەك تاللاش"
+  ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "$(^NameDA) نى ئۆچۈرۈش ئۈچۈن ،ئېھتىياجىلىق ئىقتىدارلارنى تاللاڭ."
+!endif
+
+!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
+  ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "چۈشەندۈرۈش"
+  !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "بۆلەكنىڭ چۈشەندۈرۈشىنى كۆرۈش ئۈچۈن،مائوسنى بۆلەكنىڭ ئۈستىگە ئاپىرىڭ."
+  !else
+    ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "بۆلەكنىڭ چۈشەندۈرۈشىنى كۆرۈش ئۈچۈن،مائوسنى بۆلەكنىڭ ئۈستىگە ئاپىرىڭ."
+  !endif
+!endif
+
+!ifdef MUI_DIRECTORYPAGE
+  ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "قاچىلايدىغان ئورۇننى تاللاڭ"
+  ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "$(^NameDA)نى قاچىلاش ئۈچۈن قاچىلايدىغان قىسقۇچنى تاللاڭ."
+!endif
+
+!ifdef MUI_UNDIRECTORYPAGE
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE " ئۆچۈرۈدىغان ئورۇننى تاللاڭ"
+  ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "$(^NameDA)نى ئۆچۈرۈش ئۈچۈن ئۆچۈرۈدىغان قىسقۇچنى تاللاڭ."
+!endif
+
+!ifdef MUI_INSTFILESPAGE
+  ${LangFileString} MUI_TEXT_INSTALLING_TITLE "قاچىلاۋاتىدۇ"
+  ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "$(^NameDA)نى قاچىلاۋاتىدۇ...تەخىر قىلىڭ  ."
+  ${LangFileString} MUI_TEXT_FINISH_TITLE "قاچىلاش تاماملاندى"
+  ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "مۇۋەپپىقىيەتلىك قاچىلاندى."
+  ${LangFileString} MUI_TEXT_ABORT_TITLE "قاچىليالمىدى"
+  ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "قاچىلاش مەغلۇپ بولدى."
+!endif
+
+!ifdef MUI_UNINSTFILESPAGE
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "ئۆچۈرۈش"
+  ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE " $(^NameDA)نى ئۆچۈرۈۋاتىدۇ... تەخىر قىلىڭ  ."
+  ${LangFileString} MUI_UNTEXT_FINISH_TITLE "ئۆچۈرۈش تاماملاندى"
+  ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "مۇۋەپپىقىيەتلىك ئۆچۈرۈلدى."
+  ${LangFileString} MUI_UNTEXT_ABORT_TITLE "ئۆچۈرەلمىدى"
+  ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "ئۆچۈرۈش مەغلۇپ بولدى."
+!endif
+
+!ifdef MUI_FINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "قاچىلاش يېتەكچىسى$(^NameDA)نى قاچىلاشنى تاماملىدى  "
+  ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA)كومپيۇتېرىڭىزغا قاچىلاندى .$\r$\n$\r$\nتامام نى بېسىپ قاچىلاش يېتەكچىسىنى يېپىڭ."
+  ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT " $(^NameDA) نى قاچىلاشنى تاماملاش ئۈچۈن،كومپيۇتېرىڭىزنى قايتا قوزغىتىڭ كومپيۇتېرىڭىزنى قايتا قوزغىتامسىز؟ ."
+!endif
+
+!ifdef MUI_UNFINISHPAGE
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "ئۆچۈرۈش يېتەكچىسى$(^NameDA)نى ئۆچۈرۈشنى تاماملىدى  "
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA)كومپيۇتېرىڭىزدىن ئۆچۈرۈلدى .$\r$\n$\r$\nئۆچۈرۈش يېتەكچىسىنى يېپىش ئۈچۈن تامام نى بېسىڭ."
+  ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT " $(^NameDA) نى ئۆچۈرۈشنى تاماملاش ئۈچۈن،كومپيۇتېرىڭىزنى قايتا قوزغىتىڭ كومپيۇتېرىڭىزنى قايتا قوزغىتامسىز؟ "
+!endif
+
+!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "ھازىرلا قايتا قوزغۇتۇش"
+  ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "كېيىنرەك كومپيۇتېرنى قولدا قايتا قوزغىتاي"
+  ${LangFileString} MUI_TEXT_FINISH_RUN "&$(^NameDA)نى ئىجرا قىلىش "
+  ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&ياردەمنى كۆرۈش"
+  ${LangFileString} MUI_BUTTONTEXT_FINISH "&تامام"  
+!endif
+
+!ifdef MUI_STARTMENUPAGE
+  ${LangFileString} MUI_TEXT_STARTMENU_TITLE "باشلاش تىزىملىكى قىسقۇچى تاللاش"
+  ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "$(^NameDA)تېزكۆرگۈچى ئۈچۈن باشلاش تىزىملىكى قىسقۇچى تاللاش  ."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "پروگراممىنىڭ تېزكۆرگۈچىنى ياسايدىغان باشلاش تىزىملىك قىسقۇچىنى تاللاڭ ھەم يېڭى قىسقۇچقا ئىسىم كىرگۈزۈڭ."
+  ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "تېزكۆرگۈچ ياسىمىسۇن"
+!endif
+
+!ifdef MUI_UNCONFIRMPAGE
+  ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "$(^NameDA)نى ئۆچۈرۈش "
+  ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA)نى كومپيۇتېردىن ئۆچۈرۈش ."
+!endif
+
+!ifdef MUI_ABORTWARNING
+  ${LangFileString} MUI_TEXT_ABORTWARNING " $(^NameDA)نى قاچىلاشتىن چېكىنەمسىز؟"
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  ${LangFileString} MUI_UNTEXT_ABORTWARNING " $(^NameDA)نى ئۆچۈرۈشتىن چېكىنەمسىز؟"
+!endif
+
+!ifdef MULTIUSER_INSTALLMODEPAGE
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "ئىشلەتكۈچى تاللاش"
+  ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE " $(^NameDA) نى قاچىلاش ئۈچۈن ئىشلەتكۈچىلەرنى تاللاڭ."
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP " $(^NameDA) نى ئۆزى ئۈچۈنلا قاچىلاش ياكى بارلىق  ئىشلەتكۈچىلەر ئۈچۈن قاچىلاشنى تاللاش. $(^ClickNext)"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "بارلىق ئىشلەتكۈچىلەرگە قاچىلاش"
+  ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "ماڭىلا قاچىلاش"
+!endif
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nlf
new file mode 100644
index 000000000..e5c40ce72
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nsh
new file mode 100644
index 000000000..79beed70a
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Uzbek.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nlf
new file mode 100644
index 000000000..79609e1c4
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nsh
new file mode 100644
index 000000000..84a8f7def
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Valencian.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nlf
new file mode 100644
index 000000000..d5bb8e8b2
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nsh
new file mode 100644
index 000000000..7c0850adf
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Vietnamese.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nlf
new file mode 100644
index 000000000..d28bf3221
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nsh
new file mode 100644
index 000000000..8af9f1bc5
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Welsh.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nlf
new file mode 100644
index 000000000..c22f1af84
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nsh
new file mode 100644
index 000000000..a2782cff3
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Yoruba.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nlf b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nlf
new file mode 100644
index 000000000..d2de2f204
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nlf differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nsh
new file mode 100644
index 000000000..113d7d138
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Language files/Zulu.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Deprecated.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Deprecated.nsh
new file mode 100644
index 000000000..ddde664e8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Deprecated.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Interface.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Interface.nsh
new file mode 100644
index 000000000..2fba6a0d8
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Interface.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Localization.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Localization.nsh
new file mode 100644
index 000000000..aa7fc2a70
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Localization.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/MUI2.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/MUI2.nsh
new file mode 100644
index 000000000..e571bd028
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/MUI2.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages.nsh
new file mode 100644
index 000000000..76b033f41
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Components.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Components.nsh
new file mode 100644
index 000000000..eeeeb5714
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Components.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Directory.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Directory.nsh
new file mode 100644
index 000000000..dafe19494
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Directory.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Finish.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Finish.nsh
new file mode 100644
index 000000000..1f6250d54
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Finish.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/InstallFiles.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/InstallFiles.nsh
new file mode 100644
index 000000000..00796c16b
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/InstallFiles.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/License.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/License.nsh
new file mode 100644
index 000000000..2979cc9ca
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/License.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/StartMenu.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/StartMenu.nsh
new file mode 100644
index 000000000..b1403b205
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/StartMenu.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh
new file mode 100644
index 000000000..9b01ed378
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Welcome.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Welcome.nsh
new file mode 100644
index 000000000..b80beb92f
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI 2/Pages/Welcome.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/System.nsh b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/System.nsh
new file mode 100644
index 000000000..e58d6d214
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/System.nsh differ
diff --git a/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/ioSpecial.ini b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/ioSpecial.ini
new file mode 100644
index 000000000..9dba15455
Binary files /dev/null and b/Greenshot/tools/PortableApps.comInstaller/App/nsis/Contrib/Modern UI/ioSpecial.ini differ