diff --git a/README.md b/README.md index 178ee6e..363a950 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ### Prerequisites -- [Nullsoft Scriptable Install System](https://nsis.sourceforge.io/Download) +- ~~[Nullsoft Scriptable Install System](https://nsis.sourceforge.io/Download)~~ (*Tools now included*) | Game | Official | |---------------------------------------------|:--------:| diff --git a/T7x/compile.bat b/T7x/compile.bat new file mode 100644 index 0000000..9752cc3 --- /dev/null +++ b/T7x/compile.bat @@ -0,0 +1,4 @@ +@echo off + +if not exist "build" mkdir "build" +..\tools\makensis.exe "..\T7x\t7x_Installer.nsi" \ No newline at end of file diff --git a/T7x/t7x_Installer.nsi b/T7x/t7x_Installer.nsi index 6b686b2..abba18d 100644 --- a/T7x/t7x_Installer.nsi +++ b/T7x/t7x_Installer.nsi @@ -11,7 +11,7 @@ ; Attributes Name "${PRODUCT_NAME}" -OutFile "t7xInstaller.exe" +OutFile "build\t7xInstaller.exe" InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" RequestExecutionLevel user ; Request user-level execution, not admin diff --git a/T7x/old/template.nsi b/T7x/ver/template.nsi similarity index 100% rename from T7x/old/template.nsi rename to T7x/ver/template.nsi diff --git a/T7x/old/test.nsi b/T7x/ver/test.nsi similarity index 100% rename from T7x/old/test.nsi rename to T7x/ver/test.nsi diff --git a/T7x/old/test2.nsi b/T7x/ver/test2.nsi similarity index 100% rename from T7x/old/test2.nsi rename to T7x/ver/test2.nsi diff --git a/T7x/old/test3.nsi b/T7x/ver/test3.nsi similarity index 100% rename from T7x/old/test3.nsi rename to T7x/ver/test3.nsi diff --git a/T7x/old/test4.nsi b/T7x/ver/test4.nsi similarity index 100% rename from T7x/old/test4.nsi rename to T7x/ver/test4.nsi diff --git a/T7x/old/test5.nsi b/T7x/ver/test5.nsi similarity index 100% rename from T7x/old/test5.nsi rename to T7x/ver/test5.nsi diff --git a/T7x/old/test6.nsi b/T7x/ver/test6.nsi similarity index 100% rename from T7x/old/test6.nsi rename to T7x/ver/test6.nsi diff --git a/tools/Bin/GenPat.exe b/tools/Bin/GenPat.exe new file mode 100644 index 0000000..163f962 Binary files /dev/null and b/tools/Bin/GenPat.exe differ diff --git a/tools/Bin/MakeLangId.exe b/tools/Bin/MakeLangId.exe new file mode 100644 index 0000000..5fd3133 Binary files /dev/null and b/tools/Bin/MakeLangId.exe differ diff --git a/tools/Bin/RegTool-x86.bin b/tools/Bin/RegTool-x86.bin new file mode 100644 index 0000000..4cb7b5f Binary files /dev/null and b/tools/Bin/RegTool-x86.bin differ diff --git a/tools/Bin/makensis.exe b/tools/Bin/makensis.exe new file mode 100644 index 0000000..7c6468b Binary files /dev/null and b/tools/Bin/makensis.exe differ diff --git a/tools/Bin/zip2exe.exe b/tools/Bin/zip2exe.exe new file mode 100644 index 0000000..982249b Binary files /dev/null and b/tools/Bin/zip2exe.exe differ diff --git a/tools/Bin/zlib1.dll b/tools/Bin/zlib1.dll new file mode 100644 index 0000000..afe71c1 Binary files /dev/null and b/tools/Bin/zlib1.dll differ diff --git a/tools/Contrib/Graphics/Checks/big.bmp b/tools/Contrib/Graphics/Checks/big.bmp new file mode 100644 index 0000000..d6db077 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/big.bmp differ diff --git a/tools/Contrib/Graphics/Checks/classic-cross.bmp b/tools/Contrib/Graphics/Checks/classic-cross.bmp new file mode 100644 index 0000000..a4d37a1 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/classic-cross.bmp differ diff --git a/tools/Contrib/Graphics/Checks/classic.bmp b/tools/Contrib/Graphics/Checks/classic.bmp new file mode 100644 index 0000000..83e3cf5 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/classic.bmp differ diff --git a/tools/Contrib/Graphics/Checks/colorful.bmp b/tools/Contrib/Graphics/Checks/colorful.bmp new file mode 100644 index 0000000..7713942 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/colorful.bmp differ diff --git a/tools/Contrib/Graphics/Checks/grey-cross.bmp b/tools/Contrib/Graphics/Checks/grey-cross.bmp new file mode 100644 index 0000000..b28b59b Binary files /dev/null and b/tools/Contrib/Graphics/Checks/grey-cross.bmp differ diff --git a/tools/Contrib/Graphics/Checks/grey.bmp b/tools/Contrib/Graphics/Checks/grey.bmp new file mode 100644 index 0000000..b374432 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/grey.bmp differ diff --git a/tools/Contrib/Graphics/Checks/modern.bmp b/tools/Contrib/Graphics/Checks/modern.bmp new file mode 100644 index 0000000..62468de Binary files /dev/null and b/tools/Contrib/Graphics/Checks/modern.bmp differ diff --git a/tools/Contrib/Graphics/Checks/red-round.bmp b/tools/Contrib/Graphics/Checks/red-round.bmp new file mode 100644 index 0000000..31d3c02 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/red-round.bmp differ diff --git a/tools/Contrib/Graphics/Checks/red.bmp b/tools/Contrib/Graphics/Checks/red.bmp new file mode 100644 index 0000000..e14e6b4 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/red.bmp differ diff --git a/tools/Contrib/Graphics/Checks/simple-round.bmp b/tools/Contrib/Graphics/Checks/simple-round.bmp new file mode 100644 index 0000000..6950232 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/simple-round.bmp differ diff --git a/tools/Contrib/Graphics/Checks/simple-round2.bmp b/tools/Contrib/Graphics/Checks/simple-round2.bmp new file mode 100644 index 0000000..ee1ec84 Binary files /dev/null and b/tools/Contrib/Graphics/Checks/simple-round2.bmp differ diff --git a/tools/Contrib/Graphics/Checks/simple.bmp b/tools/Contrib/Graphics/Checks/simple.bmp new file mode 100644 index 0000000..c687a1d Binary files /dev/null and b/tools/Contrib/Graphics/Checks/simple.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis-r.bmp b/tools/Contrib/Graphics/Header/nsis-r.bmp new file mode 100644 index 0000000..eb3650f Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis-r.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis.bmp b/tools/Contrib/Graphics/Header/nsis.bmp new file mode 100644 index 0000000..cbb5231 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-branding-r.bmp b/tools/Contrib/Graphics/Header/nsis3-branding-r.bmp new file mode 100644 index 0000000..795f5db Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-branding-r.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-branding.bmp b/tools/Contrib/Graphics/Header/nsis3-branding.bmp new file mode 100644 index 0000000..8cca0c5 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-branding.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-grey-right.bmp b/tools/Contrib/Graphics/Header/nsis3-grey-right.bmp new file mode 100644 index 0000000..4b935c7 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-grey-right.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-grey.bmp b/tools/Contrib/Graphics/Header/nsis3-grey.bmp new file mode 100644 index 0000000..dbd7028 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-grey.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-metro-right.bmp b/tools/Contrib/Graphics/Header/nsis3-metro-right.bmp new file mode 100644 index 0000000..0871426 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-metro-right.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-metro.bmp b/tools/Contrib/Graphics/Header/nsis3-metro.bmp new file mode 100644 index 0000000..c3a8b89 Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-metro.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-vintage-right.bmp b/tools/Contrib/Graphics/Header/nsis3-vintage-right.bmp new file mode 100644 index 0000000..bed344a Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-vintage-right.bmp differ diff --git a/tools/Contrib/Graphics/Header/nsis3-vintage.bmp b/tools/Contrib/Graphics/Header/nsis3-vintage.bmp new file mode 100644 index 0000000..934ed2a Binary files /dev/null and b/tools/Contrib/Graphics/Header/nsis3-vintage.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-nsis.bmp b/tools/Contrib/Graphics/Header/orange-nsis.bmp new file mode 100644 index 0000000..b4a0cf9 Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-r-nsis.bmp b/tools/Contrib/Graphics/Header/orange-r-nsis.bmp new file mode 100644 index 0000000..2da34f1 Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-r-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-r.bmp b/tools/Contrib/Graphics/Header/orange-r.bmp new file mode 100644 index 0000000..c74fbdd Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-r.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-uninstall-nsis.bmp b/tools/Contrib/Graphics/Header/orange-uninstall-nsis.bmp new file mode 100644 index 0000000..635596b Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-uninstall-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp b/tools/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp new file mode 100644 index 0000000..5f215d7 Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-uninstall-r-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-uninstall-r.bmp b/tools/Contrib/Graphics/Header/orange-uninstall-r.bmp new file mode 100644 index 0000000..1672afa Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-uninstall-r.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange-uninstall.bmp b/tools/Contrib/Graphics/Header/orange-uninstall.bmp new file mode 100644 index 0000000..97be674 Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange-uninstall.bmp differ diff --git a/tools/Contrib/Graphics/Header/orange.bmp b/tools/Contrib/Graphics/Header/orange.bmp new file mode 100644 index 0000000..4ac1413 Binary files /dev/null and b/tools/Contrib/Graphics/Header/orange.bmp differ diff --git a/tools/Contrib/Graphics/Header/win.bmp b/tools/Contrib/Graphics/Header/win.bmp new file mode 100644 index 0000000..6612357 Binary files /dev/null and b/tools/Contrib/Graphics/Header/win.bmp differ diff --git a/tools/Contrib/Graphics/Icons/arrow-install.ico b/tools/Contrib/Graphics/Icons/arrow-install.ico new file mode 100644 index 0000000..0441d5c Binary files /dev/null and b/tools/Contrib/Graphics/Icons/arrow-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/arrow-uninstall.ico b/tools/Contrib/Graphics/Icons/arrow-uninstall.ico new file mode 100644 index 0000000..f3e7bfe Binary files /dev/null and b/tools/Contrib/Graphics/Icons/arrow-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/arrow2-install.ico b/tools/Contrib/Graphics/Icons/arrow2-install.ico new file mode 100644 index 0000000..e047f7d Binary files /dev/null and b/tools/Contrib/Graphics/Icons/arrow2-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/arrow2-uninstall.ico b/tools/Contrib/Graphics/Icons/arrow2-uninstall.ico new file mode 100644 index 0000000..fa6064f Binary files /dev/null and b/tools/Contrib/Graphics/Icons/arrow2-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/box-install.ico b/tools/Contrib/Graphics/Icons/box-install.ico new file mode 100644 index 0000000..fd6c7c1 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/box-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/box-uninstall.ico b/tools/Contrib/Graphics/Icons/box-uninstall.ico new file mode 100644 index 0000000..bc27541 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/box-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/classic-install.ico b/tools/Contrib/Graphics/Icons/classic-install.ico new file mode 100644 index 0000000..5afcc62 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/classic-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/classic-uninstall.ico b/tools/Contrib/Graphics/Icons/classic-uninstall.ico new file mode 100644 index 0000000..0953290 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/classic-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/llama-blue.ico b/tools/Contrib/Graphics/Icons/llama-blue.ico new file mode 100644 index 0000000..08288b6 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/llama-blue.ico differ diff --git a/tools/Contrib/Graphics/Icons/llama-grey.ico b/tools/Contrib/Graphics/Icons/llama-grey.ico new file mode 100644 index 0000000..4749479 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/llama-grey.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-install-blue-full.ico b/tools/Contrib/Graphics/Icons/modern-install-blue-full.ico new file mode 100644 index 0000000..8f1c512 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-install-blue-full.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-install-blue.ico b/tools/Contrib/Graphics/Icons/modern-install-blue.ico new file mode 100644 index 0000000..fecdc27 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-install-blue.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-install-colorful.ico b/tools/Contrib/Graphics/Icons/modern-install-colorful.ico new file mode 100644 index 0000000..2908f58 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-install-colorful.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-install-full.ico b/tools/Contrib/Graphics/Icons/modern-install-full.ico new file mode 100644 index 0000000..3aa83e9 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-install-full.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-install.ico b/tools/Contrib/Graphics/Icons/modern-install.ico new file mode 100644 index 0000000..f8fbd5f Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico b/tools/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico new file mode 100644 index 0000000..cd92279 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-uninstall-blue-full.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-uninstall-blue.ico b/tools/Contrib/Graphics/Icons/modern-uninstall-blue.ico new file mode 100644 index 0000000..77031b5 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-uninstall-blue.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-uninstall-colorful.ico b/tools/Contrib/Graphics/Icons/modern-uninstall-colorful.ico new file mode 100644 index 0000000..461035c Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-uninstall-colorful.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-uninstall-full.ico b/tools/Contrib/Graphics/Icons/modern-uninstall-full.ico new file mode 100644 index 0000000..a134f58 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-uninstall-full.ico differ diff --git a/tools/Contrib/Graphics/Icons/modern-uninstall.ico b/tools/Contrib/Graphics/Icons/modern-uninstall.ico new file mode 100644 index 0000000..6c7410c Binary files /dev/null and b/tools/Contrib/Graphics/Icons/modern-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis-menu.ico b/tools/Contrib/Graphics/Icons/nsis-menu.ico new file mode 100644 index 0000000..94396b4 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis-menu.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis1-install.ico b/tools/Contrib/Graphics/Icons/nsis1-install.ico new file mode 100644 index 0000000..e180449 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis1-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis1-uninstall.ico b/tools/Contrib/Graphics/Icons/nsis1-uninstall.ico new file mode 100644 index 0000000..a37774c Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis1-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis3-install-alt.ico b/tools/Contrib/Graphics/Icons/nsis3-install-alt.ico new file mode 100644 index 0000000..855cdc3 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis3-install-alt.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis3-install.ico b/tools/Contrib/Graphics/Icons/nsis3-install.ico new file mode 100644 index 0000000..9d9409c Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis3-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/nsis3-uninstall.ico b/tools/Contrib/Graphics/Icons/nsis3-uninstall.ico new file mode 100644 index 0000000..617a547 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/nsis3-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/orange-install-nsis.ico b/tools/Contrib/Graphics/Icons/orange-install-nsis.ico new file mode 100644 index 0000000..ef3975f Binary files /dev/null and b/tools/Contrib/Graphics/Icons/orange-install-nsis.ico differ diff --git a/tools/Contrib/Graphics/Icons/orange-install.ico b/tools/Contrib/Graphics/Icons/orange-install.ico new file mode 100644 index 0000000..1db75f8 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/orange-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/orange-uninstall-nsis.ico b/tools/Contrib/Graphics/Icons/orange-uninstall-nsis.ico new file mode 100644 index 0000000..431eb2e Binary files /dev/null and b/tools/Contrib/Graphics/Icons/orange-uninstall-nsis.ico differ diff --git a/tools/Contrib/Graphics/Icons/orange-uninstall.ico b/tools/Contrib/Graphics/Icons/orange-uninstall.ico new file mode 100644 index 0000000..59c79f3 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/orange-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/pixel-install.ico b/tools/Contrib/Graphics/Icons/pixel-install.ico new file mode 100644 index 0000000..f2106d6 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/pixel-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/pixel-uninstall.ico b/tools/Contrib/Graphics/Icons/pixel-uninstall.ico new file mode 100644 index 0000000..2003b2d Binary files /dev/null and b/tools/Contrib/Graphics/Icons/pixel-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Icons/win-install.ico b/tools/Contrib/Graphics/Icons/win-install.ico new file mode 100644 index 0000000..a5eb774 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/win-install.ico differ diff --git a/tools/Contrib/Graphics/Icons/win-uninstall.ico b/tools/Contrib/Graphics/Icons/win-uninstall.ico new file mode 100644 index 0000000..9329176 Binary files /dev/null and b/tools/Contrib/Graphics/Icons/win-uninstall.ico differ diff --git a/tools/Contrib/Graphics/Wizard/arrow.bmp b/tools/Contrib/Graphics/Wizard/arrow.bmp new file mode 100644 index 0000000..9f7426b Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/arrow.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/llama.bmp b/tools/Contrib/Graphics/Wizard/llama.bmp new file mode 100644 index 0000000..1e1d942 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/llama.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nsis.bmp b/tools/Contrib/Graphics/Wizard/nsis.bmp new file mode 100644 index 0000000..dcc3809 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nsis.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nsis3-branding.bmp b/tools/Contrib/Graphics/Wizard/nsis3-branding.bmp new file mode 100644 index 0000000..3da21fd Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nsis3-branding.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nsis3-grey.bmp b/tools/Contrib/Graphics/Wizard/nsis3-grey.bmp new file mode 100644 index 0000000..b97d7f8 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nsis3-grey.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nsis3-metro.bmp b/tools/Contrib/Graphics/Wizard/nsis3-metro.bmp new file mode 100644 index 0000000..6f84df0 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nsis3-metro.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nsis3-vintage.bmp b/tools/Contrib/Graphics/Wizard/nsis3-vintage.bmp new file mode 100644 index 0000000..a1e911b Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nsis3-vintage.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/nullsoft.bmp b/tools/Contrib/Graphics/Wizard/nullsoft.bmp new file mode 100644 index 0000000..d4145d4 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/nullsoft.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/orange-nsis.bmp b/tools/Contrib/Graphics/Wizard/orange-nsis.bmp new file mode 100644 index 0000000..ec46bd8 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/orange-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp b/tools/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp new file mode 100644 index 0000000..661e702 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/orange-uninstall-nsis.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/orange-uninstall.bmp b/tools/Contrib/Graphics/Wizard/orange-uninstall.bmp new file mode 100644 index 0000000..097d094 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/orange-uninstall.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/orange.bmp b/tools/Contrib/Graphics/Wizard/orange.bmp new file mode 100644 index 0000000..196a5b7 Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/orange.bmp differ diff --git a/tools/Contrib/Graphics/Wizard/win.bmp b/tools/Contrib/Graphics/Wizard/win.bmp new file mode 100644 index 0000000..5524eef Binary files /dev/null and b/tools/Contrib/Graphics/Wizard/win.bmp differ diff --git a/tools/Contrib/Language files/Afrikaans.nlf b/tools/Contrib/Language files/Afrikaans.nlf new file mode 100644 index 0000000..0ebfb74 --- /dev/null +++ b/tools/Contrib/Language files/Afrikaans.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1078 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Friedel Wolff +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Installasie +# ^UninstallCaption +$(^Name) Verwydering +# ^LicenseSubCaption +: Lisensie-ooreenkoms +# ^ComponentsSubCaption +: Installasiekeuses +# ^DirSubCaption +: Installasiegids +# ^InstallingSubCaption +: Installeer tans +# ^CompletedSubCaption +: Voltooid +# ^UnComponentsSubCaption +: Verwyderingkeuses +# ^UnDirSubCaption +: Verwyderinggids +# ^ConfirmSubCaption +: Bevestiging +# ^UninstallingSubCaption +: Verwyder tans +# ^UnCompletedSubCaption +: Voltooid +# ^BackBtn +< V&orige +# ^NextBtn +&Volgende > +# ^AgreeBtn +&Regso +# ^AcceptBtn +Ek &aanvaar die ooreenkoms +# ^DontAcceptBtn +Ek aan vaar &nie die ooreenkoms nie +# ^InstallBtn +&Installeer +# ^UninstallBtn +&Verwyder +# ^CancelBtn +Kanselleer +# ^CloseBtn +&Sluit af +# ^BrowseBtn +&Blaai... +# ^ShowDetailsBtn +&Wys detail +# ^ClickNext +Klik op Volgende om verder te gaan. +# ^ClickInstall +Klik op Installeer om die installasie te begin. +# ^ClickUninstall +Klik op Verwyder om die verwydering te begin. +# ^Name +Naam +# ^Completed +Voltooid +# ^LicenseText +Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Klik op Regso as u die ooreenkoms aanvaar. +# ^LicenseTextCB +Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Merk die blokkie hieronder as u die ooreenkoms aanvaar. $_CLICK +# ^LicenseTextRB +Lees die lisensieooreenkoms voordat u $(^NameDA) installeer. Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. $_CLICK +# ^UnLicenseText +Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. Klik op Regso als u die ooreenkoms aanvaar. +# ^UnLicenseTextCB +Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. Merk die blokkie hieronder as u die ooreenkoms aanvaar. $_CLICK +# ^UnLicenseTextRB +Lees die lisensieooreenkoms voordat u $(^NameDA) verwyder. KIes die eerste keuse hieronder as u die ooreenkoms aanvaar. $_CLICK +# ^Custom +Aangepast +# ^ComponentsText +Kies die komponente wat u wil installeer en deselekteer dié wat u nie wil installeer nie. $_CLICK +# ^ComponentsSubText1 +Kies die installasietipe: +# ^ComponentsSubText2_NoInstTypes +Kies die komponente wat geïnstalleer moet word: +# ^ComponentsSubText2 +Of kies die komponente wat geïnstalleer moet word: +# ^UnComponentsText +Kies die komponente wat u wil verwyder en deselekteer dié wat u nie wil verwyder nie. $_CLICK +# ^UnComponentsSubText1 +Kies die verwyderingstipe: +# ^UnComponentsSubText2_NoInstTypes +Kies die komponente wat verwyder moet word: +# ^UnComponentsSubText2 +Of kies die komponente wat verwyder moet word: +# ^DirText +$(^NameDA) sal in die volgende gids geïnstalleer word. Om elders te installeer, klik op Blaai en kies 'n ander een. $_CLICK +# ^DirSubText +Installasiegids +# ^DirBrowseText +Kies die gids om $(^NameDA) in te installeer: +# ^UnDirText +$(^NameDA) gaan uit die volgende gids verwyder word. Om van elders af te verwyder, klik op Blaai en kies 'n ander gids. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Kies die gids om $(^NameDA) uit te verwyder: +# ^SpaceAvailable +"Beskikbare spasie: " +# ^SpaceRequired +"Vereiste spasie: " +# ^UninstallingText +$(^NameDA) sal uit die volgende gids verwyder word. $_CLICK +# ^UninstallingSubText +Verwydering uit: +# ^FileError +Fout met skryf na lêer: \r\n\r\n$0\r\n\r\nKlik Staak om de installasie te stop,\r\nProbeer weer om weer te probeer of\r\nIgnoreer om dié lêer oor te slaan. +# ^FileError_NoIgnore +Fout met skryf na lêer: \r\n\r\n$0\r\n\r\nKlik Probeer weer om op nuut te probeer, of \r\nKanselleer om die installasie te stop. +# ^CantWrite +"Kon nie skyf nie: " +# ^CopyFailed +Kopiëring het misluk +# ^CopyTo +"Kopieer na " +# ^Registering +"Registreer tans: " +# ^Unregistering +"Deregistreer tans: " +# ^SymbolNotFound +"Kon nie simbool vind nie: " +# ^CouldNotLoad +"Kon nie laai nie: " +# ^CreateFolder +"Skep gids: " +# ^CreateShortcut +"Maak kortpad: " +# ^CreatedUninstaller +"Verwyderingsprogram gemaak: " +# ^Delete +"Verwyder lêer: " +# ^DeleteOnReboot +"Verwyder na herbegin van rekenaar: " +# ^ErrorCreatingShortcut +"Fout met maak van kortpad: " +# ^ErrorCreating +"Fout met skep: " +# ^ErrorDecompressing +Fout met uitpak van data! Korrupte installasielêer? +# ^ErrorRegistering +Fout met registrasie van DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Voer uit: " +# ^Extract +"Pak uit: " +# ^ErrorWriting +"Uitpak: fout met skryf na lêer " +# ^InvalidOpcode +Installasieprogram korrup: ongeldige opcode +# ^NoOLE +"Geen OLE vir: " +# ^OutputFolder +"Afvoergids: " +# ^RemoveFolder +"Verwyder gids: " +# ^RenameOnReboot +"Hernoem na herbegin van rekenaar: " +# ^Rename +"Hernoem: " +# ^Skipped +"Oorgeslaan: " +# ^CopyDetails +Kopieer detail na knipbord +# ^LogInstall +Boekstaaf die installasieproses +# ^Byte +G +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Afrikaans.nsh b/tools/Contrib/Language files/Afrikaans.nsh new file mode 100644 index 0000000..70423bc --- /dev/null +++ b/tools/Contrib/Language files/Afrikaans.nsh @@ -0,0 +1,121 @@ +;Language: Afrikaans (1078) +;By Friedel Wolff + +!insertmacro LANGFILE "Afrikaans" = "Afrikaans" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Welkom by die $(^NameDA) Installasieslimmerd" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Hierdie slimmerd lei mens deur die installasie van $(^NameDA).$\r$\n$\r$\nDit word aanbeveel dat u alle ander programme afsluit voor die begin van die installasie. Dit maak dit moontlik om die relevante stelsellêers op te dateer sonder om die rekenaar te herlaai.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Welkom by die $(^NameDA) Verwyderingslimmerd" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Hierdie slimmerd lei mens deur die verwydering van $(^NameDA).$\r$\n$\r$\nVoor die verwydering begin word, maak seker dat $(^NameDA) nie loop nie.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisensie-ooreenkoms" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lees die lisensie-ooreenkoms voordat u $(^NameDA) installeer." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Klik op Regso om verder te gaan as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Merk die blokkie hier onder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te installeer. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisensie-ooreenkoms" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lees die lisensie-ooreenkoms voordat u $(^NameDA) verwyder." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Klik op Regso om verder te gaan as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Merk die kiesblokkie hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kies die eerste keuse hieronder as u die ooreenkoms aanvaar. U moet die ooreenkoms aanvaar om $(^NameDA) te verwyder." +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Druk op Page Down om die res van die ooreenkoms te sien." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Kies komponente" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Kies watter komponente van $(^NameDA) geïnstalleer moet word." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Kies komponente" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Kies watter komponente van $(^NameDA) verwyder moet word." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskrywing" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beweeg die muis oor 'n komponent om sy beskrywing te sien." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Kies 'n komponent om sy beskrywing te sien." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Kies installasieplek" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Kies die gids waarin u $(^NameDA) wil installeer." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Kies verwyderinggids" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Kies die gids waaruit u $(^NameDA) wil verwyder." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installeer tans" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Wag asb. terwyl $(^NameDA) geïnstalleer word." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installasie voltooid" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Die installasie is suksesvol voltooi." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installasie gestaak" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Die installasie is nie suksesvol voltooi nie." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Verwyder tans" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Wag asb. terwyl $(^NameDA) van u rekenaar verwyder word." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Verwydering voltooi" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Verwydering is suksesvol voltooi." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Verwydering gestaak" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Verwydering is nie suksesvol voltooi nie." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Voltooi van die $(^NameDA) Installasieslimmerd" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) is geïnstalleer op uw rekenaar.$\r$\n$\r$\nKlik op Voltooi om hierdie slimmerd af te sluit." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Die rekenaar moet oorbegin word om die installasie van $(^NameDA) te voltooi. Wil u nou oorbegin?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Voltooi van die $(^NameDA) Verwyderingslimmerd" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) is van u rekenaar verwyder.$\r$\n$\r$\nKlik op Voltooi om hierdie slimmerd af te sluit." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Die rekenaar moet oorbegin word om die verwydering van $(^NameDA) te voltooi. Wil u nou oorbegin?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Begin nou oor" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ek wil later self oorbegin" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Laat loop $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Wys Leesmy-lêer" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Voltooi" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Kies gids in Begin-kieslys" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Kies 'n gids in die Begin-kieslys vir $(^NameDA) se kortpaaie." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Kies die gids in die Begin-kieslys waarin die program se kortpaaie geskep moet word. U kan ook 'n nuwe naam gee om 'n nuwe gids te skep." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Moenie kortpaaie maak nie" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Verwyder $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Verwyder $(^NameDA) van u rekenaar." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Wil u definitief die installasie van $(^Name) afsluit?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Wil u definitief die verwydering van $(^Name) afsluit?" +!endif diff --git a/tools/Contrib/Language files/Albanian.nlf b/tools/Contrib/Language files/Albanian.nlf new file mode 100644 index 0000000..49cccf6 --- /dev/null +++ b/tools/Contrib/Language files/Albanian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1052 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Përkthimi nga Besnik Bleta, besnik@programeshqip.org +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Rregullimi i $(^Name) +# ^UninstallCaption +Çinstalimi i $(^Name) +# ^LicenseSubCaption +: Marrëveshje Licence +# ^ComponentsSubCaption +: Mundësi Instalimi +# ^DirSubCaption +: Dosje Instalimi +# ^InstallingSubCaption +: Po instalohet +# ^CompletedSubCaption +: U plotësua +# ^UnComponentsSubCaption +: Mundësi Çinstalimi +# ^UnDirSubCaption +: Dosje Çinstalimi +# ^ConfirmSubCaption +: Ripohim +# ^UninstallingSubCaption +: Po çinstalohet +# ^UnCompletedSubCaption +: U plotësua +# ^BackBtn +< &Mbrapsht +# ^NextBtn +&Pasuesi > +# ^AgreeBtn +&Pajtohem +# ^AcceptBtn +&I pranoj kushtet e Marrëveshjes së Licencës +# ^DontAcceptBtn +&Nuk i pranoj kushtet e Marrëveshjes së Licencës +# ^InstallBtn +&Instaloje +# ^UninstallBtn +&Çinstaloje +# ^CancelBtn +Anuloje +# ^CloseBtn +&Mbylle +# ^BrowseBtn +Sh&fletoni… +# ^ShowDetailsBtn +Shfaq &hollësi +# ^ClickNext +Që të vazhdohet, klikoni Pasuesi. +# ^ClickInstall +Që të fillojë instalimi, klikoni Instaloje. +# ^ClickUninstall +Që të fillojë çinstalimi, klikoni Çinstaloje. +# ^Name +Emër +# ^Completed +U plotësua +# ^LicenseText +Ju lutemi, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni Pajtohem. +# ^LicenseTextCB +Ju lutemi, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni kutizën më poshtë. $_CLICK +# ^LicenseTextRB +Ju lutemi, para instalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. $_CLICK +# ^UnLicenseText +Ju lutemi, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni Pajtohem. +# ^UnLicenseTextCB +Ju lutemi, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, klikoni kutizën më poshtë. $_CLICK +# ^UnLicenseTextRB +Ju lutemi, para çinstalimit të $(^NameDA), shqyrtoni marrëveshjen e licencës. Nëse i pranoni tërë kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. $_CLICK +# ^Custom +Vetjake +# ^ComponentsText +U vini shenjë përbërësve që doni të instalohen dhe hiquani shenjën përbërësve që s’doni të instalohen. $_CLICK +# ^ComponentsSubText1 +Përzgjidhni llojin e instalimit: +# ^ComponentsSubText2_NoInstTypes +Përzgjidhni përbërësit për instalim: +# ^ComponentsSubText2 +Ose, përzgjidhni përbërësit e mundshëm që doni të instalohen: +# ^UnComponentsText +U vini shenjë përbërësve që doni të çinstalohen dhe hiquni shenjën përbërësve që s’doni të çinstalohen. $_CLICK +# ^UnComponentsSubText1 +Përzgjidhni llojin e çinstalimit: +# ^UnComponentsSubText2_NoInstTypes +Përzgjidhni përbërësit për çinstalim: +# ^UnComponentsSubText2 +Ose, përzgjidhni përbërësit e mundshëm që doni të çinstalohen: +# ^DirText +Rregullimi do ta instalojë $(^NameDA) në dosjen vijuese. Për instalim në një dosje tjetër, klikoni Shfletoni dhe përzgjidhni një tjetër dosje. $_CLICK +# ^DirSubText +Dosje Vendmbërritje +# ^DirBrowseText +Përzgjidhni dosjen ku të instalohet $(^NameDA): +# ^UnDirText +Rregullimi do të çinstalojë $(^NameDA) prej dosjes vijuese. Për çinstalim prej një dosjeje tjetër, klikoni Shfletoni dhe përzgjidhni një tjetër dosje. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Përzgjidhni dosjen prej nga ku të çinstalohet $(^NameDA): +# ^SpaceAvailable +"Hapësirë e mundshme: " +# ^SpaceRequired +"Hapësirë e nevojshme: " +# ^UninstallingText +$(^NameDA) do të çinstalohet prej dosjes vijuese. $_CLICK +# ^UninstallingSubText +Po çinstalohet prej: +# ^FileError +Gabim në hapje kartele për shkrim: \r\n\r\n$0\r\n\r\nKlikoni Ndërprite për të ndalur instalimin,\r\nRiprovo për të provuar sërish, ose\r\nShpërfille për të anashkaluar këtë kartelë. +# ^FileError_NoIgnore +Gabim në hapje kartele për shkrim: \r\n\r\n$0\r\n\r\nKlikoni Riprovo për të provuar sërish, ose\r\nAnuloje për të ndalur instalimin. +# ^CantWrite +"S’shkruhet dot: " +# ^CopyFailed +Kopjimi dështoi +# ^CopyTo +"Kopjoje tek " +# ^Registering +"Regjistrim: " +# ^Unregistering +"Çregjistrim: " +# ^SymbolNotFound +"S’u gjet dot simbol: " +# ^CouldNotLoad +"S’u ngarkua dot: " +# ^CreateFolder +"Krijo dosje: " +# ^CreateShortcut +"Krijo shkurtore: " +# ^CreatedUninstaller +"Krijo çinstalues: " +# ^Delete +"Fshi kartelë: " +# ^DeleteOnReboot +"Fshi gjatë rinisjes: " +# ^ErrorCreatingShortcut +"Gabim në krijim shkurtoresh: " +# ^ErrorCreating +"Gabim në krijimin e: " +# ^ErrorDecompressing +Gabim në çngjeshje të dhënash! Instalues i dëmtuar? +# ^ErrorRegistering +Gabim në regjistrim DLL-je +# ^ExecShell +"ExecShell: " +# ^Exec +"Ekzekuto: " +# ^Extract +"Përfto: " +# ^ErrorWriting +"Përftim: gabim në shkrim te kartela " +# ^InvalidOpcode +Instalues i dëmtuar: opcode i pavlefshëm +# ^NoOLE +"Pa OLE për: " +# ^OutputFolder +"Dosje përfundimesh: " +# ^RemoveFolder +"Hiq dosjen: " +# ^RenameOnReboot +"Riemërtoje gjatë rinisjes: " +# ^Rename +"Riemërtoje: " +# ^Skipped +"U anashkalua: " +# ^CopyDetails +Kopjo Hollësira Te E Papastra +# ^LogInstall +Regjistroje procesin e instalimit +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Albanian.nsh b/tools/Contrib/Language files/Albanian.nsh new file mode 100644 index 0000000..30f76f7 --- /dev/null +++ b/tools/Contrib/Language files/Albanian.nsh @@ -0,0 +1,129 @@ +;Language: Albanian (1052) +;Translation Besnik Bleta, besnik@programeshqip.org + +!insertmacro LANGFILE "Albanian" = "Shqip" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Mirë se vini te Rregullimi i $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ky do t’ju udhëheqë gjatë instalimit të $(^NameDA).$\r$\n$\r$\nKëshillohet që të mbyllni tërë aplikacionet e tjera, para se të nisni Rregullimin. Kjo bën të mundur përditësimin e kartelave të rëndësishme të sistemit pa u dashur të riniset kompjuteri juaj.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Mirë se vini te Çinstalimi i $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ky do t’ju udhëheqë gjatë çinstalimit të $(^NameDA).$\r$\n$\r$\nPara nisjes së çinstalimit, sigurohuni se $(^NameDA) s’është duke xhiruar.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Marrëveshje Licence" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Ju lutemi, para se të instaloni $(^NameDA), shqyrtoni kushtet e licencës." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Nëse i pranoni kushtet e marrëveshjes, klikoni Pajtohem, që të vazhdohet. Që të instalohet $(^NameDA), duhet të pranoni marrëveshjen." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nëse pranoni kushtet e marrëveshjes, klikoni kutizën më poshtë. Që të instalohet $(^NameDA), duhet të pranoni marrëveshjen. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nëse pranoni kushtet e marrëveshjes, përzgjidhni më poshtë mundësinë e parë. Që të instalohet $(^NameDA), duhet të pranoni marrëveshjen. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Marrëveshje Licence" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Ju lutemi, para çinstalimit të $(^NameDA), shqyrtoni kushtet e licencës." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Nëse i pranoni kushtet e marrëveshjes, klikoni Pajtohem, që të vazhdohet. Që të çinstalohet $(^NameDA), duhet të pranoni marrëveshjen." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nëse pranoni kushtet e marrëveshjes, klikoni kutizën më poshtë. Që të çinstalohet $(^NameDA), duhet të pranoni marrëveshjen. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nëse pranoni kushtet e marrëveshjes, përzgjidhni mundësinë e parë më poshtë. Që të çinstalohet $(^NameDA), duhet të pranoni marrëveshjen. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Për të parë pjesën e mbetur të marrëveshjes, shtypni tastin Page Down." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Përzgjidhni Përbërës" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Zgjidhni cilat anë të $(^NameDA) doni të instalohen." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Zgjidhni Përbërës" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Zgjidhni cilat anë të $(^NameDA) doni të çinstalohen." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Përshkrim" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Për të parë përshkrimin e një përbërësi, vendosni kursorin përsipër tij." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Zgjidhni Vend Instalimi" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Zgjidhni dosjen tek e cila të instalohet $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Zgjidhni Vend Çinstalimi" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Zgjidhni dosjen prej së cilës të çinstalohet $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Po instalohet" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Ju lutemi, prisni, ndërkohë që $(^NameDA) instalohet." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalim i Plotësuar" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Rregullimi u plotësua me sukses." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalimi u Ndërpre" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Rregullimi s’u plotësua me sukses." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Çinstalim" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Ju lutemi, prisni, ndërsa $(^NameDA) çinstalohet." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Çinstalim i Plotë" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Çinstalimi u plotësua me sukses." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Çinstalimi u Ndërpre" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Çinstalimi s’u plotësua me sukses." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Po plotësohet Rregullimi i $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) u instalua në kompjuterin tuaj.$\r$\n$\r$\nPër mbylljen e procesit, klikoni Përfundoje." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Që të mund të plotësohet instalimi i $(^NameDA), kompjuteri juaj duhet të riniset. Doni të riniset tani?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Po plotësohet Çinstalimi i $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) u çinstalua prej kompjuterit tuaj.$\r$\n$\r$\nPër mbylljen e procesit, klikoni Përfundoje." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Kompjuteri juaj duhet të riniset, që të mund të plotësohet çinstalimi i $(^NameDA). Doni të riniset tani?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Rinise tani" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Dua ta rinis dorazi më vonë" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Nis $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Shfaq Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Përfundoje" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Zgjidhni Dosje Menuje Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Zgjidhni një dosje Menuje Start për shkurtore $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Përzgjidhni dosjen e Menusë Start në të cilën do të donit të krijohen shkurtoret për programin. Mundeni edhe të jepni një emër për të krijuar një dosje të re." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Mos krijo shkurtore" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Çinstalo $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Hiqeni $(^NameDA) prej kompjuterit tuaj." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Jeni i sigurt se doni të dilet nga Rregullimi i $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Jeni i sigurt se doni të dilet nga Çinstalimi i $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Zgjidhni Përdorues" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Zgjidhni për cilët përdorues doni të instalohet $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Përzgjidhni nëse doni të instalohet $(^NameDA) vetëm për veten tuaj apo për tërë përdoruesit e këtij kompjuteri. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instaloje për këdo në këtë kompjuter" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instaloje vetëm për mua" +!endif diff --git a/tools/Contrib/Language files/Arabic.nlf b/tools/Contrib/Language files/Arabic.nlf new file mode 100644 index 0000000..8157173 --- /dev/null +++ b/tools/Contrib/Language files/Arabic.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1025 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1256 +# RTL - anything else than RTL means LTR +RTL +# Translation by asdfuae@msn.com, updated by Rami Kattan +# ^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\t\"$0\"\r\nإضغط إلغاء لإلغاء التنصيب،\r\nمحاولة لإعادة محاولة كتابة الملف،\r\n تجاهل لتخطي الملف +# ^FileError_NoIgnore +حدث خلل أثناء فتح ملف للكتابة: \r\n\t\"$0\"\r\nإضغط محاولة لإعادة محاولة كتابة الملف، أو\r\nإلغاء لإلغاء التنصيب +# ^CantWrite +"لا يستطيع الكتابة: " +# ^CopyFailed +فشل النسخ +# ^CopyTo +"نسخ إلى" +# ^Registering +"تسجيل: " +# ^Unregistering +"إلغاء تسجيل: " +# ^SymbolNotFound +"لم يتمكن من إيجاد الرمز :" +# ^CouldNotLoad +"لم يتمكن من تحميل :" +# ^CreateFolder +"إنشاء مجلد" +# ^CreateShortcut +"إنشاء إختصار: " +# ^CreatedUninstaller +"إنشاء مزيل: " +# ^Delete +"حذف ملف: " +# ^DeleteOnReboot +"حذف بعد إعادة التشغيل: " +# ^ErrorCreatingShortcut +"خلل أثناء إنشاء إختصار: " +# ^ErrorCreating +"خلل أثناء إنشاء :" +# ^ErrorDecompressing +خلل أثناء فتح البيانات المضغوطة! منصب تالف؟ +# ^ErrorRegistering +خلل أثناء تسجيل DLL +# ^ExecShell +"تنفيذ ExecShell:" +# ^Exec +"تنفيذ: " +# ^Extract +"إستخراج: " +# ^ErrorWriting +"إستخراج: خلل أثناء الكتابة إلى ملف " +# ^InvalidOpcode +المنصّب تالف: شفرة غير صالحة +# ^NoOLE +"لا توجد OLE لـِ: " +# ^OutputFolder +"مجلد الإخراج: " +# ^RemoveFolder +"إزالة مجلد: " +# ^RenameOnReboot +"إعادة تسمية بعد إعادة التشغيل: " +# ^Rename +"إعادة تسمية: " +# ^Skipped +"تخطى: " +# ^CopyDetails +نسخ التفاصيل إلى الذاكرة +# ^LogInstall +سجّل عملية التنصيب +# ^Byte +بايت +# ^Kilo + كيلو +# ^Mega + ميغا +# ^Giga + جيغا diff --git a/tools/Contrib/Language files/Arabic.nsh b/tools/Contrib/Language files/Arabic.nsh new file mode 100644 index 0000000..523104f --- /dev/null +++ b/tools/Contrib/Language files/Arabic.nsh @@ -0,0 +1,130 @@ +;Language: Arabic (1025) +;Translation by asdfuae@msn.com +;updated by Rami Kattan + +!insertmacro LANGFILE "Arabic" = "العربية" "Al-Arabiyyah" + +!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 "إضعط مفتاح صفحة للأسفل لرؤية باقي الإتفاقية" +!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 + #FIXME: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 "هل أنت متأكد من إغلاق منصّب $(^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/tools/Contrib/Language files/Armenian.nlf b/tools/Contrib/Language files/Armenian.nlf new file mode 100644 index 0000000..12bd7a8 --- /dev/null +++ b/tools/Contrib/Language files/Armenian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1067 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1200 +# RTL - anything else than RTL means LTR +- +# Translation by Hrant Ohanyan (h.ohanyan@haysoft.org) +# ^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\t"$0"\r\n'Դադարեցնել'՝ ընդհատել տեղակայումը,\r\n"Կրկնել"՝ կրկին փորձել,\r\n"Բաց թողնել"՝ բաց թողնել գործողությունը։ +# ^FileError_NoIgnore +Հնարավոր չէ բացել ֆայլը՝ գրանցելու համար։ \r\n\t"$0"\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/tools/Contrib/Language files/Armenian.nsh b/tools/Contrib/Language files/Armenian.nsh new file mode 100644 index 0000000..07c5ad3 --- /dev/null +++ b/tools/Contrib/Language files/Armenian.nsh @@ -0,0 +1,130 @@ +;Language: Armenian (1067) +;Translation by Hrant Ohanyan (h.ohanyan@haysoft.org) + +!insertmacro LANGFILE "Armenian" = "Հայերեն" "Hayeren" + +!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 "Եթե ընդունում եք համաձայնագիրը, ապա սեղմեք $\"Համաձայն եմ$\"։ Ծրագիրը տեղակայելու համար պետք է ընդունեք։" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Եթե ընդունում եք համաձայնագիրը՝ դրեք նիշը ներքևում։ Ծրագիրը տեղակայելու համար պետք է ընդունեք: $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Եթե ընդունում եք համաձայնագիրը՝ ընտրեք ներքոնշյալներից առաջինը։ Ծրագիրը տեղակայելու համար պետք է ընդունեք: $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Արտոնագրային համաձայնություն" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "$(^NameDA)-ը ջնջելուց առաջ ծանոթացեք արտոնագրային համաձայնությանը։" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Եթե ընդունում եք համաձայնագիրը՝ սեղմեք $\"Համաձայն եմ$\" կոճակը։ Ջնջելու համար պետք է ընդունեք։ $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Եթե ընդունում եք համաձայնագիրը՝ դրեք նիշը ներքևում։ Ջնջելու համար պետք է ընդունեք։ $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Եթե ընդունում եք համաձայնագիրը՝ ընտրեք ներքոնշյալներից առաջինը։ Ջնջելու համար պետք է ընդունեք։ $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Տեքստը կարդալու համար օգտագործեք կոճակներ՝ $\"PageUp$\" և $\"PageDown$\"։" +!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 "&Ցուցադրել ReadMe ֆայլը" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Պատրաստ է" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Թղթապանակ՝ $\"Start$\" ընտրացանկում" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Ընտրեք $\"Start$\"-ի թղթապանակը՝ ծրագրի պիտակների համար" + ${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/tools/Contrib/Language files/Asturian.nlf b/tools/Contrib/Language files/Asturian.nlf new file mode 100644 index 0000000..7d4e59d --- /dev/null +++ b/tools/Contrib/Language files/Asturian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit ;Asturian - Asturies +NLF v6 +# Language ID (none exists at the moment) +9997 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Marcos (marcoscostales@gmail.com). +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalación de $(^Name) +# ^UninstallCaption +Desinstalación de $(^Name) +# ^LicenseSubCaption +: Alcuerdu de Llicencia +# ^ComponentsSubCaption +: Opciones d'Instalación +# ^DirSubCaption +: Direutoriu d'Instalación +# ^InstallingSubCaption +: Instalando +# ^CompletedSubCaption +: Completáu +# ^UnComponentsSubCaption +: Opciones de Desinstalación +# ^UnDirSubCaption +: Direutoriu de Desinstalación +# ^ConfirmSubCaption +: Confirmación +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Completáu +# ^BackBtn +< &Atrás +# ^NextBtn +&Siguiente > +# ^AgreeBtn +A&ceuto +# ^AcceptBtn +A&ceuto los términos de la llicencia +# ^DontAcceptBtn +&Non aceuto los términos de la llicencia +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Encaboxar +# ^CloseBtn +&Zarrar +# ^BrowseBtn +&Restolar... +# ^ShowDetailsBtn +Ver &detalles +# ^ClickNext +Calca Siguiente pa siguir. +# ^ClickInstall +Calca Instalar pa entamar la instalación. +# ^ClickUninstall +Calca Desinstalar pa entamar la desinstalación. +# ^Name +Nome +# ^Completed +Completáu +# ^LicenseText +Por favor, revisa l'acuerdu de llicencia enantes d'instalar $(^NameDA). Si aceutes tolos términos del alcuerdu, calca Aceuto. +# ^LicenseTextCB +Por favor, revisa l'alcuerdu de llicencia enantes d'instalar $(^NameDA). Si aceutes tolos términos del alcuerdu, marca embaxo la caxella. $_CLICK +# ^LicenseTextRB +Por favor, revisa l'alcuerdu de llicencia enantes d'instalar $(^NameDA). Si aceutes tolos términos del alcuerdu, seleiciona embaxo la primer opción. $_CLICK +# ^UnLicenseText +Por favor, revisa l'alcuerdu de llicencia enantes de desinstalar $(^NameDA). Si aceutes tolos términos del alcuerdu, calca Aceuto. +# ^UnLicenseTextCB +Por favor, revisa l'alcuerdu de llicencia enantes de desinstalar $(^NameDA). Si aceutes tolos términos del alcuerdu, marca embaxo la caxella. $_CLICK. +# ^UnLicenseTextRB +Por favor, revisa l'alcuerdu de llicencia enantes de desinstalar $(^NameDA). Si aceutes tolos términos del alcuerdu, seleiciona embaxo la primer opción. $_CLICK +# ^Custom +Personalizada +# ^ComponentsText +Conseña los componentes que deseyes instalar y desconseña los componentes que nun quies instalar. $_CLICK +# ^ComponentsSubText1 +Tipos d'instalación: +# ^ComponentsSubText2_NoInstTypes +Seleiciona los componentes a instalar: +# ^ComponentsSubText2 +O selecciona los componentes opcionales que deseyes instalar: +# ^UnComponentsText +Conseña los componentes que deseyes desinstalar y desconseña los componentes que nun quieras desinstalar. $_CLICK +# ^UnComponentsSubText1 +Tipos de desinstalación: +# ^UnComponentsSubText2_NoInstTypes +Seleiciona los componentes a desinstalar: +# ^UnComponentsSubText2 +O seleiciona los componentes opcionales que deseyes desinstalar: +# ^DirText +El programa d'instalación instalará $(^NameDA) nel siguiente direutoriu. Pa instalar nun direutoriu distintu, calca Restolar y seleiciona otru direutoriu. $_CLICK +# ^DirSubText +Direutoriu de Destín +# ^DirBrowseText +Seleiciona'l direutoriu nel qu'instalará $(^NameDA): +# ^UnDirText +El programa d'instalación desinstalará $(^NameDA) del siguiente direutoriu. Pa desinstalar d'un direutoriu distintu, calca Restolar y seleiciona otru direutoriu. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Seleiciona'l direutoriu dende'l cual desinstalará $(^NameDA): +# ^SpaceAvailable +Espaciu disponible: +# ^SpaceRequired +Espaciu requeríu: +# ^UninstallingText +$(^NameDA) sedrá desinstaláu del siguiente direutoriu. $_CLICK +# ^UninstallingSubText +Desinstalando dende: +# ^FileError +Error abriendo ficheru pa escritura: \r\n\t"$0"\r\nCalca albortar p'anular la instalación,\r\nreintentar pa volver a intentar escribir el ficheru, u\r\nomitir pa inorar esti ficheru +# ^FileError_NoIgnore +Error abriendo ficheru pa escritura: \r\n\t"$0"\r\nCalca reintentar pa volver a intentar escribir el ficheru, o\r\nencaboxar p'anular la instalación +# ^CantWrite +"Nun pudo escribise: " +# ^CopyFailed +Falló la copia +# ^CopyTo +"Copiar a " +# ^Registering +"Rexistrando: " +# ^Unregistering +"Desaniciando rexistru: " +# ^SymbolNotFound +"Nun pudo atopase símbolu: " +# ^CouldNotLoad +"Nun pudo cargase: " +# ^CreateFolder +"Criar direutoriu: " +# ^CreateShortcut +"Criar accesu direutu: " +# ^CreatedUninstaller +"Criar desinstalador: " +# ^Delete +"Desaniciar ficheru: " +# ^DeleteOnReboot +"Desaniciar al reaniciu: " +# ^ErrorCreatingShortcut +"Fallu criando accesu direutu: " +# ^ErrorCreating +"Fallu criando: " +# ^ErrorDecompressing +¡Error descomprimiendo datos! ¿Instalador corruptu? +# ^ErrorRegistering +Fallu rexistrando DLL +# ^ExecShell +"Executar comandu: " +# ^Exec +"Executar: " +# ^Extract +"Estrayer: " +# ^ErrorWriting +"Extrayer: fallu escribiendo al ficheru " +# ^InvalidOpcode +Instalador corruptu: códigu d'operación non válidu +# ^NoOLE +"Ensin OLE pa: " +# ^OutputFolder +"Direutoriu de salida: " +# ^RemoveFolder +"Desaniciar direutoriu: " +# ^RenameOnReboot +"Renomar al reaniciu: " +# ^Rename +"Renomar: " +# ^Skipped +"Omitíu: " +# ^CopyDetails +Copiar Detalles al Cartafueyu +# ^LogInstall +Rexistrar procesu d'instalación +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Asturian.nsh b/tools/Contrib/Language files/Asturian.nsh new file mode 100644 index 0000000..a641214 --- /dev/null +++ b/tools/Contrib/Language files/Asturian.nsh @@ -0,0 +1,129 @@ +;Language: Asturian (1150) +;By Marcos (marcoscostales@gmail.com). + +!insertmacro LANGFILE "Asturian" = "Asturies" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bienveníu al Asistente d'Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Esti programa instalará $(^NameDA) nel to ordenador.$\r$\n$\r$\nEncamiéntase que zarres toles demás aplicaciones enantes d'aniciar la instalación. Esto faerá posible anovar ficheros rellacionaos col sistema ensin tener que reaniciar el to ordenador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bienveníu al Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Esti asistente guiaráte durante la desinstalación de $(^NameDA).$\r$\n$\r$\nEnantes d'aniciar la desinstalación, asegúrate de que $(^NameDA) nun se ta executando.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Alcuerdu de llicencia" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor revisa los términos de la llicencia enantes d'instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Si aceutes tolos términos del alcuerdu, seleiciona Aceuto pa siguir. Tienes d'aceutar l'alcuerdu pa instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si aceutes los términos del alcuerdu, conseña embaxo la caxella. Tienes d'aceutar los términos pa instalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si aceutes los términos del alcuerdu, seleiciona embaxo la primer opción. Tienes d'aceutar los términos pa instalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Alcuerdu de llicencia" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor revisa los términos de la llicencia enantes de desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Si aceutes tolos términos del alcuerdu, seleiciona Aceuto pa siguir. Tienes d'aceutar l'alcuerdu pa desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si aceutes los términos del alcuerdu, conseña embaxu la caxella. Tienes d'aceutar los términos pa desinstalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si aceutes los términos del alcuerdu, seleccione embaxu la primer opción. Tienes d'aceutar los términos pa desinstalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Calca Avanzar Páxina pa ver el restu del alcuerdu." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Seleición de componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Seleicione qué carauterístiques de $(^NameDA) deseyes instalar." + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descripción" +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Seleición de componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Seleicione qué carauterístiques de $(^NameDA) quies desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Allugue'l mur enriba d'un componente pa ver la so descripción." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Escoyer llugar d'instalación" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Escueye'l direutoriu pa instalar $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Escoyer llugar de desinstalación" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Escueye'l direutoriu dende'l cual se desinstalará $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor espera mientres $(^NameDA) s'instala." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalación Completada" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "La instalación completóse correutamente." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalación Desaniciada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "La instalación nun se completó correutamente." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor espera mientres $(^NameDA) se desinstala." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalación Completada" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La desinstalación completóse correutamente." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalación Desaniciada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La desinstalación nun se completó correutamente." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Completando l'Asistente d'Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) foi instaláu nel to sistema.$\r$\n$\r$\nCalca Finar pa zarrar esti asistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "El to sistema tien de reaniciase pa que pueda completase la instalación de $(^NameDA). ¿Quies reaniciar agora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Completando l'Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) foi desinstaláu del to sistema.$\r$\n$\r$\nCalca Finar pa zarrar esti asistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "El to ordenador tien que reaniciar pa finar la desinstalación de $(^NameDA). ¿Quies reiniciar agora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reaniciar agora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Deseo reaniciar manualmente más sero" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Executar $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Ver Lléame" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Finar" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Escoyer Carpeta del Menú Aniciu" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Escueye una Carpeta del Menú Aniciu pa los accesos direutos de $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleiciona una carpeta del Menú Aniciu na que quieras criar los accesos direutos del programa. Tamién puedes introducir un nome pa criar una nueva carpeta." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Non criar accesos direutos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Desaniciar $(^NameDA) del to sistema." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "¿De xuru que quies colar de la instalación de $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "¿De xuru que quies colar de la desinstalación de $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Escoyer Usuarios" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Escueye los usuarios pa los cuales quies instalar $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Seleiciona si quies instalar $(^NameDA) namái pa tí o pa tolos usuarios d'esti Ordenador.$(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instalación pa cualisquier usuariu d'esti ordenador" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalación namái pa mí" +!endif diff --git a/tools/Contrib/Language files/Basque.nlf b/tools/Contrib/Language files/Basque.nlf new file mode 100644 index 0000000..b299b54 --- /dev/null +++ b/tools/Contrib/Language files/Basque.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1069 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Iñaki San Vicente +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) -ren Instalazioa +# ^UninstallCaption +$(^Name) -ren Ezabaketa +# ^LicenseSubCaption +: Lizentzia hitzarmen agiria +# ^ComponentsSubCaption +: Instalazio aukerak +# ^DirSubCaption +: Instalazio karpeta +# ^InstallingSubCaption +: Instalatzen +# ^CompletedSubCaption +: Instalazioa burututa +# ^UnComponentsSubCaption +: Ezabaketa aukerak +# ^UnDirSubCaption +: Ezabaketa direktorioa +# ^ConfirmSubCaption +: Berretsi ezabaketa +# ^UninstallingSubCaption +: Ezabatzen +# ^UnCompletedSubCaption +: Ezabaketa burututa +# ^BackBtn +< &Atzera +# ^NextBtn +&Aurrera > +# ^AgreeBtn +Onartu +# ^AcceptBtn +Lizentzia hitzarmenaren baldintzak onartzen ditut. +# ^DontAcceptBtn +Ez ditut lizentzia hitzarmenaren baldintzak onartzen. +# ^InstallBtn +&Instalatu +# ^UninstallBtn +&Ezabatu +# ^CancelBtn +Ezeztatu +# ^CloseBtn +&Itxi +# ^BrowseBtn +&Arakatu... +# ^ShowDetailsBtn +Ikusi &zehaztasunak +# ^ClickNext +Sakatu Aurrera jarraitzeko. +# ^ClickInstall +Sakatu Instalatu instalazioarekin hasteko. +# ^ClickUninstall +Sakatu Ezabatu ezabaketarekin hasteko. +# ^Name +Izena +# ^Completed +Osatuta +# ^LicenseText +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) instalatu aurretik. Baldintza guztiak onartzen badituzu, sakatu Onartu. +# ^LicenseTextCB +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) instalatu aurretik. Baldintza guztiak onartzen badituzu, nabarmendu azpiko laukitxoa. $_CLICK +# ^LicenseTextRB +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) instalatu aurretik. Baldintza guztiak onartzen badituzu, hautatu azpian lehen aukera. $_CLICK +# ^UnLicenseText +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) ezabatu aurretik. Baldintza guztiak onartzen badituzu, sakatu Onartu. +# ^UnLicenseTextCB +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) ezabatu aurretik. Baldintza guztiak onartzen badituzu, nabarmendu azpiko laukitxoa. $_CLICK. +# ^UnLicenseTextRB +Mesedez, aztertu lizentzia hitzarmena $(^NameDA) ezabatu aurretik. Baldintza guztiak onartzen badituzu, hautatu azpian lehen aukera. $_CLICK +# ^Custom +Norberaren nahien arabera +# ^ComponentsText +Nabarmendu instalatu nahi diren osagaiak, eta utzi zuri instalatu nahi ez direnak. $_CLICK +# ^ComponentsSubText1 +Hautatu instalazio mota: +# ^ComponentsSubText2_NoInstTypes +Hautatu instalatu beharreko osagaiak: +# ^ComponentsSubText2 +Edo hautatu instalatu beharreko aukerazko osagaiak: +# ^UnComponentsText +Nabarmendu ezabatu nahi diren osagaiak, eta utzi zuri ezabatu nahi ez direnak. $_CLICK +# ^UnComponentsSubText1 +Hautatu ezabaketa mota: +# ^UnComponentsSubText2_NoInstTypes +Hautatu ezabatu beharreko osagaiak: +# ^UnComponentsSubText2 +Edo hautatu ezabatu beharreko aukerazko osagaiak: +# ^DirText +Instalazio programak $(^NameDA) honako karpetan instalatuko du. Beste karpeta batean instalatzeko, sakatu Arakatu eta aukeratu beste bat. $_CLICK +# ^DirSubText +Helburu karpeta +# ^DirBrowseText +Aukeratu $(^NameDA) instalatuko den karpeta: +# ^UnDirText +Instalazio programak $(^NameDA) honako karpetatik ezabatuko du. Beste karpeta batetik ezabatzeko, sakatu Arakatu eta aukeratu beste bat. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Aukeratu $(^NameDA) zein karpetatik ezabatuko den: +# ^SpaceAvailable +Leku erabilgarria: +# ^SpaceRequired +Behar den lekua: +# ^UninstallingText +$(^NameDA) ondorengo karpetan instalatuko da. $_CLICK +# ^UninstallingSubTex +Ezabatzen honako karpetatik: +# ^FileError +Hutsegitea idazteko fitxategia irekitzean: \r\n\t"$0"\r\nSakatu Irten instalazioa ,\r\nsaiatu berriz fitxategi hau berriz idazten saiatzeko, u\r\njarraitu fitxategi hau alde batera utzita aurrera egiteko +# ^FileError_NoIgnore +Hutsegitea idazteko fitxategia irekitzean: \r\n\t"$0"\r\nsaiatu berriz fitxategi hau berriz idazten saiatzeko ,\r\nSakatu Irten instalazioa +# ^CantWrite +"Ezin izan da idatzi: " +# ^CopyFailed +Kopiatzeak hutsegin du +# ^CopyTo +"Kopiatu hona " +# ^Registering +"Erregistratzen: " +# ^Unregistering +"Erregistroa ezabatzen: " +# ^SymbolNotFound +"Ikurra ezin izan da aurkitu: " +# ^CouldNotLoad +"Ezin izan da kargatu: " +# ^CreateFolder +"Sortu karpeta: " +# ^CreateShortcut +"Sortu lasterbidea: " +# ^CreatedUninstaller +"Sortu ezabatzailea: " +# ^Delete +"Ezabatu fitxategia: " +# ^DeleteOnReboot +"Ezabatu berrabiarazitakoan: " +# ^ErrorCreatingShortcut +"Hutsegitea lasterbidea sortzerakoan: " +# ^ErrorCreating +"Hutsegitea sortzerakoan: " +# ^ErrorDecompressing +¡Hutsegitea datuak deskomprimatzean! Instalatzailea okerra? +# ^ErrorRegistering +Hutsegitea DLL erregistratzerakoan +# ^ExecShell +"Exekutatu agindua: " +# ^Exec +"Exekutatu: " +# ^Extract +"Kanporatu: " +# ^ErrorWriting +"Kanporaketa: hutsegitea fitxategira idazterakoan " +# ^InvalidOpcode +Instalatzailea okerra: ekintza kodea ez da baliozkoa +# ^NoOLE +"OLE-rik ez honentzako: " +# ^OutputFolder +"Irteera karpeta: " +# ^RemoveFolder +"Ezabatu karpeta: " +# ^RenameOnReboot +"Berrizendatu berrabiarazitakoan: " +# ^Rename +"Berrizendatu: " +# ^Skipped +"Alde batera utzitakoa: " +# ^CopyDetails +Kopiatu xehetasunak arbelera +# ^LogInstall +Instalazio prozesuaren erregistroa gorde +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Basque.nsh b/tools/Contrib/Language files/Basque.nsh new file mode 100644 index 0000000..e03a7c9 --- /dev/null +++ b/tools/Contrib/Language files/Basque.nsh @@ -0,0 +1,129 @@ +;Language: Basque (1069) +;By Iñaki San Vicente + +!insertmacro LANGFILE "Basque" = "Euskera" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Ongi etorri $(^NameDA) -ren instalazio programara" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Programa honek $(^NameDA) zure ordenagailuan instalatuko du.$\r$\n$\r$\nAholkatzen da instalazioarekin hasi aurretik beste aplikazio guztiak ixtea. Honek sistemarekin erlazionatuta dauden fitxategien eguneratzea ahalbidetuko du, ordenagailua berrabiarazi beharrik izan gabe.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Ongi etorri $(^NameDA) -ren ezabaketa programara" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Laguntzaile honek $(^NameDA)-ren ezabaketa prozesuan zehar gidatuko zaitu.$\r$\n$\r$\nEzabaketa hasi aurretik, ziurtatu $(^NameDA) martxan ez dagoela .$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lizentzia hitzarmena" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Mesedez aztertu lizentziaren baldintzak $(^NameDA) instalatu aurretik." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Baldintzak onartzen badituzu, sakatu Onartu aurrera egiteko. Hitzarmena onartzea ezinbestekoa da $(^NameDA) instalatzeko." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Baldintzak onartzen badituzu, nabarmendu azpiko laukitxoa. Hitzarmena onartzea ezinbestekoa da $(^NameDA) instalatzeko. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Baldintzak onartzen badituzu, hautatu azpian lehen aukera. Hitzarmena onartzea ezinbestekoa da $(^NameDA) instalatzeko. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lizentzia hitzarmena" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Mesedez aztertu lizentziaren baldintzak $(^NameDA) ezabatu aurretik." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Baldintzak onartzen badituzu, sakatu Onartu aurrera egiteko. Hitzarmena onartzea ezinbestekoa da $(^NameDA) ezabatzeko." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Baldintzak onartzen badituzu, nabarmendu azpiko laukitxoa. Hitzarmena onartzea ezinbestekoa da $(^NameDA) ezabatzeko. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Baldintzak onartzen badituzu, hautatu azpian lehen aukera. Hitzarmena onartzea ezinbestekoa da $(^NameDA) ezabatzeko. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Sakatu Av Pág hitzarmenaren gainontzeko atalak ikusteko." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Osagaien hautatzea" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Hautatu $(^NameDA)-ren zein ezaugarri instalatu nahi duzun." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Osagaien hautatzea" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Hautatu $(^NameDA)-ren zein ezaugarri ezabatu nahi duzun." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Azalpena" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Jarri sagua osagai baten gainean dagokion azalpena ikusteko." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Hautatu osagai bat bere azalpena ikusteko." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Hautatu instalazioaren lekua" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Aukeratu $(^NameDA) instalatzeko karpeta." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Aukeratu ezabatuko den karpeta" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Aukeratu $(^NameDA) zein karpetatik ezabatuko den." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalatzen" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Mesedez itxoin $(^NameDA) instalatzen den bitartean." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalazioa burututa" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalazioa zuzen burutu da." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalazioa ezeztatua" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalazioa ez da zuzen burutu." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Ezabatzen" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Mesedez itxoin $(^NameDA) ezabatzen den bitartean." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Ezabatzea burututa" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Ezabatzea zuzen burutu da." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Ezabatzea ezeztatuta" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Ezabatzea ez da zuzen burutu." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "$(^NameDA)-ren instalazio laguntzailea osatzen" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) zure sisteman instalatu da.$\r$\n$\r$\nSakatu Amaitu laguntzaile hau ixteko." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Zure sistema berrabiarazi behar duzu $(^NameDA)-ren instalazioa osatzeko. Orain Berrabiarazi nahi duzu?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "$(^NameDA)-ren ezabaketa laguntzailea osatzen" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) zure sistematik ezabatu da.$\r$\n$\r$\nSakatu Amaitu laguntzaile hau ixteko." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Zure ordenagailuak berrabiarazia izan behar du $(^NameDA)-ren ezabaketa osatzeko. Orain Berrabiarazi nahi duzu?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Berrabiarazi orain" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Neuk berrabiarazi geroago" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Exekutatu $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Ikusi Readme.txt" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Amaitu" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Aukeratu Hasiera Menuko karpeta" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Aukeratu Hasiera Menuko karpeta bat $(^NameDA)-ren lasterbideentzako." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Aukeratu Hasiera Menuko karpeta bat, non programaren lasterbideak instalatu nahi dituzun. Karpeta berri bat sortzeko izen bat ere adierazi dezakezu." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ez sortu lasterbiderik" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Ezabatu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA) zure sistematik ezabatzen du." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ziur zaude $(^Name)-ren instalaziotik irten nahi duzula?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ziur zaude $(^Name)-ren ezabaketa laguntzailetik irten nahi duzula?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Hautatu Erabiltzaileak" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Hautatu zein erabiltzailerentzat ezartzea nahi duzun $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Hautatu norentzat ezartzea nahi duzun $(^NameDA) zuretzat bakarrik edo ordenagailu honetako erabiltzaile guztientzat. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Ezarri ordenagailu hau erabiltzen duen edonorentzat" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Ezarri niretzat bakarrik" +!endif diff --git a/tools/Contrib/Language files/Belarusian.nlf b/tools/Contrib/Language files/Belarusian.nlf new file mode 100644 index 0000000..b1a4e27 --- /dev/null +++ b/tools/Contrib/Language files/Belarusian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1059 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by PrydesparBLR [ prydespar@outlook.com ] +# ^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). Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, выберыце першы варыянт з прапанаваных нiжэй. $_CLICK +# ^UnLicenseText +Калі ласка, прачытайце ўмовы Ліцэнзійнага пагаднення перад пачаткам выдалення $(^NameDA). Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, нацiснiце кнопку "Прыняць". +# ^UnLicenseTextCB +Калі ласка, прачытайце ўмовы Ліцэнзійнага пагаднення перад пачаткам выдалення $(^NameDA). Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, націсніце на сцяжок ніжэй. $_CLICK +# ^UnLicenseTextRB +Калі ласка, прачытайце ўмовы Ліцэнзійнага пагаднення перад пачаткам выдалення $(^NameDA). Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, выберыце першы варыянт з прапанаваных нiжэй. $_CLICK +# ^Custom +Выбарачна +# ^ComponentsText +Выберыце кампаненты праграмы, якiя Вы жадаеце ўсталяваць. $_CLICK +# ^ComponentsSubText1 +Выберыце тып усталявання: +# ^ComponentsSubText2_NoInstTypes +Выберыце кампаненты праграмы, каб усталяваць iх: +# ^ComponentsSubText2 +або выберыце кампаненты праграмы, каб усталяваць iх па свайму жаданню: +# ^UnComponentsText +Выберыце кампаненты, якiя Вы жадаеце выдалiць, i знiмiце сцяжкі, выбраныя для тых кампанентаў, якiя не трэба выдаляць. $_CLICK +# ^UnComponentsSubText1 +Выберыце тып выдалення: +# ^UnComponentsSubText2_NoInstTypes +Выберыце кампаненты для выдалення: +# ^UnComponentsSubText2 +або выберыце кампаненты праграмы для выдалення: +# ^DirText +Праграма ўсталюе $(^NameDA) у выбраную папку. Каб усталяваць праграму ў iншай папкі, нацiснiце кнопку "Агляд" i выберыце патрэбную папку. $_CLICK +# ^DirSubText +Папка ўсталявання +# ^DirBrowseText +Выберыце папку для ўсталявання $(^NameDA): +# ^UnDirText +Праграма выдалiць $(^NameDA) з выбранай папкі. Каб выдаліць праграму з iншай папкі, нацiснiце кнопку "Агляд" i выберыце патрэбную папку. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Выберыце папку, з якой Вы жадаеце выдалiць $(^NameDA): +# ^SpaceAvailable +"Даступна на дыску: " +# ^SpaceRequired +"Патрэбна месца на дыску: " +# ^UninstallingText +Праграма выдалiць $(^NameDA) з Вашага камп'ютара. $_CLICK +# ^UninstallingSubText +Выдаленне з: +# ^FileError +Немагчыма адкрыць файл для запiсу: \r\n\r\n$0\r\n\r\nНацiснiце кнопку "Перапынiць", каб перапынiць усталяванне;\r\n"Паўтарыць", каб паўтарыць спробу запiсу ў файл;\r\n"Ігнараваць", каб прапусцiць гэта дзеянне. +# ^FileError_NoIgnore +Немагчыма адкрыць файл для запiсу: \r\n\r\n$0\r\n\r\nНацiснiце кнопку "Паўтарыць", каб паўтарыць спробу запiсу ў файл;\r\n"Скасаваць", каб перапынiць усталяванне. +# ^CantWrite +"Немагчыма запiсаць: " +# ^CopyFailed +Памылка пры капіяванні +# ^CopyTo +"Капіяванне ў " +# ^Registering +"Рэгiстрацыя: " +# ^Unregistering +"Выдаленне рэгiстрацыi: " +# ^SymbolNotFound +"Немагчыма знайсці сiмвал: " +# ^CouldNotLoad +"Немагчыма загрузiць: " +# ^CreateFolder +"Стварэнне папкі: " +# ^CreateShortcut +"Стварэнне ярлыка: " +# ^CreatedUninstaller +"Стварэнне праграмы выдалення: " +# ^Delete +"Выдаленне файла: " +# ^DeleteOnReboot +"Выдаленне пасля перазапуску камп'ютара: " +# ^ErrorCreatingShortcut +"Памылка стварэння ярлыка: " +# ^ErrorCreating +"Памылка стварэння: " +# ^ErrorDecompressing +Немагчыма выцягнуць дадзеныя. Магчыма пашкоджаны дыстрыбутыў. +# ^ErrorRegistering +Немагчыма зарэгістраваць бібліятэку (DLL) +# ^ExecShell +"Выкананне каманды абалонкі: " +# ^Exec +"Выкананне: " +# ^Extract +"Выманне: " +# ^ErrorWriting +"Выманне: памылка запiсу файла" +# ^InvalidOpcode +дыстрыбутыў пашкоджаны: код памылкi +# ^NoOLE +"Няма OLE для: " +# ^OutputFolder +"Папка усталявання: " +# ^RemoveFolder +"Выдаленне папкі: " +# ^RenameOnReboot +"Перайменаванне пасля перазапуску камп'ютара: " +# ^Rename +"Перайменаванне: " +# ^Skipped +"Прапушчана: " +# ^CopyDetails +Капіяваць звесткi ў буфер абмена +# ^LogInstall +Запiсваць у лог працэс усталявання +# byte +Б +# kilo + К +# mega + М +# giga + Г diff --git a/tools/Contrib/Language files/Belarusian.nsh b/tools/Contrib/Language files/Belarusian.nsh new file mode 100644 index 0000000..32f11a4 --- /dev/null +++ b/tools/Contrib/Language files/Belarusian.nsh @@ -0,0 +1,129 @@ +;Language: Belarusian (1059) +;Translated by PrydesparBLR [ prydespar@outlook.com.by ] + +!insertmacro LANGFILE "Belarusian" = "Беларуская" "Bielaruskaja" ; Biełaruskaja + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Вас вiтае ўсталёўшчык $(^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 "Лiцензiйнае пагадненне" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Калі ласка, прачытайце ўмовы Ліцэнзійнага пагаднення перад усталяваннем $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Калi Вы прымаеце ўмовы Лiцензiйнага пагаднення, націсніце кнопку $\"Прыняць$\". Гэта неабходна для ўсталявання праграмы." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Калi Вы прымаеце ўмовы Лiцензiйнага пагаднення, націсніце на сцяжок ніжэй. Гэта неабходна для ўсталявання праграмы. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Калi Вы прымаеце ўмовы Ліцэнзійнага пагаднення, выберыце першы варыянт з прапанаваных ніжэй. Гэта неабходна для ўсталявання праграмы. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Ліцэнзійнае пагадненне" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Калі ласка, прачытайце ўмовы Ліцэнзійнага пагаднення перад выдаленнем $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, націсніце кнопку $\"Прыняць$\". Гэта неабходна для выдалення праграмы. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, націсніце на сцяжок ніжэй. Гэта неабходна для выдалення праграмы. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Калі Вы прымаеце ўмовы Ліцэнзійнага пагаднення, выберыце першы варыянт з прапанаваных ніжэй. Гэта неабходна для выдалення праграмы. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Выкарыстоўвайце кнопкi $\"PageUp$\" i $\"PageDown$\" для перамяшчэння па тэксце." +!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 "Выберыце папку ў меню $\"Пуск$\" для размяшчэння ярлыкоў праграмы." + ${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 "Вы сапраўды жадаеце скасаваць усталяванне $(^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/tools/Contrib/Language files/Bosnian.nlf b/tools/Contrib/Language files/Bosnian.nlf new file mode 100644 index 0000000..dfb4218 --- /dev/null +++ b/tools/Contrib/Language files/Bosnian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +5146 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Salih CAVKIC, cavkic@skynet.be +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Instalacija +# ^UninstallCaption +$(^Name) Uklanjanje +# ^LicenseSubCaption +: Licencno pravo korištenja +# ^ComponentsSubCaption +: Opcije instalacije +# ^DirSubCaption +: Izbor mape za instalaciju +# ^InstallingSubCaption +: Instaliranje +# ^CompletedSubCaption +: Završeno +# ^UnComponentsSubCaption +: Opcije uklanjanja +# ^UnDirSubCaption +: Mapa uklanjanja +# ^ConfirmSubCaption +: Potvrda +# ^UninstallingSubCaption +: Uklanjanje +# ^UnCompletedSubCaption +: Završeno uklanjanje +# ^BackBtn +< &Nazad +# ^NextBtn +&Dalje > +# ^AgreeBtn +&Prihvatam +# ^AcceptBtn +&Prihvatam uvjete licencnog ugovora +# ^DontAcceptBtn +&Ne prihvatam uvjete licencnog ugovora +# ^InstallBtn +&Instaliraj +# ^UninstallBtn +&Ukloni +# ^CancelBtn +Odustani +# ^CloseBtn +&Zatvori +# ^BrowseBtn +&Pregledaj... +# ^ShowDetailsBtn +Prikaži &detalje +# ^ClickNext +Pritisnite dugme 'Dalje' za nastavak. +# ^ClickInstall +Pritisnite dugme 'Instaliraj' za početak instalacije. +# ^ClickUninstall +Pritisnite dugme 'Ukloni' za početak uklanjanja. +# ^Name +Ime +# ^Completed +Završeno +# ^LicenseText +Molim pročitajte licencu prije instaliranja programa $(^NameDA). Ukoliko prihvatate sve uvjete ugovora, odaberite 'Prihvatam'. +# ^LicenseTextCB +Molim pročitajte licencu prije instaliranja programa $(^NameDA). Ukoliko prihvatate sve uvjete ugovora, označite donji kvadratić. $_CLICK +# ^LicenseTextRB +Molim pročitajte licencu prije instaliranja programa $(^NameDA). Ukoliko prihvatate sve uvjete ugovora, odaberite prvu donju opciju. $_CLICK +# ^UnLicenseText +Molim pročitajte licencu prije uklanjanja programa $(^NameDA). Ukoliko prihvatate sve uvjete ugovora, odaberite 'Prihvatam'. +# ^UnLicenseTextCB +Molim pročitajte licencu prije uklanjanja programa $(^NameDA). Ako prihvatate sve uvjete ugovora, obilježite donji kvadratić. $_CLICK +# ^UnLicenseTextRB +Molim pročitajte licencu prije uklanjanja programa $(^NameDA). Ukoliko prihvatate sve uvjete ugovora, odaberite prvu opciju ispod. $_CLICK +# ^Custom +Podešavanje +# ^ComponentsText +Označite komponente koje želite instalirati. Instaliraju se samo označene komponente. Uklonite oznaku sa onih koje ne želite instalirati. $_CLICK +# ^ComponentsSubText1 +Izaberite tip instalacije: +# ^ComponentsSubText2_NoInstTypes +Odaberite komponente za instalaciju: +# ^ComponentsSubText2 +Ili po izboru označite komponente koje želite instalirati: +# ^UnComponentsText +Označite komponente koje želite ukloniti. Uklonite oznaku sa onih koje ne želite ukloniti. $_CLICK +# ^UnComponentsSubText1 +Izaberite tip uklanjanja: +# ^UnComponentsSubText2_NoInstTypes +Izaberite komponente za uklanjanje: +# ^UnComponentsSubText2 +Ili po izboru odaberite komponente koje želite da uklonite: +# ^DirText +Program $(^NameDA) će biti instaliran u sljedeću mapu. Za instalaciju na neku drugu mapu odaberite 'Pregledaj...' i odaberite drugu mapu. $_CLICK +# ^DirSubText +Odredišna mapa +# ^DirBrowseText +Izaberite mapu u koju želite instalirati program $(^NameDA): +# ^UnDirText +Program $(^NameDA) će biti uklonjen iz navedene mape. Za uklanjanje iz druge mape odaberite 'Pregledaj...' i označite drugu mapu. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Izaberite mapu iz koje ćete program $(^NameDA) ukloniti: +# ^SpaceAvailable +"Slobodno prostora na disku: " +# ^SpaceRequired +"Potrebno prostora na disku: " +# ^UninstallingText +Program $(^NameDA) će biti uklonjen iz sljedeće mape. $_CLICK +# ^UninstallingSubText +Uklanjanje iz: +# ^FileError +Greška prilikom otvaranja datoteke za upisivanje: \r\n\t"$0"\r\n\"Odustani\" za prekid instalacije,\r\n\"Ponovi\" za ponovni pokušaj upisivanja, ili\r\n\"Ignoriši\" za zanemarenje te datoteke +# ^FileError_NoIgnore +Greška prilikom otvaranja datoteke za upisivanje: \r\n\t"$0"\r\n\"Ponovi\" za ponovni pokušaj zapisivanja, ili\r\n\"Odustani\" za prekid instalacije +# ^CantWrite +"Nemoguće upisati: " +# ^CopyFailed +Greška prilikom kopiranja +# ^CopyTo +"Kopiraj u " +# ^Registering +"Prijava: " +# ^Unregistering +"Odjava: " +# ^SymbolNotFound +"Nemoguće naći simbol: " +# ^CouldNotLoad +"Nemoguće učitavanje: " +# ^CreateFolder +"Napravi mapu: " +# ^CreateShortcut +"Napravi prečicu: " +# ^CreatedUninstaller +"Program za uklanjanje: " +# ^Delete +"Obriši datoteku: " +# ^DeleteOnReboot +"Obriši prilikom ponovnog pokretanja: " +# ^ErrorCreatingShortcut +"Greška prilikom kreiranja prečica: " +# ^ErrorCreating +"Greška prilikom kreiranja: " +# ^ErrorDecompressing +Greška prilikom otpakivanja podataka! Oštećen instalacijski program? +# ^ErrorRegistering +Greška prilikom prijavljivanja DLLa +# ^ExecShell +"ExecShell: " +# ^Exec +"Izvrši: " +# ^Extract +"Otpakuj: " +# ^ErrorWriting +"Otpakivanje: greška upisivanja u datoteku " +# ^InvalidOpcode +Oštećena instalacijska datoteka: neispravna opkoda +# ^NoOLE +"Nema OLE za: " +# ^OutputFolder +"Izlazna mapa: " +# ^RemoveFolder +"Obriši mapu: " +# ^RenameOnReboot +"Preimenuj prilikom ponovnog startovanja: " +# ^Rename +"Preimenuj: " +# ^Skipped +"Preskočeno: " +# ^CopyDetails +Kopiraj detalje na Klembord +# ^LogInstall +Logiraj zapisnik procesa instalacije +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G + diff --git a/tools/Contrib/Language files/Bosnian.nsh b/tools/Contrib/Language files/Bosnian.nsh new file mode 100644 index 0000000..29c1bcb --- /dev/null +++ b/tools/Contrib/Language files/Bosnian.nsh @@ -0,0 +1,121 @@ +;Language: Bosnian (5146) +;By Salih Čavkić, cavkic@skynet.be + +!insertmacro LANGFILE "Bosnian" = "Bosanski" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Dobrodošli u program za instalaciju $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ovaj program će instalirati $(^NameDA) na Vaš sistem. $\r$\n$\r$\nPreporučujemo da neizostavno zatvorite sve druge otvorene programe prije nego što definitivno započnete sa instaliranjem. To će omogućiti bolju nadogradnju određenih sistemskih datoteka bez potrebe da Vaš računar ponovo startujete. Instaliranje programa možete prekinuti pritiskom na dugme 'Odustani'.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Dobrodošli u postupak uklanjanja programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ovaj će Vas vodič provesti kroz postupak uklanjanja programa $(^NameDA).$\r$\n$\r$\nPrije samog početka, molim zatvorite program $(^NameDA) ukoliko je slučajno otvoren.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licencni ugovor" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Molim pročitajte licencni ugovor $(^NameDA) prije instalacije programa." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ako prihvatate uslove licence, odaberite 'Prihvatam' za nastavak. Morate prihvatiti licencu za instalaciju programa $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ako prihvatate uslove licence, označite donji kvadratić. Morate prihvatiti licencu za instalaciju programa $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ako prihvatate uslove licence, odaberite prvu donju opciju. Morate prihvatiti licencu za instalaciju programa $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licencni ugovor o pravu korištenja" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Molim pročitajte licencu prije uklanjanja programa $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ako prihvatate uslove licence, odaberite 'Prihvatam' za nastavak. Morate prihvatiti licencu za uklanjanje programa $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ako prihvatate uslove licence, označite donji kvadratić. Morate prihvatiti licencu za uklanjanje programa $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ako prihvatate uslove licence, odaberite prvu donju opciju. Morate prihvatiti licencu za uklanjanje programa $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Pritisnite 'Page Down' na tastaturi za ostatak licence." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Izbor komponenti za instalaciju" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Izaberite komponente programa $(^NameDA) koje želite instalirati." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Izbor komponenti za uklanjanje" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Izaberite komponente programa $(^NameDA) koje želite ukloniti." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Opis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Postavite kursor od miša iznad komponente da biste vidjeli njezin opis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Selektirajte jednu komponentu da vidite njezin opis." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Odaberite odredište za instalaciju" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Odaberite mapu u koju želite instalirati program $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Izaberite polazište za uklanjanje" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Selektirajte mapu iz koje želite ukloniti program $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instaliranje" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Molim pričekajte na završetak instalacije programa $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Kraj instalacije" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalacija je u potpunosti uspješno završila." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalacija je prekinuta" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalacija nije završila uspješno." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Uklanjanje" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Molim Vas pričekajte da vodič završi uklanjanje $(^NameDA) programa." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Uklanjanje je završeno" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Uklanjanje je u potpunosti završilo uspješno." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Uklanjanje je prekinuto" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Uklanjanje nije završilo uspješno." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Dovršavanje instalacije programa $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) je instaliran na Vaše računar.$\r$\n$\r$\nPritisnite dugme 'Kraj' za završetak." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Računar treba ponovno startovati za dovršavanje instalacije programa $(^NameDA). Želite li to učiniti sada?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Završetak uklanjanja programa $(^NameDA) sa Vašeg sistema." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) je uklonjen sa Vašeg računara.$\r$\n$\r$\nPritisnite dugme 'Kraj' za zatvaranje ovog prozora." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Vaš računar trebate ponovno startovati da dovršite uklanjanje programa $(^NameDA). Želite li da odmah sad ponovo startujete računar?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Startuj računar odmah sad" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ponovno ću pokrenuti računar kasnije" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Pokreni program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Prikaži datoteku &Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Kraj" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Izbor mape u Start meniju" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Izaberite ime za programsku mapu unutar Start menija." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Izaberite jednu mapu u Start meniju u kojoj želite da se kreiraju prečice programa. Možete također unijeti ime za novu mapu ili selektirati već postojeću." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nemojte praviti prečice" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Uklanjanje programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Program $(^NameDA) će biti uklonjen sa Vašeg računara." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Jeste li sigurni da želite prekinuti instalaciju programa $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Jeste li sigurni da želite prekinuti uklanjanje $(^Name) programa?" +!endif diff --git a/tools/Contrib/Language files/Breton.nlf b/tools/Contrib/Language files/Breton.nlf new file mode 100644 index 0000000..1423026 --- /dev/null +++ b/tools/Contrib/Language files/Breton.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1150 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by KAD-Korvigelloù an Drouizig (drouizig@drouizig.org) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Staliañ ha kefluniañ $(^Name) +# ^UninstallCaption +Distaliañ $(^Name) +# ^LicenseSubCaption +: Aotre arverañ +# ^ComponentsSubCaption +: Dibaboù staliañ +# ^DirSubCaption +: Kavlec'h staliañ +# ^InstallingSubCaption +: O staliañ ar restroù +# ^CompletedSubCaption +: Echu eo +# ^UnComponentsSubCaption +: Dibaboù distaliañ +# ^UnDirSubCaption +: Kavlec'h distaliañ +# ^ConfirmSubCaption +: Kadarnañ +# ^UninstallingSubCaption +: O tistaliañ ar restroù +# ^UnCompletedSubCaption +: Echu eo +# ^BackBtn +< &Kent +# ^NextBtn +&War-lerc'h > +# ^AgreeBtn +&A-du emaon +# ^AcceptBtn +&Degemer holl dermoù al lañvaz emglev +# ^DontAcceptBtn +&Chom hep degemer termoù al lañvaz emglev +# ^InstallBtn +&Staliañ +# ^UninstallBtn +&Distaliañ +# ^CancelBtn +Nullañ +# ^CloseBtn +&Serriñ +# ^BrowseBtn +F&urchal... +# ^ShowDetailsBtn +Muioc'h a &ditouroù +# ^ClickNext +Klikit war « War-lerc'h » evit mont war-raok. +# ^ClickInstall +Klikit war « Staliañ » evit kregiñ gant ar staliadur. +# ^ClickUninstall +Klikit war « Distaliañ » evit kregiñ gant an distaliadur. +# ^Name +Anv +# ^Completed +Echu eo +# ^LicenseText +Bezit aketus en ur lenn an aotre arverañ a-raok staliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, klikit war « A-du emaon ». +# ^LicenseTextCB +Bezit aketus en ur lenn an aotre arverañ a-raok staliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, klikit war al log a-zindan. $_CLICK +# ^LicenseTextRB +Bezit aketus en ur lenn an aotre arverañ a-raok staliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, dizuzit an dibab kentañ a-zindan. $_CLICK +# ^UnLicenseText +Bezit aketus en ur lenn an aotre arverañ a-raok distaliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, klikit war « A-du emaon ». +# ^UnLicenseTextCB +Bezit aketus en ur lenn an aotre arverañ a-raok distaliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, klikit war al log a-zindan. $_CLICK +# ^UnLicenseTextRB +Bezit aketus en ur lenn an aotre arverañ a-raok distaliañ $(^NameDA) mar plij. Mar degemerit pep term eus an aotre, diuzit an dibab kentañ a-zindan. $_CLICK +# ^Custom +Diouzh ho kiz +# ^ComponentsText +Dibabit an elfennoù a fell deoc'h staliañ pe diziuzit an elfennoù a fell deoc'h leuskel a-gostez. $_CLICK +# ^ComponentsSubText1 +Dibabit pe seurt staliañ a vo : +# ^ComponentsSubText2_NoInstTypes +Dibabit an elfennoù da staliañ : +# ^ComponentsSubText2 +Pe dibabit an elfennoù diret a fell deoc'h staliañ : +# ^UnComponentsText +Dibabit an elfennoù a fell deoc'h distaliañ pe diziuzit an elfennoù a fell deoc'h mirout. $_CLICK +# ^UnComponentsSubText1 +Dibabit peseurt distaliañ a vo : +# ^UnComponentsSubText2_NoInstTypes +Dibabit an elfennoù da zistaliañ : +# ^UnComponentsSubText2 +Pe dibabit an elfennoù diret a fell deoc'h distaliañ : +# ^DirText +Staliet e vo $(^NameDA) gant ar goulev-mañ er c'havlec'h da-heul. Mar fell deoc'h dibab ur c'havlec'h all, klikit war « Furchal » ha dibabit ur c'havlec'h all. $_CLICK +# ^DirSubText +Kavlec'h bukenn +# ^DirBrowseText +Dibabit ar c'havlec'h e vo diazezet $(^NameDA) ennañ : +# ^UnDirText +Distaliet e vo $(^NameDA) gant ar goulev-mañ adalek ar c'havlec'h da heul. Ma fell deoc'h distaliañ adalek ur c'havlec'h all, klikit war « Furchal » ha diuzit ur c'havlec'h all. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Diuzit ar c'havlec'h evit distaliañ $(^NameDA) adalek : +# ^SpaceAvailable +"Egor kantenn vak : " +# ^SpaceRequired +"Egor kantenn rekis : " +# ^UninstallingText +Distaliet e vo $(^NameDA) adalek ar c'havelec'h da-heul. $_CLICK +# ^UninstallingSubText +Distaliañ adalek : +# ^FileError +Fazi en ur zigeriñ ur restr evit skrivañ : \r\n\r\n$0\r\n\r\nKlikit war « Paouez » evit paouez gant ar staliañ,\r\n« Adober » evit eseañ en-dro, pe\r\n« Tremen » evit leuskel a-gostez ar restr-mañ. +# ^FileError_NoIgnore +Fazi en ur zigeriñ ur restr a-benn skrivañ : \r\n\r\n$0\r\n\r\nKlikit war « Adober » evit esaeañ en-dro, pe\r\nwar « Nullañ » evit paouez gant ar staliañ. +# ^CantWrite +"N'haller ket skrivañ : " +# ^CopyFailed +Kopiañ faziet +# ^CopyTo +"Kopiañ da " +# ^Registering +"Oc'h enskrivañ : " +# ^Unregistering +"O tienskrivañ : " +# ^SymbolNotFound +"N'haller ket kavout ur simbolenn : " +# ^CouldNotLoad +"N'haller ket kargañ : " +# ^CreateFolder +"Krouiñ kavlec'h : " +# ^CreateShortcut +"Krouiñ berradenn : " +# ^CreatedUninstaller +"Skoazeller distaliañ krouet : " +# ^Delete +"Dilemel restr : " +# ^DeleteOnReboot +"Dilemel en ur adloc'hañ : " +# ^ErrorCreatingShortcut +"Fazi en ur grouiñ berradenn : " +# ^ErrorCreating +"Fazi en ur grouiñ : " +# ^ErrorDecompressing +Fazi en ur ziwaskañ stlenn ! Skoazeller staliañ gwastet ? +# ^ErrorRegistering +Fazi en ur enskrivañ an DLL +# ^ExecShell +"ExecShell : " +# ^Exec +"Lañsañ : " +# ^Extract +"Eztennañ : " +# ^ErrorWriting +"Eztennañ : fazi en ur skrivañ restr " +# ^InvalidOpcode +Skoazeller staliañ gwastet : opcode direizh +# ^NoOLE +"OLE ebet evit : " +# ^OutputFolder +"Kavlec'h ec'hank : " +# ^RemoveFolder +"Dilemel ar c'havlec'h : " +# ^RenameOnReboot +"Adenvel pa vez adloc'het : " +# ^Rename +"Adenvel : " +# ^Skipped +"Laosket a-gostez: " +# ^CopyDetails +Kopiañ ar munudoù er golver +# ^LogInstall +Tresañ an argerzh staliañ +# ^Byte +E +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Breton.nsh b/tools/Contrib/Language files/Breton.nsh new file mode 100644 index 0000000..a17d935 --- /dev/null +++ b/tools/Contrib/Language files/Breton.nsh @@ -0,0 +1,121 @@ +;Language: Breton (1150) +;By KAD-Korvigelloù An Drouizig + +!insertmacro LANGFILE "Breton" = "Brezhoneg" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Degemer mat e skoazeller staliañ $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Sturiet e viot gant ar skoazeller-mañ evit staliañ $(^NameDA).$\r$\n$\r$\nGwelloc'h eo serriñ pep arload oberiant er reizhiad a-raok mont pelloc'h gant ar skoazeller-mañ. Evel-se e c'heller nevesaat ar restroù reizhiad hep rankout adloc'hañ hoc'h urzhiataer.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Degemer mat er skoazeller distaliañ $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Sturiet e viot gant ar skoazeller-mañ a-benn distaliañ $(^NameDA).$\r$\n$\r$\nEn em asurit n'eo ket lañset $(^NameDA) a-raok mont pelloc'h gant an distaliañ.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lañvaz emglev" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Bezit aketus en ur lenn pep term eus al lañvaz a-raok staliañ $(^NameDA), mar plij." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Mar degemerit pep term eus al lañvaz, klikit war « War-lerc'h ». Ret eo deoc'h degemer al lañvaz evit staliañ $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Mar degemerit pep term eus al lañvaz, klikit war al log a-zindan. Ret eo deoc'h degemer al lañvaz a-benn staliañ $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Mar degemerit pep term eus al lañvaz, diuzit an dibab kentañ a-zindan. Ret eo deoc'h degemer al lañvaz a-benn staliañ $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lañvaz emglev" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Trugarez da lenn al lañvaz a-raok distaliañ $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Mar degemerit pep term eus al lañvaz, klikit war « A-du emaon » evit kenderc'hel. Ret eo deoc'h degemer al lañvaz evit distaliañ $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Mar degemerit pep term eus al lañvaz, klikit war al log a-zindan. Ret eo deoc'h degemer al lañvaz evit distaliañ $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Mar degemerit pep term eus al lañvaz, dizuit an dibab kentañ a-zindan. Ret eo deoc'h degemer al lañvaz evit distaliañ $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Pouezit war « Pajenn a-raok » evit lenn ar pajennoù eus al lañvaz da-heul." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Dibab elfennoù" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Dibabit pe elfenn(où) $(^NameDA) a fell deoc'h staliañ." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Dibabit elfennoù" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Dibabit pe elfenn(où) $(^NameDA) a fell deoc'h distaliañ." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Deskrivadenn" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Lakait ho logodenn a-zioc'h an elfenn evit gwelout he deskrivadenn." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Diuzuit an elfenn evit gwelout he deskrivadenn." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Dibabit al lec'hiadur staliañ" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Dibabit ar c'havlec'h ma vo lakaet $(^NameDA) ennañ." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Dibabit al lec'hiadur distaliañ" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Dibabit ar c'havlec'h e vo dilamet $(^NameDA) dioutañ." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "O staliañ" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Gortozit mar plij, emañ $(^NameDA) o vezañ staliet." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Echu eo gant ar staliañ" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Kaset eo bet da benn mat ar staliañ." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Staliañ paouezet" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "N'eo ket bet kaset da benn mat ar staliañ." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "O tistaliañ" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Gortozit mar plij, emañ $(^NameDA) o vezañ distaliet." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Echu eo gant an distaliañ" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Gant berzh eo bet kaset da benn an distaliañ." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Distaliañ paouezet" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "N'eo ket bet kaset da benn mat an distaliañ." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Oc'h echuiñ staliañ $(^NameDA) gant ar skoazeller" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Staliet eo bet $(^NameDA) war hoc'h urzhiataer.$\r$\n$\r$\nKlikit war « Echuiñ » evit serriñ ar skoazeller-mañ." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Ret eo hoc'h urzhiataer bezañ adloc'het evit ma vez kaset da benn staliañ $(^NameDA). Ha fellout a ra deoc'h adloc'hañ diouzhtu ?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Oc'h echuiñ distaliañ $(^NameDA) gant ar skoazeller" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Distaliet eo bet $(^NameDA) diouzh hoc'h urzhiataer.$\r$\n$\r$\nKlikit war « Echuiñ » evit serriñ ar skoazeller-mañ." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Ret eo hoc'h urzhiataer bezañ adloc'het evit ma vez kaset da benn distaliañ $(^NameDA). Ha fellout a ra deoc'h adloc'hañ diouzhtu ?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Adloc'hañ diouzhtu" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Fellout a ra din adloc'hañ diwezatoc'h dre zorn" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Lañsañ $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Diskouez ar restr Malennit" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Echuiñ" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Diskouez kavlec'h al Lañser loc'hañ" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Dibabit ur c'havlec'h Lañser loc'hañ evit berradennoù $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Diuzit ar c'havlec'h Lañser loc'hañ e vo savet ennañ berradennoù ar goulevioù. Gallout a rit ingal reiñ un anv evit sevel ur c'havlec'h nevez." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Chom hep sevel berradennoù" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Distaliañ $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Dilemel $(^NameDA) adalek hoc'h urzhiataer." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ha sur oc'h e fell deoc'h kuitaat staliañ $(^Name) ?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ha sur oc'h e fell deoc'h kuitaat distaliañ $(^Name) ?" +!endif diff --git a/tools/Contrib/Language files/Bulgarian.nlf b/tools/Contrib/Language files/Bulgarian.nlf new file mode 100644 index 0000000..7803a14 --- /dev/null +++ b/tools/Contrib/Language files/Bulgarian.nlf @@ -0,0 +1,194 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1026 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Asparouh Kalyandjiev +# Updated v2 to v6 by Plamen Penkov +# Updated by Кирил Кирилов (DumpeR) +# +# ^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\t"$0"\r\nНатиснете "Прекрати", за да прекратите инсталирането, "Повтори", за да опитате отново или "Игнорирай", за да пропуснете този файл +# ^FileError_NoIgnore +Грешка при отваряне на файла за запис: \r\n\t"$0"\r\nНатиснете "Повтори", за да опитате отново или "Прекрати", за да прекратите инсталирането. +# ^CantWrite +"Неуспешно записване на: " +#^CopyFailed +Копирането неуспешно +# ^CopyTo +"Копиране на " +# ^Registering +"Регистриране на: " +# ^Unregistering +"Дерегистриране на: " +#^SymbolNotFound +"Символът не е намерен: " +# ^CouldNotLoad +"Неуспешно зареждане на: " +# ^CreateFolder +"Създаване на папка: " +# ^CreateShortcut +"Създаване на пряк път: " +#^CreatedUninstaller +"Създаване на програма за изтриване: " +# ^Delete +"Изтриване на: " +#^DeleteOnReboot +"Изтриване след рестарт: " +#^ErrorCreatingShortcut +"Грешка при създаване на прекия път: " +#^ErrorCreating +"Грешка при създаване на: " +# ^ErrorDecompressing +Грешка при декомпресиране на данните! Вероятно инсталационния пакет е повреден. +# ^ErrorRegistering +Грешка при регистриране на DLL +#^ExecShell +"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/tools/Contrib/Language files/Bulgarian.nsh b/tools/Contrib/Language files/Bulgarian.nsh new file mode 100644 index 0000000..74c4c07 --- /dev/null +++ b/tools/Contrib/Language files/Bulgarian.nsh @@ -0,0 +1,124 @@ +;Language: Bulgarian (1026) +;Translated by Asparouh Kalyandjiev [acnapyx@sbline.net] +;Review and update from v1.63 to v1.68 by Plamen Penkov [plamen71@hotmail.com] +;Updated by Кирил Кирилов (DumpeR) [dumper@data.bg] +; + +!insertmacro LANGFILE "Bulgarian" = "Български" "Balgarski" + +!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 "Моля запознайте се Лицензионното споразумение преди да продължите." + ${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). $_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Натиснете бутона $\"Край$\", за да затворите Съветника." + ${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 "Покажи файла $\"ReadMe$\"" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Край" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Избор на папка в менюто $\"Старт$\"" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Изберете папка в менюто $\"Старт$\" за преки пътища към програмата." + ${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 "Сигурни ли сте, че искате да прекратите инсталирането на $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Сигурни ли сте, че искате да прекратите изтриването на $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Catalan.nlf b/tools/Contrib/Language files/Catalan.nlf new file mode 100644 index 0000000..8328c26 --- /dev/null +++ b/tools/Contrib/Language files/Catalan.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +1027 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by falanko +# Corrections by Toni Hermoso Pulido +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instal·lació de l'aplicació $(^Name) +# ^UninstallCaption +Desinstal·lació de l'aplicació $(^Name) +# ^LicenseSubCaption +: Acord de llicència +# ^ComponentsSubCaption +: Opcions d'instal·lació +# ^DirSubCaption +: Carpeta d'instal·lació +# ^InstallingSubCaption +: S'està instal·lant +# ^CompletedSubCaption +: S'ha acabat +# ^UnComponentsSubCaption +: Opcions de desinstal·lació +# ^UnDirSubCaption +: Carpeta de desinstal·lació +# ^ConfirmSubCaption +: Confirmació +# ^UninstallingSubCaption +: S'està desinstal·lant +# ^UnCompletedSubCaption +: No s'ha acabat +# ^BackBtn +< En&rere +# ^NextBtn +En&davant > +# ^AgreeBtn +Hi estic d'a&cord +# ^AcceptBtn +&Accepto els termes de l'acord de llicència +# ^DontAcceptBtn +&No accepto els termes de l'acord de llicència +# ^InstallBtn +&Instal·la +# ^UninstallBtn +&Desinstal·la +# ^CancelBtn +&Cancel·la +# ^CloseBtn +&Tanca +# ^BrowseBtn +&Navega... +# ^ShowDetailsBtn +&Mostra els detalls +# ^ClickNext +Feu clic a Endavant per a continuar. +# ^ClickInstall +Feu clic a Instal·la per a iniciar la instal·lació. +# ^ClickUninstall +Feu clic a Desinstal·la per a iniciar la desinstal·lació. +# ^Name +Nom +# ^Completed +S'ha acabat +# ^LicenseText +Reviseu l'acord de llicència abans d'instal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, feu clic a Hi estic d'acord. +# ^LicenseTextCB +Reviseu l'acord de llicència abans d'instal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, activeu la casella de sota. $_CLICK +# ^LicesnseTextRB +Reviseu l'acord de llicència abans d'instal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, seleccioneu la primera opció de sota. $_CLICK +# ^UnLicenseText +Reviseu l'acord de llicència abans de desinstal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, feu clic a Hi estic d'acord. +# ^UnLicenseTextCB +Reviseu l'acord de llicència abans de desinstal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, activeu la la casella de sota. $_CLICK +# ^UnLicesnseTextRB +Reviseu l'acord de llicència abans de desinstal·lar l'aplicació $(^NameDA). Si accepteu tots els termes de l'acord, seleccioneu la primera opció de sota. $_CLICK +# ^Custom +Personalitzada +# ^ComponentsText +Activeu els components que voleu instal·lar i desactiveu els que no. $_CLICK +# ^ComponentsSubText1 +Seleccioneu el tipus d'instal·lació: +# ^ComponentsSubText2_NoInstTypes +Seleccioneu els components per instal·lar: +# ^ComponentsSubText2 +O bé, seleccioneu els components opcionals que desitgéssiu instal·lar: +# ^UnComponentsText +Activeu els components que voleu desinstal·lar i desactiveu els que no. $_CLICK +# ^UnComponentsSubText1 +Seleccioneu el tipus de desinstal·lació: +# ^UnComponentsSubText2_NoInstTypes +Seleccioneu els components per desinstal·lar: +# ^UnComponentsSubText2 +O bé, seleccioneu els components opcionals per desinstal·lar: +# ^DirText +El programa d'instal·lació instal·larà l'aplicació $(^NameDA) en la següent carpeta. Per a instal·lar-lo en una carpeta diferent, feu clic a Navega i seleccioneu-ne una altra. $_CLICK +# ^DirSubText +Carpeta de destinació +# ^DirBrowseText +Seleccioneu la carpeta on s'instal·larà l'aplicació $(^NameDA): +# ^UnDirText +El programa d'instal·lació desinstal·larà l'aplicació $(^NameDA) de la següent carpeta. Per a desinstal·lar-lo d'una carpeta diferent, feu clic a Navega i seleccioneu-ne una altra. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Seleccioneu la carpeta des d'on es desinstal·larà l'aplicació $(^NameDA): +# ^SpaceAvailable +"Espai lliure: " +# ^SpaceRequired +"Espai necessari: " +# ^UninstallingText +Es desinstal·larà l'aplicació $(^NameDA) de la següent carpeta. $_CLICK +# ^UninstallingSubTex +S'està desinstal·lant de: +# ^FileError +S'ha produït un error en obrir el fitxer en mode d'escriptura: \r\n\t"$0"\r\nFeu clic a Abandona per a aturar la instal·lació,\r\nReintenta per a tornar-ho a provar, o\r\Ignora per a ometre aquest fitxer. +# ^FileError_NoIgnore +S'ha produït un error en obrir el fitxer en mode d'escriptura: \r\n\t"$0"\r\nFeu clic a Reintenta per a tornar-ho a provar, o\r\Cancel·la per a aturar la instal·lació. +# ^CantWrite +"No s'ha pogut escriure: " +# ^CopyFailed +Ha fallat la còpia +# ^CopyTo +"Copia a " +# ^Registering +"S'esta registrant:" +# ^Unregistering +"S'està suprimint el registre: " +# ^SymbolNotFound +"No s'ha trobat el símbol: " +# ^CouldNotLoad +"No s'ha pogut carregar: " +# ^CreateFolder +"Crea la carpeta: " +# ^CreateShortcut +"Crea la drecera: " +# ^CreatedUninstaller +"S'ha creat el desinstal·lador: " +# ^Delete +"S'ha suprimit el fitxer: " +# ^DeleteOnReboot +"Suprimeix en reiniciar: " +# ^ErrorCreatingShortcut +"S'ha produït un error en crear la drecera: " +# ^ErrorCreating +S'ha produït un error en crear: +# ^ErrorDecompressing +S'ha produït un error en descomprimir les dades! L'instal·lador està corrupte? +# ^ErrorRegistering +S'ha produït un error en registrar una DLL +# ^ExecShell +"Executa l'ordre: " +# ^Exec +"Executa:" +# ^Extract +"Extreu: " +# ^ErrorWriting +"Extreu: s'ha produït un error en escriure el fitxer " +# ^InvalidOpcode +L'instal·lador està corrupte: el codi d'operació no és vàlid +# ^NoOLE +"No hi ha OLE per a: " +# ^OutputFolder +"Carpeta de sortida: " +# ^RemoveFolder +"Suprimeix la carpeta: " +# ^RenameOnReboot +"Reanomena en reiniciar: " +# ^Rename +"Reanomena: " +# ^Skipped +"S'ha omès: " +# ^CopyDetails +Copia els detalls al porta-retalls +# ^LogInstall +Registra el procés d'instal·lació +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Catalan.nsh b/tools/Contrib/Language files/Catalan.nsh new file mode 100644 index 0000000..e085500 --- /dev/null +++ b/tools/Contrib/Language files/Catalan.nsh @@ -0,0 +1,121 @@ +;Language: Catalan (1027) +;By falanko, corrections by Toni Hermoso Pulido + +!insertmacro LANGFILE "Catalan" = "Català" "Catala" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Benvinguts a l'auxiliar d'instal·lació de l'aplicació $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Aquest auxiliar us guiarà durant el procés d'instal·lació de l'aplicació $(^NameDA).$\r$\n$\r$\nEs recomana tancar la resta d'aplicacions abans de començar la instal·lació. Això permetrà al programa d'instal·ació actualitzar fitxers del sistema rellevants sense haver de reiniciar l'ordinador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Benvinguts a l'auxiliar de desinstal·lació de l'aplicació $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Aquest auxiliar us guiarà a través de la desinstal·lació de l'aplicació $(^NameDA).$\r$\n\rAbans de començar la desinstal·lació, assegureu-vos que l'aplicació $(^NameDA) no s'està executant.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Acord de Llicència" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Reviseu els termes de la llicència abans d'instal·lar l'aplicació $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Si accepteu tots els termes de l'acord, premeu Hi estic d'acord per a continuar. Heu d'acceptar l'acord per a poder instal·lar l'aplicació $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si accepteu tots els termes de l'acord, activeu la casella de sota. Heu d'acceptar l'acord per poder instal·lar l'aplicació $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si accepteu tots els termes de l'acord, seleccioneu la primera opció de sota. Heu d'acceptar l'acord per a poder instal·lar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Acord de llicència" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Reviseu els termes de la llicència abans de desinstal·lar l'aplicació $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Si accepteu tots els termes de l'acord, premeu Hi estic d'Acord per a continuar. Heu d'acceptar l'acord per a poder desinstal·lar l'aplicació $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si accepteu tots els termes de l'acord, activeu la casella de sota. Heu d'acceptar l'acord per a poder desinstal·lar l'aplicació $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si accepteu tots els termes de l'acord, seleccioneu la primera opció de sota. Heu d'acceptar l'acord per a poder desinstal·lar l'aplicació $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Premeu AvPàg per a veure la resta de l'acord." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Selecció de components" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Seleccioneu quines característiques de l'aplicació $(^NameDA) desitgeu instal·lar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Selecció de components" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Seleccioneu quines característiques de l'aplicació $(^NameDA) desitgeu desinstal·lar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descripció" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Situeu el ratolí damunt d'un component per a veure'n la descripció." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Trieu una ubicació d'instal·lació" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Trieu la carpeta on instal·lar-hi l'aplicació $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Trieu la ubicació de desinstal·lació" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Trieu la carpeta d'on desinstal·lar l'aplicació $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "S'està instal·lant" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Si us plau, espereu mentre l'aplicació $(^NameDA) s'instal·la." + ${LangFileString} MUI_TEXT_FINISH_TITLE "S'ha acabat la instal·lació" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "La instal·lació ha acabat correctament." + ${LangFileString} MUI_TEXT_ABORT_TITLE "S'ha abandonat la instal·lació" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "La instal·lació no ha acabat correctament." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "S'està desinstal·lant" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Si us plau, espereu mentre l'aplicació $(^NameDA) es desinstal·la." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "S'ha acabat la desinstal·lació" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La desinstal·lació s'ha realitzat correctament." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "S'ha abandonat la desinstal·lació" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La desinstal·lació no ha acabat correctament." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "S'està acabant l'auxiliar d'instal·lació de l'aplicació $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "L'aplicació $(^NameDA) s'ha instal·lat a l'ordinador.$\r$\n$\r$\nFeu clic a Finalitza per a tancar aquest auxiliar." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Cal reiniciar l'ordinador perquè pugui acabar-se la instal·lació de l'aplicació $(^NameDA). Voleu reiniciar-lo ara?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "S'està acabant l'auxiliar de desinstal·lació de l'aplicació $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "L'aplicació $(^NameDA) s'ha desinstal·lat de l'ordinador.$\r$\n$\r$\nFeu clic a Finalitza per a tancar aquest auxiliar." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Cal reiniciar l'ordinador perquè pugui acabar-se la desinstal·lació de l'aplicació $(^NameDA). Voleu reiniciar-lo ara?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reinicia ara" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Reinicia més tard manualment" + ${LangFileString} MUI_TEXT_FINISH_RUN "Executa l'aplicació $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Mostra el Llegeix-me" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Finalitza" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Tria la carpeta del menú Inicia" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Tria una carpeta del menú Inicia per a les dreceres de l'aplicació $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleccioneu la carpeta del Menú Inicia en la que hi vulgueu crear les dreceres del programa. Podeu introduir-hi un altre nom si voleu crear una carpeta nova." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "No creïs les dreceres" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstal·la l'aplicació $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Suprimeix l'aplicació $(^NameDA) de l'ordinador." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Esteu segur que voleu sortir del programa d'instal·lació de l'aplicació $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Esteu segur que voleu sortir del programa de desinstal·lació de l'aplicació $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Corsican.nlf b/tools/Contrib/Language files/Corsican.nlf new file mode 100644 index 0000000..6a590c5 --- /dev/null +++ b/tools/Contrib/Language files/Corsican.nlf @@ -0,0 +1,193 @@ +# Header, don't edit +NLF v6 +# Language ID +1155 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything other than RTL means LTR +- +# Translation by Patriccollu di Santa Maria è Sichè - +# Updated on August 9th, 2020 for version 3.06.1 +# Created on April 24th, 2016 for version 3.0rc1 +# Traduzzione corsa creata è mantinuta da Patriccollu di Santa Maria è Sichè +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Assistente d’installazione di $(^Name) +# ^UninstallCaption +Disinstallazione di $(^Name) +# ^LicenseSubCaption +: Cuntrattu di licenza +# ^ComponentsSubCaption +: Ozzioni d’installazione +# ^DirSubCaption +: Cartulare d’installazione +# ^InstallingSubCaption +: Installazione in corsu +# ^CompletedSubCaption +: Installazione compia +# ^UnComponentsSubCaption +: Ozzioni di disinstallazione +# ^UnDirSubCaption +: Cartulare di disinstallazione +# ^ConfirmSubCaption +: Cunfirmazione +# ^UninstallingSubCaption +: Disinstallazione in corsu +# ^UnCompletedSubCaption +: Disinstallazione compia +# ^BackBtn +< &Precedente +# ^NextBtn +&Seguente > +# ^AgreeBtn +&Accunsentu +# ^AcceptBtn +Sò d’&accunsentu cù i termini di u cuntrattu di licenza +# ^DontAcceptBtn +Ùn sò &micca d’accunsentu cù i termini di u cuntrattu di licenza +# ^InstallBtn +&Installà +# ^UninstallBtn +&Disinstallà +# ^CancelBtn +Abbandunà +# ^CloseBtn +&Chjode +# ^BrowseBtn +&Sfuglià... +# ^ShowDetailsBtn +Affissà i &ditaglii +# ^ClickNext +Sciglite Seguente per cuntinuà. +# ^ClickInstall +Sciglite Installà per principià l’installazione. +# ^ClickUninstall +Sciglite Disinstallà per principià a disinstallazione. +# ^Name +Nome +# ^Completed +Compiu +# ^LicenseText +Ci vole à leghje u cuntrattu di licenza nanzu d’installà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite Accunsentu. +# ^LicenseTextCB +Ci vole à leghje u cuntrattu di licenza nanzu d’installà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite a casella inghjò. $_CLICK +# ^LicenseTextRB +Ci vole à leghje u cuntrattu di licenza nanzu d’installà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite a prima ozzione inghjò. $_CLICK +# ^UnLicenseText +Ci vole à leghje u cuntrattu di licenza nanzu di disinstallà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite Accunsentu. +# ^UnLicenseTextCB +Ci vole à leghje u cuntrattu di licenza nanzu di disinstallà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite a casella inghjò. $_CLICK +# ^UnLicenseTextRB +Ci vole à leghje u cuntrattu di licenza nanzu di disinstallà $(^NameDA). S’è voi site d’accunsentu cù tutti i termini di u cuntrattu, sciglite a prima ozzione inghjò. $_CLICK +# ^Custom +Persunalizata +# ^ComponentsText +Selezziunà i cumpunenti chì voi vulete installà è viutà a casella di quelli ch’ellu ùn ci vole micca à installà. $_CLICK +# ^ComponentsSubText1 +Selezziunà u tipu d’installazione : +# ^ComponentsSubText2_NoInstTypes +Selezziunà i cumpunenti à installà : +# ^ComponentsSubText2 +Osinnò, selezziunà i cumpunenti addizziunali chì voi vulete installà : +# ^UnComponentsText +Selezziunà i cumpunenti chì voi vulete disinstallà è viutà a casella di quelli ch’ellu ùn ci vole à disinstallà. $_CLICK +# ^UnComponentsSubText1 +Selezziunà u tipu di disinstallazione : +# ^UnComponentsSubText2_NoInstTypes +Selezziunà i cumpunenti à disinstallà : +# ^UnComponentsSubText2 +Osinnò, selezziunà i cumpunenti addizziunali chì voi vulete disinstallà : +# ^DirText +L’assistente hà da installà $(^NameDA) in quessu cartulare. Per installà in un altru cartulare, sciglite Sfuglià è selezziunà un altru cartulare. $_CLICK +# ^DirSubText +Cartulare di destinazione +# ^DirBrowseText +Selezziunà u cartulare d’installazione di $(^NameDA) : +# ^UnDirText +L’assistente hà da disinstallà $(^NameDA) da quessu cartulare. Per disinstallà da un altru cartulare, sciglite Sfuglià è selezziunà un altru cartulare. $_CLICK +# ^UnDirSubText +Cartulare d’installazione +# ^UnDirBrowseText +Selezziunà u cartulare di disinstallazione di $(^NameDA) : +# ^SpaceAvailable +Spaziu dispunibule : +# ^SpaceRequired +Spaziu richiestu : +# ^UninstallingText +$(^NameDA) serà disinstallatu da quessu cartulare. $_CLICK +# ^UninstallingSubText +Disinstallazione da : +# ^FileError +Sbagliu durante l’accessu in scrittura di u schedariu : \r\n\r\n$0\r\n\r\nSciglite Interrompe per piantà l’installazione,\r\nTorna per pruvà torna, o\r\nIgnurà per ignurà stu schedariu. +# ^FileError_NoIgnore +Sbagliu durante l’accessu in scrittura di u schedariu : \r\n\r\n$0\r\n\r\nSciglite Torna per pruvà torna, o\r\nAbbandunà per piantà l’installazione. +# ^CantWrite +Ùn pò micca scrive : +# ^CopyFailed +Fiascu di a copia +# ^CopyTo +Cupià ver di +# ^Registering +Arregistramentu : +# ^Unregistering +Disarregistramentu : +# ^SymbolNotFound +Impussibule di truvà un simbolu : +# ^CouldNotLoad +Impussibule di caricà : +# ^CreateFolder +Creazione di u cartulare : +# ^CreateShortcut +Creazione di l’accurtatoghju : +# ^CreatedUninstaller +Creazione di l’assistente di disinstallazione : +# ^Delete +Squassatura di schedariu : +# ^DeleteOnReboot +Squassatura à l’avviu di l’urdinatore : +# ^ErrorCreatingShortcut +Sbagliu durante a creazione di l’accurtatoghju : +# ^ErrorCreating +Sbagliu durante a creazione di : +# ^ErrorDecompressing +Sbagliu durante a scumprezzione di i dati ! Stalladore alteratu ? +# ^ErrorRegistering +Sbagliu durante l’arregistramentu di DLL +# ^ExecShell +ExecShell : +# ^Exec +Eseguisce : +# ^Extract +Estrazzione : +# ^ErrorWriting +Estrazzione : sbagliu di scrittura ver di u schedariu +# ^InvalidOpcode +Stalladore alteratu : opcode micca accettevule +# ^NoOLE +Alcunu OLE per : +# ^OutputFolder +Cartulare di destinazione : +# ^RemoveFolder +Cacciatura di u cartulare : +# ^RenameOnReboot +Rinumà à l’avviu di l’urdinatore : +# ^Rename +Rinumà : +# ^Skipped +Tralasciatu : +# ^CopyDetails +Cupià i detaglii ver di u preme’papei +# ^LogInstall +Arregistrà u ghjurnale d’installazione +# ^Byte +o +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Corsican.nsh b/tools/Contrib/Language files/Corsican.nsh new file mode 100644 index 0000000..5e58b1e --- /dev/null +++ b/tools/Contrib/Language files/Corsican.nsh @@ -0,0 +1,133 @@ +/* +** Language: Corsican (1155) +** Traduzzione corsa da Patriccollu di Santa Maria è Sichè - +** ISO 639-1: co +** ISO 639-2: cos +*/ + +!insertmacro LANGFILE "Corsican" "Corsican" "Corsu" "Corsu" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Benvenuta in l’assistente d’installazione di $(^NameDA)m" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "L’assistente d’installazione hà da aiutavvi à installà $(^NameDA).$\r$\n$\r$\nHè ricumandatu di chjode tutte l’altre appiecazioni nanzu di avvià st’assistente. Quessu permetterà di mudificà i schedarii di u sistema senza riavvià l’urdinatore.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Benvenuta in l’assistente di disinstallazione di $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "L’assistente hà da aiutavvi à disinstallà $(^NameDA).$\r$\n$\r$\nNanzu di principià a disinstallazione, ci vole à assicurassi chì $(^NameDA) ùn sia micca in funzione.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Cuntrattu di licenza" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Ci vole à leghje i termini di a licenza nanzu d’installà $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite Accunsentu per cuntinuà. Ci vole à accettà u cuntrattu per installà $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite a casella inghjò. Ci vole à accettà u cuntrattu per installà $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite a prima ozzione inghjò. Ci vole à accettà u cuntrattu per installà $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Cuntrattu di licenza" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Ci vole à leghje i termini di a licenza nanzu di disinstallà $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite Accunsentu per cuntinuà. Ci vole à accettà u cuntrattu per disinstallà $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite a casella inghjò. Ci vole à accettà u cuntrattu per disinstallà $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "S’è voi site d’accunsentu cù i termini di u cuntrattu, sciglite a prima ozzione inghjò. Ci vole à accettà u cuntrattu per disinstallà $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Sciglite Pagina Seguente per fighjà a seguita di u ducumentu." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Sciglite i cumpunenti" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Sciglite e funzioni di $(^NameDA) chì voi vulete installà." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Sciglite i cumpunenti" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Sciglite e funzioni di $(^NameDA) chì voi vulete disinstallà." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Discrizzione" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Piazzà u topu nant’à un cumpunentu per fighjà a so discrizzione." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Selezziunà un cumpunentu per fighjà a so discrizzione." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Sciglite u cartulare d’installazione" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Sciglite u cartulare induve installà $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Sciglite u cartulare di disinstallazione" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Sciglite u cartulare di disinstallazione di $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installazione in corsu" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Aspettate per piacè chì $(^NameDA) sia installatu." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installazione compia" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "L’installazione hè compia bè." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installazione interrotta" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "L’installazione ùn hè micca compia bè." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Disinstallazione in corsu" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Aspettate per piacè chì $(^NameDA) sia disinstallatu." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Disinstallazione compia" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "A disinstallazione hè compia bè." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Disinstallazione interrotta" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "A disinstallazione ùn hè micca compia bè." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Fine d’installazione di $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) hè statu installatu nant’à l’urdinatore.$\r$\n$\r$\nSciglite Piantà per chjode l’assistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "L’urdinatore deve esse piantatu è rilanciatu per compie l’installazione di $(^NameDA). Vulete piantalu è rilancialu avà ?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Fine di disinstallazione di $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) hè statu disinstallatu da l’urdinatore.$\r$\n$\r$\nSciglite Piantà per chjode l’assistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "L’urdinatore deve esse piantatu è rilanciatu per compie a disinstallazione di $(^NameDA). Vulete piantalu è rilancialu avà ?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Rilancià subitu" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Vogliu fallu dopu dapermè" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Eseguisce $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Affissà u schedariu LisezMoi/Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Piantà" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Sciglite un cartulare in u listinu « Démarrer »" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Sciglite un cartulare in u listinu « Démarrer » per l’accurtatoghjii di $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Sciglite un cartulare in u listinu « Démarrer » induve l’accurtatoghjii di u prugramma seranu creati. Pudete dinù scrive un nome per creà un novu cartulare." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ùn creà micca d’accurtatoghji" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Disinstallà $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Caccià $(^NameDA) da l’urdinatore." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Site sicuru di vulè chità l’assistente d’installazione di $(^Name) ?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Site sicuru di vulè chità l’assistente di disinstallazione di $(^Name) ?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Scelta di l’utilizatori" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Sciglite l’utilizatori chì puderanu impiegà $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Selezziunà s’èllu ci vole à installà $(^NameDA) solu per voi o per tutti l’utilizatori di l’urdinatore. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installà per tutti l’utilizatori di l’urdinatore" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installà solu per mè" +!endif diff --git a/tools/Contrib/Language files/Croatian.nlf b/tools/Contrib/Language files/Croatian.nlf new file mode 100644 index 0000000..c26571a --- /dev/null +++ b/tools/Contrib/Language files/Croatian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1050 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Igor Ostriz +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalacija programa $(^Name) +# ^UninstallCaption +Uklanjanje programa $(^Name) +# ^LicenseSubCaption +: Uvjeti Ugovora o licenci +# ^ComponentsSubCaption +: Instalacijske opcije +# ^DirSubCaption +: Instalacijska mapa +# ^InstallingSubCaption +: Instaliranje +# ^CompletedSubCaption +: Završeno +# ^UnComponentsSubCaption +: Opcije uklanjanja +# ^UnDirSubCaption +: Mapa uklanjanja +# ^ConfirmSubCaption +: Potvrda +# ^UninstallingSubCaption +: Uklanjanje +# ^UnCompletedSubCaption +: Završeno +# ^BackBtn +< &Natrag +# ^NextBtn +&Dalje > +# ^AgreeBtn +&Prihvaćam +# ^AcceptBtn +&Prihvaćam uvjete Ugovora o licenci +# ^DontAcceptBtn +&Ne prihvaćam uvjete Ugovora o licenci +# ^InstallBtn +&Instaliraj +# ^UninstallBtn +&Ukloni +# ^CancelBtn +Odustani +# ^CloseBtn +&Zatvori +# ^BrowseBtn +&Pregledaj... +# ^ShowDetailsBtn +Prikaži &detalje +# ^ClickNext +Za nastavak odaberite 'Dalje'. +# ^ClickInstall +Za početak instalacije odaberite 'Instaliraj'. +# ^ClickUninstall +Za početak uklanjanja odaberite 'Ukloni'. +# ^Name +Ime +# ^Completed +Završeno +# ^LicenseText +Pročitajte licencu prije instalacije programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, odaberite 'Prihvaćam'. +# ^LicenseTextCB +Pročitajte licencu prije instalacije programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, označite donji kvadratić. $_CLICK +# ^LicenseTextRB +Pročitajte licencu prije instalacije programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, odaberite prvu donju opciju. $_CLICK +# ^UnLicenseText +Pročitajte licencu prije uklanjanja programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, odaberite 'Prihvaćam'. +# ^UnLicenseTextCB +Pročitajte licencu prije uklanjanja programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, označite donji kvadratić. $_CLICK +# ^UnLicenseTextRB +Pročitajte licencu prije uklanjanja programa $(^NameDA). Ukoliko prihvaćate sve uvjete ugovora, odaberite prvu donju opciju. $_CLICK +# ^Custom +Posebna +# ^ComponentsText +Označite komponente koje želite instalirati i uklonite oznaku s onih koje ne želite instalirati. $_CLICK +# ^ComponentsSubText1 +Izaberite tip instalacije: +# ^ComponentsSubText2_NoInstTypes +Odaberite komponente za instalaciju: +# ^ComponentsSubText2 +Ili po izboru označite komponente koje želite instalirati: +# ^UnComponentsText +Označite komponente koje želite ukloniti i uklonite oznaku s onih koje ne želite ukloniti. $_CLICK +# ^UnComponentsSubText1 +Izaberite tip uklanjanja: +# ^UnComponentsSubText2_NoInstTypes +Odaberite komponente za uklanjanje: +# ^UnComponentsSubText2 +Ili po izboru označite komponente koje želite ukloniti: +# ^DirText +Program $(^NameDA) bit će instaliran u sljedeću mapu. Ako želite promijeniti odredište, pritisnite dugme za traženje mape i označite drugu mapu. $_CLICK +# ^DirSubText +Odredišna mapa +# ^DirBrowseText +Odaberite mapu u koju želite instalirati program $(^NameDA): +# ^UnDirText +Program $(^NameDA) bit će uklonjen iz sljedeće mape. Za uklanjanje s drugog mjesta odaberite 'Pregledaj' i označite drugu mapu. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Mapa iz koje će program $(^NameDA) biti uklonjen: +# ^SpaceAvailable +"Slobodno prostora na disku: " +# ^SpaceRequired +"Potrebno prostora na disku: " +# ^UninstallingText +Program $(^NameDA) bit će uklonjen iz sljedeće mape. $_CLICK +# ^UninstallingSubText +Uklanjam iz: +# ^FileError +Greška prilikom otvaranja datoteke za zapisivanje: \r\n\r\n$0\r\n\r\nPritisnite "Abort" ako želite prekinuti instalaciju,\r\n"Retry" ako želite pokušati ponovno, ili\r\n"Ignore" ako želite zanemariti tu datoteku +# ^FileError_NoIgnore +Greška prilikom otvaranja datoteke za zapisivanje: \r\n\r\n$0\r\n\r\nPritisnite "Retry" za ponovni pokušaj zapisivanja, ili\r\n"Cancel" za prekid instalacije +# ^CantWrite +"Ne mogu zapisati: " +# ^CopyFailed +Greška prilikom kopiranja +# ^CopyTo +"Kopiraj u " +# ^Registering +"Prijava: " +# ^Unregistering +"Odjava: " +# ^SymbolNotFound +"Ne mogu naći simbol: " +# ^CouldNotLoad +"Ne mogu učitati: " +# ^CreateFolder +"Stvori mapu: " +# ^CreateShortcut +"Stvori prečac: " +# ^CreatedUninstaller +"Program za uklanjanje: " +# ^Delete +"Izbriši datoteku: " +# ^DeleteOnReboot +"Izbriši prilikom ponovnog pokretanja: " +# ^ErrorCreatingShortcut +"Greška prilikom stvaranja prečaca: " +# ^ErrorCreating +"Greška prilikom stvaranja: " +# ^ErrorDecompressing +Greška dekompresije podataka! Oštećena instalacijska datoteka? +# ^ErrorRegistering +Greška prilikom prijavljivanja DLL-a +# ^ExecShell +"ExecShell: " +# ^Exec +"Izvrši: " +# ^Extract +"Otpakiraj: " +# ^ErrorWriting +"Otpakiranje: greška zapisivanja u datoteku " +# ^InvalidOpcode +Oštećena instalacijska datoteka: neispravan opkod +# ^NoOLE +"Nema OLE za: " +# ^OutputFolder +"Izlazna mapa: " +# ^RemoveFolder +"Izbriši mapu: " +# ^RenameOnReboot +"Preimenuj prilikom ponovnog pokretanja: " +# ^Rename +"Preimenuj: " +# ^Skipped +"Preskočeno: " +# ^CopyDetails +Kopiraj detalje u međuspremnik +# ^LogInstall +Logiraj instalacijski proces +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Croatian.nsh b/tools/Contrib/Language files/Croatian.nsh new file mode 100644 index 0000000..9fd7677 --- /dev/null +++ b/tools/Contrib/Language files/Croatian.nsh @@ -0,0 +1,121 @@ +;Language: Croatian (1050) +;By Igor Ostriz + +!insertmacro LANGFILE "Croatian" = "Hrvatski" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Dobrodošli u instalaciju programa $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Instalacija programa $(^NameDA) na Vaše računalo sastoji se od nekoliko jednostavnih koraka kroz koje će Vas provesti ovaj čarobnjak.$\r$\n$\r$\nPreporučamo zatvaranje svih ostalih aplikacija prije samog početka instalacije. To će omogućiti nadogradnju nekih sistemskih datoteka bez potrebe za ponovnim pokretanjem Vašeg računala. U svakom trenutku instalaciju možete prekinuti pritiskom na 'Odustani'.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Dobrodošli u postupak uklanjanja programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ovaj će Vas čarobnjak provesti kroz postupak uklanjanja programa $(^NameDA).$\r$\n$\r$\nPrije samog početka, molim zatvorite program $(^NameDA) ukoliko je slučajno otvoren.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Ugovor o licenci" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Pročitajte licencu prije instalacije programa $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ako prihvaćate uvjete licence, pritisnite 'Prihvaćam' za nastavak. Da biste instalirali program $(^NameDA), morate prihvatiti licencu." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ukoliko prihvaćate uvjete licence, označite donji kvadratić. Morate prihvatiti licencu za instalaciju programa $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ukoliko prihvaćate uvjete licence, odaberite prvu donju opciju. Morate prihvatiti licencu za instalaciju programa $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Ugovor o licenci" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Pročitajte licencu prije uklanjanja programa $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ako prihvaćate uvjete licence, pritisnite 'Prihvaćam' za nastavak. Da biste instalirali program $(^NameDA), morate prihvatiti licencu." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ukoliko prihvaćate uvjete licence, označite donji kvadratić. Morate prihvatiti licencu za uklanjanje programa $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ukoliko prihvaćate uvjete licence, odaberite prvu donju opciju. Morate prihvatiti licencu za uklanjanje programa $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Služite se tipkom 'Page Down' da biste vidjeli ostatak licence." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Izbor komponenti" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Odaberite komponente programa $(^NameDA) koje želite instalirati." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Izbor komponenti" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Odaberite koje komponente programa $(^NameDA) želite ukloniti." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Opis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Postavite pokazivač iznad komponente za njezin opis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Označite komponentu za njezin opis." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Odaberite odredište za instalaciju" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Odaberite mapu u koju želite instalirati program $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Odaberite polazište za uklanjanje" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Odaberite mapu iz koje želite ukloniti program $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalacija u tijeku..." + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Pričekajte završetak instalacije programa $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Kraj instalacije" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalacija je u potpunosti završila uspješno." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalacija je prekinuta" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalacija nije završila uspješno." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Uklanjanje u tijeku..." + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Pričekajte završetak uklanjanja programa $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Uklanjanje završeno" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Uklanjanje je u potpunosti završilo uspješno." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Uklanjanje je prekinuto" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Uklanjanje nije završilo uspješno." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Dovršetak instalacije programa $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) upravo je instaliran.$\r$\n$\r$\nOdaberite 'Kraj' za završetak." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Da bi se dovršila instalacija programa $(^NameDA), trebate ponovno pokrenuti računalo. Želite li to učiniti sada?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Završetak uklanjanja programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) uklonjen je s Vašeg računala.$\r$\n$\r$\nOdaberite 'Kraj' za zatvaranje ovog čarobnjaka." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Da bi se dovršio postupka uklanjanja programa $(^NameDA), trebate ponovno pokrenuti računalo. Želite li to učiniti sada?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ponovno pokreni računalo sada" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ponovno ću pokrenuti računalo kasnije" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Pokreni program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Otvori datoteku '&Readme'" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Kraj" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Izbor mape u izborniku 'Start'" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Odaberite ime za programsku mapu unutar izbornika 'Start'." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Program će pripadati odabranoj programskoj mapi u izborniku 'Start'. Možete odrediti novo ime za mapu ili odabrati već postojeću." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nemoj napraviti prečace" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Uklanjanje programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Program $(^NameDA) bit će uklonjen s Vašeg računala." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Jeste li sigurni da želite prekinuti instalaciju programa $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Jeste li sigurni da želite prekinuti uklanjanje programa $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Czech.nlf b/tools/Contrib/Language files/Czech.nlf new file mode 100644 index 0000000..d524925 --- /dev/null +++ b/tools/Contrib/Language files/Czech.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1029 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Václav Pavlíček (v.pavlicek@centrum.cz), dříve SELiCE +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalace $(^Name) +# ^UninstallCaption +Odinstalace $(^Name) +# ^LicenseSubCaption +: Licenční smlouva +# ^ComponentsSubCaption +: Možnosti instalace +# ^DirSubCaption +: Instalační složka +# ^InstallingSubCaption +: Instalace +# ^CompletedSubCaption +: Dokončeno +# ^UnComponentsSubCaption +: Možnosti odinstalace +# ^UnDirSubCaption +: Odinstalační složka +# ^ConfirmSubCaption +: Potvrzení +# ^UninstallingSubCaption +: Odinstalace +# ^UnCompletedSubCaption +: Dokončeno +# ^BackBtn +< &Zpět +# ^NextBtn +&Další > +# ^AgreeBtn +Souhl&asím +# ^AcceptBtn +Souhl&asím s podmínkami licenční smlouvy +# ^DontAcceptBtn +&Nesouhlasím s podmínkami licenční smlouvy +# ^InstallBtn +&Instalovat +# ^UninstallBtn +&Odinstalovat +# ^CancelBtn +Storno +# ^CloseBtn +&Zavřít +# ^BrowseBtn +P&rocházet... +# ^ShowDetailsBtn +&Podrobnosti +# ^ClickNext +Pokračujte kliknutím na tlačítko Další. +# ^ClickInstall +Instalaci spustíte kliknutím na tlačítko Instalovat. +# ^ClickUninstall +Odinstalaci spustíte kliknutím na tlačítko Odinstalovat. +# ^Name +Název +# ^Completed +Dokončeno +# ^LicenseText +Před instalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, klikněte na tlačítko Souhlasím. +# ^LicenseTextCB +Před instalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, zaškrtněte políčko níže. $_CLICK +# ^LicenseTextRB +Před instalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, vyberte níže první možnost. $_CLICK +# ^UnLicenseText +Před odinstalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, klikněte na tlačítko Souhlasím. +# ^UnLicenseTextCB +Před odinstalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, zaškrtněte políčko níže. $_CLICK +# ^UnLicenseTextRB +Před odinstalací programu $(^NameDA) si prosím přečtěte licenční smlouvu. Jestliže souhlasíte s podmínkami této smlouvy, vyberte níže první možnost. $_CLICK +# ^Custom +Vlastní +# ^ComponentsText +Zaškrtněte součásti, které chcete nainstalovat a zrušte zaškrtnutí součástí, které nechcete nainstalovat. $_CLICK +# ^ComponentsSubText1 +Zvolte způsob instalace: +# ^ComponentsSubText2_NoInstTypes +Vyberte součásti, které chcete nainstalovat. +# ^ComponentsSubText2 +Nebo vyberte volitelné součásti, které chcete nainstalovat. +# ^UnComponentsText +Zaškrtněte součásti, které chcete odinstalovat a zrušte zaškrtnutí součástí, které nechcete odinstalovat. $_CLICK +# ^UnComponentsSubText1 +Zvolte způsob odinstalace: +# ^UnComponentsSubText2_NoInstTypes +Vyberte součásti, které chcete odinstalovat. +# ^UnComponentsSubText2 +Nebo vyberte volitelné součásti, které chcete odinstalovat. +# ^DirText +Instalační program nainstaluje program $(^NameDA) do následující složky. Chcete-li instalovat do jiné složky, klikněte na tlačítko Procházet a vyberte jinou složku. $_CLICK +# ^DirSubText +Cílová složka +# ^DirBrowseText +Výběr instalační složky programu $(^NameDA). +# ^UnDirText +Odinstalační program odinstaluje program $(^NameDA) z následující složky. Chcete-li odinstalovat z jiné složky, klikněte na tlačítko Procházet a vyberte jinou složku. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Vyberte odinstalační složku programu $(^NameDA): +# ^SpaceAvailable +"Volné místo: " +# ^SpaceRequired +"Požadované místo: " +# ^UninstallingText +Program $(^NameDA) bude odinstalován z následující složky. $_CLICK +# ^UninstallingSubText +Odinstalovat z: +# ^FileError +Soubor nelze otevřít pro zápis: \r\n\t"$0"\r\nKlikněte na tlačítko Přerušit k ukončení instalace,\r\nnebo na tlačítko Opakovat k zopakování akce, nebo\r\n na tlačítko Ignorovat k přeskočení souboru. +# ^FileError_NoIgnore +Soubor nelze otevřít pro zápis: \r\n\t"$0"\r\nKlikněte na tlačítko Opakovat k zopakování akce, nebo\r\n na tlačítko Storno k ukončení instalace. +# ^CantWrite +"Nelze zapsat: " +# ^CopyFailed +Kopírování se nezdařilo. +# ^CopyTo +"Kopírování do " +# ^Registering +"Registrace: " +# ^Unregistering +"Rušení registrace: " +# ^SymbolNotFound +"Nelze najít symbol: " +# ^CouldNotLoad +"Nelze načíst: " +# ^CreateFolder +"Vytváření složky: " +# ^CreateShortcut +"Vytváření zástupce: " +# ^CreatedUninstaller +"Vytváření odinstalačního programu: " +# ^Delete +"Odstraňování souboru: " +# ^DeleteOnReboot +"Odstranit při restartování: " +# ^ErrorCreatingShortcut +"Při vytváření zástupce došlo k chybě: " +# ^ErrorCreating +"Při vytváření došlo k chybě: " +# ^ErrorDecompressing +Při dekompresi dat došlo k chybě. Byl poškozen instalační program? +# ^ErrorRegistering +Při registraci souborů DLL došlo k chybě. +# ^ExecShell +"Spouštění prostředí: " +# ^Exec +"Spouštění: " +# ^Extract +"Extrahování: " +# ^ErrorWriting +"Extrakce: Při zápisu souboru došlo k chybě " +# ^InvalidOpcode +Instalační program byl poškozen: neplatný operační kód. +# ^NoOLE +"Nedostupné OLE pro: " +# ^OutputFolder +"Výstupní složka: " +# ^RemoveFolder +"Odstraňování složky: " +# ^RenameOnReboot +"Přejmenovat při restartování: " +# ^Rename +"Přejmenováno: " +# ^Skipped +"Přeskočeno: " +# ^CopyDetails +Zkopírovat podrobnosti do schránky +# ^LogInstall +Protokolovat proces instalace +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Czech.nsh b/tools/Contrib/Language files/Czech.nsh new file mode 100644 index 0000000..51c0fa4 --- /dev/null +++ b/tools/Contrib/Language files/Czech.nsh @@ -0,0 +1,129 @@ +;Language: Czech (1029) +;By Václav Pavlíček (v.pavlicek@centrum.cz), dříve SELiCE + +!insertmacro LANGFILE "Czech" = "Čeština" "Cestina" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Vítejte v průvodci instalace programu $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Tento průvodce vás provede instalací programu $(^NameDA).$\r$\n$\r$\nPřed spuštěním instalačního programu je doporučeno ukončit všechny ostatní aplikace. Umožní to aktualizovat související systémové soubory bez restartování počítače.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Vítejte v průvodci odinstalace programu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Tento průvodce vás provede odinstalací programu $(^NameDA).$\r$\n$\r$\nPřed spuštěním odinstalace se přesvědčte, zda program $(^NameDA) není spuštěn.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licenční smlouva" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Před instalací programu $(^NameDA) si prosím projděte licenční podmínky." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jestliže souhlasíte s podmínkami smlouvy, klikněte na tlačítko Souhlasím. Chcete-li nainstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jestliže souhlasíte s podmínkami smlouvy, zaškrtněte políčko níže. Chcete-li nainstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jestliže souhlasíte s podmínkami smlouvy, vyberte níže první možnost. Chcete-li nainstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licenční smlouva" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Před odinstalací programu $(^NameDA) si prosím projděte licenční podmínky." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jestliže souhlasíte s podmínkami smlouvy, klikněte na tlačítko Souhlasím. Chcete-li odinstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jestliže souhlasíte s podmínkami smlouvy, zaškrtněte políčko níže. Chcete-li odinstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jestliže souhlasíte s podmínkami smlouvy, vyberte níže první možnost. Chcete-li odinstalovat program $(^NameDA), je nutné s touto smlouvou souhlasit. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Zbytek textu zobrazíte stisknutím klávesy Page Down." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Volba součástí" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Výběr součástí programu $(^NameDA) pro instalaci." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Volba součástí" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Výběr součástí programu $(^NameDA) pro odinstalaci." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Popis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Chcete-li zobrazit popis součásti, umístěte na ní ukazatel myši." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Chcete-li zobrazit popis součásti, vyberte ji." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Volba umístění instalace" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Výběr instalační složky programu $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Volba umístění odinstalace" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Výběr odinstalační složky programu $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalace" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Počkejte prosím na dokončení instalace programu $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalace dokončena" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalace byla úspěšně dokončena." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalace přerušena" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalace nebyla úspěšně dokončena." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Odinstalace" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Počkejte prosím na dokončení odinstalace programu $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Odinstalace dokončena" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Odinstalace byla úspěšně dokončena." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Odinstalace přerušena" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Odinstalace nebyla úspěšně dokončena." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Dokončení instalace programu $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) byl nainstalován do počítače.$\r$\n$\r$\nKliknutím na tlačítko Dokončit ukončíte tohoto průvodce." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "K dokončení instalace programu $(^NameDA) je nutné restartovat počítač. Chcete jej restartovat nyní?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Dokončení odinstalace programu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) byl odinstalován z počítače.$\r$\n$\r$\nKliknutím na tlačítko Dokončit ukončíte tohoto průvodce." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "K dokončení odinstalace $(^NameDA) je nutné restartovat počítač. Chcete jej restartovat nyní?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Restartovat nyní" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Restartovat později ručně" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Spustit program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Zobrazit soubor Readme (Čti mě)" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Dokončit" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Volba složky v Nabídce Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Výběr složky v Nabídce Start pro zástupce programu $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Vyberte složku v Nabídce Start, ve které chcete vytvořit zástupce programu. Chcete-li vytvořit novou složku, zadejte její název." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nevytvořit zástupce" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Odinstalace programu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Odebere program $(^NameDA) z počítače." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Opravdu chcete instalaci programu $(^Name) ukončit?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Opravdu chcete odinstalaci programu $(^Name) ukončit?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Volba uživatelů" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Výběr uživatelů, kterým bude program $(^NameDA) nainstalován." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Vyberte, zda chcete program $(^NameDA) nainstalovat pouze pro sebe, nebo pro všechny uživatele počítače. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instalovat pro všechny uživatele počítače" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalovat pouze pro sebe" +!endif diff --git a/tools/Contrib/Language files/Danish.nlf b/tools/Contrib/Language files/Danish.nlf new file mode 100644 index 0000000..82b0863 --- /dev/null +++ b/tools/Contrib/Language files/Danish.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1030 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Claus Futtrup, scootergrisen +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Installation +# ^UninstallCaption +$(^Name) Afinstallation +# ^LicenseSubCaption +: Licensaftale +# ^ComponentsSubCaption +: Installationsvalgmuligheder +# ^DirSubCaption +: Installationsmappe +# ^InstallingSubCaption +: Installerer +# ^CompletedSubCaption +: Gennemført +# ^UnComponentsSubCaption +: Afinstallationsvalgmuligheder +# ^UnDirSubCaption +: Afinstallationsmappe +# ^ConfirmSubCaption +: Bekræft +# ^UninstallingSubCaption +: Afinstallerer +# ^UnCompletedSubCaption +: Gennemført +# ^BackBtn +< &Tilbage +# ^NextBtn +&Næste > +# ^AgreeBtn +Jeg &accepterer +# ^AcceptBtn +Jeg &accepterer vilkårene i licensaftalen +# ^DontAcceptBtn +Jeg &accepterer ikke vilkårene i licensaftalen +# ^InstallBtn +&Installer +# ^UninstallBtn +&Afinstaller +# ^CancelBtn +Annuller +# ^CloseBtn +&Luk +# ^BrowseBtn +G&ennemse... +# ^ShowDetailsBtn +Vis &detaljer +# ^ClickNext +Tryk på Næste for at fortsætte. +# ^ClickInstall +Tryk på Installer for at starte installationen. +# ^ClickUninstall +Tryk på Afinstaller for at starte afinstallationen. +# ^Name +Navn +# ^Completed +Gennemført +# ^LicenseText +Gennemlæs venligst licensaftalen før installationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du klikke på Jeg accepterer. +# ^LicenseTextCB +Gennemlæs venligst licensaftalen før installationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du klikke på afkrydsningsfeltet nedenfor. $_CLICK +# ^LicenseTextRB +Gennemlæs venligst licensaftalen før installationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du vælge den første valgmulighed nedenfor. $_CLICK +# ^UnLicenseText +Gennemlæs venligst licensaftalen før afinstallationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du trykke på Jeg accepterer. +# ^UnLicenseTextCB +Gennemlæs venligst licensaftalen før afinstallationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du klikke på afkrydsningsfeltet nedenfor. $_CLICK +# ^UnLicenseTextRB +Gennemlæs venligst licensaftalen før afinstallationen af $(^NameDA). Hvis du accepterer alle vilkår i aftalen, skal du vælge den første valgmulighed nedenfor. $_CLICK +# ^Custom +Brugerdefineret +# ^ComponentsText +Tilvælg de komponenter du vil installere, og fravælg de komponenter du ikke vil installere. $_CLICK +# ^ComponentsSubText1 +Vælg installationstype: +# ^ComponentsSubText2_NoInstTypes +Vælg de komponenter der skal installeres: +# ^ComponentsSubText2 +Eller vælg de valgfrie komponenter du ønsker at installere: +# ^UnComponentsText +Tilvælg de komponenter du vil afinstallere, og fravælg de komponenter du ikke vil afinstallere. $_CLICK +# ^UnComponentsSubText1 +Vælg afinstallationstype: +# ^UnComponentsSubText2_NoInstTypes +Vælg de komponenter der skal afinstalleres: +# ^UnComponentsSubText2 +Eller vælg de valgfrie komponenter du ønsker at afinstallere: +# ^DirText +Installationsguiden vil installere $(^NameDA) i følgende mappe. For at installere i en anden mappe, tryk på Gennemse og vælg en anden mappe. $_CLICK +# ^DirSubText +Destinationsmappe +# ^DirBrowseText +Vælg den mappe hvori $(^NameDA) skal installeres: +# ^UnDirText +Installationsguiden vil afinstallere $(^NameDA) fra følgende mappe. For at afinstallere fra en anden mappe, tryk på Gennemse og vælg en anden mappe. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Vælg den mappe hvorfra $(^NameDA) skal afinstalleres: +# ^SpaceAvailable +"Ledig plads: " +# ^SpaceRequired +"Nødvendig plads: " +# ^UninstallingText +$(^NameDA) vil blive afinstalleret fra følgende mappe. $_CLICK +# ^UninstallingSubText +Afinstallerer fra: +# ^FileError +Fejl ved skrivning af fil til skrivning: \r\n\r\n$0\r\n\r\nTryk på Annuller for at stoppe installationen,\r\nPrøv igen for at prøve igen, eller\r\nIgnorer for at springe over denne fil. +# ^FileError_NoIgnore +Fejl ved åbning af fil til skrivning: \r\n\r\n$0\r\n\r\nTryk på Prøv igen for at prøve igen, eller\r\nAnnuller for at stoppe installationen. +# ^CantWrite +"Kan ikke skrive: " +# ^CopyFailed +Kopiering mislykkedes +# ^CopyTo +"Kopier til " +# ^Registering +"Registrerer: " +# ^Unregistering +"Afregisterer: " +# ^SymbolNotFound +"Kunne ikke finde symbol: " +# ^CouldNotLoad +"Kunne ikke indlæse: " +# ^CreateFolder +"Opret mappe: " +# ^CreateShortcut +"Opret genvej: " +# ^CreatedUninstaller +"Afinstallationsguide oprettet: " +# ^Delete +"Slet fil: " +# ^DeleteOnReboot +"Slet ved genstart: " +# ^ErrorCreatingShortcut +"Fejl ved oprettelse af genvej: " +# ^ErrorCreating +"Fejl ved oprettelse: " +# ^ErrorDecompressing +Fejl ved udpakning af data! Beskadiget installationsguide? +# ^ErrorRegistering +Fejl ved registrering af DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Kør: " +# ^Extract +"Udpak: " +# ^ErrorWriting +"Udpak: fejl ved skrivning til fil " +# ^InvalidOpcode +Beskadiget installationsguide: ugyldig opcode +# ^NoOLE +"Ingen OLE for: " +# ^OutputFolder +"Outputmappe: " +# ^RemoveFolder +"Slet mappe: " +# ^RenameOnReboot +"Omdøb ved genstart: " +# ^Rename +"Omdøb: " +# ^Skipped +"Sprunget over: " +# ^CopyDetails +Kopier detaljer til udklipsholderen +# ^LogInstall +Log installationsproces +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Danish.nsh b/tools/Contrib/Language files/Danish.nsh new file mode 100644 index 0000000..f6da994 --- /dev/null +++ b/tools/Contrib/Language files/Danish.nsh @@ -0,0 +1,129 @@ +;Language: Danish (1030) +;By Claus Futtrup, scootergrisen + +!insertmacro LANGFILE "Danish" = "Dansk" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Velkommen til installationsguiden for $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Denne guide hjælper dig gennem installationen af $(^NameDA).$\r$\n$\r$\nDet anbefales, at du lukker alle kørende programmer inden start af installationsguiden. Det gør det muligt at opdatere de nødvendige systemfiler uden at skulle genstarte din computer.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Velkommen til $(^NameDA) afinstallationsguiden" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Denne guide hjælper dig gennem afinstallationen af $(^NameDA).$\r$\n$\r$\nFør start af afinstallationen skal du være sikker på at $(^NameDA) ikke kører.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licensaftale" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Læs venligst licensaftalen før installationen af $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Hvis du accepterer vilkårene i aftalen, skal du klikke på Jeg accepterer for at fortsætte. Du skal acceptere aftalen for at installere $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Hvis du accepterer vilkårene i aftalen, skal du klikke på afkrydsningsfeltet nedenfor. Du skal acceptere aftalen for at installere $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Hvis du accepterer vilkårene i aftalen, skal du vælge den første valgmulighed nedenfor. Du skal acceptere aftalen for at installere $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licensaftale" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Læs venligst licensaftalen før afinstallationen af $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Hvis du accepterer vilkårene i aftalen, skal du klikke på Jeg accepterer for at fortsætte. Du skal acceptere aftalen for at afinstallere $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Hvis du accepterer vilkårene i aftalen, skal du klikke på afkrydsningsfeltet nedenfor. Du skal acceptere aftalen for at afinstallere $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Hvis du accepterer vilkårene i aftalen, skal du vælge den første valgmulighed nedenfor. Du skal acceptere aftalen for at afinstallere $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Tryk på Page Down for at se resten af aftalen." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Vælg komponenter" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Vælg hvilke faciliteter af $(^NameDA) du vil installere." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Vælg komponenter" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Vælg hvilke faciliteter af $(^NameDA) du vil afinstallere." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskrivelse" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Placer musemarkøren over en komponent for at se dens beskrivelse." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Vælg en komponent for at se dens beskrivelse." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Vælg installationsmappe" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Vælg den mappe hvori du vil installere $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Vælg afinstallationsmappe" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Vælg den mappe hvorfra du vil afinstallere $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installerer" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vent venligst mens $(^NameDA) bliver installeret." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installation gennemført" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Installationsguiden blev gennemført." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installation afbrudt" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Installationsguiden blev ikke gennemført." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Afinstallerer" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vent venligst mens $(^NameDA) bliver afinstalleret." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Afinstallation gennemført" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Afinstallationen blev gennemført." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Afinstallation afbrudt" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Afinstallationen blev ikke gennemført." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Gennemfører $(^NameDA) installationsguiden" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) er blevet installeret på din computer.$\r$\n$\r$\nTryk på Afslut for at lukke installationsguiden." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Din computer skal genstartes for at gennemføre installationen af $(^NameDA). Vil du genstarte nu?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Gennemfører $(^NameDA) afinstallationsguiden" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) er blevet afinstalleret fra din computer.$\r$\n$\r$\nTryk på Afslut for at lukke installationsguiden." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Din computer skal genstartes for at gennemføre afinstallationen af $(^NameDA). Vil du genstarte nu?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Genstart nu" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Jeg genstarter selv på et senere tidspunkt" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Kør $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Vis Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Afslut" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Vælg mappe i menuen Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Vælg en mappe i menuen Start til programmets genveje." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Vælg mappe i menuen Start hvori du vil oprette programmets genveje. Du kan også skrive et navn for at oprette en ny mappe." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Opret ikke genveje" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Afinstaller $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Slet $(^NameDA) fra din computer." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Er du sikker på, at du vil afslutte installationen af $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Er du sikker på, at du vil afslutte afinstallationen af $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Vælg brugere" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Vælg de brugere som skal have installeret $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Vælg hvorvidt du vil installere $(^NameDA) kun for dig selv eller for alle brugere på denne computer. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installer for alle som bruger denne computer" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installer kun for mig" +!endif diff --git a/tools/Contrib/Language files/Dutch.nlf b/tools/Contrib/Language files/Dutch.nlf new file mode 100644 index 0000000..86ced7f --- /dev/null +++ b/tools/Contrib/Language files/Dutch.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1043 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Joost Verburg & Hendri Adireans, fixes by Milan Bast +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name)-installatie +# ^UninstallCaption +$(^Name)-deïnstallatie +# ^LicenseSubCaption +: Licentieovereenkomst +# ^ComponentsSubCaption +: Installatieopties +# ^DirSubCaption +: Installatiemap +# ^InstallingSubCaption +: Bezig met installeren +# ^CompletedSubCaption +: Voltooid +# ^UnComponentsSubCaption +: Verwijderingsopties +# ^UnDirSubCaption +: Te verwijderen map +# ^ConfirmSubCaption +: Bevestiging +# ^UninstallingSubCaption +: Bezig met verwijderen +# ^UnCompletedSubCaption +: Voltooid +# ^BackBtn +< V&orige +# ^NextBtn +&Volgende > +# ^AgreeBtn +&Akkoord +# ^AcceptBtn +Ik &accepteer de overeenkomst +# ^DontAcceptBtn +Ik accepteer de overeenkomst &niet +# ^InstallBtn +&Installeren +# ^UninstallBtn +&Verwijderen +# ^CancelBtn +Annuleren +# ^CloseBtn +&Afsluiten +# ^BrowseBtn +&Bladeren... +# ^ShowDetailsBtn +&Details tonen +# ^ClickNext +Klik op Volgende om verder te gaan. +# ^ClickInstall +Klik op Installeren om de installatie te beginnen. +# ^ClickUninstall +Klik op Verwijderen om de deïnstallatie te beginnen. +# ^Name +Naam +# ^Completed +Voltooid +# ^LicenseText +Lees de licentieovereenkomst voordat u $(^NameDA) installeert. Klik op Akkoord als u de overeenkomst accepteert. +# ^LicenseTextCB +Lees de licentieovereenkomst voordat u $(^NameDA) installeert. Schakel het selectievakje hieronder in als u de overeenkomst accepteert. $_CLICK +# ^LicenseTextRB +Lees de licentieovereenkomst voordat u $(^NameDA) installeert. Selecteer de eerste optie hieronder als u de overeenkomst accepteert. $_CLICK +# ^UnLicenseText +Lees de licentieovereenkomst voordat u $(^NameDA) verwijdert. Klik op Akkoord als u de overeenkomst accepteert. +# ^UnLicenseTextCB +Lees de licentieovereenkomst voordat u $(^NameDA) verwijdert. Schakel het selectievakje hieronder in als u de overeenkomst accepteert. $_CLICK +# ^UnLicenseTextRB +Lees de licentieovereenkomst voordat u $(^NameDA) verwijdert. Selecteer de eerste optie hieronder als u de overeenkomst accepteert. $_CLICK +# ^Custom +Aangepast +# ^ComponentsText +Selecteer de onderdelen die u wilt installeren en deselecteer welke u niet wilt installeren. $_CLICK +# ^ComponentsSubText1 +Selecteer het installatietype: +# ^ComponentsSubText2_NoInstTypes +Selecteer de onderdelen die moeten worden geïnstalleerd: +# ^ComponentsSubText2 +Of selecteer de optionele onderdelen die moeten worden geïnstalleerd: +# ^UnComponentsText +Selecteer de onderdelen die u wilt verwijderen en deselecteer welke u niet wilt verwijderen. $_CLICK +# ^UnComponentsSubText1 +Selecteer het type verwijdering: +# ^UnComponentsSubText2_NoInstTypes +Selecteer de onderdelen die moeten worden verwijderd: +# ^UnComponentsSubText2 +Of selecteer de optionele onderdelen die moeten worden verwijderd: +# ^DirText +Setup zal $(^NameDA) in de volgende map installeren. Klik op Bladeren als u $(^NameDA) in een andere map wilt installeren en selecteer deze. $_CLICK +# ^DirSubText +Installatiemap +# ^DirBrowseText +Selecteer de map om $(^NameDA) in te installeren: +# ^UnDirText +Setup zal $(^NameDA) uit de volgende map verwijderen. Klik op Bladeren als u $(^NameDA) uit een andere map wilt verwijderen en selecteer deze. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Selecteer de map om $(^NameDA) uit te verwijderen: +# ^SpaceAvailable +"Beschikbare ruimte: " +# ^SpaceRequired +"Vereiste ruimte: " +# ^UninstallingText +$(^NameDA) zal uit de volgende map worden verwijderd. $_CLICK +# ^UninstallingSubText +Verwijderen uit: +# ^FileError +Fout bij het schrijven naar bestand: \r\n\r\n$0\r\n\r\nKlik op Afbreken om de installatie te stoppen,\r\nOpnieuw om het opnieuw te proberen of\r\nNegeren om dit bestand over te slaan. +# ^FileError_NoIgnore +Fout bij het schrijven naar bestand: \r\n\r\n$0\r\n\r\nKlik op Opnieuw om het opnieuw te proberen of \r\nAnnuleren om de installatie te stoppen. +# ^CantWrite +"Kon niet schrijven: " +# ^CopyFailed +Kopiëren mislukt +# ^CopyTo +"Kopiëren naar " +# ^Registering +"Registreren: " +# ^Unregistering +"Deregistreren: " +# ^SymbolNotFound +"Kon symbool niet vinden: " +# ^CouldNotLoad +"Kon niet laden: " +# ^CreateFolder +"Map maken: " +# ^CreateShortcut +"Snelkoppeling maken: " +# ^CreatedUninstaller +"Deïnstallatieprogramma gemaakt: " +# ^Delete +"Bestand verwijderen: " +# ^DeleteOnReboot +"Verwijderen na opnieuw opstarten: " +# ^ErrorCreatingShortcut +"Fout bij maken snelkoppeling: " +# ^ErrorCreating +"Fout bij maken: " +# ^ErrorDecompressing +Fout bij uitpakken van gegevens! Gegevens beschadigd? +# ^ErrorRegistering +Fout bij registreren DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Uitvoeren: " +# ^Extract +"Uitpakken: " +# ^ErrorWriting +"Uitpakken: fout bij schrijven naar bestand " +# ^InvalidOpcode +Installatieprogramma beschadigd: ongeldige opcode +# ^NoOLE +"Geen OLE voor: " +# ^OutputFolder +"Uitvoermap: " +# ^RemoveFolder +"Map verwijderen: " +# ^RenameOnReboot +"Hernoemen na opnieuw opstarten: " +# ^Rename +"Hernoemen: " +# ^Skipped +"Overgeslagen: " +# ^CopyDetails +Details kopiëren naar klembord +# ^LogInstall +Gegevens over installatie bewaren +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Dutch.nsh b/tools/Contrib/Language files/Dutch.nsh new file mode 100644 index 0000000..3ae418b --- /dev/null +++ b/tools/Contrib/Language files/Dutch.nsh @@ -0,0 +1,129 @@ +;Language: Dutch (1043) +;By Joost Verburg + +!insertmacro LANGFILE "Dutch" = "Nederlands" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Welkom bij de $(^NameDA)-installatiewizard" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Deze wizard zal $(^NameDA) op uw systeem installeren.$\r$\n$\r$\nHet wordt aanbevolen alle overige toepassingen af te sluiten alvorens de installatie te starten. Dit maakt het mogelijk relevante systeembestanden bij te werken zonder uw systeem opnieuw op te moeten starten.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Welkom bij de $(^NameDA)-deïnstallatiewizard" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Deze wizard zal $(^NameDA) van uw syteem verwijderen.$\r$\n$\r$\nControleer voordat u begint met verwijderen of $(^NameDA) is afgesloten.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licentieovereenkomst" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lees de licentieovereenkomst voordat u $(^NameDA) installeert." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Klik op Akkoord om verder te gaan als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te installeren." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Schakel het selectievakje hieronder in als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te installeren." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Selecteer de eerste optie hieronder als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te installeren." +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licentieovereenkomst" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lees de licentieovereenkomst voordat u $(^NameDA) verwijdert." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Klik op Akkoord op verder te gaan als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te verwijderen." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Schakel het selectievakje hieronder in als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te verwijderen." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Selecteer de eerste optie hieronder als u de overeenkomst accepteert. U moet de overeenkomst accepteren om $(^NameDA) te verwijderen." +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Druk op Page Down om de rest van de overeenkomst te zien." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Onderdelen kiezen" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Kies de onderdelen die u wilt installeren." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Onderdelen kiezen" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Kies de onderdelen die u wilt verwijderen." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beschrijving" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beweeg uw muis over een onderdeel om de beschrijving te zien." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Selecteer een onderdeel om de beschrijving te zien." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Installatielocatie kiezen" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Kies de map waarin u $(^NameDA) wilt installeren." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Locatie kiezen" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Kies de map waaruit u $(^NameDA) wilt verwijderen." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Bezig met installeren" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Een ogenblik geduld terwijl $(^NameDA) wordt geïnstalleerd." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installatie voltooid" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "De installatie is succesvol voltooid." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installatie afgebroken" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "De installatie is niet voltooid." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Bezig met verwijderen" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Een ogenblik geduld terwijl $(^NameDA) van uw systeem wordt verwijderd." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Verwijderen gereed" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "$(^NameDA) is van uw systeem verwijderd." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Verwijderen afgebroken" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "$(^NameDA) is niet volledig van uw systeem verwijderd." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Voltooien van de $(^NameDA)-installatiewizard" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) is geïnstalleerd op uw systeem.$\r$\n$\r$\nKlik op Voltooien om deze wizard te sluiten." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Uw systeem moet opnieuw worden opgestart om de installatie van $(^NameDA) te voltooien. Wilt u nu herstarten?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Voltooien van de $(^NameDA)-deïnstallatiewizard" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) is van uw systeem verwijderd.$\r$\n$\r$\nKlik op Voltooien om deze wizard te sluiten." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Uw systeem moet opnieuw worden opgestart om het verwijderen van $(^NameDA) te voltooien. Wilt u nu herstarten?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Nu herstarten" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ik wil later handmatig herstarten" + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) &starten" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Leesmij weergeven" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Voltooien" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Startmenumap kiezen" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Kies een map in het menu Start voor de snelkoppelingen van $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Kies een map in het menu Start waarin de snelkoppelingen moeten worden aangemaakt. U kunt ook een naam invoeren om een nieuwe map te maken." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Geen snelkoppelingen aanmaken" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "$(^NameDA) verwijderen" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA) van uw systeem verwijderen." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Weet u zeker dat u de $(^Name)-installatie wilt afsluiten?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Weet u zeker dat u de $(^Name)-deïnstallatie wilt afsluiten?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Gebruikers kiezen" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Kies voor welke gebruikers u $(^NameDA) wilt installeren." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Selecteer of u $(^NameDA) alleen voor uzelf of voor alle gebruikers van deze computer wilt installeren. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installeer voor alle gebruikers van deze computer" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installeer alleen voor mijzelf" +!endif diff --git a/tools/Contrib/Language files/English.nlf b/tools/Contrib/Language files/English.nlf new file mode 100644 index 0000000..feb69cb --- /dev/null +++ b/tools/Contrib/Language files/English.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1033 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +- +# RTL - anything else than RTL means LTR +- +# Translation by ..... (any credits should go here) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Setup +# ^UninstallCaption +$(^Name) Uninstall +# ^LicenseSubCaption +: License Agreement +# ^ComponentsSubCaption +: Installation Options +# ^DirSubCaption +: Installation Folder +# ^InstallingSubCaption +: Installing +# ^CompletedSubCaption +: Completed +# ^UnComponentsSubCaption +: Uninstallation Options +# ^UnDirSubCaption +: Uninstallation Folder +# ^ConfirmSubCaption +: Confirmation +# ^UninstallingSubCaption +: Uninstalling +# ^UnCompletedSubCaption +: Completed +# ^BackBtn +< &Back +# ^NextBtn +&Next > +# ^AgreeBtn +I &Agree +# ^AcceptBtn +I &accept the terms of the License Agreement +# ^DontAcceptBtn +I &do not accept the terms of the License Agreement +# ^InstallBtn +&Install +# ^UninstallBtn +&Uninstall +# ^CancelBtn +Cancel +# ^CloseBtn +&Close +# ^BrowseBtn +B&rowse... +# ^ShowDetailsBtn +Show &details +# ^ClickNext +Click Next to continue. +# ^ClickInstall +Click Install to start the installation. +# ^ClickUninstall +Click Uninstall to start the uninstallation. +# ^Name +Name +# ^Completed +Completed +# ^LicenseText +Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, click I Agree. +# ^LicenseTextCB +Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, click the check box below. $_CLICK +# ^LicenseTextRB +Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, select the first option below. $_CLICK +# ^UnLicenseText +Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, click I Agree. +# ^UnLicenseTextCB +Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, click the check box below. $_CLICK +# ^UnLicenseTextRB +Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, select the first option below. $_CLICK +# ^Custom +Custom +# ^ComponentsText +Check the components you want to install and uncheck the components you don't want to install. $_CLICK +# ^ComponentsSubText1 +Select the type of install: +# ^ComponentsSubText2_NoInstTypes +Select components to install: +# ^ComponentsSubText2 +Or, select the optional components you wish to install: +# ^UnComponentsText +Check the components you want to uninstall and uncheck the components you don't want to uninstall. $_CLICK +# ^UnComponentsSubText1 +Select the type of uninstall: +# ^UnComponentsSubText2_NoInstTypes +Select components to uninstall: +# ^UnComponentsSubText2 +Or, select the optional components you wish to uninstall: +# ^DirText +Setup will install $(^NameDA) in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK +# ^DirSubText +Destination Folder +# ^DirBrowseText +Select the folder to install $(^NameDA) in: +# ^UnDirText +Setup will uninstall $(^NameDA) from the following folder. To uninstall from a different folder, click Browse and select another folder. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Select the folder to uninstall $(^NameDA) from: +# ^SpaceAvailable +"Space available: " +# ^SpaceRequired +"Space required: " +# ^UninstallingText +$(^NameDA) will be uninstalled from the following folder. $_CLICK +# ^UninstallingSubText +Uninstalling from: +# ^FileError +Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Abort to stop the installation,\r\nRetry to try again, or\r\nIgnore to skip this file. +# ^FileError_NoIgnore +Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Retry to try again, or\r\nCancel to stop the installation. +# ^CantWrite +"Can't write: " +# ^CopyFailed +Copy failed +# ^CopyTo +"Copy to " +# ^Registering +"Registering: " +# ^Unregistering +"Unregistering: " +# ^SymbolNotFound +"Could not find symbol: " +# ^CouldNotLoad +"Could not load: " +# ^CreateFolder +"Create folder: " +# ^CreateShortcut +"Create shortcut: " +# ^CreatedUninstaller +"Created uninstaller: " +# ^Delete +"Delete file: " +# ^DeleteOnReboot +"Delete on reboot: " +# ^ErrorCreatingShortcut +"Error creating shortcut: " +# ^ErrorCreating +"Error creating: " +# ^ErrorDecompressing +Error decompressing data! Corrupted installer? +# ^ErrorRegistering +Error registering DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Execute: " +# ^Extract +"Extract: " +# ^ErrorWriting +"Extract: error writing to file " +# ^InvalidOpcode +Installer corrupted: invalid opcode +# ^NoOLE +"No OLE for: " +# ^OutputFolder +"Output folder: " +# ^RemoveFolder +"Remove folder: " +# ^RenameOnReboot +"Rename on reboot: " +# ^Rename +"Rename: " +# ^Skipped +"Skipped: " +# ^CopyDetails +Copy Details To Clipboard +# ^LogInstall +Log install process +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/English.nsh b/tools/Contrib/Language files/English.nsh new file mode 100644 index 0000000..4da2e09 --- /dev/null +++ b/tools/Contrib/Language files/English.nsh @@ -0,0 +1,129 @@ +;Language: English (1033) +;By Joost Verburg + +!insertmacro LANGFILE "English" "English" "English" "English" ; See \Include\LangFile.nsh for a description of these parameters + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Welcome to $(^NameDA) Setup" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Setup will guide you through the installation of $(^NameDA).$\r$\n$\r$\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without having to reboot your computer.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Welcome to $(^NameDA) Uninstall" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Setup will guide you through the uninstallation of $(^NameDA).$\r$\n$\r$\nBefore starting the uninstallation, make sure $(^NameDA) is not running.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "License Agreement" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Please review the license terms before installing $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "If you accept the terms of the agreement, click I Agree to continue. You must accept the agreement to install $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "If you accept the terms of the agreement, click the check box below. You must accept the agreement to install $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "If you accept the terms of the agreement, select the first option below. You must accept the agreement to install $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "License Agreement" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Please review the license terms before uninstalling $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "If you accept the terms of the agreement, click I Agree to continue. You must accept the agreement to uninstall $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "If you accept the terms of the agreement, click the check box below. You must accept the agreement to uninstall $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "If you accept the terms of the agreement, select the first option below. You must accept the agreement to uninstall $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Press Page Down to see the rest of the agreement." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Choose Components" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Choose which features of $(^NameDA) you want to install." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Choose Components" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Choose which features of $(^NameDA) you want to uninstall." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Description" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Position your mouse over a component to see its description." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Select a component to see its description." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Choose Install Location" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Choose the folder in which to install $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Choose Uninstall Location" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Choose the folder from which to uninstall $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installing" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Please wait while $(^NameDA) is being installed." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installation Complete" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Setup was completed successfully." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installation Aborted" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Setup was not completed successfully." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Uninstalling" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Please wait while $(^NameDA) is being uninstalled." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Uninstallation Complete" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Uninstall was completed successfully." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Uninstallation Aborted" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Uninstall was not completed successfully." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Completing $(^NameDA) Setup" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) has been installed on your computer.$\r$\n$\r$\nClick Finish to close Setup." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Your computer must be restarted in order to complete the installation of $(^NameDA). Do you want to reboot now?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Completing $(^NameDA) Uninstall" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) has been uninstalled from your computer.$\r$\n$\r$\nClick Finish to close Setup." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Your computer must be restarted in order to complete the uninstallation of $(^NameDA). Do you want to reboot now?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reboot now" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "I want to manually reboot later" + ${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 "Choose Start Menu Folder" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Choose a Start Menu folder for the $(^NameDA) shortcuts." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Select the Start Menu folder in which you would like to create the program's shortcuts. You can also enter a name to create a new folder." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Do not create shortcuts" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Uninstall $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Remove $(^NameDA) from your computer." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Are you sure you want to quit $(^Name) Setup?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Are you sure you want to quit $(^Name) Uninstall?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Choose Users" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Choose for which users you want to install $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Select whether you want to install $(^NameDA) only for yourself or for all users of this computer. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Install for anyone using this computer" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Install just for me" +!endif diff --git a/tools/Contrib/Language files/Esperanto.nlf b/tools/Contrib/Language files/Esperanto.nlf new file mode 100644 index 0000000..f2f9e82 --- /dev/null +++ b/tools/Contrib/Language files/Esperanto.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID (none exists for Esperanto at the moment) +9998 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +- +# RTL - anything else than RTL means LTR +- +# Translation v4.0.3 by Felipe Castro +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalado de $(^Name) +# ^UninstallCaption +Malinstalado de $(^Name) +# ^LicenseSubCaption +: Permes-Kontrakto +# ^ComponentsSubCaption +: Instaladaj Opcioj +# ^DirSubCaption +: Instalada Dosierujo +# ^InstallingSubCaption +: Oni Instalas Dosierojn +# ^CompletedSubCaption +: Kompletite +# ^UnComponentsSubCaption +: Malinstaladaj Opcioj +# ^UnDirSubCaption +: Malinstalada Dosierujo +# ^ConfirmSubCaption +: Konfirmo +# ^UninstallingSubCaption +: Oni malinstalas +# ^UnCompletedSubCaption +: Kompletite +# ^BackBtn +< &Antauxe +# ^NextBtn +&Sekve > +# ^AgreeBtn +&Akceptite +# ^AcceptBtn +Mi &akceptas la kondicxojn de la Permes-Kontrakto +# ^DontAcceptBtn +Mi &ne akceptas la kondicxojn de la Permes-Kontrakto +# ^InstallBtn +&Instali +# ^UninstallBtn +&Malinstali +# ^CancelBtn +Nuligi +# ^CloseBtn +&Fermi +# ^BrowseBtn +&Sercxi... +# ^ShowDetailsBtn +Vidi &Detalojn +# ^ClickNext +Musklaku en 'Sekve' por dauxrigi. +# ^ClickInstall +Musklaku en 'Instali' por ekigi la instaladon. +# ^ClickUninstall +Musklaku en 'Malinstali' por ekigi la malinstaladon. +# ^Name +Nomo +# ^Completed +Kompletite +# ^LicenseText +Bonvole revidu la permes-akordon antaux ol instali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, musklaku en 'Akceptite'. +# ^LicenseTextCB +Bonvole revidu la permes-akordon antaux ol instali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, musklaku en la suba elekt-skatolo. $_CLICK +# ^LicenseTextRB +Bonvole revidu la permes-akordon antaux ol instali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, elektu la unuan opcion sube. $_CLICK +# ^UnLicenseText +Bonvole revidu la permes-akordon antaux ol malinstali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, musklaku en 'Akceptite'. +# ^UnLicenseTextCB +Bonvole revidu la permes-akordon antaux ol malinstali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, musklaku en la suba elekt-skatolo. $_CLICK +# ^UnLicenseTextRB +Bonvole revidu la permes-akordon antaux ol malinstali $(^NameDA). Se vi konsentas kun cxiuj kondicxoj de la permeso, elektu la unuan opcion sube. $_CLICK +# ^Custom +Personigite +# ^ComponentsText +Marku la konsisterojn, kiujn vi deziras instali kaj malmarku tiujn, kiujn vi ne deziras instali. $_CLICK +# ^ComponentsSubText1 +Elektu la tipon de instalado: +# ^ComponentsSubText2_NoInstTypes +Elektu la konsisterojn por instali: +# ^ComponentsSubText2 +Aux, elektu la nedevigajn konsisterojn, kiujn vi deziras instali: +# ^UnComponentsText +Marku la konsisterojn, kiujn vi volas malinstali aux male. $_CLICK +# ^UnComponentsSubText1 +Elektu la tipon de malinstalado: +# ^UnComponentsSubText2_NoInstTypes +Elektu la konsisterojn por malinstali: +# ^UnComponentsSubText2 +Aux, elektu la nedevigajn konsisterojn, kiujn vi deziras malinstali: +# ^DirText +$(^NameDA) estos instalita en la jena dosierujo. Por instali en alia dosierujo, musklaku en 'Sercxi...' kaj elektu gxin. $_CLICK +# ^DirSubText +Celota Dosierujo +# ^DirBrowseText +Elektu dosierujon por instali $(^NameDA): +# ^UnDirText +$(^NameDA) estos malinstalita el la jena dosierujo. Por malinstali en alia dosierujo, musklaku en 'Sercxi...' kaj elektu gxin. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Elektu dosierujon el kie $(^NameDA) estos malinstalita: +# ^SpaceAvailable +"Disponebla spaco: " +# ^SpaceRequired +"Postulata spaco: " +# ^UninstallingText +$(^NameDA) estos malinstalita el la jena dosierujo. $_CLICK +# ^UninstallingSubText +Malinstalado el: +# ^FileError +Eraro dum malfermo de dosiero por skribi: \r\n\t"$0"\r\nMusklaku en Cxesigi por finigi la instaladon,\r\Ripeti por provi refoje skribi sur la dosiero, aux\r\nPreteratenti por preteratenti tiun cxi dosieron. +# ^FileError_NoIgnore +Eraro dum malfermo de dosierujo por skribi: \r\n\t"$0"\r\nMusklaku en Ripeti por provi refoje skribi sur la dosiero, aux\r\nNuligi por cxesigi la instaladon. +# ^CantWrite +"Ne eblis skribi: " +# ^CopyFailed +Malsukceso dum kopio +# ^CopyTo +"Kopii al " +# ^Registering +"Oni registras: " +# ^Unregistering +"Oni malregistras: " +# ^SymbolNotFound +"Ne trovita simbolo: " +# ^CouldNotLoad +"Ne eblis sxargi: " +# ^CreateFolder +"Oni kreas subdosierujon: " +# ^CreateShortcut +"Oni kreas lancxilon: " +# ^CreatedUninstaller +"Oni kreas malinstalilon: " +# ^Delete +"Oni forigas dosieron: " +# ^DeleteOnReboot +"Forigi je restarto: " +# ^ErrorCreatingShortcut +"Eraro dum kreo de lancxilo: " +# ^ErrorCreating +"Eraro dum kreo: " +# ^ErrorDecompressing +Eraro dum malkompaktigo de datumaro! Cxu misrompita instalilo? +# ^ErrorRegistering +Eraru dum registro de DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Lancxi: " +# ^Extract +"Eltiri: " +# ^ErrorWriting +"Eltirado: eraro dum skribo de dosiero " +# ^InvalidOpcode +Misrompita instalilo: malvalida operaci-kodo +# ^NoOLE +"Sen OLE por: " +# ^OutputFolder +"Celota dosierujo: " +# ^RemoveFolder +"Oni forigas la dosierujon: " +# ^RenameOnReboot +"Renomigi je restarto: " +# ^Rename +"Oni renomigas: " +# ^Skipped +"Preterpasita: " +# ^CopyDetails +Kopii detalojn al la tondejo +# ^LogInstall +Registri instalad-procezo +# ^Byte +B +# ^Kilo + k +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Esperanto.nsh b/tools/Contrib/Language files/Esperanto.nsh new file mode 100644 index 0000000..cdbdd30 --- /dev/null +++ b/tools/Contrib/Language files/Esperanto.nsh @@ -0,0 +1,129 @@ +;Language: Esperanto (0) +;By Felipe Castro + +!insertmacro LANGFILE "Esperanto" = "Esperanto" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bonvenon al la Gvidilo por Instalado de $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Tiu cxi gvidilo helpos vin dum la instalado de $(^NameDA).$\r$\n$\r$\nOni rekomendas fermi cxiujn aliajn aplikajxojn antaux ol ekigi la Instaladon. Tio cxi ebligos al la Instalilo gxisdatigi la koncernajn dosierojn de la sistemo sen bezono restartigi la komputilon.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bonvenon al la Gvidilo por Malinstalado de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Tiu cxi gvidilo helpos vin dum la malinstalado de $(^NameDA).$\r$\n$\r$\nAntaux ol ekigi la malinstalado, certigxu ke $(^NameDA) ne estas plenumata nun.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Permes-Kontrakto" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Bonvole, kontrolu la kondicxojn de la permesilo antaux ol instali la programon $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Se vi akceptas la kondicxojn, musklaku en 'Akceptite' por dauxrigi. Vi devos akcepti la kontrakton por instali la programon $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se vi akceptas la permes-kondicxojn, musklaku la suban elekt-skatolon. Vi devos akcepti la kontrakton por instali la programon $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se vi akceptas la permes-kondicxojn, elektu la unuan opcion sube. Vi devas akcepti la kontrakton por instali la programon $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Permes-Kontrakto" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Bonvole, kontrolu la kondicxojn de la permesilo antaux ol malinstali la programon $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Se vi akceptas la kondicxojn, musklaku en 'Akceptite' por dauxrigi. Vi devos akcepti la kontrakton por malinstali la programon $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se vi akceptas la permes-kondicxojn, musklaku la suban elekt-skatolon. Vi devos akcepti la kontrakton por malinstali la programon $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se vi akceptas la permes-kondicxojn, elektu la unuan opcion sube. Vi devas akcepti la kontrakton por malinstali la programon $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Premu 'Page Down' por rigardi la reston de la permeso." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Elekto de Konsisteroj" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Elektu kiujn funkciojn de $(^NameDA) vi deziras instali." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Elekto de Konsisteroj" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Elektu kiujn funkciojn de $(^NameDA) vi deziras malinstali." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Priskribo" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Poziciu la muson sur konsistero por rigardi ties priskribon." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Elekto de la Instalada Loko" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Elektu la dosierujon en kiun vi deziras instali la programon $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Elekto de la Malinstalada Loko" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Elektu la dosierujon el kiu vi deziras malinstali la programon $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Oni instalas" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Bonvole, atendu dum $(^NameDA) estas instalata." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalado Plenumite" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "La instalado sukcese plenumigxis." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalado Cxesigite" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "La instalado ne plenumigxis sukcese." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Oni malinstalas" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Bonvole, atendu dum $(^NameDA) estas malinstalata." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Malinstalado Plenumite" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La malinstalado sukcese plenumigxis." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Malinstalado Cxesigxite" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La malinstalado ne plenumigxis sukcese." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Oni finigas la Gvidilon por Instalado de $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) estas instalita en via komputilo.$\r$\n$\r$\nMusklaku en Finigi por fermi tiun cxi gvidilon." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Via komputilo devas esti restartigita por kompletigi la instaladon de $(^NameDA). Cxu restartigi nun?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Oni finigas la Gvidilon por Malinstalado de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) estis forigita el via komputilo.$\r$\n$\r$\nMusklaku en Finigi por fermi tiun cxi gvidilon." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Via komputilo devas esti restartigita por kompletigi la malinstaladon de $(^NameDA). Cxu restartigi nun?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Restartigi Nun" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Mi volas restartigi permane poste" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Lancxi $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Montri Legumin" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Finigi" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Elektu Dosierujon de la Ek-Menuo" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Elektu dosierujon de la Ek-Menuo por la lancxiloj de la programo." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Elektu dosierujon de la Ek-Menuo en kiu vi deziras krei la lancxilojn de la programo. Vi povas ankaux tajpi nomon por krei novan ujon." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ne krei lancxilojn" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Malinstali $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Forigi $(^NameDA) el via komputilo." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Cxu vi certe deziras nuligi la instaladon de $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Cxu vi certe deziras nuligi la malinstaladon de $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Elekti Uzantojn" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Elekti por kiuj uzantoj vi deziras instali $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Elektu cxu vi volas instali $(^NameDA) por vi mem aux por cxiuj uzantoj de tiu cxi komputilo. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instali por iu ajn uzanto de tiu cxi komputilo" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instali nur por mi" +!endif diff --git a/tools/Contrib/Language files/Estonian.nlf b/tools/Contrib/Language files/Estonian.nlf new file mode 100644 index 0000000..d43f259 --- /dev/null +++ b/tools/Contrib/Language files/Estonian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1061 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1257 +# RTL - anything else than RTL means LTR +- +# Translation by izzo (izzo@hot.ee) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Paigaldamine +# ^UninstallCaption +$(^Name) Eemaldamine +# ^LicenseSubCaption +: Litsentsileping +# ^ComponentsSubCaption +: Paigaldusvalikud +# ^DirSubCaption +: Paigalduskaust +# ^InstallingSubCaption +: Paigaldan +# ^CompletedSubCaption +: Valmis +# ^UnComponentsSubCaption +: Eemaldusvalikud +# ^UnDirSubCaption +: Eemalduskaust +# ^ConfirmSubCaption +: Kinnitus +# ^UninstallingSubCaption +: Eemaldan +# ^UnCompletedSubCaption +: Valmis +# ^BackBtn +< Tagasi +# ^NextBtn +Edasi > +# ^AgreeBtn +Nõustun +# ^AcceptBtn +Nõustun litsentsilepingu tingimustega +# ^DontAcceptBtn +Ei nõustu litsentsilepingu tingimustega +# ^InstallBtn +Paigalda +# ^UninstallBtn +Eemalda +# ^CancelBtn +Loobu +# ^CloseBtn +Sule +# ^BrowseBtn +Sirvi... +# ^ShowDetailsBtn +Detailid +# ^ClickNext +Jätkamiseks vajuta Edasi. +# ^ClickInstall +Paigaldamise alustamiseks vajuta Paigalda. +# ^ClickUninstall +Eemaldamise alustamiseks vajuta Eemalda. +# ^Name +Nimi +# ^Completed +Valmis +# ^LicenseText +Enne $(^NameDA) paigaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, vajuta Nõustun. +# ^LicenseTextCB +Enne $(^NameDA) paigaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, vali allolev märkeruut. $_CLICK +# ^LicenseTextRB +Enne $(^NameDA) paigaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, märgi allpool esimene valik. $_CLICK +# ^UnLicenseText +Enne $(^NameDA) eemaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, vajuta Nõustun. +# ^UnLicenseTextCB +Enne $(^NameDA) eemaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, vali allolev märkeruut. $_CLICK +# ^UnLicenseTextRB +Enne $(^NameDA) eemaldamist vaata palun litsentsileping üle. Kui sa nõustud kõigi lepingu tingimustega, märgi allpool esimene valik. $_CLICK +# ^Custom +Kohandatud +# ^ComponentsText +Märgista komponendid mida soovid paigaldada ja eemalda märgistus neilt, mida ei soovi paigaldada. $_CLICK +# ^ComponentsSubText1 +Vali paigalduse tüüp: +# ^ComponentsSubText2_NoInstTypes +Vali paigaldatavad komponendid: +# ^ComponentsSubText2 +või vali lisakomponendid mida soovid paigaldada: +# ^UnComponentsText +Märgista komponendid mida soovid eemaldada ja eemalda märgistus neilt, mida ei soovi eemaldada. $_CLICK +# ^UnComponentsSubText1 +Vali eemalduse tüüp: +# ^UnComponentsSubText2_NoInstTypes +Vali eemaldatavad komponendid: +# ^UnComponentsSubText2 +või vali lisakomponendid mida soovid eemaldada: +# ^DirText +$(^NameDA) paigaldatakse järgmisse kausta. Et mujale paigaldada, vajuta sirvi ja vali teine kaust. $_CLICK +# ^DirSubText +Sihtkaust +# ^DirBrowseText +Vali kaust kuhu $(^NameDA) paigaldada: +# ^UnDirText +$(^NameDA) eemaldatakse järgmisest kaustast. Et mujalt eemaldada, vajuta sirvi ja vali teine kaust. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Vali kaust kust $(^NameDA) eemaldada: +# ^SpaceAvailable +"Vaba ruum: " +# ^SpaceRequired +"Vajalik ruum: " +# ^UninstallingText +$(^NameDA) eemaldatakse järgmisest kaustast. $_CLICK +# ^UninstallingSubText +Eemaldan sealt: +# ^FileError +Tõrge faili avamisel kirjutamiseks: \r\n\t"$0"\r\nPaigalduse katkestamiseks vajuta Katkesta,\r\nvajuta Ürita uuesti, et faili kirjutamist uuesti proovida, või\r\nIgnoreeri, et see fail vahele jätta. +# ^FileError_NoIgnore +Tõrge faili avamisel kirjutamiseks: \r\n\t"$0"\r\nVajuta Ürita uuesti, et faili kirjutamist uuesti proovida, või\r\nLoobu, et paigaldamine katkestada +# ^CantWrite +"Ei saa kirjutada: " +# ^CopyFailed +Kopeerimine ebaõnnestus +# ^CopyTo +"Kopeeri sinna " +# ^Registering +"Registreerin: " +# ^Unregistering +"Deregistreerin: " +# ^SymbolNotFound +"Ei leidnud sümbolit: " +# ^CouldNotLoad +"Ei saanud laadida: " +# ^CreateFolder +"Loo kaust: " +# ^CreateShortcut +"Loo otsetee: " +# ^CreatedUninstaller +"Loodud eemaldaja: " +# ^Delete +"Kustuta fail: " +# ^DeleteOnReboot +"Kustuta taaskäivitamisel: " +# ^ErrorCreatingShortcut +"Tõrge otsetee loomisel: " +# ^ErrorCreating +"Tõrge loomisel: " +# ^ErrorDecompressing +Tõrge andmete lahtipakkimisel! Vigane paigaldaja? +# ^ErrorRegistering +Tõrge DLL-i registreerimisel +# ^ExecShell +"ExecShell: " +# ^Exec +"Käivita: " +# ^Extract +"Paki lahti: " +# ^ErrorWriting +"Paki lahti: viga faili kirjutamisel " +# ^InvalidOpcode +Paigaldaja kõlbmatu: vigane opkood +# ^NoOLE +"No OLE for: " +# ^OutputFolder +"Väljastatav kaust: " +# ^RemoveFolder +"Eemalda kaust: " +# ^RenameOnReboot +"Taaskäivitusel nimeta ümber: " +# ^Rename +"Nimeta ümber: " +# ^Skipped +"Vahele jäetud: " +# ^CopyDetails +Kopeeri detailid lõikelauale +# ^LogInstall +Logi paigaldusprotsess +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Estonian.nsh b/tools/Contrib/Language files/Estonian.nsh new file mode 100644 index 0000000..a780a6f --- /dev/null +++ b/tools/Contrib/Language files/Estonian.nsh @@ -0,0 +1,121 @@ +;Language: Estonian (1061) +;Translated by johnny izzo (izzo@hot.ee) + +!insertmacro LANGFILE "Estonian" = "Eesti keel" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "$(^NameDA) paigaldamine!" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "See abiline aitab paigaldada $(^NameDA).$\r$\n$\r$\nEnne paigaldamise alustamist on soovitatav kõik teised programmid sulgeda, see võimaldab teatud süsteemifaile uuendada ilma arvutit taaskäivitamata.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "$(^NameDA) eemaldamine!" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "See abiline aitab eemaldada $(^NameDA).$\r$\n$\r$\nEnne eemaldamist vaata, et $(^NameDA) oleks suletud.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Litsentsileping" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Enne $(^NameDA) paigaldamist vaata palun litsentsileping üle." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Kui sa oled lepingu tingimustega nõus, vali jätkamiseks Nõustun. $(^NameDA) paigaldamiseks pead sa lepinguga nõustuma." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Kui nõustud lepingu tingimustega, vali allolev märkeruut. $(^NameDA) paigaldamiseks pead lepinguga nõustuma. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kui nõustud lepingu tingimustega, märgi allpool esimene valik. $(^NameDA) paigaldamiseks pead lepinguga nõustuma. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Litsentsileping" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Enne $(^NameDA) eemaldamist vaata palun litsentsileping üle." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Kui sa oled lepingu tingimustega nõus, vali jätkamiseks Nõustun. $(^NameDA) eemaldamiseks pead sa lepinguga nõustuma." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Kui nõustud lepingu tingimustega, vali allolev märkeruut. $(^NameDA) eemaldamiseks pead lepinguga nõustuma. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kui nõustud lepingu tingimustega, märgi allpool esimene valik. $(^NameDA) eemaldamiseks pead lepinguga nõustuma. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Vajuta Page Down, et näha ülejäänud teksti." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Vali komponendid" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Vali millised $(^NameDA) osad sa soovid paigaldada." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Vali komponendid" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Vali millised $(^NameDA) osad sa soovid eemaldada." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Kirjeldus" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Nihuta hiir komponendile, et näha selle kirjeldust." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Vali komponent, et näha selle kirjeldust." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Vali asukoht" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Vali kaust kuhu paigaldada $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Vali asukoht" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Vali kaust kust $(^NameDA) eemaldada." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Paigaldan..." + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Palun oota kuni $(^NameDA) on paigaldatud." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Programm paigaldatud" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Paigaldus edukalt sooritatud." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Paigaldus katkestatud" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Paigaldamine ebaõnnestus." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Eemaldan..." + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Palun oota kuni $(^NameDA) on eemaldatud." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Eemaldamine lõpetatud" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Eemaldamine edukalt lõpule viidud." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Eemaldamine katkestatud" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Eemaldamine ebaõnestus." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "$(^NameDA) paigalduse lõpule viimine." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) on sinu arvutisse paigaldatud.$\r$\n$\r$\nAbilise sulgemiseks vajuta Lõpeta." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "$(^NameDA) täielikuks paigaldamiseks tuleb arvuti taaskäivitada. Kas soovid arvuti kohe taaskäivitada ?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "$(^NameDA) eemaldamise lõpule viimine." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) on sinu arvutist eemaldatud.$\r$\n$\r$\nAbilise sulgemiseks vajuta Lõpeta." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "$(^NameDA) täielikuks eemaldamiseks tuleb arvuti taaskäivitada. Kas soovid arvuti kohe taaskäivitada ?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Taaskäivita kohe" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Taaskäivitan hiljem käsitsi" + ${LangFileString} MUI_TEXT_FINISH_RUN "Käivita $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Kuva Loemind" + ${LangFileString} MUI_BUTTONTEXT_FINISH "Lõpeta" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Vali Start-menüü kaust" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Vali $(^NameDA) otseteede jaoks Start-menüü kaust." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Vali Start-menüü kaust, kuhu soovid paigutada programmi otseteed. Võid ka sisestada nime, et luua uus kaust." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ära loo otseteid" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Eemalda $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Eemalda $(^NameDA) oma arvutist." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Oled sa kindel et soovid $(^Name) paigaldamise katkestada?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Oled sa kindel et soovid $(^Name) eemaldamise katkestada?" +!endif diff --git a/tools/Contrib/Language files/Farsi.nlf b/tools/Contrib/Language files/Farsi.nlf new file mode 100644 index 0000000..b048e44 --- /dev/null +++ b/tools/Contrib/Language files/Farsi.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1065 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1256 +# RTL - anything else than RTL means LTR +RTL +# Translation By FzerorubigD - FzerorubigD@gmail.com - Thanx to all people help me in forum.persiantools.com, Elnaz Sarbar +# ^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\n برای توقف نصب روی Abort \r\n برای تلاش مجدد روی Retry \r\n و برای صرف‌نظر از این پرونده روی Ignore کلیک کنید. +# ^FileError_NoIgnore +خطا هنگام باز کردن پرونده برای نوشتن: \r\n\r\n$0\r\n\nبرای تلاش مجدد روی Retry\r\nو برای انصراف روی Cancel کلیک کنید. +# ^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 + گیگا diff --git a/tools/Contrib/Language files/Farsi.nsh b/tools/Contrib/Language files/Farsi.nsh new file mode 100644 index 0000000..bb0adb4 --- /dev/null +++ b/tools/Contrib/Language files/Farsi.nsh @@ -0,0 +1,121 @@ +;Language: Farsi (1065) +;By FzerorubigD - FzerorubigD@gmail.com - Thanx to all people help me in forum.persiantools.com + +!insertmacro LANGFILE "Farsi" "Persian" "فارسی" "Farsi" + +!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 "آیا مطمئنید که می‌خواهید از برنامه نصب $(^Name) خارج شوید؟" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "آیا مطمئنید که می‌خواهید از برنامه حذف $(^Name) خارج شوید؟" +!endif diff --git a/tools/Contrib/Language files/Finnish.nlf b/tools/Contrib/Language files/Finnish.nlf new file mode 100644 index 0000000..b9fdf3b --- /dev/null +++ b/tools/Contrib/Language files/Finnish.nlf @@ -0,0 +1,193 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1035 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Eclipser (Jonne Lehtinen) +# Corrections by the Mozilla.fi crew +# Upd 11/08 by WTLib Team +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) -ohjelman asennus +# ^UninstallCaption +$(^Name) -ohjelman poisto +# ^LicenseSubCaption +: Lisenssisopimus +# ^ComponentsSubCaption +: Asennusvaihtoehdot +# ^DirSubCaption +: Asennuskansio +# ^InstallingSubCaption +: Asennetaan +# ^CompletedSubCaption +: Valmis +# ^UnComponentsSubCaption +: Poistovaihtoehdot +# ^UnDirSubCaption +: Poistokansio +# ^ConfirmSubCaption +: Varmistus +# ^UninstallingSubCaption +: Poistetaan +# ^UnCompletedSubCaption +: Valmis +# ^BackBtn +< &Takaisin +# ^NextBtn +&Seuraava > +# ^AgreeBtn +&Hyväksyn +# ^AcceptBtn +Hyväksyn lisenssisopimuksen ehdot +# ^DontAcceptBtn +En hyväksy sopimuksen ehtoja +# ^InstallBtn +&Asenna +# ^UninstallBtn +&Poista +# ^CancelBtn +Peruuta +# ^CloseBtn +&Sulje +# ^BrowseBtn +S&elaa... +# ^ShowDetailsBtn +&Näytä tiedot +# ^ClickNext +Valitse Seuraava jatkaaksesi. +# ^ClickInstall +Valitse Asenna aloittaaksesi asennuksen. +# ^ClickUninstall +Valitse Poista poistaaksesi asennuksen. +# ^Name +Nimi +# ^Completed +Valmis +# ^LicenseText +Lue lisenssisopimus ennen asentamista. Jos hyväksyt sopimuksen kaikki ehdot, valitse Hyväksyn. +# ^LicenseTextCB +Lue lisenssisopimus ennen asentamista. Jos hyväksyt sopimuksen kaikki ehdot, laita rasti ruutuun. $_CLICK +# ^LicenseTextRB +Lue lisenssisopimus ennen asentamista. Jos hyväksyt sopimuksen kaikki ehdot, valitse ensimmäinen vaihtoehto alapuolelta. $_CLICK +# ^UnLicenseText +Lue lisenssisopimus ennen poistamista. Jos hyväksyt sopimuksen kaikki ehdot, valitse Hyväksyn. +# ^UnLicenseTextCB +Lue lisenssisopimus ennen poistamista. Jos hyväksyt sopimuksen kaikki ehdot, laita rasti ruutuun. $_CLICK +# ^UnLicenseTextRB +Lue lisenssisopimus ennen poistamista. Jos hyväksyt sopimuksen kaikki ehdot, valitse ensimmäinen vaihtoehto alapuolelta. $_CLICK +# ^Custom +Oma +# ^ComponentsText +Valitse komponentit, jotka haluat asentaa, ja poista valinta komponenteista, joita et halua asentaa. $_CLICK +# ^ComponentsSubText1 +Valitse asennustyyppi: +# ^ComponentsSubText2_NoInstTypes +Valitse asennettavat komponentit: +# ^ComponentsSubText2 +Tai, valitse valinnaiset komponentit, jotka haluat asentaa: +# ^UnComponentsText +Valitse komponentit, jotka haluat poistaa, ja poista valinta komponenteista, joita et haluat poistaa. $_CLICK +# ^UnComponentsSubText1 +Valitse poistotyyppi: +# ^UnComponentsSubText2_NoInstTypes +Valitse poistettavat komponentit: +# ^UnComponentsSubText2 +Tai, valitse valinnaiset komponentit, jotka haluat poistaa +# ^DirText +$(^NameDA) -ohjelma asennetaan seuraavaan kansioon. Jos haluat asentaa sen johonkin muuhun kansioon, valitse Selaa, ja valitse toinen kansio. $_CLICK +# ^DirSubText +Kohdekansio +# ^DirBrowseText +Valitse kansio, johon haluat asentaa ohjelman $(^NameDA): +# ^UnDirText +Poistetaan ohjelman $(^NameDA) seuraavasta kansiosta. Jos haluat poistaa sen jostakin muusta kansiosta, valitse Selaa, ja valitse toinen kansio. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Valitse kansio, josta haluat poistaa ohjelman $(^NameDA): +# ^SpaceAvailable +"Tilaa vapaana: " +# ^SpaceRequired +"Tarvittava tila: " +# ^UninstallingText +Tämä ohjelma poistaa ohjelman $(^NameDA) tietokoneelta. $_CLICK +# ^UninstallingSubText +Poistetaan kansiosta: +# ^FileError +Tiedostoon ei voitu kirjoittaa: \r\n\t"$0"\r\nLopeta asennus valitsemalla Hylkää,\r\nyritä uudelleen valitsemalla Uudelleen, tai\r\nohita tiedosto valitsemalla Ohita +# ^FileError_NoIgnore +Tiedostoon ei voitu kirjoittaa: \r\n\t"$0"\r\nYritä uudelleen valitsemalla Uudelleen, tai\r\nlopeta asennus valitsemalla Hylkää +# ^CantWrite +"Ei voi kirjoittaa: " +# ^CopyFailed +Kopiointi epäonnistui +# ^CopyTo +"Kopioidaan kohteeseen " +# ^Registering +"Rekisteröidään: " +# ^Unregistering +"Poistetaan rekisteröinti: " +# ^SymbolNotFound +"Symbolia ei löytynyt: " +# ^CouldNotLoad +"Ei voitu ladata: " +# ^CreateFolder +"Luo kansio: " +# ^CreateShortcut +"Luo pikakuvake: " +# ^CreatedUninstaller +"Poisto-ohjelma luotiin: " +# ^Delete +"Poista: " +# ^DeleteOnReboot +"Poista käynnistyksen yhteydessä: " +# ^ErrorCreatingShortcut +"Virhe luotaessa pikakuvaketta: " +# ^ErrorCreating +"Virhe luotaessa: " +# ^ErrorDecompressing +Pakettia ei voitu purkaa. Korruptoitunut asennusohjelma? +# ^ErrorRegistering +Virhe rekisteröidessä DLL-tiedostoa +# ^ExecShell +"ExecShell: " +# ^Exec +"Suorita: " +# ^Extract +"Pura: " +# ^ErrorWriting +"Pura: tiedostoon ei voitu kirjoittaa " +# ^InvalidOpcode +Asennuspaketti on vioittunut: virheellinen opcode +# ^NoOLE +"Ei OLEa: " +# ^OutputFolder +"Kansio: " +# ^RemoveFolder +"Poista kansio: " +# ^RenameOnReboot +"Muuta nimi uudelleenkäynnistyksen yhteydessä: " +# ^Rename +"Muuta nimi: " +# ^Skipped +"Ohitettiin: " +# ^CopyDetails +Kopioi tiedot leikepöydälle +# ^LogInstall +Tallenna asennusloki +# ^Byte +t +# ^Kilo + k +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Finnish.nsh b/tools/Contrib/Language files/Finnish.nsh new file mode 100644 index 0000000..dfed388 --- /dev/null +++ b/tools/Contrib/Language files/Finnish.nsh @@ -0,0 +1,124 @@ +;Compatible with Modern UI 1.86 +;Language: Finnish (1035) +;By Eclipser (Jonne Lehtinen) +;Updated by Puuhis (puuhis@puuhis.net) +;Updated 11/08 by WTLib Team + +!insertmacro LANGFILE "Finnish" = "Suomi" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Tervetuloa $(^NameDA) -ohjelman asennukseen" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Saat tarvittavia ohjeita sitä mukaa kuin $(^NameDA) -ohjelman asennus edistyy.$\r$\n$\r$\nOn suositeltavaa sulkea kaikki muut ohjelmat ennen asennuksen aloittamista, jotta asennus voi päivittää järjestelmätiedostoja käynnistämättä konetta uudelleen.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Tervetuloa $(^NameDA) -ohjelman poisto-ohjelmaan" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Saat tarvittavia ohjeita sitä mukaa kuin $(^NameDA) -ohjelman poisto edistyy.$\r$\n$\r$\nEnnen poiston aloittamista varmista, ettei $(^NameDA) ole käynnissä.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Käyttöoikeussopimus" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lue käyttöehdot huolellisesti ennen $(^NameDA) -ohjelman asentamista." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jos hyväksyt ehdot, valitse Hyväksyn. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jos hyväksyt ehdot, laita rasti alla olevaan ruutuun. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jos hyväksyt ehdot, valitse ensimmäinen vaihtoehto alapuolelta. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Käyttöoikeussopimus" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lue käyttöehdot huolellisesti ennen $(^NameDA) -ohjelman poistoa." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jos hyväksyt ehdot, valitse Hyväksyn. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jos hyväksyt ehdot, laita rasti alla olevaan ruutuun. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jos hyväksyt ehdot, valitse ensimmäinen vaihtoehto alapuolelta. Ohjelman asentaminen edellyttää käyttöehtojen hyväksymistä. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Paina Page Down -näppäintä nähdäksesi loput sopimuksesta." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Valitse komponentit" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Valitse toiminnot, jotka haluat asentaa ohjelmaan $(^NameDA)." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Valitse komponentit" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Valitse $(^NameDA) toiminnot, jotka haluat poistaa." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Selitys" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Siirrä hiiri komponentin nimen päälle nähdäksesi sen selityksen." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Valitse komponentti nähdäksesi sen selityksen." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Valitse asennuskansio" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Valitse kansio, johon haluat asentaa $(^NameDA) -ohjelman." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Valitse kansio, josta poistetaan" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Valitse kansio, josta $(^NameDA) poistetaan." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Asennetaan" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Odota... $(^NameDA) asennetaan..." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Asennus valmis." + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Asennus onnistui." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Asennus keskeytyi." + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Asennus ei onnistunut." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Poistetaan" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Odota... $(^NameDA) poistetaan." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Poisto valmis." + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Poisto onnistui." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Poisto keskeytyi." + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Poisto epäonnistui." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "$(^NameDA) -ohjelman asennus on valmis" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) on asennettu tietokoneelle.$\r$\n$\r$\nValitse Valmis sulkeaksesi asennusohjelman." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "$(^NameDA) -ohjelman asennuksen viimeisteleminen edellyttää tietokoneen uudelleenkäynnistämistä. Haluatko käynnistää tietokoneen uudelleen nyt?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "$(^NameDA) on poistettu" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) on poistettu tietokoneelta.$\r$\n$\r$\nValitse Lopeta sulkeaksesi poisto-ohjelman." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "$(^NameDA) -ohjelman poiston viimeisteleminen edellyttää tietokoneen uudelleenkäynnistämistä. Haluatko käynnistää tietokoneen uudelleen nyt?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Käynnistä uudelleen nyt" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Käynnistän uudelleen myöhemmin" + ${LangFileString} MUI_TEXT_FINISH_RUN "Käynnistä $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Näytä Lueminut-tiedosto" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Valmis" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Valitse Käynnistä-valikon kansio" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Valitse Käynnistä-valikon kansio, johon ohjelman pikakuvakkeet asennetaan." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Valitse Käynnistä-valikon kansio, johon haluat asentaa ohjelman pikakuvakkeet. Voit myös kirjoittaa uuden kansion nimen." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Älä luo pikakuvakkeita." +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Poista $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Poista $(^NameDA) tietokoneesta." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Haluatko varmasti keskeyttää $(^Name) -ohjelman asennuksen?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Haluatko varmasti keskeyttää $(^Name) -ohjelman poiston?" +!endif diff --git a/tools/Contrib/Language files/French.nlf b/tools/Contrib/Language files/French.nlf new file mode 100644 index 0000000..e30d2a6 --- /dev/null +++ b/tools/Contrib/Language files/French.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +1036 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by the French NSIS team - http://www.winampfr.com/nsis. +# Updated to v6 by Jerome Charaoui (lavamind@inetflex.com) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Installation de $(^Name) +# ^UninstallCaption +Désinstallation de $(^Name) +# ^LicenseSubCaption +: Licence +# ^ComponentsSubCaption +: Options d'installation +# ^DirSubCaption +: Dossier d'installation +# ^InstallingSubCaption +: Installation des fichiers +# ^CompletedSubCaption +: Terminé +# ^UnComponentsSubCaption +: Options de désinstallation +# ^UnDirSubCaption +: Dossier de désinstallation +# ^ConfirmSubCaption +: Confirmation +# ^UninstallingSubCaption +: Désinstallation des fichiers +# ^UnCompletedSubCaption +: Terminé +# ^BackBtn +< &Précédent +# ^NextBtn +&Suivant > +# ^AgreeBtn +J'a&ccepte +# ^AcceptBtn +J'a&ccepte les termes de la licence +# ^DontAcceptBtn +Je &n'accepte pas les termes de la licence +# ^InstallBtn +&Installer +# ^UninstallBtn +&Désinstaller +# ^CancelBtn +Annuler +# ^CloseBtn +&Fermer +# ^BrowseBtn +P&arcourir... +# ^ShowDetailsBtn +P&lus d'infos +# ^ClickNext +Cliquez sur Suivant pour continuer. +# ^ClickInstall +Cliquez sur Installer pour démarrer l'installation. +# ^ClickUninstall +Cliquez sur Désinstaller pour démarrer la désinstallation. +# ^Name +Nom +# ^Completed +Terminé +# ^LicenseText +Veuillez examiner le contrat de licence avant d'installer $(^NameDA). Si vous acceptez tous les termes du contrat, cliquez sur J'accepte. +# ^LicenseTextCB +Veuillez examiner le contrat de licence avant d'installer $(^NameDA). Si vous acceptez tous les termes du contrat, cochez la boîte de contrôle ci-dessous. $_CLICK +# ^LicesnseTextRB +Veuillez examiner le contrat de licence avant d'installer $(^NameDA). Si vous acceptez tous les termes du contrat, sélectionnez la première option ci-dessous. $_CLICK +# ^UnLicenseText +Veuillez examiner le contrat de licence avant de désinstaller $(^NameDA). Si vous acceptez tous les termes du contrat, cliquez sur J'accepte. +# ^UnLicenseTextCB +Veuillez examiner le contrat de licence avant de désinstaller $(^NameDA). Si vous acceptez tous les termes du contrat, cochez la boîte de contrôle ci-dessous. $_CLICK +# ^UnLicesnseTextRB +Veuillez examiner le contrat de licence avant de désinstaller $(^NameDA). Si vous acceptez tous les termes du contrat, sélectionnez la première option ci-dessous. $_CLICK +# ^Custom +Personnalisée +# ^ComponentsText +Cochez les composants que vous désirez installer et décochez ceux que vous ne désirez pas installer. $_CLICK +# ^ComponentsSubText1 +Type d'installation : +# ^ComponentsSubText2_NoInstTypes +Sélectionnez les composants à installer : +# ^ComponentsSubText2 +Ou, sélectionnez les composants optionnels que vous voulez installer : +# ^UnComponentsText +Cochez les composants que vous désirez désinstaller et décochez ceux que vous ne désirez pas désinstaller. $_CLICK +# ^UnComponentsSubText1 +Sélectionnez le type de désinstallation : +# ^UnComponentsSubText2_NoInstTypes +Sélectionnez les composants à désinstaller : +# ^UnComponentsSubText2 +Ou, sélectionnez les composants optionnels que vous voulez désinstaller : +# ^DirText +Ceci installera $(^NameDA) dans le dossier suivant. Pour installer dans un autre dossier, cliquez sur Parcourir et choisissez un autre dossier. $_CLICK +# ^DirSubText +Dossier d'installation +# ^DirBrowseText +Sélectionnez le dossier d'installation pour $(^NameDA) : +# ^UnDirText +Ceci désinstallera $(^NameDA) du dossier suivant. Pour désinstaller d'un autre dossier, cliquez sur Parcourir et choisissez un autre dossier. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Sélectionnez le dossier de désinstallation pour $(^NameDA) : +# ^SpaceAvailable +"Espace disponible : " +# ^SpaceRequired +"Espace requis : " +# ^UninstallingText +Ce programme désinstallera $(^NameDA) de votre ordinateur. $_CLICK +# ^UninstallingSubText +Désinstallation à partir de : +# ^FileError +Erreur lors de l'ouverture du fichier en écriture : \r\n\t"$0"\r\nAppuyez sur Abandonner pour annuler l'installation,\r\nRéessayer pour réessayer l'écriture du fichier, ou\r\nIgnorer pour passer ce fichier +# ^FileError_NoIgnore +Erreur lors de l'ouverture du fichier en écriture : \r\n\t"$0"\r\nAppuyez sur Réessayez pour re-écrire le fichier, ou\r\nAnnuler pour abandonner l'installation +# ^CantWrite +"Impossible d'écrire : " +# ^CopyFailed +Échec de la copie +# ^CopyTo +"Copier vers " +# ^Registering +"Enregistrement : " +# ^Unregistering +"Suppression de l'enregistrement : " +# ^SymbolNotFound +"Impossible de trouver un symbole : " +# ^CouldNotLoad +"Impossible de charger : " +# ^CreateFolder +"Création du dossier : " +# ^CreateShortcut +"Création du raccourci : " +# ^CreatedUninstaller +"Création de la désinstallation : " +# ^Delete +"Suppression : " +# ^DeleteOnReboot +"Suppression au redémarrage : " +# ^ErrorCreatingShortcut +"Erreur lors de la création du raccourci : " +# ^ErrorCreating +"Erreur de la création : " +# ^ErrorDecompressing +Erreur lors de la décompression des données ! Installation corrompue ? +# ^ErrorRegistering +Erreur lors de l'enregistrement de la DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Exécution : " +# ^Extract +"Extraction : " +# ^ErrorWriting +"Extraction : erreur d'écriture du fichier " +# ^InvalidOpcode +Installation corrompue : opcode incorrect +# ^NoOLE +"Pas de OLE pour : " +# ^OutputFolder +"Destination : " +# ^RemoveFolder +"Suppression du dossier : " +# ^RenameOnReboot +"Renommer au redémarrage : " +# ^Rename +"Renommer : " +# ^Skipped +"Passé : " +# ^CopyDetails +Copier les Détails dans le Presse-papier +# ^LogInstall +Enregistrer le déroulement de l'installation +# ^Byte +o +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/French.nsh b/tools/Contrib/Language files/French.nsh new file mode 100644 index 0000000..282d2cd --- /dev/null +++ b/tools/Contrib/Language files/French.nsh @@ -0,0 +1,129 @@ +;Language: French (1036) +;By Sébastien Delahaye + +!insertmacro LANGFILE "French" = "Français" "Francais" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bienvenue dans le programme d'installation de $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Vous êtes sur le point d'installer $(^NameDA) sur votre ordinateur.$\r$\n$\r$\nAvant de démarrer l'installation, il est recommandé de fermer toutes les autres applications. Cela permettra la mise à jour de certains fichiers système sans redémarrer votre ordinateur.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bienvenue dans le programme de désinstallation de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Vous êtes sur le point de désinstaller $(^NameDA) de votre ordinateur.$\r$\n$\r$\nAvant d'amorcer la désinstallation, assurez-vous que $(^NameDA) ne soit pas en cours d'exécution.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licence utilisateur" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Veuillez examiner les termes de la licence avant d'installer $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Si vous acceptez les conditions de la licence utilisateur, cliquez sur J'accepte pour continuer. Vous devez accepter la licence utilisateur afin d'installer $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si vous acceptez les conditions de la licence utilisateur, cochez la case ci-dessous. Vous devez accepter la licence utilisateur afin d'installer $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si vous acceptez les conditions de la licence utilisateur, sélectionnez le premier choix ci-dessous. Vous devez accepter la licence utilisateur afin d'installer $(^NameDA)." +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licence utilisateur" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Veuillez examiner les conditions de la licence avant de désinstaller $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Si vous acceptez les conditions de la licence utilisateur, cliquez sur J'accepte pour continuer. Vous devez accepter la licence utilisateur afin de désinstaller $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si vous acceptez les conditions de la licence utilisateur, cochez la case ci-dessous. Vous devez accepter la licence utilisateur afin de désintaller $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si vous acceptez les conditions de la licence utilisateur, sélectionnez le premier choix ci-dessous. Vous devez accepter la licence utilisateur afin de désinstaller $(^NameDA)." +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Appuyez sur Page Suivante pour lire le reste de la licence utilisateur." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Choisissez les composants" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Choisissez les composants de $(^NameDA) que vous souhaitez installer." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Choisissez les composants" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Cochez les composants de $(^NameDA) que vous souhaitez désinstaller." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Description" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Passez le curseur de votre souris sur un composant pour en voir la description." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Sélectionnez un composant pour en voir la description." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Choisissez le dossier d'installation" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Choisissez le dossier dans lequel installer $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Choisissez le dossier de désinstallation" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Choisissez le dossier à partir duquel vous voulez désinstaller $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installation en cours" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Veuillez patienter pendant l'installation de $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installation terminée" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "L'installation s'est terminée avec succès." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installation interrompue" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "L'installation n'a pas été terminée." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Désinstallation en cours" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Veuillez patienter pendant la désinstallation de $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Désinstallation terminée" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La désinstallation s'est terminée avec succès." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Désinstallation interrompue" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La désinstallation n'a pas été terminée." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Fin de l'installation de $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) a été installé sur votre ordinateur.$\r$\n$\r$\nCliquez sur Fermer pour quitter le programme d'installation." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Votre ordinateur doit être redémarré afin de compléter l'installation de $(^NameDA). Souhaitez-vous redémarrer maintenant ?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Fin de la désinstallation de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) a été supprimé de votre ordinateur.$\r$\n$\r$\nCliquez sur Fermer pour quitter le programme d'installation." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Votre ordinateur doit être redémarré pour terminer la désinstallation de $(^NameDA). Souhaitez-vous redémarrer maintenant ?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Redémarrer maintenant" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Je souhaite redémarrer moi-même plus tard" + ${LangFileString} MUI_TEXT_FINISH_RUN "Lancer $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Afficher le fichier Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Fermer" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Choisissez un dossier dans le menu Démarrer" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Choisissez un dossier dans le menu Démarrer pour les raccourcis de l'application." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Choisissez le dossier du menu Démarrer dans lequel vous voulez placer les raccourcis du programme. Vous pouvez également entrer un nouveau nom pour créer un nouveau dossier." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ne pas créer de raccourcis" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Désinstaller $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Supprimer $(^NameDA) de votre ordinateur." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Êtes-vous sûr de vouloir quitter l'installation de $(^Name) ?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Êtes-vous sûr de vouloir quitter la désinstallation de $(^Name) ?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Choix des utilisateurs" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Sélection des utilisateurs désirant utiliser $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Choix entre installer $(^NameDA) seulement pour vous-même ou bien pour tous les utilisateurs du système. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installer pour tous les utilisateurs" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installer seulement pour moi" +!endif diff --git a/tools/Contrib/Language files/Galician.nlf b/tools/Contrib/Language files/Galician.nlf new file mode 100644 index 0000000..1d1d4f8 --- /dev/null +++ b/tools/Contrib/Language files/Galician.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1110 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation v 1.0.0 by Ramon Flores +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalación de $(^Name) +# ^UninstallCaption +Desinstalación de $(^Name) +# ^LicenseSubCaption +: Contrato de licenza +# ^ComponentsSubCaption +: Opcións de instalación +# ^DirSubCaption +: Diretória de instalación +# ^InstallingSubCaption +: Instalando ficheiros +# ^CompletedSubCaption +: Concluído +# ^UnComponentsSubCaption +: Opcións de desinstalación +# ^UnDirSubCaption +: Cartafol de desinstalación +# ^ConfirmSubCaption +: Confirmación +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Concluído +# ^BackBtn +< &Anterior +# ^NextBtn +&Seguinte > +# ^AgreeBtn +&Aceito +# ^AcceptBtn +Eu &aceito os termos do Contrato de licenza +# ^DontAcceptBtn +Eu &non aceito os termos do Contrato de licenza +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Cancelar +# ^CloseBtn +&Fechar +# ^BrowseBtn +&Procurar... +# ^ShowDetailsBtn +Ver &Detalles +# ^ClickNext +Clique en 'Seguinte' para continuar. +# ^ClickInstall +Clique en 'Instalar' para iniciar a instalación. +# ^ClickUninstall +Clique en 'Desinstalar' para iniciar a desinstalación. +# ^Name +Nome +# ^Completed +Concluído +# ^LicenseText +Por favor revexa o acordo de licenza antes de instalar $(^NameDA). Se concordar con todos os termos da licenza, clique em 'Aceito'. +# ^LicenseTextCB +Por favor reveja o acordo de licenza antes de instalar $(^NameDA). Se concordar con todos os termos da licenza, clique na caixa de selección abaixo. $_CLICK +# ^LicenseTextRB +Por favor revexa o acordo de licenza antes de instalar $(^NameDA). Se concordar con todos os termos da licenza, escolla a primeira opción abaixo. $_CLICK +# ^UnLicenseText +Por favor revexa o acordo de licenza antes de desinstalar $(^NameDA). Se concordar con todos os termos da licenza, clique em 'Aceito'. +# ^UnLicenseTextCB +Por favor reveja o acordo de licenza antes de desinstalar $(^NameDA). Se concordar con todos os termos da licenza, clique na caixa de selección abaixo. $_CLICK +# ^UnLicenseTextRB +Por favor revexa o acordo de licenza antes de desinstalar $(^NameDA). Se concordar con todos os termos da licenza, escolla a primeira opción abaixo. $_CLICK +# ^Custom +Personalizado +# ^ComponentsText +Marque os componentes que desexa instalar e desmarque os componentes que non desexa instalar. $_CLICK +# ^ComponentsSubText1 +Escolla o tipo de instalación: +# ^ComponentsSubText2_NoInstTypes +Escolla os componentes para instalar: +# ^ComponentsSubText2 +Ou, escolla os componentes opcionais que desexa instalar: +# ^UnComponentsText +Marque os componentes que queira desinstalar e vice versa. $_CLICK +# ^UnComponentsSubText1 +Escolla o tipo de desinstalación: +# ^UnComponentsSubText2_NoInstTypes +Escolla os componentes para desinstalar: +# ^UnComponentsSubText2 +Ou, escolla os componentes opcionais que queira desinstalar: +# ^DirText +O $(^NameDA) será instalado na seguinte directória. Para instalar nunha directória diferente, clique en 'Procurar...' e escolla outra directória. $_CLICK +# ^DirSubText +Directória de destino +# ^DirBrowseText +Escolla unha directória para instalar o $(^NameDA): +# ^UnDirText +O $(^NameDA) será desinstalado da seguinte directória. Para desinstalar dunha pasta diferente, clique en 'Procurar...' e escolla outra directória. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Escolla a directória de onde vai ser desinstalado o $(^NameDA): +# ^SpaceAvailable +"Espazo disponíbel: " +# ^SpaceRequired +"Espazo necesário: " +# ^UninstallingText +$(^NameDA) vai ser desinstalado da seguinte directória. $_CLICK +# ^UninstallingSubText +Desinstalando de: +# ^FileError +Erro ao abrir ficheiro para escrita: \r\n\t"$0"\r\nClique en Abortar para abortar a instalación,\r\nRepetir para tentar novamente a escrita do ficheiro, ou\r\nIgnorar para ignorar este ficheiro. +# ^FileError_NoIgnore +Erro ao abrir ficheiro para escrita: \r\n\t"$0"\r\nClique en Repetir para tentar novamente a gravación do ficheiro, ou\r\nCancelar para abortar a instalación. +# ^CantWrite +"Non foi posíbel escreber: " +# ^CopyFailed +Falla ao copiar +# ^CopyTo +"Copiar para " +# ^Registering +"Rexistando: " +# ^Unregistering +"Desrexistando: " +# ^SymbolNotFound +"Símbolo non achado: " +# ^CouldNotLoad +"Non foi posíbel carregar: " +# ^CreateFolder +"Criando diretória: " +# ^CreateShortcut +"Criando atallo: " +# ^CreatedUninstaller +"Criando desinstalador: " +# ^Delete +"Eliminando ficheiro: " +# ^DeleteOnReboot +"Eliminar ao reiniciar: " +# ^ErrorCreatingShortcut +"Erro ao criar atallo: " +# ^ErrorCreating +"Erro ao criar: " +# ^ErrorDecompressing +Erro ao descomprimir dados! Instalador corrompido? +# ^ErrorRegistering +Erro ao rexistar DLL +# ^ExecShell +"Executando polo Shell: " +# ^Exec +"Executando: " +# ^Extract +"Extraindo: " +# ^ErrorWriting +"Extraindo: erro ao escreber ficheiro " +# ^InvalidOpcode +Instalador corrompido: código de operación inválido +# ^NoOLE +"Sen OLE para: " +# ^OutputFolder +"Cartafol de destino: " +# ^RemoveFolder +"Removendo cartafol: " +# ^RenameOnReboot +"Renomear ao reiniciar: " +# ^Rename +"Renomeando: " +# ^Skipped +"Ignorado: " +# ^CopyDetails +Copiar detalles para a Área de transférencia +# ^LogInstall +Rexistar proceso de instalación +# ^Byte +B +# kilo + K +# mega + M +# giga + G diff --git a/tools/Contrib/Language files/Galician.nsh b/tools/Contrib/Language files/Galician.nsh new file mode 100644 index 0000000..7654c2a --- /dev/null +++ b/tools/Contrib/Language files/Galician.nsh @@ -0,0 +1,121 @@ +;Language: Galician (1110) +;Ramon Flores + +!insertmacro LANGFILE "Galician" = "Galego" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Benvindo ao Asistente de Instalación do $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Este asistente vai axudá-lo durante a instalación do $(^NameDA).$\r$\n$\r$\nRecomenda-se fechar todas as outras aplicacións antes de iniciar a instalación. Isto posibilita actualizar os ficheiros do sistema relevantes sen ter que reiniciar o computador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Benvindo ao Asistente de desinstalación do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Este asistente vai axudá-lo durante a desinstalación do $(^NameDA).$\r$\n$\r$\nAntes de iniciar a desinstalación, certifique-se de que o $(^NameDA) non está a executar-se.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Contrato de licenza" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor, verifique os termos da licenza antes de instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Se aceitar os termos da licenza, clique en 'Aceito' para continuar. Cumpre aceitar o contrato para instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se aceitar os termos da licenza, clique na caixa de selección abaixo. Cumpre aceitar o contrato para instalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se aceitar os termos da licenza, seleccione a primeira opción abaixo. Cumpre aceitar o contrato para instalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Contrato de licenza" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor, verifique os termos da licenza antes de desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Se aceitar os termos da licenza, clique en 'Aceito' para continuar. Cumpre aceitar o contrato para desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se aceitar os termos da licenza, clique na caixa de selección abaixo. Cumpre aceitar o contrato para desinstalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se aceitar os termos da licenza, seleccione a primeira opción abaixo. Cumpre aceitar o contrato para desinstalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Prema Page Down para ver o restante da licenza." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Escolla de componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Escolla que características do $(^NameDA) que desexa instalar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Escoller componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Escolla que características do $(^NameDA) desexa desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descrición" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Posicione o rato sobre un componente para ver a sua descrición." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Seleccione un componente para ver a sua descrición." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Escolla do local da instalación" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Escolla a directória na cal desexa instalar o $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Escolla o Local de desinstalación" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Escolla a directória de onde pretende desinstalar o $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor, agarde entanto o $(^NameDA) está sendo instalado." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalación completa" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "A instalación concluiu con suceso." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalación Abortada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "A instalación concluiu sen suceso." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor, agarde entanto se desinstala o $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalación completa" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "A desinstalación concluiu con suceso." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalación abortada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "A desinstalación non concluiu con suceso" +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Concluindo o Asistente de instalación do $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Instalou-se o $(^NameDA) no seu computador.$\r$\n$\r$\nClique en Rematar para fechar este asistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Cumpre reiniciar o seu computador para concluír a instalación do $(^NameDA). Desexa reiniciar agora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Concluíndo o asistente de desinstalación do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Eliminou-se $(^NameDA) do seu computador.$\r$\n$\r$\nClique em Rematar para fechar este asistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Cumpre reiniciar o seu computador para concluír a desinstalación do $(^NameDA). Desexa reiniciá-lo agora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reiniciar agora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Prefiro reinicia-lo manualmente despois" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Executar $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Mostrar Leame" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Rematar" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Escolla un cartafol do Menu Iniciar" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Escolla un cartafol do Menu Iniciar para os atallos do programa." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleccione o cartafol do Menu Iniciar no que desexa criar os atallos do programa. Tamén é posíbel dixitar un nome para criar un novo cartafol. " + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Non criar atallos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Eliminar o $(^NameDA) do seu computador." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Realmente desexa cancelar a instalación do $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Realmente desexa cancelar a desinstalación do $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Georgian.nlf b/tools/Contrib/Language files/Georgian.nlf new file mode 100644 index 0000000..63d7457 --- /dev/null +++ b/tools/Contrib/Language files/Georgian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1079 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1200 +# RTL - anything else than RTL means LTR +- +#Translation by David Huriev +# ^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\t"$0"\r\n'შეჩერება': შეჩერდეს ჩატვირთვა;\r\n"გამეორება": მცდელობის გამეორება;\r\n"გამოტოვება": ამ მოქმედების გამოტოვება. +# ^FileError_NoIgnore +არ იხსნება ფაილეი ჩასაწერად: \r\n\t"$0"\r\n'გამეორება': მცდელობის გამეორება;\r\n'უარი': ჩატვირთვის პროცესის შეწყვეტა. +# ^CantWrite +"არ იწერება: " +# ^CopyFailed +შეცდომა ჩაწერის დროს +# ^CopyTo +"კოპირება: " +# ^Registering +"რეგისტრირება: " +# ^Unregistering +"რეგისტრირებიდან მოხსნა: " +# ^SymbolNotFound +"ვერ მოიძებნა სიმბოლო: " +# ^CouldNotLoad +"ჩატვირთვა შეუძლებელია: " +# ^CreateFolder +"ფოლდერის შექმნა: " +# ^CreateShortcut +"იარლიყის შექმნა: " +# ^CreatedUninstaller +"წაშლის პროგრამის შექმნა: " +# ^Delete +"ფაილის წაშლა: " +# ^DeleteOnReboot +"წაიშლება კომპიუტერის გადატვირთვის დროს: " +# ^ErrorCreatingShortcut +"იარლიყის შექმნისას დაშვებულია შეცდომა: " +# ^ErrorCreating +"შექმნისას დაშვებულია შეცდომა: " +# ^ErrorDecompressing +შეცდომა მონაცემების გახსნისას! შესაძლოა საინსტალაციო პროგრამაა დაზიანებული. +# ^ErrorRegistering +არ რეგისტრირდება (DLL) +# ^ExecShell +"ExecShell: " +# ^Exec +"შესრულება: " +# ^Extract +"ამონაწერი: " +# ^ErrorWriting +"ამონაწერი: შეცდომაა დაშვებული ფაილის ჩაწერისას " +# ^InvalidOpcode +საინსტალაციო პროგრამა დაზიანებულია: კოდი არ არსებობს +# ^NoOLE +"OLE არ არის: " +# ^OutputFolder +"ჩატვირთვის ფოლდერი: " +# ^RemoveFolder +"ფოლდერის წაშლა: " +# ^RenameOnReboot +"სახელის შეცვლა კომპიუტერის გადავირთვისას: " +# ^Rename +"სახელის შეცვლა: " +# ^Skipped +"გამოტოვა: " +# ^CopyDetails +მონაცემების ბუფერში კოპირება +# ^LogInstall +ჩატვირთვის აღწერა +# byte +B +# kilo + K +# mega + M +# giga + G diff --git a/tools/Contrib/Language files/Georgian.nsh b/tools/Contrib/Language files/Georgian.nsh new file mode 100644 index 0000000..766c3c7 --- /dev/null +++ b/tools/Contrib/Language files/Georgian.nsh @@ -0,0 +1,121 @@ +;Language: Georgian (1079) +;Translation by David Huriev and format updated by Jim Park + +!insertmacro LANGFILE "Georgian" = "ქართული" "Kartuli" + +!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 "თუ ეთანხმებით პირობებს, დააწკაპუნეთ ღილაკზე $\"ვეთანხმები$\". პროგრამის ჩასატვირთად აუცილებელია დათანხმება." + ${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)–ის წასაშლელად საჭიროა პიროებებზე დათანხმება. $_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 "ტექსტის წასაკითხად გამოიყენეთ ღილაკები $\"PageUp$\" და $\"PageDown$\"." +!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 "ReadMe &ფაილის ჩვენება" #FIXME: BUGBUG "ReadMe"? + ${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 "ნამდვილად გსურთ უარი თქვათ $(^Name)–ის ჩატვირთვაზე?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "ნამდვილად გსურთ უარი თქვათ $(^Name)–ის წაშლაზე?" +!endif diff --git a/tools/Contrib/Language files/German.nlf b/tools/Contrib/Language files/German.nlf new file mode 100644 index 0000000..ed2f91f --- /dev/null +++ b/tools/Contrib/Language files/German.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1031 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by L.King, changes by R. Bisswanger, Tim Kosse, Frederik Schwarzer & Sebastian Stange +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Installation von $(^Name) +# ^UninstallCaption +Deinstallation von $(^Name) +# ^LicenseSubCaption +: Lizenzabkommen +# ^ComponentsSubCaption +: Installationsoptionen +# ^DirSubCaption +: Zielverzeichnis +# ^InstallingSubCaption +: Wird installiert +# ^CompletedSubCaption +: Fertig +# ^UnComponentsSubCaption +: Deinstallationsoptionen +# ^UnDirSubCaption +: Quellverzeichnis +# ^ConfirmSubCaption +: Bestätigung +# ^UninstallingSubCaption +: Wird entfernt +# ^UnCompletedSubCaption +: Fertig +# ^BackBtn +< &Zurück +# ^NextBtn +&Weiter > +# ^AgreeBtn +&Annehmen +# ^AcceptBtn +Lizenzabkommen &akzeptieren +# ^DontAcceptBtn +Lizenzabkommen ab&lehnen +# ^InstallBtn +&Installieren +# ^UninstallBtn +&Deinstallieren +# ^CancelBtn +Abbrechen +# ^CloseBtn +&Beenden +# ^BrowseBtn +&Durchsuchen ... +# ^ShowDetailsBtn +&Details anzeigen +# ^ClickNext +Klicken Sie auf Weiter, um fortzufahren. +# ^ClickInstall +Klicken Sie auf Installieren, um die Installation zu starten. +# ^ClickUninstall +Klicken Sie auf Deinstallieren, um die Deinstallation zu starten. +# ^Name +Name +# ^Completed +Fertig +# ^LicenseText +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) installieren. Wenn Sie alle Bedingungen des Abkommens akzeptieren, klicken Sie auf Annehmen. +# ^LicenseTextCB +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) installieren. Wenn Sie alle Bedingungen des Abkommens akzeptieren, aktivieren Sie das Kontrollkästchen. $_CLICK +# ^LicenseTextRB +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) installieren. Wenn Sie alle Bedingungen des Abkommens akzeptieren, wählen Sie die entsprechende Option. $_CLICK +# ^UnLicenseText +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) entfernen. Wenn Sie alle Bedingungen des Abkommens akzeptieren, klicken Sie auf Annehmen. +# ^UnLicenseTextCB +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) entfernen. Wenn Sie alle Bedingungen des Abkommens akzeptieren, aktivieren Sie das Kontrollkästchen. $_CLICK +# ^UnLicenseTextRB +Bitte lesen Sie das Lizenzabkommen, bevor Sie $(^NameDA) entfernen. Wenn Sie alle Bedingungen des Abkommens akzeptieren, wählen Sie die entsprechende Option. $_CLICK +# ^Custom +Benutzerdefiniert +# ^ComponentsText +Wählen Sie die Komponenten, welche Sie installieren wollen. $_CLICK +# ^ComponentsSubText1 +Installationstyp bestimmen: +# ^ComponentsSubText2_NoInstTypes +Wählen Sie die zu installierenden Komponenten: +# ^ComponentsSubText2 +oder wählen Sie zusätzliche zu installierende Komponenten: +# ^UnComponentsText +Wählen Sie die Komponenten, welche Sie entfernen wollen. $_CLICK +# ^UnComponentsSubText1 +Deinstallationstyp bestimmen: +# ^UnComponentsSubText2_NoInstTypes +Wählen Sie die zu entfernenden Komponenten: +# ^UnComponentsSubText2 +oder wählen Sie zusätzliche Komponenten, welche Sie entfernen möchten: +# ^DirText +$(^NameDA) wird in das unten angegebene Verzeichnis installiert. Falls Sie in ein anderes Verzeichnis installieren möchten, klicken Sie auf Durchsuchen und wählen Sie ein anderes Verzeichnis aus. $_CLICK +# ^DirSubText +Zielverzeichnis +# ^DirBrowseText +Wählen Sie das Verzeichnis aus, in das Sie $(^NameDA) installieren möchten: +# ^UnDirText +$(^NameDA) wird aus dem unten angegebenen Verzeichnis entfernt. Falls sich $(^NameDA) in einem anderen Verzeichnis befindet, klicken Sie auf Durchsuchen und wählen Sie das richtige Verzeichnis aus. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Wählen Sie das Verzeichnis aus, in dem sich $(^NameDA) befindet: +# ^SpaceAvailable +"Verfügbarer Speicher: " +# ^SpaceRequired +"Benötigter Speicher: " +# ^UninstallingText +$(^NameDA) wird aus dem unten angegebenen Verzeichnis entfernt. $_CLICK +# ^UninstallingSubText +Wird entfernt aus: +# ^FileError +Fehler beim Überschreiben der Datei: \r\n\t"$0"\r\nKlicken Sie auf Abbrechen, um abzubrechen,\r\nauf Wiederholen, um den Schreibvorgang erneut zu versuchen,\r\noder auf Ignorieren, um diese Datei zu überspringen. +# ^FileError_NoIgnore +Fehler beim Überschreiben der Datei: \r\n\t"$0"\r\nKlicken Sie auf Wiederholen, um den Schreibvorgang erneut zu versuchen,\r\noder auf Abbrechen, um die Installation zu beenden. +# ^CantWrite +"Fehler beim Schreiben: " +# ^CopyFailed +Kopieren fehlgeschlagen +# ^CopyTo +"Wird kopiert nach " +# ^Registering +"Wird registriert: " +# ^Unregistering +"Wird deregistriert: " +# ^SymbolNotFound +"Symbol ist nicht vorhanden: " +# ^CouldNotLoad +"Fehler beim Laden von " +# ^CreateFolder +"Verzeichnis wird erstellt: " +# ^CreateShortcut +"Verknüpfung wird erstellt: " +# ^CreatedUninstaller +"Deinstallationsprogramm wird erstellt: " +# ^Delete +"Datei wird gelöscht: " +# ^DeleteOnReboot +"Datei wird nach Neustart gelöscht: " +# ^ErrorCreatingShortcut +"Fehler beim Erstellen der Verknüpfung: " +# ^ErrorCreating +"Fehler beim Erstellen: " +# ^ErrorDecompressing +Fehler beim Entpacken. Ist das Installationsprogramm beschädigt? +# ^ErrorRegistering +Fehler beim Registrieren der DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Wird gestartet: " +# ^Extract +"Wird entpackt: " +# ^ErrorWriting +"Entpacken: Fehler beim Schreiben der Datei " +# ^InvalidOpcode +Beschädigtes Installationsprogramm: ungültiger Befehlscode +# ^NoOLE +"Kein OLE für: " +# ^OutputFolder +"Zielverzeichnis: " +# ^RemoveFolder +"Verzeichnis wird entfernt: " +# ^RenameOnReboot +"Umbenennen nach Neustart: " +# ^Rename +"Umbenennen: " +# ^Skipped +"Übersprungen: " +# ^CopyDetails +Details in die Zwischenablage kopieren +# ^LogInstall +Installationsverlauf protokollieren +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/German.nsh b/tools/Contrib/Language files/German.nsh new file mode 100644 index 0000000..1acdf78 --- /dev/null +++ b/tools/Contrib/Language files/German.nsh @@ -0,0 +1,129 @@ +;Language: German (1031) +;By L.King, changes by K. Windszus, R. Bisswanger, M. Simmack, D. Weiß, Frederik Schwarzer & S. Stange + +!insertmacro LANGFILE "German" = "Deutsch" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Willkommen zur Installation$\r$\nvon $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Dieser Assistent wird Sie durch die Installation von $(^NameDA) begleiten.$\r$\n$\r$\nEs wird empfohlen, vor der Installation alle anderen Programme zu schließen, damit bestimmte Systemdateien ohne Neustart ersetzt werden können.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Willkommen zur Deinstallation$\r$\nvon $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Dieser Assistent wird Sie durch die Deinstallation von $(^NameDA) begleiten.$\r$\n$\r$\nBitte beenden Sie $(^NameDA), bevor Sie mit der Deinstallation fortfahren.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lizenzabkommen" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Bitte lesen Sie die Lizenzbedingungen durch, bevor Sie mit der Installation fortfahren." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Falls Sie alle Bedingungen des Abkommens akzeptieren, klicken Sie auf Annehmen. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) installieren zu können." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Falls Sie alle Bedingungen des Abkommens akzeptieren, aktivieren Sie das Kästchen. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) installieren zu können. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Falls Sie alle Bedingungen des Abkommens akzeptieren, wählen Sie unten die entsprechende Option. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) installieren zu können. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lizenzabkommen" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Bitte lesen Sie die Lizenzbedingungen durch, bevor Sie mit der Deinstallation von $(^NameDA) fortfahren." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Falls Sie alle Bedingungen des Abkommens akzeptieren, klicken Sie auf Annehmen. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) deinstallieren zu können." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Falls Sie alle Bedingungen des Abkommens akzeptieren, aktivieren Sie das Kästchen. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) deinstallieren zu können. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Falls Sie alle Bedingungen des Abkommens akzeptieren, wählen Sie unten die entsprechende Option. Sie müssen die Lizenzvereinbarungen anerkennen, um $(^NameDA) deinstallieren zu können. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Drücken Sie die BILD-AB-Taste, um den Rest des Abkommens zu lesen." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Komponenten auswählen" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Wählen Sie die Komponenten aus, die Sie installieren möchten." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Komponenten auswählen" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Wählen Sie die Komponenten aus, die Sie entfernen möchten." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beschreibung" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Bewegen Sie den Mauszeiger über eine Komponente, um die Beschreibung zu lesen." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Wählen Sie eine Komponente, um die Beschreibung zu lesen." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Zielverzeichnis auswählen" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Wählen Sie das Verzeichnis aus, in das $(^NameDA) installiert werden soll." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Verzeichnis für Deinstallation auswählen" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Wählen Sie das Verzeichnis aus, aus dem $(^NameDA) entfernt werden soll." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Wird installiert ..." + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Bitte warten Sie, während $(^NameDA) installiert wird." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Die Installation ist vollständig" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Die Installation wurde erfolgreich abgeschlossen." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Abbruch der Installation" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Die Installation wurde nicht vollständig abgeschlossen." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Wird deinstalliert ..." + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Bitte warten Sie, während $(^NameDA) entfernt wird." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Die Deinstallation ist vollständig" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Die Deinstallation wurde erfolgreich abgeschlossen." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Abbruch der Deinstallation" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Die Deinstallation wurde nicht vollständig abgeschlossen." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Die Installation von $(^NameDA) wird abgeschlossen" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) wurde auf Ihrem Computer installiert.$\r$\n$\r$\nKlicken Sie auf Fertigstellen, um den Installationsassistenten zu schließen." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Windows muss neu gestartet werden, um die Installation von $(^NameDA) zu vervollständigen. Möchten Sie Windows jetzt neu starten?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Die Deinstallation von $(^NameDA) wird abgeschlossen" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) ist von Ihrem Computer entfernt worden.$\r$\n$\r$\nKlicken Sie auf Fertigstellen, um den Assistenten zu schließen." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Windows muss neu gestartet werden, um die Deinstallation von $(^NameDA) zu vervollständigen. Möchten Sie Windows jetzt neu starten?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Jetzt neu starten" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Windows später selbst neu starten" + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) ausführen" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Liesmich-Datei anzeigen" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Fertigstellen" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Startmenü-Ordner bestimmen" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Bestimmen Sie einen Startmenü-Ordner für die Programmverknüpfungen." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Wählen Sie den Startmenü-Ordner für die Programmverknüpfungen aus. Falls Sie einen neuen Ordner erstellen möchten, geben Sie dessen Namen ein." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Keine Verknüpfungen erstellen" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Deinstallation von $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA) wird von Ihrem Computer entfernt." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Sind Sie sicher, dass Sie die Installation von $(^Name) abbrechen möchten?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Sind Sie sicher, dass Sie die Deinstallation von $(^Name) abbrechen möchten?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Benutzer auswählen" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Wählen Sie die Benutzer aus, für die Sie $(^NameDA) installieren möchten." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Wählen Sie aus, ob Sie $(^NameDA) nur für den eigenen Gebrauch oder für die Nutzung durch alle Benutzer dieses Systems installieren möchten. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installation für alle Benutzer dieses Computers" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installation nur für mich" +!endif diff --git a/tools/Contrib/Language files/Greek.nlf b/tools/Contrib/Language files/Greek.nlf new file mode 100644 index 0000000..84f3988 --- /dev/null +++ b/tools/Contrib/Language files/Greek.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1032 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1253 +# RTL - anything else than RTL means LTR +- +# Translation by Makidis N. Michael - http://dias.aueb.gr/~p3010094/ +# ^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\t"$0"\r\nΕπιλέξτε ματαίωση για να ματαιώσετε την εγκατάσταση,\r\nεπανάληψη για να δοκιμάσετε να γράψετε το αρχείο πάλι, ή\r\nπαράβλεψη για να παραλείψετε αυτό το αρχείο. +# ^FileError_NoIgnore +Σφάλμα κατά το άνοιγμα αρχείου για εγγραφή: \r\n\t"$0"\r\nΕπιλέξτε επανάληψη για να δοκιμάσετε να γράψετε το αρχείο πάλι, ή\r\nματαίωση για να ματαιώσετε την εγκατάσταση. +# ^CantWrite +"Αδυναμία εγγραφής: " +# ^CopyFailed +Αντιγραφή απέτυχε +# ^CopyTo +"Αντιγραφή στο " +# ^Registering +"Καταχώρηση: " +# ^Unregistering +"Κατάργηση καταχώρησης: " +# ^SymbolNotFound +"Αδυναμία εύρεσης συμβόλου: " +# ^CouldNotLoad +"Αδυναμία φόρτωσης: " +# ^CreateFolder +"Δημιουργία φακέλου: " +# ^CreateShortcut +"Δημιουργία συντόμευσης: " +# ^CreatedUninstaller +"Δημιουργία προγράμματος απεγκατάστασης: " +# ^Delete +"Διαγραφή αρχείου: " +# ^DeleteOnReboot +"Διαγραφή στην επανεκκίνηση: " +# ^ErrorCreatingShortcut +"Σφάλμα στη δημιουργία συντόμευσης: " +# ^ErrorCreating +"Σφάλμα στη δημιουργία: " +# ^ErrorDecompressing +Σφάλμα στην αποσυμπίεση δεδομένων! Κατεστραμμένο πρόγραμμα εγκατάστασης; +# ^ErrorRegistering +Σφάλμα καταχώρησης του DLL +# ^ExecShell +"Εκτέλεση (ExecShell): " +# ^Exec +"Εκτέλεση: " +# ^Extract +"Αποσυμπίεση: " +# ^ErrorWriting +"Αποσυμπίεση: σφάλμα εγγραφής στο αρχείο " +# ^InvalidOpcode +Εγκατάσταση κατεστραμμένη: μη-έγκυρο opcode +# ^NoOLE +"Όχι OLE για το: " +# ^OutputFolder +"Φάκελος εξόδου: " +# ^RemoveFolder +"Διαγραφή φακέλου: " +# ^RenameOnReboot +"Μετονομασία στην επανεκκίνηση: " +# ^Rename +"Μετονομασία: " +# ^Skipped +"Παραλείφθηκε: " +# ^CopyDetails +Αντιγραφή λεπτομερειών στο Πρόχειρο +# ^LogInstall +Καταγραφή διαδικασίας εγκατάστασης +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Greek.nsh b/tools/Contrib/Language files/Greek.nsh new file mode 100644 index 0000000..50628d8 --- /dev/null +++ b/tools/Contrib/Language files/Greek.nsh @@ -0,0 +1,121 @@ +;Language: Greek (1032) +;By Makidis N. Michael - http://dias.aueb.gr/~p3010094/ + +!insertmacro LANGFILE "Greek" = "Ελληνικά" "Ellinika" + +!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 "Εμφάνιση του &αρχείου Readme" + ${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 "Είστε σίγουροι πως θέλετε να τερματίσετε την εγκατάσταση του '$(^Name)';" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Είστε σίγουροι πως θέλετε να τερματίσετε την απεγκατάσταση του '$(^Name)';" +!endif diff --git a/tools/Contrib/Language files/Hebrew.nlf b/tools/Contrib/Language files/Hebrew.nlf new file mode 100644 index 0000000..cf0af87 --- /dev/null +++ b/tools/Contrib/Language files/Hebrew.nlf @@ -0,0 +1,190 @@ +# Hebrew NSIS language file +NLF v6 +# Language ID +1037 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1255 +# RTL - anything else than RTL means LTR +RTL +# Translation by Amir Szekely (aka KiCHiK), fixed by Yaron Shahrabani +# ^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\t"$0"\r\nלחץ על ביטול כדי לבטל את ההתקנה,\r\nנסה שנית כדי לנסות לפתוח את הקובץ שוב, או\r\nהתעלם כדי לדלג על הקובץ +# ^FileError_NoIgnore +ארעה שגיאה בעת פתיחת קובץ לכתיבה:\r\n\t"$0"\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/tools/Contrib/Language files/Hebrew.nsh b/tools/Contrib/Language files/Hebrew.nsh new file mode 100644 index 0000000..5dcc80e --- /dev/null +++ b/tools/Contrib/Language files/Hebrew.nsh @@ -0,0 +1,129 @@ +;Language: Hebrew (1037) +;By Yaron Shahrabani + +!insertmacro LANGFILE "Hebrew" = "עברית" "Ivrit" + +!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מומלץ לסגור כל תוכנית אחרת לפני התחלת ההסרה. פעולה זו תאפשר לאשף לעדכן קבצי מערכת ללא איתחול המחשב.$\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 "בחר בתיקיית תפריט ההתחלה בה יווצרו קיצורי הדרך של התוכנית." + ${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 "האם אתה בטוח שברצונך לצאת מהתקנת $(^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/tools/Contrib/Language files/Hindi.nlf b/tools/Contrib/Language files/Hindi.nlf new file mode 100644 index 0000000..aebcb9e --- /dev/null +++ b/tools/Contrib/Language files/Hindi.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1081 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1200 +# RTL - anything else than RTL means LTR +- +# Translation by Ryan Pretorius +# ^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 +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G \ No newline at end of file diff --git a/tools/Contrib/Language files/Hindi.nsh b/tools/Contrib/Language files/Hindi.nsh new file mode 100644 index 0000000..ffbd653 --- /dev/null +++ b/tools/Contrib/Language files/Hindi.nsh @@ -0,0 +1,129 @@ +;Language: Hindī (Devanagari script) (1081) +;By Ryan Pretorius + +!insertmacro LANGFILE "Hindi" = "हिन्दी" "Hindi" + +!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 "शेष समझौता देखने के लिए पेज नीचे करें को दबाएं।" +!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 "क्या आप वाकई $(^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/tools/Contrib/Language files/Hungarian.nlf b/tools/Contrib/Language files/Hungarian.nlf new file mode 100644 index 0000000..38e92e9 --- /dev/null +++ b/tools/Contrib/Language files/Hungarian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +1038 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Soft-Trans Bt. (V2) +# Translation by Orfanik Kft. (V3-V6) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Telepítő +# ^UninstallCaption +$(^Name) Eltávolító +# ^LicenseSubCaption +: Licencszerződés +# ^ComponentsSubCaption +: Telepítési lehetőségek +# ^DirSubCaption +: Célmappa +# ^InstallingSubCaption +: Fájlok telepítése +# ^CompletedSubCaption +: Kész +# ^UnComponentsSubCaption +: Eltávolítási lehetőségek +# ^UnDirSubCaption +: Eltávolítás mappája +# ^ConfirmSubCaption +: Megerősítés +# ^UninstallingSubCaption +: Fájlok eltávolítása +# ^UnCompletedSubCaption +: Kész +# ^BackBtn +< &Vissza +# ^NextBtn +&Tovább > +# ^AgreeBtn +&Elfogadom +# ^AcceptBtn +&Elfogadom a Licencszerződés feltételeit +# ^DontAcceptBtn +&Nem fogadom el a Licencszerződés feltételeit +# ^InstallBtn +&Telepítés +# ^UninstallBtn +&Eltávolítás +# ^CancelBtn +&Mégse +# ^CloseBtn +&Bezárás +# ^BrowseBtn +&Tallózás... +# ^ShowDetailsBtn +&Részletek +# ^ClickNext +Kattintson a Tovább-ra a folytatáshoz. +# ^ClickInstall +Kattintson a Telepítésre a telepítéshez. +# ^ClickUninstall +Kattintson az Eltávolításra az eltávolításhoz. +# ^Name +Név +# ^Completed +Kész +# ^LicenseText +A(z) $(^NameDA) telepítése előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, az Elfogadom gombbal folytathatja. +# ^LicenseTextCB +A(z) $(^NameDA) telepítése előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, jelölje be a Jelölőnégyzeten. $_CLICK +# ^LicenseTextRB +A(z) $(^NameDA) telepítése előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, válassza az első lehetőséget. $_CLICK +# ^UnLicenseText +A(z) $(^NameDA) eltávolítása előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, az Elfogadom gombbal folytathatja. +# ^UnLicenseTextCB +A(z) $(^NameDA) eltávolítása előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, jelölje be a Jelölőnégyzeten. $_CLICK +# ^UnLicenseTextRB +A(z) $(^NameDA) eltávolítása előtt tekintse át a szerződés feltételeit. Ha elfogadja a szerződés valamennyi feltételét, válassza az első lehetőséget. $_CLICK +# ^Custom +Egyéni +# ^ComponentsText +Jelölje be azokat az összetevőket amelyeket telepíteni kíván és törölje a jelölést a nem kívánt összetevőknél. $_CLICK +# ^ComponentsSubText1 +Válassza ki a telepítés típusát: +# ^ComponentsSubText2_NoInstTypes +Válassza ki a telepítendő összetevőket: +# ^ComponentsSubText2 +vagy, jelölje ki a választható összetevők közül a telepíteni kívánta(ka)t: +# ^UnComponentsText +Jelölje be azokat az összetevőket amelyeket el kíván távolítani és törölje a jelölést az eltávolítani nem kívánt összetevőknél. $_CLICK +# ^UnComponentsSubText1 +Válassza ki az Eltávolítás típusát: +# ^UnComponentsSubText2_NoInstTypes +Válassza ki az eltávolítandó összetevőket: +# ^UnComponentsSubText2 +vagy, jelölje ki a választható összetevők közül az eltávolítani kívánta(ka)t: +# ^DirText +A $(^NameDA) a következő mappába kerül. Másik mappa választásához kattintson a Tallózás gombra. $_CLICK +# ^DirSubText +Telepítés helye +# ^DirBrowseText +A(z) $(^NameDA) telepítési helyének kiválasztása: +# ^UnDirText +A(z) $(^NameDA) eltávolítása a következő mappából. Másik mappa választásához kattintson a Tallózás gombra. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Válassza ki, hogy a $(^NameDA) melyik mappából kerüljön eltávolításra: +# ^SpaceAvailable +"Szabad terület: " +# ^SpaceRequired +"Helyigény: " +# ^UninstallingText +A(z) $(^NameDA) eltávolítása következik a számítógépről. $_CLICK +# ^UninstallingSubText +Eltávolítás helye: +# ^FileError +Hiba történt a fájl írásra történő megnyitásakor: \r\n\t"$0"\r\nA Mégse gomb megnyomásával megszakíthatja a telepítést,\r\naz Ismét gombbal megismételheti a fájl írását,\r\na Kihagyás gombbal kihagyhatja ezt a fájlt. +# ^FileError_NoIgnore +Hiba történt a fájl írásra történő megnyitásakor: \r\n\t"$0"\r\nAz Újra gomb megnyomásával megismételheti a műveletet, vagy \r\na Mégse gombbal megszakíthatja a telepítést. +# ^CantWrite +"Nem írható: " +# ^CopyFailed +A másolás megszakadt +# ^CopyTo +"Másolás ide: " +# ^Registering +"Bejegyzés: " +# ^Unregistering +"Eltávolítás: " +# ^SymbolNotFound +"A következő szimbólum nem található: " +# ^CouldNotLoad +"Nem tölthető be: " +# ^CreateFolder +"Mappa létrehozás: " +# ^CreateShortcut +"Parancsikon létrehozása: " +# ^CreatedUninstaller +"Létrehozott eltávolító: " +# ^Delete +"Törölt fájl: " +# ^DeleteOnReboot +"Rendszerindításkor törlendő: " +# ^ErrorCreatingShortcut +"Hiba a parancsikon létrehozásakor: " +# ^ErrorCreating +"Hiba a létrehozáskor: " +# ^ErrorDecompressing +Hiba az adatok kibontásakor! Megsérült a Telepítő? +# ^ErrorRegistering +Hiba a DLL regisztrálásakor +# ^ExecShell +"Végrehajtás a hozzárendeléseken keresztül: " +# ^Exec +"Végrehajtás: " +# ^Extract +"Kibontás: " +# ^ErrorWriting +"Kibontás: Hiba a fájl írásakor " +# ^InvalidOpcode +Sérült a telepítő: hibás utasítás +# ^NoOLE +"Nincs OLE: " +# ^OutputFolder +"Kimeneti mappa: " +# ^RemoveFolder +"Mappa eltávolítása: " +# ^RenameOnReboot +"Átnevezés rendszerindításkor: " +# ^Rename +"Átnevezés: " +# ^Skipped +"Kihagyott: " +# ^CopyDetails +Adatok vágólapra másolása +# ^LogInstall +Telepítő ellenőrzőlista +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Hungarian.nsh b/tools/Contrib/Language files/Hungarian.nsh new file mode 100644 index 0000000..317f892 --- /dev/null +++ b/tools/Contrib/Language files/Hungarian.nsh @@ -0,0 +1,122 @@ +;Language: Hungarian (1038) +;Translation by Jozsef Tamas Herczeg ( - 1.61-ig), +; Lajos Molnar (Orfanik) ( 1.62 - től) + +!insertmacro LANGFILE "Hungarian" = "Magyar" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Üdvözli a(z) $(^NameDA) Telepítő Varázsló" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "A(z) $(^NameDA) telepítése következik a számítógépre.$\r$\n$\r$\nJavasoljuk, hogy indítás előtt zárja be a futó alkalmazásokat. Így a telepítő a rendszer újraindítása nélkül tudja frissíteni a szükséges rendszerfájlokat.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Üdvözli a(z) $(^NameDA) Eltávolító Varázsló" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ez a varázsló segíti a(z) $(^NameDA) eltávolításában.$\r$\n$\r$\nMielőtt elkezdi az eltávilítást győződjön meg arról, hogy a(z) $(^NameDA) nem fut.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licencszerződés" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "A(z) $(^NameDA) telepítése előtt tekintse át a szerződés feltételeit." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ha elfogadja a szerződés valamennyi feltételét, az Elfogadom gombbal folytathatja. El kell fogadnia a(z) $(^NameDA) telepítéséhez." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Amennyiben elfogadja a feltételeket, jelölje be a jelölőnényzeten. A(z) $(^NameDA) telepítéséhez el kell fogadnia a feltételeket. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Amennyiben elfogadja a feltételeket, válassza az első opciót. A(z) $(^NameDA) telepítéséhez el kell fogadnia a feltételeket. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licencszerződés" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "A(z) $(^NameDA) eltávolítása előtt tekintse át a szerződés feltételeit." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ha elfogadja a szerződés valamennyi feltételét, az Elfogadom gombbal folytathatja. El kell fogadnia a(z) $(^NameDA) eltávolításához." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Amennyiben elfogadja a feltételeket, jelölje be a jelölőnényzeten. A(z) $(^NameDA) eltávolításához el kell fogadnia a feltételeket. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Amennyiben elfogadja a feltételeket, válassza az első opciót. A(z) $(^NameDA) eltávolításához el kell fogadnia a feltételeket. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "A PageDown gombbal olvashatja el a szerződés folytatását." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Összetevők kiválasztása" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Válassza ki, hogy a(z) $(^NameDA) mely funkcióit kívánja telepíteni." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Összetevők kiválasztása" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Válassza ki, hogy a(z) $(^NameDA) mely funkcióit kívánja eltávolítani." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Leírás" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Vigye rá az egeret az összetevőre, hogy megtekinthesse a leírását." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Telepítési hely kiválasztása" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Válassza ki a(z) $(^NameDA) telepítésének mappáját." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Telepítési hely kiválasztása" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Válassza ki a(z) $(^NameDA) telepítésének mappáját." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Telepítési folyamat" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Kis türelmet a(z) $(^NameDA) telepítéséig." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Telepítés befejeződött" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "A telepítés sikeresen befejeződött." + ${LangFileString} MUI_TEXT_ABORT_TITLE "A telepítés megszakadt" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "A telepítés sikertelen volt." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Eltávolítási folyamat" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Kis türelmet a(z) $(^NameDA) eltávolításáig." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Az eltávolítás befejeződött" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Az eltávolítás sikeresen befejeződött." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Az eltávolítás megszakadt" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Az eltávolítás sikertelen volt." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "A(z) $(^NameDA) telepítése megtörtént." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "A(z) $(^NameDA) telepítése megtörtént.$\r$\n$\r$\nA Befejezés gomb megnyomásával zárja be a varázslót." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "A(z) $(^NameDA) telepítésének befejezéséhez újra kell indítani a rendszert. Most akarja újraindítani?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "A(z) $(^NameDA) eltávolítás varázslójának befejezése." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "A(z) $(^NameDA) eltávolítása sikeresen befejeződött.$\r$\n$\r$\nA Finish-re kattintva bezárul ez a varázsló." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "A számítógépet újra kell indítani, hogy a(z) $(^NameDA) eltávolítása teljes legyen. Akarja most újraindítani a rendszert?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Most indítom újra" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Később fogom újraindítani" + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) futtatása" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "OlvassEl fájl megjelenítése" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Befejezés" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Start menü mappa kijelölése" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Start menü mappa kijelölése a program parancsikonjaihoz." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Jelöljön ki egy mappát a Start menüben, melybe a program parancsikonjait fogja elhelyezni. Beírhatja új mappa nevét is." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nincs parancsikon elhelyezés" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "A(z) $(^NameDA) Eltávolítása." + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "A(z) $(^NameDA) eltávolítása következik a számítógépről." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Biztos, hogy ki akar lépni a(z) $(^Name) Telepítőből?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Biztos, hogy ki akar lépni a(z) $(^Name) Eltávolítóból?" +!endif diff --git a/tools/Contrib/Language files/Icelandic.nlf b/tools/Contrib/Language files/Icelandic.nlf new file mode 100644 index 0000000..1352784 --- /dev/null +++ b/tools/Contrib/Language files/Icelandic.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1039 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Gretar Orri Kristinsson +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Uppsetning +# ^UninstallCaption +$(^Name) Fjarlæging +# ^LicenseSubCaption +: Notandaleyfissamningur +# ^ComponentsSubCaption +: Uppsetningarvalmöguleikar +# ^DirSubCaption +: Uppsetningarskráarsafn +# ^InstallingSubCaption +: Set upp +# ^CompletedSubCaption +: Lokið +# ^UnComponentsSubCaption +: Fjarlægingarvalmöguleikar +# ^UnDirSubCaption +: Fjarlægingarskráarsafn +# ^ConfirmSubCaption +: Staðfesting +# ^UninstallingSubCaption +: Fjarlægi +# ^UnCompletedSubCaption +: Lokið +# ^BackBtn +< &Til baka +# ^NextBtn +&Áfram > +# ^AgreeBtn +Ég &Samþykki +# ^AcceptBtn +Ég &samþykki skilmála leyfissamningsins +# ^DontAcceptBtn +Ég samþykki &ekki skilmála leyfissamningsins +# ^InstallBtn +&Setja upp +# ^UninstallBtn +&Fjarlægja +# ^CancelBtn +Hætta við +# ^CloseBtn +&Loka +# ^BrowseBtn +&Vafra... +# ^ShowDetailsBtn +Sýna &upplýsingar +# ^ClickNext +Smelltu á 'Áfram' til að halda áfram. +# ^ClickInstall +Smelltu á 'Setja upp' til þess að hefja uppsetninguna. +# ^ClickUninstall +Smelltu á 'Fjarlægja' til að hefja fjarlægingar ferlið. +# ^Name +Nafn +# ^Completed +Lokið +# ^LicenseText +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, smelltu þá á 'Ég samþykki'. +# ^LicenseTextCB +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, hakaðu þá í kassann hér að neðan. $_CLICK +# ^LicenseTextRB +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, veldu þá fyrsta valmöguleikann hér að neðan. $_CLICK +# ^UnLicenseText +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, smelltu þá á 'Ég samþykki'. +# ^UnLicenseTextCB +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, hakaðu þá í kassann hér að neðan. $_CLICK +# ^UnLicenseTextRB +Vinsamlegast skoðaðu notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst. Ef þú samþykkir skilmála samningsins, veldu þá fyrsta valmöguleikann hér að neðan. $_CLICK +# ^Custom +Sjálfval +# ^ComponentsText +Hakaðu við þá íhluti sem þú vilt setja upp og taktu hakið af þeim íhlutum sem þú vilt ekki setja upp. $_CLICK +# ^ComponentsSubText1 +Veldu tegund uppsetningar: +# ^ComponentsSubText2_NoInstTypes +Veldu þá íhluti sem á að setja upp: +# ^ComponentsSubText2 +Eða, veldu valfrjálsa íhluti á að setja upp: +# ^UnComponentsText +Hakaðu við þá íhluti sem þú vilt fjarlægja og taktu hakið af þeim íhlutum sem þú vilt ekki fjarlægja. $_CLICK +# ^UnComponentsSubText1 +Veldu tegund fjarlægingar: +# ^UnComponentsSubText2_NoInstTypes +Veldu íhluti sem á að fjarlægja: +# ^UnComponentsSubText2 +Eða, veldu valfrjálsa íhluti sem á að fjarlægja: +# ^DirText +Uppsetningin mun setja $(^NameDA) upp í eftirfarandi skráarsafn. Til að setja forritið upp í annað skráarsafn, smelltu á 'Vafra...' og veldu annað skráarsafn. $_CLICK +# ^DirSubText +Uppsetningarskráarsafn +# ^DirBrowseText +Veldu það skráarsafn sem þú vilt setja $(^NameDA) upp í: +# ^UnDirText +Uppsetningin mun fjarlægja $(^NameDA) úr eftirfarandi skráarsafni. Til að fjarlægja forritið úr öðru skráarsafni, smelltu á 'Vafra...' og veldu annað skráarsafn. $_CLICK +# ^UnDirSubText +"Fjarlægingarskráarsafn" +# ^UnDirBrowseText +Veldu það skráarsafn sem þú vilt fjarlægja $(^NameDA) úr: +# ^SpaceAvailable +"Tiltækt rými: " +# ^SpaceRequired +"Nauðsynlegt rými: " +# ^UninstallingText +$(^NameDA) verður fjarlægt úr eftirfarandi skráarsafni. $_CLICK +# ^UninstallingSubText +Fjarlægi úr: +# ^FileError +Villa við að skrifa í skrá: \r\n\r\n$0\r\n\r\nSmelltu á 'Hætta við' til að stoppa uppsetninguna,\r\n'Reyna aftur' til að gera aðra tilraun, eða\r\n'Hunsa' til sleppa þessari skrá. +# ^FileError_NoIgnore +Villa við að skrifa í skrá: \r\n\r\n$0\r\n\r\nSmelltu á 'Reyna aftur' til að gera aðra tilraun, eða\r\n'Hætta við' til að stoppa uppsetninguna. +# ^CantWrite +"Get ei skrifað: " +# ^CopyFailed +Afritun mistókst +# ^CopyTo +"Afrita til " +# ^Registering +"Skrásetja: " +# ^Unregistering +"Afskrá: " +# ^SymbolNotFound +"Fann ekki tákn: " +# ^CouldNotLoad +"Gat ekki hlaðið inn: " +# ^CreateFolder +"Búa til skráarsafn: " +# ^CreateShortcut +"Búa til flýtileið: " +# ^CreatedUninstaller +"Bjó til fjarlægingarhjálp: " +# ^Delete +"Eyða skrá: " +# ^DeleteOnReboot +"Eyða við endurræsingu: " +# ^ErrorCreatingShortcut +"Villa við gerð flýtileiðar: " +# ^ErrorCreating +"Villa við gerð: " +# ^ErrorDecompressing +Villa við afþjöppun gagna! Biluð uppsetningarhjálp? +# ^ErrorRegistering +Villa við skrásetningu DLL +# ^ExecShell +"Keyrslugluggi: " +# ^Exec +"Keyra: " +# ^Extract +"Færa út: " +# ^ErrorWriting +"Færa út: villa við að skrifa í skrá " +# ^InvalidOpcode +Uppsetningarhjálp biluð: rangur stýrikóði +# ^NoOLE +"Engin OLE fyrir: " +# ^OutputFolder +"Útskráarsafn: " +# ^RemoveFolder +"Fjarlægja skráarsafn: " +# ^RenameOnReboot +"Endurskíra við endurræsingu: " +# ^Rename +"Endurskíra: " +# ^Skipped +"Sleppt: " +# ^CopyDetails +Afrita upplýsingar til skrifbrettis +# ^LogInstall +Skrá uppsetningarferli +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Icelandic.nsh b/tools/Contrib/Language files/Icelandic.nsh new file mode 100644 index 0000000..eb24d6f --- /dev/null +++ b/tools/Contrib/Language files/Icelandic.nsh @@ -0,0 +1,121 @@ +;Language: Icelandic (15) +;By Gretar Orri Kristinsson + +!insertmacro LANGFILE "Icelandic" = "Íslenska" "Islenska" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Velkominn til $(^NameDA) uppsetningarhjálparinnar" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Þessi hjálp mun leiða þig í gegnum uppsetninguna á $(^NameDA).$\r$\n$\r$\nMælt er með því að þú lokir öllum öðrum forritum áður en uppsetningin hefst. Þetta mun gera uppsetningarforritinu kleyft að uppfæra kerfiskrár án þess að endurræsa tölvuna.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Velkomin(n) til $(^NameDA) fjarlægingarhjálparinnar" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Þessi hjálp mun leiða þig í gegnum fjarlæginguna á $(^NameDA).$\r$\n$\r$\nÁður en fjarlæging hefst skal ganga úr skugga um að $(^NameDA) sé ekki opið.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Notandaleyfissamningur" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Vinsamlegast skoðaðu Notandaleyfissamninginn vel áður en uppsetning á $(^NameDA) hefst." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ef þú samþykkir skilmála samningsins, smelltu þá á 'Ég samþykki' til að halda áfram. Þú verður að samþykkja samninginn til þess að setja upp $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ef þú samþykkir skilmála samningsins, hakaðu þá í kassann hér að neðan. Þú verður að samþykkja samninginn til þess að setja upp $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ef þú samþykkir skilmála samningsins, veldu þá fyrsta valmöguleikann hér að neðan. Þú verður að samþykkja samninginn til þess að setja upp $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Leyfissamningur" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Vinsamlegast skoðaðu leyfissamninginn vel áður en fjarlæging á $(^NameDA) hefst." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ef þú samþykkir skilmála samningsins, smelltu þá á 'Ég samþykki' til að halda áfram. Þú verður að samþykkja samninginn til þess að fjarlægja $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ef þú samþykkir skilmála samningsins, hakaðu þá í kassann hér að neðan. Þú verður að samþykkja samninginn til þess að fjarlægja $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ef þú samþykkir skilmála samningsins, veldu þá fyrsta valmöguleikann hér að neðan. Þú verður að samþykkja samninginn til þess að fjarlægja $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Smelltu á 'PageDown' takkann á lyklaborðinu til að sjá afganginn af samningnum." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Velja íhluti" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Veldu hvaða $(^NameDA) íhluti þú vilt setja upp." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Velja íhluti" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Velja hvaða $(^NameDA) íhluti þú vilt fjarlægja." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Lýsing" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Færðu músina yfir íhlut til að fá lýsinguna á honum." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Veldu íhlut til þess að fá lýsinguna á honum." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Veldu uppsetningarskáarsafn" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Veldu það skráarsafn sem þú vilt setja $(^NameDA) upp í." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Velja fjarlægingarskáarsafn" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Veldu það skráarsafn sem þú vilt fjarlægja $(^NameDA) úr." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Set upp" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vinsamlegast dokaðu við meðan $(^NameDA) er sett upp." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Uppsetningu lokið" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Uppsetning tókst." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Hætt við uppsetningu" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Uppsetningu lauk ekki sem skildi." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Fjarlægi" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vinsamlegast dokaðu við á meðan $(^NameDA) er fjarlægt." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Fjarlægingu lokið" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Fjarlæging tókst." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Hætt við fjarlægingu" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Fjarlægingu lauk ekki sem skildi." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Ljúka $(^NameDA) uppsetningarhjálpinni" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) er nú upp sett á tölvunni þinni.$\r$\n$\r$\nSmelltu á 'Ljúka' til að loka þessari hjálp." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Til að ljúka uppsetningunni á $(^NameDA) verður að endurræsa tölvuna. Viltu endurræsa núna?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Ljúka $(^NameDA) fjarlægingarhjálpinni" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) hefur nú verið fjarlægt úr tölvunni.$\r$\n$\r$\nSmelltu á 'Ljúka' til að loka þessari hjálp." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Til að ljúka fjarlægingunni á $(^NameDA) verður að endurræsa tölvuna. Viltu endurræsa núna?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Endurræsa núna" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ég vil endurræsa seinna" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Keyra $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Skoða LestuMig" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Ljúka" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Velja skráarsafn 'Start' valmyndar" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Veldu skráarsafn $(^NameDA) flýtileiða fyrir 'Start' valmyndina." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Veldu skráarsafn flýtileiða forritsins fyrir 'Start' valmyndina. Þú getur einnig búið til nýtt skráarsafn með því að setja inn nýtt nafn." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ekki búa til flýtileiðir í 'Start' valmyndinni" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Fjarlægja $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Fjarlægja $(^NameDA) úr tölvunni." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ertu viss um að þú viljir loka $(^Name) uppsetningarhjálpinni?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ertu viss um að þú viljir loka $(^Name) fjarlægingarhjálpinni?" +!endif diff --git a/tools/Contrib/Language files/Indonesian.nlf b/tools/Contrib/Language files/Indonesian.nlf new file mode 100644 index 0000000..98c696a --- /dev/null +++ b/tools/Contrib/Language files/Indonesian.nlf @@ -0,0 +1,194 @@ +# Header, don't edit +NLF v6 +# Language ID +1057 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Revision date: 2009 April +# Translators: +## Ariel , +## was.uthm@gmail.com +# +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalasi Program $(^Name) +# ^UninstallCaption +Penghapusan Program $(^Name) +# ^LicenseSubCaption +: Perihal Lisensi +# ^ComponentsSubCaption +: Pilihan Instalasi +# ^DirSubCaption +: Lokasi Instalasi +# ^InstallingSubCaption +: Proses Instalasi +# ^CompletedSubCaption +: Selesai +# ^UnComponentsSubCaption +: Pilihan Penghapusan +# ^UnDirSubCaption +: Berkas Lokasi yang dihapus +# ^ConfirmSubCaption +: Konfirmasi +# ^UninstallingSubCaption +: Proses Penghapusan +# ^UnCompletedSubCaption +: Selesai +# ^BackBtn +< &Mundur +# ^NextBtn +&Lanjut > +# ^AgreeBtn +Saya &Setuju +# ^AcceptBtn +Saya s&etuju dengan Perihal Lisensi +# ^DontAcceptBtn +Saya &tidak setuju dengan Perihal Lisensi +# ^InstallBtn +&Instal +# ^UninstallBtn +&Hapus +# ^CancelBtn +Batalkan +# ^CloseBtn +&Tutup +# ^BrowseBtn +Ca&ri... +# ^ShowDetailsBtn +Lihat &perincian +# ^ClickNext +Tekan tombol Lanjut untuk melanjutkan. +# ^ClickInstall +Tekan tombol Instal untuk memulai instalasi. +# ^ClickUninstall +Tekan tombol Hapus untuk memulai penghapusan. +# ^Name +Nama +# ^Completed +Selesai +# ^LicenseText +Silahkan membaca lisensi berikut sebelum memulai instalasi $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, tekan tombol Saya Setuju. +# ^LicenseTextCB +Silahkan membaca lisensi berikut sebelum memulai instalasi $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, beri tanda centang. $_CLICK +# ^LicenseTextRB +Silahkan membaca lisensi berikut sebelum memulai instalasi $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, pilihlah salah satu item dibawah ini. $_CLICK +# ^UnLicenseText +Silahkan membaca lisensi berikut sebelum mulai menghapus $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, tekan tombol Saya Setuju. +# ^UnLicenseTextCB +Silahkan membaca lisensi berikut sebelum mulai menghapus $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, beri tanda centang. $_CLICK +# ^UnLicenseTextRB +Silahkan membaca lisensi berikut sebelum mulai menghapus $(^NameDA). Jika anda menyetujui dan menerima semua pernyataan, pilihlah salah satu item dibawah ini. $_CLICK +# ^Custom +Tentukan Sendiri +# ^ComponentsText +Beri tanda centang pada komponen yang akan di instal and hilangkan tanda centang pada komponen yang tidak perlu di instal. $_CLICK +# ^ComponentsSubText1 +Pilih tipe instalasi: +# ^ComponentsSubText2_NoInstTypes +Pilih komponen-komponen yang akan di instal: +# ^ComponentsSubText2 +Atau, pilih komponen tambahan yang akan di instal: +# ^UnComponentsText +Beri tanda centang pada komponen yang akan dihapus and hilangkan tanda centang pada komponen yang tidak ingin dihapus. $_CLICK +# ^UnComponentsSubText1 +Pilih tipe penghapusan: +# ^UnComponentsSubText2_NoInstTypes +Pilih komponen-komponen yang ingin dihapus: +# ^UnComponentsSubText2 +Atau, pilih komponen tambahan yang ingin dihapus: +# ^DirText +Program $(^NameDA) akan di instal pada lokasi berikut. Untuk memilih lokasi, tekan tombol Cari kemudian pilih lokasi yang anda kehendaki. $_CLICK +# ^DirSubText +Lokasi instalasi +# ^DirBrowseText +Pilih lokasi instalasi program $(^NameDA): +# ^UnDirText +Proses penghapusan program $(^NameDA) dari lokasi instalasi berikut. Untuk memilih lokasi lainnya, tekan tombol Cari kemudian pilih lokasi yang anda kehendaki. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Pilih lokasi instalasi program $(^NameDA) yang akan dihapus: +# ^SpaceAvailable +"Ruang yang tersedia: " +# ^SpaceRequired +"Ruang yang dibutuhkan: " +# ^UninstallingText +$(^NameDA) akan dihapus dari lokasi berikut. $_CLICK +# ^UninstallingSubText +Proses penghapusan dari: +# ^FileError +Tidak dapat membuka berkas untuk menulis: \r\n\t"$0"\r\nTekan tombol Abort untuk membatalkan instalasi,\r\nRetry untuk mencoba lagi, atau\r\nIgnore untuk melewati file ini. +# ^FileError_NoIgnore +Tidak dapat membuka berkas untuk menulis: \r\n\t"$0"\r\nTekan tombol Retry untuk mencoba lagi, atau\r\nCancel untuk membatalkan instalasi. +# ^CantWrite +"Tidak bisa menulis pada berkas: " +# ^CopyFailed +Gagal menyalin berkas +# ^CopyTo +"Menyalin ke " +# ^Registering +"Memasukkan dalam daftar: " +# ^Unregistering +"Menghapus dari daftar: " +# ^SymbolNotFound +"Tidak dapat menemukan simbol: " +# ^CouldNotLoad +"Tidak dapat memuat: " +# ^CreateFolder +"Membuat tempat menyimpan berkas: " +# ^CreateShortcut +"Membuat shortcut: " +# ^CreatedUninstaller +"Program penghapusan yang dibuat: " +# ^Delete +"Menghapus berkas: " +# ^DeleteOnReboot +"Akan dihapus saat reboot: " +# ^ErrorCreatingShortcut +"Tidak dapat membuat shortcut: " +# ^ErrorCreating +"Ada kesalahan saat membuat: " +# ^ErrorDecompressing +Ada kesalahan saat membuka data! Program Instalasi tidak lengkap? +# ^ErrorRegistering +Ada kesalahan ketika mendaftarkan modul DLL +# ^ExecShell +"Perintah: " +# ^Exec +"Menjalankan: " +# ^Extract +"Proses ekstraksi berkas: " +# ^ErrorWriting +"Ekstraksi: ada kesalahan saat menulis ke berkas " +# ^InvalidOpcode +Program instalasi rusak: kode program tidak lengkap +# ^NoOLE +"OLE tidak ditemukan: " +# ^OutputFolder +"Lokasi tujuan: " +# ^RemoveFolder +"Menghapus lokasi penyimpanan: " +# ^RenameOnReboot +"Memberi nama baru saat reboot: " +# ^Rename +"Memberi nama baru: " +# ^Skipped +"Dilewati: " +# ^CopyDetails +Salin perincian ke Clipboard +# ^LogInstall +Catat proses instalasi +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Indonesian.nsh b/tools/Contrib/Language files/Indonesian.nsh new file mode 100644 index 0000000..48064c2 --- /dev/null +++ b/tools/Contrib/Language files/Indonesian.nsh @@ -0,0 +1,129 @@ +;Language: Indonesian (1057) +;By Ariel825010106@yahoo.com modified by was.uthm@gmail.com in April 2009 + +!insertmacro LANGFILE "Indonesian" = "Bahasa Indonesia" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Selamat datang di program instalasi $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Program ini akan membantu anda dalam proses instalasi $(^NameDA).$\r$\n$\r$\nAnda sangat disarankan untuk menutup program lainnya sebelum memulai proses instalasi. Hal ini diperlukan agar berkas yang terkait dapat diperbarui tanpa harus booting ulang komputer anda.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Selamat datang di program penghapusan $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Program ini akan membantu anda pada proses penghapusan $(^NameDA).$\r$\n$\r$\nSebelum memulai proses penghapusan, pastikan dulu $(^NameDA) tidak sedang digunakan.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Perihal Lisensi" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Silahkan membaca perihal lisensi sebelum memulai proses instalasi $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jika anda setuju dan menerima semua pernyataan, tekan tombol Saya Setuju untuk melanjutkan. Anda harus setuju untuk memulai instalasi $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jika anda setuju dan menerima semua pernyatan, beri tanda centang. Anda harus setuju untuk memulai instalasi $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jika anda setuju dan menerima semua pernyataan, pilihlah salah satu item dibawah ini. Anda harus setuju untuk memulai instalasi $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Perihal Lisensi" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Silahkan membaca lisensi berikut sebelum melakukan penghapusan $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jika anda setuju dan menerima semua pernyataan, tekan tombol Saya Setuju untuk melanjutkan. Anda harus setuju untuk memulai proses penghapusan $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jika anda setuju dan menerima semua pernyataan, beri tanda centang. Anda harus setuju untuk memulai proses penghapusan $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jika anda setuju dan menerima semua pernyataan, pilihlah salah satu item dibawah ini. Anda harus setuju untuk memulai proses penghapusan $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Tekan tombol Page Down untuk melihat pernyataan berikutnya." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Pilih Komponen" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Pilih komponen fitur tambahan dari $(^NameDA) yang ingin di instal." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Pilih Komponen" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Pilih komponen fitur tambahan dari $(^NameDA) yang ingin dihapus." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Deskripsi" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Tunjuk ke salah satu komponen untuk melihat deskripsi tentang komponen itu." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Pilih Lokasi Instalasi" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Pilih lokasi untuk instalasi program $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Pilih Lokasi berkas yang akan dihapus" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Pilih lokasi instalasi program $(^NameDA) yang akan dihapus." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Proses instalasi " + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Mohon tunggu sejenak, instalasi program $(^NameDA) sedang berlangsung." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalasi Selesai" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Seluruh proses instalasi sudah paripurna." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalasi Dibatalkan" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Proses instalasi tidak selesai dengan sempurna." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Proses penghapusan" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Mohon tunggu sejenak, penghapusan program $(^NameDA) sedang berlangsung." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Proses Penghapusan Selesai" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Seluruh proses penghapusan sudah paripurna." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Penghapusan Dibatalkan" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Proses penghapusa tidak selesai dengan sempurna." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Menutup Instalasi Program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) sudah di instal di komputer anda.$\r$\n$\r$\nTekan tombol Selesai untuk menutup program." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Komputer anda memerlukan booting ulang untuk menyempurnakan proses instalasi $(^NameDA). Apakah anda akan melakukan booting ulang sekarang juga?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Menutup program penghapusan $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) sudah dihapus dari komputer anda.$\r$\n$\r$\nTekan tombol Selesai untuk menutup." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Komputer anda memerlukan booting untuk menyempurnakan proses penghapusan $(^NameDA). Apakah anda akan melakukan booting ulang sekarang juga?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Booting ulang sekarang" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Booting ulang nanti" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Jalankan $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Buka berkas Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Selesai" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Pilih lokasi dari Menu Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Pilih lokasi dari Menu Start untuk meletakkan shortcut $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Pilih lokasi dari Menu Start untuk meletakkan shortcut program ini. Anda bisa juga membuat lokasi baru dengan cara menulis nama lokasi yang dikehendaki." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Tidak perlu membuat shortcut" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Penghapusan $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Menghapus $(^NameDA) dari komputer anda." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Apakah anda yakin ingin menghentikan proses instalasi $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Apakah anda yakin ingin menghentikan proses penghapusan $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Pilihan Pemakai" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Pilihlah pemakai komputer yang akan menggunakan program $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Apakah anda akan melakukan instalasi $(^NameDA) untuk anda sendiri atau untuk semua pemakai komputer ini. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instalasi untuk semua pemakai komputer ini" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalasi hanya untuk saya sendiri" +!endif diff --git a/tools/Contrib/Language files/Irish.nlf b/tools/Contrib/Language files/Irish.nlf new file mode 100644 index 0000000..26a0825 --- /dev/null +++ b/tools/Contrib/Language files/Irish.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +2108 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Kevin P. Scannell < scannell at slu dot edu > +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Socrú $(^Name) +# ^UninstallCaption +Díshuiteáil $(^Name) +# ^LicenseSubCaption +: Comhaontú um Cheadúnas +# ^ComponentsSubCaption +: Roghanna Suiteála +# ^DirSubCaption +: Fillteán Suiteála +# ^InstallingSubCaption +: Suiteáil +# ^CompletedSubCaption +: Críochnaithe +# ^UnComponentsSubCaption +: Roghanna Díshuiteála +# ^UnDirSubCaption +: Fillteán Díshuiteála +# ^ConfirmSubCaption +: Deimhniú +# ^UninstallingSubCaption +: Díshuiteáil +# ^UnCompletedSubCaption +: Críochnaithe +# ^BackBtn +< Ar Ai&s +# ^NextBtn +Ar &Aghaidh > +# ^AgreeBtn +Gl&acaim Leis +# ^AcceptBtn +Táim toilteanach &glacadh le coinníollacha an Chomhaontú um Cheadúnas +# ^DontAcceptBtn +Nílim &toilteanach glacadh le coinníollacha an Chomhaontú um Cheadúnas +# ^InstallBtn +&Suiteáil +# ^UninstallBtn +&Díshuiteáil +# ^CancelBtn +Cealaigh +# ^CloseBtn +&Dún +# ^BrowseBtn +B&rabhsáil... +# ^ShowDetailsBtn +Taispeáin &sonraí +# ^ClickNext +Cliceáil "Ar Aghaidh" chun leanúint ar aghaidh. +# ^ClickInstall +Cliceáil "Suiteáil" chun tosú. +# ^ClickUninstall +Cliceáil "Díshuiteáil" chun tosú. +# ^Name +Ainm +# ^Completed +Críochnaithe +# ^LicenseText +Déan iniúchadh ar an gComhaontú um Cheadúnas sula suiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, cliceáil "Glacaim Leis". +# ^LicenseTextCB +Déan iniúchadh ar an gComhaontú um Cheadúnas sula suiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, cliceáil an ticbhosca thíos. $_CLICK +# ^LicenseTextRB +Déan iniúchadh ar an gComhaontú um Cheadúnas sula suiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, roghnaigh an chéad rogha thíos. $_CLICK +# ^UnLicenseText +Déan iniúchadh ar an gComhaontú um Cheadúnas sula ndíshuiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, cliceáil "Glacaim Leis". +# ^UnLicenseTextCB +Déan iniúchadh ar an gComhaontú um Cheadúnas sula ndíshuiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, cliceáil an ticbhosca thíos. $_CLICK +# ^UnLicenseTextRB +Déan iniúchadh ar an gComhaontú um Cheadúnas sula ndíshuiteálann tú $(^NameDA). Má ghlacann tú le gach coinníoll den chomhaontú, roghnaigh an chéad rogha thíos. $_CLICK +# ^Custom +Saincheaptha +# ^ComponentsText +Roghnaigh na comhpháirteanna is mian leat a shuiteáil, agus díroghnaigh na comhpháirteanna nach mian leat a shuiteáil. $_CLICK +# ^ComponentsSubText1 +Roghnaigh cineál na suiteála: +# ^ComponentsSubText2_NoInstTypes +Roghnaigh na comhpháirteanna is mian leat a shuiteáil: +# ^ComponentsSubText2 +Nó, roghnaigh na comhpháirteanna roghnacha is mian leat a shuiteáil: +# ^UnComponentsText +Roghnaigh na comhpháirteanna is mian leat a dhíshuiteáil, agus díroghnaigh na comhpháirteanna nach mian leat a dhíshuiteáil. $_CLICK +# ^UnComponentsSubText1 +Roghnaigh cineál na díshuiteála: +# ^UnComponentsSubText2_NoInstTypes +Roghnaigh comhpháirteanna le díshuiteáil: +# ^UnComponentsSubText2 +Nó, roghnaigh na comhpháirteanna roghnacha is mian leat a dhíshuiteáil: +# ^DirText +Cuirfidh an Suiteálaí $(^NameDA) san fhillteán seo a leanas. Más mian leat suiteáil i bhfillteán difriúil, cliceáil "Brabhsáil" agus roghnaigh fillteán eile. $_CLICK +# ^DirSubText +Sprioc-Fhillteán +# ^DirBrowseText +Roghnaigh an fillteán inar mian leat $(^NameDA) a shuiteáil: +# ^UnDirText +Bainfidh an Suiteálaí $(^NameDA) amach as an bhfillteán seo a leanas. Más mian leat é a dhíshuiteáil ó fhillteán difriúil, cliceáil "Brabhsáil" agus roghnaigh fillteán eile. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Roghnaigh an fillteán ar mian leat $(^NameDA) a dhíshuiteáil as: +# ^SpaceAvailable +"Spás le fáil: " +# ^SpaceRequired +"Spás de dhíth: " +# ^UninstallingText +Díshuiteálfar $(^NameDA) ón fhillteán seo a leanas. $_CLICK +# ^UninstallingSubText +Á dhíshuiteáil ó: +# ^FileError +Earráid agus comhad á scríobh: \r\n\r\n$0\r\n\r\nCliceáil "Abort" chun an tsuiteáil a stopadh,\r\n"Retry" chun iarracht eile a dhéanamh, nó\r\n"Ignore" chun neamhaird a dhéanamh den chomhad seo. +# ^FileError_NoIgnore +Earráid agus comhad á scríobh: \r\n\r\n$0\r\n\r\nCliceáil "Retry" chun iarracht eile a dhéanamh, nó\r\n"Cancel" chun an tsuiteáil a stopadh. +# ^CantWrite +"Ní féidir scríobh: " +# ^CopyFailed +Theip ar an gcóipeáil +# ^CopyTo +"Cóipeáil go " +# ^Registering +"Clárú: " +# ^Unregistering +"Díchlárú: " +# ^SymbolNotFound +"Níorbh fhéidir siombail a aimsiú: " +# ^CouldNotLoad +"Níorbh fhéidir luchtú: " +# ^CreateFolder +"Cruthaigh fillteán: " +# ^CreateShortcut +"Cruthaigh aicearra: " +# ^CreatedUninstaller +"Cruthaíodh díshuiteálaí: " +# ^Delete +"Scrios comhad: " +# ^DeleteOnReboot +"Scrios ag am atosaithe: " +# ^ErrorCreatingShortcut +"Earráid agus aicearra á chruthú: " +# ^ErrorCreating +"Earráid le linn cruthaithe: " +# ^ErrorDecompressing +Earráid agus sonraí á ndíchomhbhrú! Suiteálaí truaillithe? +# ^ErrorRegistering +Earráid agus DLL á chlárú +# ^ExecShell +"Blaosc: " +# ^Exec +"Rith: " +# ^Extract +"Bain Amach: " +# ^ErrorWriting +"Extract: earráid le linn scríofa " +# ^InvalidOpcode +Díshuiteálaí truaillithe: cód neamhbhailí oibríochta +# ^NoOLE +"Gan OLE le haghaidh: " +# ^OutputFolder +"Fillteán aschurtha: " +# ^RemoveFolder +"Bain fillteán: " +# ^RenameOnReboot +"Athainmnigh ag am atosaithe: " +# ^Rename +"Athainmnigh: " +# ^Skipped +"Neamhaird déanta de: " +# ^CopyDetails +Cóipeáil Sonraí go dtí an Ghearrthaisce +# ^LogInstall +Logáil an próiseas suiteála +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Irish.nsh b/tools/Contrib/Language files/Irish.nsh new file mode 100644 index 0000000..aff4d54 --- /dev/null +++ b/tools/Contrib/Language files/Irish.nsh @@ -0,0 +1,121 @@ +;Language: Irish (2108) +;By Kevin P. Scannell < scannell at slu dot edu > + +!insertmacro LANGFILE "Irish" = "Gaeilge" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Fáilte go dtí Draoi Suiteála $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Déanfaidh an draoi seo treorú duit tríd an suiteáil de $(^NameDA).$\r$\n$\r$\nMoltar duit gach feidhmchlár eile a dhúnadh sula dtosaíonn tú an Suiteálaí. Cinnteoidh sé seo gur féidir na comhaid oiriúnacha a nuashonrú gan do ríomhaire a atosú.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Fáilte go dtí Draoi Díshuiteála $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Déanfaidh an draoi seo treorú duit tríd an díshuiteáil de $(^NameDA).$\r$\n$\r$\nBí cinnte nach bhfuil $(^NameDA) ag rith sula dtosaíonn tú an díshuiteáil.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Comhaontú um Cheadúnas" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Déan iniúchadh ar choinníollacha an cheadúnais sula suiteálann tú $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Má ghlacann tú le coinníollacha an chomhaontaithe, cliceáil $\"Glacaim Leis$\" chun leanúint ar aghaidh. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a shuiteáil." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Má ghlacann tú le coinníollacha an chomhaontaithe, cliceáil an ticbhosca thíos. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a shuiteáil. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Má ghlacann tú le coinníollacha an chomhaontaithe, roghnaigh an chéad rogha thíos. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a dhíshuiteáil. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Comhaontú um Cheadúnas" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Déan iniúchadh ar choinníollacha an cheadúnais sula ndíshuiteálann tú $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Má ghlacann tú le coinníollacha an chomhaontaithe, cliceáil $\"Glacaim Leis$\" chun leanúint ar aghaidh. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a dhíshuiteáil." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Má ghlacann tú le coinníollacha an chomhaontaithe, cliceáil an ticbhosca thíos. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a dhíshuiteáil. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Má ghlacann tú le coinníollacha an chomhaontaithe, roghnaigh an chéad rogha thíos. Caithfidh tú glacadh leis an gcomhaontú chun $(^NameDA) a dhíshuiteáil. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Brúigh $\"Page Down$\" chun an chuid eile den cheadúnas a léamh." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Roghnaigh Comhpháirteanna" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Roghnaigh na gnéithe $(^NameDA) ba mhaith leat suiteáil." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Roghnaigh Comhpháirteanna" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Roghnaigh na gnéithe $(^NameDA) ba mhaith leat díshuiteáil." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Cur Síos" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Cuir do luch os cionn comhpháirte chun cur síos a fheiceáil." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Roghnaigh comhpháirt chun cur síos a fheiceáil." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Roghnaigh Suíomh na Suiteála" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Roghnaigh an fillteán inar mian leat $(^NameDA) a shuiteáil." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Roghnaigh Suíomh na Díshuiteála" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Roghnaigh an fillteán ar mian leat $(^NameDA) a dhíshuiteáil as." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Á Shuiteáil" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Fan go fóill; $(^NameDA) á shuiteáil." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Suiteáil Críochnaithe" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "D'éirigh leis an tsuiteáil." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Suiteáil Tobscortha" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Níor éirigh leis an tsuiteáil." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Á Dhíshuiteáil" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Fan go fóill; $(^NameDA) á dhíshuiteáil." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Díshuiteáil Críochnaithe" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "D'éirigh leis an díshuiteáil." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Díshuiteáil Tobscortha" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Níor éirigh leis an díshuiteáil." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Draoi Suiteála $(^NameDA) á Chríochnú" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Suiteáladh $(^NameDA) ar do ríomhaire.$\r$\n$\r$\nCliceáil $\"Críochnaigh$\" chun an draoi seo a dhúnadh." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Ní mór duit do ríomhaire a atosú chun suiteáil $(^NameDA) a chur i gcrích. Ar mhaith leat atosú anois?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Draoi Díshuiteála $(^NameDA) á Chríochnú" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Díshuiteáladh $(^NameDA) ó do ríomhaire.$\r$\n$\r$\nCliceáil $\"Críochnaigh$\" chun an draoi seo a dhúnadh." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Ní mór duit do ríomhaire a atosú chun díshuiteáil $(^NameDA) a chur i gcrích. Ar mhaith leat atosú anois?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Atosaigh anois" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Atosóidh mé de láimh níos déanaí" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Rith $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Tai&speáin comhad README" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Críochnaigh" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Roghnaigh Fillteán sa Roghchlár Tosaigh" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Roghnaigh fillteán sa Roghchlár Tosaigh a gcuirfear aicearraí $(^NameDA) ann." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Roghnaigh an fillteán sa Roghchlár Tosaigh inar mian leat aicearraí an chláir a chruthú. Is féidir freisin fillteán nua a chruthú trí ainm nua a iontráil." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ná cruthaigh aicearraí" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Díshuiteáil $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Bain $(^NameDA) ó do ríomhaire." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "An bhfuil tú cinnte gur mian leat Suiteálaí $(^Name) a scor?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "An bhfuil tú cinnte gur mian leat Díshuiteálaí $(^Name) a scor?" +!endif diff --git a/tools/Contrib/Language files/Italian.nlf b/tools/Contrib/Language files/Italian.nlf new file mode 100644 index 0000000..07e7759 --- /dev/null +++ b/tools/Contrib/Language files/Italian.nlf @@ -0,0 +1,192 @@ +# Header, don't edit +NLF v6 +# Language ID +1040 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation orginally started by Orfanik - http://www.orfanik.hu +# Updated v2 to v6 by Alessandro Staltari < staltari (a) geocities.com > +# Revised by < mdalco@gmail.com > and bovirus < bovirus@gmail.com > +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Installazione di $(^Name) +# ^UninstallCaption +Disinstallazione di $(^Name) +# ^LicenseSubCaption +: Accordo di licenza +# ^ComponentsSubCaption +: Opzioni installazione +# ^DirSubCaption +: Cartella installazione +# ^InstallingSubCaption +: Installazione +# ^CompletedSubCaption +: Installazione completata +# ^UnComponentsSubCaption +: Opzioni disinstallazione +# ^UnDirSubCaption +: Cartella disinstallazione +# ^ConfirmSubCaption +: Conferma +# ^UninstallingSubCaption +: Disinstallazione +# ^UnCompletedSubCaption +: Disisntallazione completata +# ^BackBtn +< &Indietro +# ^NextBtn +&Avanti > +# ^AgreeBtn +&Accetto +# ^AcceptBtn +&Accetto le condizioni della licenza +# ^DontAcceptBtn +&Non accetto le condizioni della licenza +# ^InstallBtn +Ins&talla +# ^UninstallBtn +&Disinstalla +# ^CancelBtn +Annulla +# ^CloseBtn +&Fine +# ^BrowseBtn +S&foglia... +# ^ShowDetailsBtn +Visualizza &dettagli +# ^ClickNext +Per proseguire, seleziona 'Avanti'. +# ^ClickInstall +Per avviare l'installazione, seleziona 'Installa'. +# ^ClickUninstall +Per avviare la disinstallazione, seleziona 'Disinstalla'. +# ^Name +Nome +# ^Completed +Installazione completata +# ^LicenseText +Leggi la licenza prima di procedere con l'installazione di $(^NameDA). Se accetti le condizioni della licenza, seleziona 'Accetto'. +# ^LicenseTextCB +Leggi licenza prima di procedere con l'installazione di $(^NameDA). Se accetti tutte le condizioni della licenza, seleziona la casella sottostante. $_CLICK +# ^LicesnseTextRB +Leggi la licenza prima di procedere con l'installazione di $(^NameDA). Se accetti tutte le condizioni della licenza, seleziona la prima delle opzioni sottoindicate. $_CLICK +# ^UnLicenseText +Leggi la licenza prima di procedere con la disinstallazione di $(^NameDA). Se accetti tutte le condizioni della licenza, seleziona 'Accetto'. $_CLICK +# ^UnLicenseTextCB +Leggi la licenza prima di procedere con la disinstallazione di $(^NameDA). Se accetti tutte le condizioni della licenza, seleziona la casella sottostante. $_CLICK +# ^UnLicesnseTextRB +Leggi la licenza prima di procedere con la disinstallazione di $(^NameDA). Se accetti tutte le condizioni della licenza, seleziona la prima delle opzioni sottoindicate. $_CLICK +# ^Custom +Personalizzata +# ^ComponentsText +Seleziona componenti da installare. +# ^ComponentsSubText1 +Seleziona tipo installazione: +# ^ComponentsSubText2_NoInstTypes +Seleziona componenti da installare: +# ^ComponentsSubText2 +Oppure, seleziona componenti opzionali da installare: +# ^UnComponentsText +Seleziona componenti da disinstallare. +# ^UnComponentsSubText1 +Seleziona tipo disinstallazione: +# ^UnComponentsSubText2_NoInstTypes +Seleziona componenti da disinstallare: +# ^UnComponentsSubText2 +Oppure, seleziona componenti opzionali da disinstallare : +# ^DirText +Questa procedura installerà $(^NameDA) in questa cartella.\r\nPer installare in una cartella diversa, seleziona 'Sfoglia' e scegli un'altra cartella.\r\n$_CLICK +# ^DirSubText +Cartella destinazione +# ^DirBrowseText +Seleziona la cartella dove installare $(^NameDA): +# ^UnDirText +Questa procedura disinstallerà $(^NameDA) da questa cartella.\r\nPer disinstallare da una cartella diversa, seleziona 'Sfoglia' e scegli un'altra cartella.\r\n$_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Seleziona la cartella dalla quale disinstallare $(^NameDA): +# ^SpaceAvailable +"Spazio disponibile: " +# ^SpaceRequired +"Spazio richiesto: " +# ^UninstallingText +$(^NameDA) verrà disinstallato da questa cartella.\r\n$_CLICK +# ^UninstallingSubText +Rimozione da: +# ^FileError +Errore nell'apertura del file per la scrittura: \r\n\t"$0"\r\nSeleziona 'Termina' per interrompere l'installazione,\r\n'Riprova' per ritentare, oppure\r\n'Ignora' per saltare questo file. +# ^FileError_NoIgnore +Errore nell'apertura del file per la scrittura: \r\n\t"$0"\r\nSeleziona 'Riprova' per ritentare, oppure\r\n'Termina' per interrompere l'installazione +# ^CantWrite +"Impossibile scrivere: " +# ^CopyFailed +Copia fallita +# ^CopyTo +"Copia in " +# ^Registering +"Registrazione di: " +# ^Unregistering +"Deregistrazione di: " +# ^SymbolNotFound +"Impossibile trovare il simbolo: " +# ^CouldNotLoad +"Impossibile caricare: " +# ^CreateFolder +"Creazione cartella: " +# ^CreateShortcut +"Creazione collegamento: " +# ^CreatedUninstaller +"Creazione programma disinstallazione: " +# ^Delete +"Eliminazione file: " +# ^DeleteOnReboot +"Elimina al riavvio: " +# ^ErrorCreatingShortcut +"Errore nella creazione del collegamento: " +# ^ErrorCreating +"Errore nella creazione di: " +# ^ErrorDecompressing +Errore nella decompressione dei dati! Probabile programma di installazione corrotto. +# ^ErrorRegistering +Errore nella registrazione della DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Esecuzione di: " +# ^Extract +"Estrazione di: " +# ^ErrorWriting +"Estrazione: errore nella scrittura nel file " +# ^InvalidOpcode +Programma di installazione corrotto: opcode non valido +# ^NoOLE +"Nessuna OLE per: " +# ^OutputFolder +"Cartella destinazione: " +# ^RemoveFolder +"Rimozione cartella: " +# ^RenameOnReboot +"Al riavvio rinomina: " +# ^Rename +Rinomina +# ^Skipped +"Saltato: " +# ^CopyDetails +Copia i dettagli negli Appunti +# ^LogInstall +Registro eventi processo installazione +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Italian.nsh b/tools/Contrib/Language files/Italian.nsh new file mode 100644 index 0000000..78bd168 --- /dev/null +++ b/tools/Contrib/Language files/Italian.nsh @@ -0,0 +1,131 @@ +;Language: Italian (1040) +;By SANFACE Software v1.67 accents +;Review and update from v1.65 to v1.67 by Alessandro Staltari < staltari (a) geocities.com > +;Review and update from v1.67 to v1.68 by Lorenzo Bevilacqua < meow811@libero.it > + +!insertmacro LANGFILE "Italian" = "Italiano" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Installazione di $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Questo programma installerà $(^NameDA) nel computer.$\r$\n$\r$\nSi raccomanda di chiudere tutte le altre applicazioni prima di iniziare l'installazione. Questo permetterà al programma di installazione di aggiornare i file di sistema senza dover riavviare il computer.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Disinstallazione di $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Questa programma ti guiderà nella disinstallazione di $(^NameDA).$\r$\n$\r$\nPrima di iniziare la disinstallazione, assicurati che $(^Name) non sia in esecuzione.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Accordo di licenza" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Leggi le condizioni dell'accordo di licenza prima di installare $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Se accetti tutti i termini dell'accordo di licenza, seleziona 'Accetto' per continuare. Per installare $(^NameDA) è necessario accettare i termini dell'accordo di licenza." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se accetti i termini dell'accordo di licenza, seleziona la casella sottostante. Per installare $(^NameDA) è necessario accettare i termini dell'accordo di licenza. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se accetti i termini dell'accordo di licenza, seleziona la prima opzione sottostante. Per installare $(^NameDA) è necessario accettare i termini della licenza d'uso. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Accordo di licenza" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Leggi le condizioni dell'accordo di licenza prima di installare $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Se accetti tutti i termini dell'accordo di licenza, seleziona 'Accetto' per continuare. Per installare $(^NameDA) è necessario accettare i termini dell'accordo di licenza." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se accetti i termini dell'accordo di licenza, seleziona la casella sottostante. Per installare $(^NameDA) è necessario accettare i termini dell'accordo di licenza. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se accetti i termini dell'accordo di licenza, seleziona la prima opzione sottostante. Per installare $(^NameDA) è necessario accettare i termini della licenza d'uso. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Premi 'PagGiù' per visualizzare il resto dell'accordo di licenza." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Selezione componenti" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Seleziona i componenti di $(^NameDA) da installare." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Selezione componenti" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Seleziona i componenti di $(^NameDA) da disinstallare." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descrizione" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Posiziona il puntatore del mouse sul componente per visualizzare la relativa descrizione." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Seleziona un componente per visualizzare la relativa descrizione." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Selezione cartella installazione" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Seleziona la cartella nella quale installare $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Selezione cartella da cui disinstallare" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Seleziona la cartella dalla quale disinstallare $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installazione" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Attendi il completamento dell'installazione di $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installazione completata" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "L'installazione è stata completata correttamente." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installazione interrotta" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "L'installazione non è stata completata correttamente." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Disinstallazione" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Attendi il completamento della disinstallazione di $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Disinstallazione completata" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La disinstallazione è stata completata correttamente." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Disinstallazione interrotta" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La disintallazione non è stata completata correttamente." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Installazione di $(^NameDA) completata." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) è stato installato.$\r$\n$\r$\nScegli 'Chiudi' per chiudere il programma di installazione." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Per completare l'installazione di $(^NameDA) il computer deve essere riavviato. Vuoi riavviarlo ora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Disinstallazione di $(^NameDA) completata." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) è stato disinstallato.$\r$\n$\r$\nSeleziona 'Chiudi' per chiudere questa procedura." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Per completare la disinstallazione di $(^NameDA) il computer deve essere riavviato. Vuoi riavviarlo ora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Riavvia ora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Preferisco riavviarlo manualmente più tardi" + ${LangFileString} MUI_TEXT_FINISH_RUN "Esegui $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Visualizza il file Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Chiudi" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Selezione cartella menu Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Seleziona la cartella del menu Start in cui creare i collegamenti del programma." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleziona la cartella del menu Start in cui verranno creati i collegamenti del programma. È possibile inserire un nome per creare una nuova cartella." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Non creare i collegamenti del programma." +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Disinstallazione" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Disinstalla il programma $(^NameDA)." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Sei sicuro di voler interrompere l'installazione di $(^Name) ?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Sei sicuro di voler interrompere la disinstallazione di $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Configurazione profilo utenti" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Seleziona per quali utenti vuoi installare $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Seleziona se vuoi installare $(^NameDA) solo per questo utente o per tutti gli utenti di questo sistema. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installazione per tutti gli utenti" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installazione per il singolo utente" +!endif diff --git a/tools/Contrib/Language files/Japanese.nlf b/tools/Contrib/Language files/Japanese.nlf new file mode 100644 index 0000000..d961543 --- /dev/null +++ b/tools/Contrib/Language files/Japanese.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1041 +# Font and size - dash (-) means default +MS Pゴシック +9 +# Codepage - dash (-) means ASCII code page +932 +# RTL - anything else than RTL means LTR +- +# Translation by Dnanako(2002), Updated by Takahiro Yoshimura(2003) , maboroshin(2020) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) セットアップ +# ^UninstallCaption +$(^Name) アンインストール +# ^LicenseSubCaption +:使用許諾契約 +# ^ComponentsSubCaption +:インストール オプション +# ^DirSubCaption +:インストール フォルダ +# ^InstallingSubCaption +:インストール +# ^CompletedSubCaption +:完了 +# ^UnComponentsSubCaption +: アンインストール オプション +# ^UnDirSubCaption +: アンインストール フォルダ +# ^ComfirmSubCaption +:確認 +# ^UninstallingSubCaption +:アンインストール +# ^UnCompletedSubCaption +:完了 +# ^BackBtn +< 戻る(&B) +# ^NextBtn +次へ(&N) > +# ^AgreeBtn +同意する(&A) +# ^AcceptBtn +この使用許諾契約に同意する(&A) +# ^DontAcceptBtn +この使用許諾契約に同意しません(&D) +# ^InstallBtn +インストール(&I) +# ^UninstallBtn +アンインストール(&U) +# ^CancelBtn +キャンセル +# ^CloseBtn +閉じる(&C) +# ^BrowseBtn +参照(&R)... +# ^ShowDetailsBtn +詳細を表示(&D) +# ^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\t"$0"\r\nインストールを中止するには「中止」、\r\n再びこのファイルの作成を試みるには「再試行」、\r\nこのファイルをスキップして続けるには「無視」を押してください。 +# ^FileError_NoIgnore +書き込みファイルオープンのエラー: \r\n\t"$0"\r\n再びこのファイルの作成を試みるには「再試行」、\r\nインストールを中止するには「キャンセル」を押してください。 +# ^CantWrite +書き込めません: +# ^CopyFailed +コピー失敗 +# ^CopyTo +コピー +# ^Registering +登録中: +# ^Unregistering +登録解除中: +# ^SymbolNotFound +シンボルが見つかりません: +# ^CouldNotLoad +読み込みに失敗: +# ^CreateFolder +フォルダ作成: +# ^CreateShortcut +ショートカット作成: +# ^CreatedUninstaller +アンインストーラ作成: +# ^Delete +ファイル削除: +# ^DeleteOnReboot +再起動時に削除: +# ^ErrorCreatingShortcut +ショートカット作成エラー: +# ^ErrorCreating +作成エラー: +# ^ErrorDecompressing +データの展開エラー\r\n\r\nインストーラが破損していませんか? +# ^ErrorRegistering +DLL の登録エラー +# ^ExecShell +拡張子の関連付け実行: +# ^Execute +実行: +# ^Extract +展開: +# ^ErrorWriting +展開:ファイルへの書き込みエラー +# ^InvalidOpcode +インストーラーが壊れている:無効な opcode +# ^NoOLE +OLE がありません: +# ^OutputFolder +出力先フォルダ: +# ^RemoveFolder +フォルダ削除: +# ^RenameOnReboot +再起動時に名前の変更: +# ^Rename +名前の変更: +# ^Skipped +省略: +# ^CopyDetails +クリップボードへ詳細をコピー +# ^LogInstall +インストールの経過をログヘ記録 +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Japanese.nsh b/tools/Contrib/Language files/Japanese.nsh new file mode 100644 index 0000000..a143b0f --- /dev/null +++ b/tools/Contrib/Language files/Japanese.nsh @@ -0,0 +1,129 @@ +;Language: Japanese (1041) +; 1st translation by Dnanako Dnanako (2002, r1537), 2nd update by Takahiro Yoshimura (2003, r2489) , 3rd update by maboroshin (July 2020) + +!insertmacro LANGFILE "Japanese" = "日本語" "Nihongo" + +!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) を実行(&R)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Readme を表示(&S)" + ${LangFileString} MUI_BUTTONTEXT_FINISH "完了(&F)" +!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 "$(^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/tools/Contrib/Language files/Korean.nlf b/tools/Contrib/Language files/Korean.nlf new file mode 100644 index 0000000..6a04a97 --- /dev/null +++ b/tools/Contrib/Language files/Korean.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1042 +# Font and size - dash (-) means default +굴림 +9 +# Codepage - dash (-) means ASCII code page +949 +# RTL - anything else than RTL means LTR +- +# Translation by dTomoyo dtomoyo@empal.com ( ~V2.0 BETA2 ) / By hardkoder@gmail.com (V2.0 BETA3 ~ ) +# ^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 +# ^LicesnseTextRB +$(^NameDA)(을)를 설치하기 전에 사용권 계약 내용을 살펴보시기 바랍니다. 내용에 동의하셨다면 아래 옵션을 선택해 주세요. $_CLICK +# ^UnLicenseText +$(^NameDA)(을)를 제거하기 전에 사용권 계약 내용을 살펴보시기 바랍니다. 내용에 동의하셨다면 '동의함'을 눌러 주세요. +# ^UnLicenseTextCB +$(^NameDA)(을)를 제거하기 전에 사용권 계약 내용을 살펴보시기 바랍니다. 내용에 동의하셨다면 아래 사항을 체크해 주세요. $_CLICK +# ^UnLicesnseTextRB +$(^NameDA)(을)를 제거하기 전에 사용권 계약 내용을 살펴보시기 바랍니다. 내용에 동의하셨다면 아래 옵션을 선택해 주세요. $_CLICK +# ^Custom +사용자 정의 +# ^ComponentsText +설치를 원하시는 구성 요소를 선택하여 주시기 바랍니다. $_CLICK +# ^ComponentsSubText1 +설치 형태 선택: +# ^ComponentsSubText2_NoInstTypes +설치하려는 구성 요소 선택: +# ^ComponentsSubText2 +구성요소 직접 선택: +# ^UnComponentsText +제거를 원하는 구성 요소를 체크해 주시기 바랍니다. $_CLICK +# ^UnComponentsSubText1 +제거 형태 선택: +# ^UnComponentsSubText2_NoInstTypes +제거하려는 구성 요소 선택: +# ^UnComponentsSubText2 +제거하려는 구성요소 직접 선택: +# ^DirText +$(^NameDA)(을)를 다음 폴더에 설치할 예정입니다. \r\n다른 폴더에 설치하고 싶으시면 '찾아보기' 버튼을 눌러서 다른 폴더를 선택해 주세요. $_CLICK +# ^DirSubText +설치 폴더 +# ^DirBrowseText +$(^NameDA)(을)를 다음 폴더에 설치합니다: +# ^UnDirText +$(^NameDA)(을)를 다음 폴더에서 제거할 예정입니다. \r\n다른 폴더에서 제거하고 싶으시면 '찾아보기' 버튼을 눌러서 다른 폴더를 선택해 주세요. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +$(^NameDA)(을)를 다음 폴더에서 제거 합니다: +# ^SpaceAvailable +"남은 디스크 공간: " +# ^SpaceRequired +"필요한 디스크 공간: " +# ^UninstallingText +시스템에서 $(^NameDA)(을)를 제거 할 것입니다. $_CLICK +# ^UninstallingText +제거 대상: +# ^FileError +다음 파일을 열 수 없습니다.: \r\n\t"$0"\r\n'중단'을 눌러 설치를 종료하거나,\r'다시 시도'를 눌러 다시 시도해 보거나,\r'무시'를 눌러 이 파일을 건너 뛰세요. +# ^FileError_NoIgnore +다음 파일을 열 수 없습니다.: \r\n\t"$0"\r\n'다시 시도'를 눌러 다시 시도해 보거나,\r'취소'를 눌러 설치를 종료하세요. +# ^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 +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Korean.nsh b/tools/Contrib/Language files/Korean.nsh new file mode 100644 index 0000000..c60a02d --- /dev/null +++ b/tools/Contrib/Language files/Korean.nsh @@ -0,0 +1,121 @@ +;Language: Korean (1042) +;By linak linak@korea.com ( ~ V2.0 BETA3 ) By kippler@gmail.com(www.kipple.pe.kr) ( V2.0 BETA3 ~ ) (last update:2007/09/05) + +!insertmacro LANGFILE "Korean" = "한국어" "Hangugeo" + +!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) 실행하기(&R)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Readme 파일 보기(&S)" + ${LangFileString} MUI_BUTTONTEXT_FINISH "마침" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "시작 메뉴 폴더 선택" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "프로그램의 바로 가기 아이콘이 생성될 시작 메뉴 폴더 선택." + ${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 "$(^Name) 설치를 취소하시겠습니까?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "$(^Name) 제거를 취소하시겠습니까?" +!endif diff --git a/tools/Contrib/Language files/Kurdish.nlf b/tools/Contrib/Language files/Kurdish.nlf new file mode 100644 index 0000000..94070c5 --- /dev/null +++ b/tools/Contrib/Language files/Kurdish.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID (none exists for Kurdish at this time) +9999 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1254 +# RTL - anything else than RTL means LTR +- +# Translation by Rêzan Tovjîn(chagy) (retovjin@hotmail.com.com) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Sazkirin +# ^UninstallCaption +$(^Name) Rakirin +# ^LicenseSubCaption +: Peymana Lîsansê +# ^ComponentsSubCaption +: Vebijêrkên Sazkirinê +# ^DirSubCaption +: Peldanka Sazkirinê +# ^InstallingSubCaption +: Tê Sazkirin +# ^CompletedSubCaption +: Qediya +# ^UnComponentsSubCaption +: Vebijêrkên Rakirinê +# ^UnDirSubCaption +: Peldanka Rakirinê +# ^ConfirmSubCaption +: Erêkirin +# ^UninstallingSubCaption +: Tê Rakirin +# ^UnCompletedSubCaption +: Qediya +# ^BackBtn +< &Vegere +# ^NextBtn +&Bidomîne > +# ^AgreeBtn +&Ez Dipejirînim +# ^AcceptBtn +Şertên Peymanê &Dipejirînim +# ^DontAcceptBtn +Şertên Peymanê Napejirînim +# ^InstallBtn +&Saz Bike +# ^UninstallBtn +&Rake +# ^CancelBtn +Betal +# ^CloseBtn +&Bigire +# ^BrowseBtn +&Çavlêgerîn... +# ^ShowDetailsBtn +Hûragahiyan &Nîşan Bide +# ^ClickNext +Ji bo berdewamê 'Bidomîne'yê bitikîne. +# ^ClickInstall +Ji bo destpêka sazkirinê 'Saz Bike'yê bitikîne. +# ^ClickUninstall +Ji bo destpêka rakirinê 'Rake' bitikîne. +# ^Name +nav +# ^Completed +Qediya +# ^LicenseText +Ji kerema xwe re berî tu bernameya $(^NameDA) saz bikî, çavekî li peymana lîsansê bigerîne. Heke tu hemû şertên peymanê dipejirînî, 'Ez Dipejirînim'ê bitikîne. +# ^LicenseTextCB +Ji kerema xwe re berî tu bernameya $(^NameDA) saz bikî, çavekî li peymana lîsansê bigerîne. Heke tu hemû şertan dipejirînî, zeviya erêkirinê ya jêrîn dagire. $_CLICK +# ^LicenseTextRB +Ji kerema xwe re berî tu bernameya $(^NameDA) saz bikî çavekî li peymana lîsansê bigerîne. Heke tu hemû şertên peymanê dipejirînî, zeviya vebijêrkê ya jêrîn dagire. $_CLICK +# ^UnLicenseText +Ji kerema xwe re berî tu bernameya $(^NameDA) rakî, çavekî li peymana lîsansê bigerîne. Heke tu hemû şertên peymanê dipejirînî, 'Ez Dipejirînim'ê bitikîn. +# ^UnLicenseTextCB +Ji kerema xwe re berî tu bernameya $(^NameDA) ji pergala xwe rakî, çavekî li peymana lîsansê bigerîne. Heke tu hemû şertên peymanê dipejirînî, zeviya jêrîn a erêkirinê dagire. $_CLICK +# ^UnLicenseTextRB +Ji kerema xwe re berî tu bernameya $(^NameDA) ji pergala xwe rakî, çavekî li peymana lîsansê bigerîne. Heke tu hemû şertên peymanê dipejirînî, zeviya vebijêrkê ya jêrîn dagire. $_CLICK +# ^Custom +Taybet +# ^ComponentsText +Beşên tu dixwazî saz bikî hilbijêre û niqirên 'check' beşên tu naxwazî werin sazkirin rake. $_CLICK +# ^ComponentsSubText1 +Awayê sazkirinê hilbijêre: +# ^ComponentsSubText2_NoInstTypes +Beşên dê werin sazkirin hilbijêre: +# ^ComponentsSubText2 +an jî, beşên beşên tu dixwazî werin sazkirin hilbijêre: +# ^UnComponentsText +Beşên tu dixwazî rakî hilbijêre, an jî niqira 'check'a ber beşên tu daxwazî were rakirin, rake. $_CLICK +# ^UnComponentsSubText1 +Awayê rakirinê hilbijêre: +# ^UnComponentsSubText2_NoInstTypes +Beşên dê werin rakirin hilbijêre: +# ^UnComponentsSubText2 +an jî beşên tu dixwazî werin rakirin hilbijêre: +# ^DirText +$(^NameDA) dê ji aliyê sazkirinê ve li peldanka jêrîn were sazkirin. Ji bo tu li peldankeke din saz bikî 'Çavlêgerîn'ê bitikîne û peldankeke din hilbijêre. $_CLICK +# ^DirSubText +Peldanka Armanckirî +# ^DirBrowseText +Peldanka tu dixwazî bernameya $(^NameDA) lê were sazkirin hilbijêre: +# ^UnDirText +$(^NameDA) dê ji aliyê sazkirinê ve ji peldanka jêrîn were rakirin. Ji bo tu ji peldankeke cuda rakî 'Çavlêgerîn'ê bitikîne û peldankeke din hilbijêre. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Peldanka tu dixwazî bernameya $(^NameDA) jê were rakirin hilbijêre: +# ^SpaceAvailable +"Herêma vala ku dikare were bikaranîn: " +# ^SpaceRequired +"Herêma vala ya pêwist: " +# ^UninstallingText +Bernameya $(^NameDA) dê ji peldanka jêrîn were rakirin. $_CLICK +# ^UninstallingSubText +tê rakirin: +# ^FileError +Dosya ji bo nivîsandinê venebû: \r\n\t"$0"\r\nJi bo destjêberdana sazkirinê abort'ê bitikîne,\r\nji bo ceribandina ji nû ve retry'ê , an jî\r\nji bo tu dosiyê tune bihesibînî û berdewam bikî ignore'yê bitikîne +# ^FileError_NoIgnore +Dosya ji bo nivîsandinê vebenebû: \r\n\t"$0"\r\nJi bo nivîsandina ji nû ve retry'yê, an jî\r\nJi bo destjêberdana sazkirinê abort'ê hilbijêre +# ^CantWrite +"Nehate Nivîsandin: " +# ^CopyFailed +Çewtiya Jibergirtinê +# ^CopyTo +"Ji Ber Bigire " +# ^Registering +"Tê Tomarkirin: " +# ^Unregistering +"Tomarî Tê Jêbirin: " +# ^SymbolNotFound +"Dawêr Nehate Dîtin: " +# ^CouldNotLoad +"Nehate Barkirin: " +# ^CreateFolder +"Peldankê Çêke: " +# ^CreateShortcut +"Kineriyê Çêke: " +# ^CreatedUninstaller +"Sêrbazê Rakirinê Hate Çêkirin: " +# ^Delete +"Dosyayê Jê Bibe: " +# ^DeleteOnReboot +"Dema ji nû ve dest pê kir dosiyê jê bibe: " +# ^ErrorCreatingShortcut +"Dema çêkirina kineriyê çewtî derket: " +# ^ErrorCreating +"Çewtiya çêkirinê: " +# ^ErrorDecompressing +Di dema vekirina daneyan de çewtî derket! Sazkirina Çewt? +# ^ErrorRegistering +Çewtiya tomariya DLL +# ^ExecShell +"Qalikê Xebatê: " +# ^Exec +"Bixebitîne: " +# ^Extract +"Veke: " +# ^ErrorWriting +"Veke: Dema li dosiyê hate nivîsîn çewtiyek derket " +# ^InvalidOpcode +Sazkirina Xirabe: koda nerast pêkanînê +# ^NoOLE +"OLE nehate dîtin: " +# ^OutputFolder +"Peldanka derketinê: " +# ^RemoveFolder +"Peldankê jê bibe: " +# ^RenameOnReboot +"Dema ji nû hate destpêkirin ji nû ve bi nav bike: " +# ^Rename +"Nav Biguhere: " +# ^Skipped +"Hate gavkirin: " +# ^CopyDetails +Hûragahiyan li Pano'yê binivîse +# ^LogInstall +Pêkanîna sazkirinê li lênûska rewşê binivîse +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Kurdish.nsh b/tools/Contrib/Language files/Kurdish.nsh new file mode 100644 index 0000000..75a2786 --- /dev/null +++ b/tools/Contrib/Language files/Kurdish.nsh @@ -0,0 +1,122 @@ +;Language: Kurdish +;By Rêzan Tovjîn +;Updated by Erdal Ronahî (erdal.ronahi@gmail.com) + +!insertmacro LANGFILE "Kurdish" = "Kurdî" "Kurdi" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "$(^NameDA) Tu bi xêr hatî sêrbaziya sazkirinê" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ev sêrbaz dê di dema sazkirina $(^NameDA) de rêberiya te bike.$\r$\n$\r$\nBerî tu dest bi sazkirinê bikî, em pêşniyar dikin tu hemû bernameyên vekirî bigirî. Bi vî rengî beyî tu komputera ji nû ve vekî dê hinek dosiyên pergalê bêpirsgirêk werin sazkirin.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Tu bi xêr hatî sêrbaziya rakirina bernameya $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ev sêrbaz ji bo rakirina bernameya $(^NameDA) dê alîkariya te bike.$\r$\n$\r$\nBerî tu dest bi rakirina bernameyê bikî, bernameyên vekirî hemûyan bigire. Bi vî rengî dû re tu mecbûr namînî ku komputera xwe bigirî û ji nû ve veki.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Peymana Lîsansê" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Ji kerema xwe re berî tu bernameya $(^NameDA) saz bikî, peymana lîsansê bixwîne." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Heke tu şertên peymanê dipejirînî, 'Ez Dipejirînim'ê bitikîne. Ji bo sazkirina bernameya $(^NameDA) divê tu şertên peymanê bipejirînî." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Heke tu şertên peymanê dipejirînî, zeviya piştrastkirinê ya jêrîn dagire. Ji bo tu bikarî bernameya $(^NameDA) saz bikî divê tu şertên peymanê bipejirînî. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Heke tu şertên peymanê dipejirînî, bişkojka erêkirinê ya jêrîn bitikîne. Ji bo sazkirina bernameya $(^NameDA) divê tu şertên peymanê bipejirînî. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Peymana Lîsansê" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Berî tu bernameya $(^NameDA) ji pergala xwe rakî peymanê bixwîne." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Heke tu şertên peymanê dipejirînî, 'Dipejirînim'ê bitikîne. Ji bo rakirina bernameya $(^NameDA) divê tu şertên peymanê bipejirînî." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Heke tu şertên peymanê dipejirînî, zeviya erêkirinê ya jêrîn dagire. Ji bo tu bernameya $(^NameDA) ji pergala xwe rakî divê tu peymanê bipejirînî. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Heke tu şertên peymanê dipejirînî, bişkojka erêkirinê ya jêrîn hilbijêre. Ji bo tu bernameya $(^NameDA) ji pergala xwe rakî divê tu şertên peymanê bipejirînî. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Ji bo dûmahîka peymanê bişkojka 'page down' bitikîne." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Hilbijartina pareyan" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Ji bo sazkirina $(^NameDA) pareyên tu dixwazî hilbijêre." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Hilbijartina Pareyan" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Pareya bernameya $(^NameDA) ku tu dixwazî rakî hilbijêre." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Dazanîn" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Ji bo tu der barê pareyan de agahiyan bistînî nîşanekê bibe ser pareyekê." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Ji bo tu der barê pareyan de agahiyan bistînî pareyekê hilbijêre." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Hilbijartina peldanka armanckirî" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Peldanka tu dixwazî bernameya $(^NameDA) tê de were sazkirin hilbijêre." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Hilbijartina Peldanka Dê Were Rakirin" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Peldanka bernameya $(^NameDA) ku tudixwazî rakî hilbijêre." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Tê sazkirin" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Ji kerema xwe re heta sazkirina $(^NameDA) biqede raweste." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Sazkirin Qediya" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Sazkirin bi serkeftinî qediya." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Sazkirin hate betalkirin" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Sazkirin be tevahî qediya." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Tê rakirin" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Heta bernameya $(^NameDA) ji pergala te were rakirin raweste." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Rakirina Bernameyê Biqedîne" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Rakirina bernameyê bi serkeftin pêk hat." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Rakirina bernameyê hate betalkirin" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Rakirina bernameyê neqediya." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Sêrbaziya sazkirina $(^NameDA) diqede." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) li komputera te hate barkirin.$\r$\n$\r$\n'Biqedîne'yê bitikîne û sazkirinê bi dawî bîne." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Ji bo bidawîkirina sazkirina $(^NameDA) divê tu komputerê ji nû ve vekî.Tu dixwazî komputerê ji nû ve vekî?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Sêrbaziya Rakirina Bernameya $(^NameDA) Tê Temamkirin" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Bernameya $(^NameDA) ji pergale hate rakirin.$\r$\n$\r$\nJi bo girtina sêrbaz 'biqedîne'yê bitikîne." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Ji bo rakirina bernameya $(^NameDA) biqede divê tu komputera xwe ji nû ve vekî. Tu dixwazî niha komputera te were girtin û ji nû ve dest pê bike?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ji nû ve veke" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ezê paşê ji nû ve vekim." + ${LangFileString} MUI_TEXT_FINISH_RUN "Bernameya $(^NameDA) bixebitîne" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Dosiya min bixwîne/readme &nîşan bide" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Biqedîne" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Hilbijartina Peldanka Pêşeka Destpêkê" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Peldanka pêşeka destpêkê ya ku dê kineriya $(^NameDA) tê de were bikaranîn hilbijêre." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Peldanka pêşeka destpêkê ya ku dê kineriya bernameyê tê de were bicihkirin hilbijêre. Tu dikarî bi navekî nû peldankeke nû ava bikî." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Bêyî çêkirina kineriyê bidomîne" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Bernameya $(^NameDA) Rake" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Rakirina bernameya $(^NameDA) ji pergala te." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Tu bawer î ku dixwazî ji sazkirina $(^Name) derkevî?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Tu bawer î ku dixwazî dest ji rakirina bernameya $(^Name) berdî?" +!endif diff --git a/tools/Contrib/Language files/Latvian.nlf b/tools/Contrib/Language files/Latvian.nlf new file mode 100644 index 0000000..179fb73 --- /dev/null +++ b/tools/Contrib/Language files/Latvian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +1062 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1257 +# RTL - anything else than RTL means LTR +- +# Translation by Valdis Griķis (valmiera-9@inbox.lv) +# Corrections by Kristaps Meņģelis / x-f (x-f 'AT' inbox.lv) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +'$(^Name)' Uzstādīšana +# ^UninstallCaption +'$(^Name)' Atinstalēšana +# ^LicenseSubCaption +: Licences līgums +# ^ComponentsSubCaption +: Uzstādīšanas opcijas +# ^DirSubCaption +: Uzstādīšanas mape +# ^InstallingSubCaption +: Notiek uzstādīšana +# ^CompletedSubCaption +: Uzstādīšana pabeigta. +# ^UnComponentsSubCaption +: Atinstalēšanas opcijas +# ^UnDirSubCaption +: Atinstalēšanas mape +# ^ConfirmSubCaption +: Apstiprināšana +# ^UninstallingSubCaption +: Notiek atinstalēšana +# ^UnCompletedSubCaption +: Atinstalēšana pabeigta +# ^BackBtn +< &Atpakaļ +# ^NextBtn +&Tālāk > +# ^AgreeBtn +Es &piekrītu +# ^AcceptBtn +Es &piekrītu licences līguma noteikumiem +# ^DontAcceptBtn +Es &nepiekrītu licences līguma noteikumiem +# ^InstallBtn +&Uzstādīt +# ^UninstallBtn +&Atinstalēt +# ^CancelBtn +Atcelt +# ^CloseBtn +Ai&zvērt +# ^BrowseBtn +Pā&rlūkot... +# ^ShowDetailsBtn +Parādīt &detaļas +# ^ClickNext +Spiediet 'Tālāk', lai turpinātu. +# ^ClickInstall +Spiediet 'Uzstādīt', lai sāktu uzstādīšanas procesu. +# ^ClickUninstall +Spiediet 'Atinstalēt', lai sāktu atinstalēšanas procesu. +# ^Name +Vārds +# ^Completed +Uzstādīšana pabeigta +# ^LicenseText +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' uzstādīšanas. Ja piekrītat licences līguma noteikumiem, tad spiediet 'Es piekrītu'. +# ^LicenseTextCB +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' uzstādīšanas. Ja piekrītat licences līguma noteikumiem, tad atzīmējiet izvēles rūtiņu. $_CLICK +# ^LicenseTextRB +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' uzstādīšanas. Ja piekrītat licences līguma noteikumiem, tad izvēlieties pirmo zemākesošo opciju. $_CLICK +# ^UnLicenseText +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' atinstalēšanas. Ja piekrītat licences līguma noteikumiem, tad spiediet 'Es piekrītu'. +# ^UnLicenseTextCB +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' atinstalēšanas. Ja piekrītat licences līguma noteikumiem, tad atzīmējiet izvēles rūtiņu. $_CLICK +# ^UnLicenseTextRB +Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' atinstalēšanas. Ja piekrītat licences līguma noteikumiem, tad izvēlieties zemākesošo opciju. $_CLICK +# ^Custom +Pielāgots +# ^ComponentsText +Izvēlieties, kurus komponentus vēlaties uzstādīt un neiezīmējiet tos, kurus nevēlaties uzstādīt. $_CLICK +# ^ComponentsSubText1 +Izvēlieties uzstādīšanas veidu: +# ^ComponentsSubText2_NoInstTypes +Izvēlieties uzstādāmos komponentus: +# ^ComponentsSubText2 +Vai arī – izvēlieties tikai nepieciešamos komponentus, kurus vēlaties uzstādīt: +# ^UnComponentsText +Izvēlieties, kurus komponentus atinstalēt un neiezīmējiet tos, kurus nevēlaties atinstalēt. $_CLICK +# ^UnComponentsSubText1 +Izvēlieties atinstalēšanas veidu: +# ^UnComponentsSubText2_NoInstTypes +Izvēlieties atinstalējamos komponentus: +# ^UnComponentsSubText2 +Vai arī – izvēlieties tikai nepieciešamos komponentus, kurus vēlaties atinstalēt: +# ^DirText +'$(^NameDA)' tiks uzstādīta šajā mapē. Lai to uzstādītu citā mapē, nospiediet 'Pārlūkot' un izvēlieties citu mapi. $_CLICK +# ^DirSubText +Uzstādīšanas mape +# ^DirBrowseText +Izvēlieties mapi, kurā uzstādīt '$(^NameDA)': +# ^UnDirText +'$(^NameDA)' tiks atinstalēta no šīs mapes. Lai to atinstalētu no citas mapes, nospiediet 'Pārlūkot' un izvēlieties citu mapi. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Izvēlieties mapi, no kuras atinstalēt '$(^NameDA)': +# ^SpaceAvailable +"Pieejamais diska apjoms: " +# ^SpaceRequired +"Nepieciešamais diska apjoms: " +# ^UninstallingText +'$(^NameDA)' tiks atinstalēta no šīs mapes. $_CLICK +# ^UninstallingSubText +Atinstalēšana no: +# ^FileError +Kļūda atverot failu rakstīšanai: \r\n\t"$0"\r\nNospiediet 'Atcelt', lai atceltu uzstādīšanas procesu,\r\n'Mēģināt vēlreiz', lai atkārtoti mēģinātu rakstīt failā vai\r\n'Ignorēt', lai izlaistu šī faila uzstādīšanu +# ^FileError_NoIgnore +Kļūda atverot failu rakstīšanai: \r\n\t"$0"\r\nNospiediet 'Atcelt', lai pārtrauktu uzstādīšanas procesu +# ^CantWrite +"Nevar ierakstīt: " +# ^CopyFailed +Kopēšana neizdevās +# ^CopyTo +"Kopē uz " +# ^Registering +"Reģistrē: " +# ^Unregistering +"Atreģistrē: " +# ^SymbolNotFound +"Simbols nav atrasts: " +# ^CouldNotLoad +"Nav iespējams ielādēt: " +# ^CreateFolder +"Izveido mapi: " +# ^CreateShortcut +"Izveido saīsni: " +# ^CreatedUninstaller +"Izveidots atinstalētājs: " +# ^Delete +"Dzēš failu: " +# ^DeleteOnReboot +"Dzēst pēc pārstartēšanas: " +# ^ErrorCreatingShortcut +"Kļūda veidojot saīsni: " +# ^ErrorCreating +"Kļūda veidojot: " +# ^ErrorDecompressing +Kļūda atkompresējot datus! Bojāta instalācija? +# ^ErrorRegistering +Kļūda reģistrējot DLL failu +# ^ExecShell +"Izpilda čaulā: " +# ^Exec +"Izpilda: " +# ^Extract +"Atspiež: " +# ^ErrorWriting +"Atspiešana: kļūda rakstot failā " +# ^InvalidOpcode +Instalācija bojāta: nederīgs CRC kods +# ^NoOLE +"Nav OLE priekš: " +# ^OutputFolder +"Izvades mape: " +# ^RemoveFolder +"Dzēš mapi: " +# ^RenameOnReboot +"Pārsaukt pēc pārstartēšanas: " +# ^Rename +"Pārsaukt: " +# ^Skipped +"Izlaists: " +# ^CopyDetails +Iekopēt detaļas starpliktuvē +# ^LogInstall +Ierakstīt žurnāla failā uzstādīšanas procesu +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Latvian.nsh b/tools/Contrib/Language files/Latvian.nsh new file mode 100644 index 0000000..4371e89 --- /dev/null +++ b/tools/Contrib/Language files/Latvian.nsh @@ -0,0 +1,122 @@ +;Language: Latviešu [Latvian] - (1062) +;By Valdis Griķis +;Corrections by Kristaps Meņģelis / x-f (x-f 'AT' inbox.lv) + +!insertmacro LANGFILE "Latvian" = "Latviešu" "Latviesu" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Esiet sveicināti '$(^NameDA)' uzstādīšanas vednī" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Šis uzstādīšanas vednis jums palīdzēs veikt '$(^NameDA)' uzstādīšanu.$\r$\n$\r$\nĻoti ieteicams aizvērt citas programmas pirms šīs programmas uzstādīšanas veikšanas. Tas ļaus atjaunot svarīgus sistēmas failus bez datora pārstartēšanas.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Esiet sveicināti '$(^NameDA)' atinstalēšanas vednī" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Šis vednis jums palīdzēs veikt '$(^NameDA)' atinstalēšanu.$\r$\n$\r$\nPirms sākt atinstalēšanas procesu, pārliecinieties, vai '$(^NameDA)' pašlaik nedarbojas.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licences līgums" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' uzstādīšanas." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ja piekrītat licences līguma noteikumiem, spiediet 'Piekrītu', lai turpinātu uzstādīšanu. Jums ir jāpiekrīt licences noteikumiem, lai uzstādītu '$(^NameDA)'." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ja piekrītat licences līguma noteikumiem, tad atzīmējiet izvēles rūtiņu. Jums ir jāpiekrīt licences noteikumiem, lai uzstādītu '$(^NameDA)'. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ja piekrītat licences līguma noteikumiem, tad izvēlieties pirmo zemākesošo opciju. Jums ir jāpiekrīt licences noteikumiem, lai uzstādītu '$(^NameDA)'. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licences līgums" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lūdzu izlasiet licences līgumu pirms '$(^NameDA)' atinstalēšanas." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ja piekrītat licences noteikumiem, spiediet 'Piekrītu', lai turpinātu. Jums ir jāpiekrīt licences noteikumiem, lai atinstalētu '$(^NameDA)'." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ja piekrītat licences līguma noteikumiem, tad iezīmējiet izvēles rūtiņu. Jums ir jāpiekrīt licences noteikumiem, lai atinstalētu '$(^NameDA)'. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ja piekrītat licences līguma noteikumiem, tad izvēlieties pirmo zemākesošo opciju. Jums ir jāpiekrīt licences noteikumiem, lai atinstalētu '$(^NameDA)'. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Spiediet 'Page Down', lai aplūkotu visu līgumu." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Izvēlieties komponentus" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Izvēlieties nepieciešamās '$(^NameDA)' sastāvdaļas, kuras uzstādīt." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Izvēlieties komponentus" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Izvēlieties nepieciešamās '$(^NameDA)' sastāvdaļas, kuras atinstalēt." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Apraksts" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Novietojiet peles kursoru uz komponenta, lai tiktu parādīts tā apraksts." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Izvēlieties uzstādīšanas mapi" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Izvēlieties mapi, kurā uzstādīt '$(^NameDA)'." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Izvēlieties atinstalēšanas mapi" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Izvēlieties mapi, no kuras notiks '$(^NameDA)' atinstalēšana." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Notiek uzstādīšana" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Lūdzu uzgaidiet, kamēr notiek '$(^NameDA)' uzstādīšana." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Uzstādīšana pabeigta" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Uzstādīšana noritēja veiksmīgi." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Uzstādīšana atcelta" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Uzstādīšana nenoritēja veiksmīgi." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Notiek atinstalēšana" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Lūdzu uzgaidiet, kamēr '$(^NameDA)' tiek atinstalēta." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Atinstalēšana pabeigta" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Atinstalēšana noritēja veiksmīgi." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Atinstalēšana atcelta" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Atinstalēšana nenoritēja veiksmīgi." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Tiek pabeigta '$(^NameDA)' uzstādīšana" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "'$(^NameDA)' tika veiksmīgi uzstādīta jūsu datorā.$\r$\n$\r$\nNospiediet 'Pabeigt', lai aizvērtu vedni." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Jūsu datoru ir nepieciešams pārstartēt, lai pabeigtu '$(^NameDA)' uzstādīšanu. Vai vēlaties pārstartēt datoru tūlīt?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Tiek pabeigta '$(^NameDA)' atinstalācija" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "'$(^NameDA)' tika veiksmīgi izdzēsta no jūsu datora.$\r$\n$\r$\nNospiediet 'Pabeigt', lai aizvērtu vedni." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Jūsu datoru nepieciešams pārstartēt, lai pabeigtu '$(^NameDA)' atinstalēšanu. Vai vēlaties pārstartēt datoru tūlīt?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Pārstartēt tūlīt" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Es vēlos pārstartēt pats vēlāk" + ${LangFileString} MUI_TEXT_FINISH_RUN "P&alaist '$(^NameDA)'" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Pa&rādīt LasiMani failu" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Pabeigt" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Izvēlieties 'Start Menu' folderi" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Izvēlieties 'Start Menu' mapi '$(^NameDA)' saīsnēm." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Izvēlieties 'Start Menu' mapi, kurā tiks izveidotas programmas saīsnes. Varat arī pats izveidot jaunu mapi." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Neveidot saīsnes" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "'$(^NameDA)' atinstalēšana" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Dzēst '$(^NameDA)' no jūsu datora." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Vai tiešām vēlaties pārtraukt '$(^Name)' uzstādīšanu?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Vai tiešām vēlaties pārtraukt '$(^Name)' atinstalēšanu?" +!endif diff --git a/tools/Contrib/Language files/Lithuanian.nlf b/tools/Contrib/Language files/Lithuanian.nlf new file mode 100644 index 0000000..8a489a7 --- /dev/null +++ b/tools/Contrib/Language files/Lithuanian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +1063 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1257 +# RTL - anything else than RTL means LTR +- +# Translation by Vytautas Krivickas (Vytautas) +# Updated by Danielius Scepanskis (Daan daniel@takas.lt) 2004.03.24 +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Įdiegimas +# ^UninstallCaption +$(^Name) Šalinti +# ^LicenseSubCaption +: Naudojimo sutartis +# ^ComponentsSubCaption +: Įdiegimo nustatymai +# ^DirSubCaption +: Įdiegimo katalogas +# ^InstallingSubCaption +: Įdiegiama +# ^CompletedSubCaption +: Baigta +# ^UnComponentsSubCaption +: Ištrinimo nustatymai +# ^UnDirSubCaption +: Ištrinimo katalogas +# ^ConfirmSubCaption +: Patvirtinimas +# ^UninstallingSubCaption +: Panaikinama +# ^UnCompletedSubCaption +: Baigta +# ^BackBtn +< &Atgal +# ^NextBtn +&Toliau > +# ^AgreeBtn +Aš &sutinku +# ^AcceptBtn +Aš &sutinku su naudojimo sutarties sąlygomis +# ^DontAcceptBtn +Aš &nesutinku su naudojimo sutarties sąlygomis +# ^InstallBtn +&Įdiegti +# ^UninstallBtn +&Panaikinti +# ^CancelBtn +Nutraukti +# ^CloseBtn +&Uždaryti +# ^BrowseBtn +P&asirinkti... +# ^ShowDetailsBtn +Parodyti &detales +# ^ClickNext +Paspauskite toliau +# ^ClickInstall +Paspauskite įdiegti +# ^ClickUninstall +Paspauskite ištrinti +# ^Name +Vardas +# ^Completed +Baigta +# ^LicenseText +Prašome perskaityti sutartį prieš įdiegdami $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, spauskite Sutinku. +# ^LicenseTextCB +Prašome perskaityti sutartį prieš įdiegdami $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, padėkite varnelę tam skirtame laukelyje. $_CLICK +# ^LicenseTextRB +Prašome perskaityti sutartį prieš įdiegdami $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, pasirinkite pirmą pasirinkimą esantį žemiau. $_CLICK +# ^UnLicenseText +Prašome perskaityti sutartį prieš ištrinant $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, spauskite Sutinku. +# ^UnLicenseTextCB +Prašome perskaityti sutartį prieš ištrinant $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, padėkite varnelę tam skirtame laukelyje. $_CLICK +# ^UnLicenseTextRB +Prašome perskaityti sutartį prieš ištrinant $(^NameDA). Jei jūs sutinkate su nurodytomis sąlygomis, pasirinkite pirmą pasirinkimą esantį žemiau. $_CLICK +# ^Custom +Kitoks +# ^ComponentsText +Padėkite varneles laukeliuose komponentų kuriuos norite įdiegti ir nuimkite nuo kurių nenorite įdiegti. $_CLICK +# ^ComponentsSubText1 +Pasirinkite įdiegimo būdą: +# ^ComponentsSubText2_NoInstTypes +Pasirinkite komponentus, kuriuos įdiegti: +# ^ComponentsSubText2 +Arba, pasirinkite neprivalomus komponentus, kuriuos jūs norite įdiegti: +# ^UnComponentsText +Padėkite varneles laukeliuose komponentų kuriuos norite pašalinti ir nuimkite nuo kurių nenorite pašalinti. $_CLICK +# ^UnComponentsSubText1 +Pasirinkite šalinimo būdą: +# ^UnComponentsSubText2_NoInstTypes +Pasirinkite komponentus, kuriuos šalinti: +# ^UnComponentsSubText2 +Arba, pasirinkite neprivalomus komponentus, kuriuos jūs norite pašalinti: +# ^DirText +Įdiegimas dabar įdiegs $(^NameDA) šiame kataloge. Jeigu norite pakeisti šį katalogą, paspauskite Pasirinkti. $_CLICK +# ^DirSubText +Įdiegimo katalogas +# ^DirBrowseText +Pasirinkite katalogą, kur įdiegti $(^NameDA): +# ^UnDirText +Įdiegimas dabar pašalins $(^NameDA) iš šio katalogo. Jeigu norite pakeisti šį katalogą paspauskite Pasirinkti. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Pasirinkite katalogą iš kurio pašalinti $(^NameDA): +# ^SpaceAvailable +Yra vietos: +# ^SpaceRequired +Reikia vietos: +# ^UninstallingText +$(^NameDA) dabar bus pašalintas iš šio katalogo. $_CLICK +# ^UninstallingSubText +Trinama iš: +# ^FileError +Klaida atidarant failą įrašymui: \r\n\t"$0"\r\nPaspauskite Nutraukti, jei norite nutraukti įdiegimą,\r\nPakartoti, jei norite pabandyti dar kartą įrašyti failą, ar\r\nIgnoruoti, jei norite praleisti šį failą +# ^FileError_NoIgnore +Klaida atidarant failą įrašymui: \r\n\t"$0"\r\nPaspauskite Pakartoti, jei norite pabandyti dar kartą įrašyti failą, ar\r\nNutraukti, jei norite nutraukti įdiegimą. +# ^CantWrite +"Negalima įrašyti: " +# ^CopyFailed +Kopijavimas nepavyko +# ^CopyTo +Kopijuoti į +# ^Registering +"Užregistruojama: " +# ^Unregistering +"Išregistruojama: " +# ^SymbolNotFound +Nerastas simbolis: +# ^CouldNotLoad +Negaliu įkrauti: +# ^CreateFolder +Sukurti katalogą: +# ^CreateShortcut +Sukurti nuorodą: +# ^CreatedUninstaller +Sukurti panaikinimo programą: +# ^Delete +Ištrinti failą: +# ^DeleteOnReboot +"Ištrinti perkraunant: " +# ^ErrorCreatingShortcut +"Klaida kuriant nuorodą: " +# ^ErrorCreating +"Klaida kuriant: " +# ^ErrorDecompressing +Klaida išskleidžiant duomenis! Sugadintas įdiegimo failas? +# ^ErrorRegistering +Klaida užregistruojant DLL +# ^ExecShell +"VykdytiShell: " +# ^Exec +"Vykdyti: " +# ^Extract +"Išskleisti: " +# ^ErrorWriting +Išskleisti: klaida įrašant į failą +# ^InvalidOpcode +Įdiegimo failas sugadintas: neteisingas opkodas +# ^NoOLE +"Nėra OLE dėl: " +# ^OutputFolder +"Paskirties katalogas: " +# ^RemoveFolder +"Panaikinti katalogą: " +# ^RenameOnReboot +"Pervardinti perkraunant: " +# ^Rename +"Pervardinti: " +# ^Skipped +"Praleista: " +# ^CopyDetails +Kopijuoti detales į atmintį +# ^LogInstall +Įrašyti įdiegimo detales +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Lithuanian.nsh b/tools/Contrib/Language files/Lithuanian.nsh new file mode 100644 index 0000000..094e99a --- /dev/null +++ b/tools/Contrib/Language files/Lithuanian.nsh @@ -0,0 +1,121 @@ +;Language: Lithuanian (1063) +;By Vytautas Krivickas (Vytautas). Updated by Danielius Scepanskis (Daan daniel@takas.lt) 2004.01.09 + +!insertmacro LANGFILE "Lithuanian" = "Lietuvių" "Lietuviu" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Sveiki atvykę į $(^NameDA) įdiegimo programą." + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ši programa jums padės lengvai įdiegti $(^NameDA).$\r$\n$\r$\nRekomenduojama išjungti visas programas, prieš pradedant įdiegimą. Tai leis atnaujinti sistemos failus neperkraunat kompiuterio.$\r$\n$\r$\n" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Sveiki atvykę į $(^NameDA) pašalinimo programą." + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ši programa jums padės lengvai ištrinti $(^NameDA).$\r$\n$\r$\nPrieš pradedant pasitikrinkite kad $(^NameDA) yra išjungta.$\r$\n$\r$\n" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Naudojimo sutartis" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Prašome perskaityti sutartį prieš įdiegdami $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jei jūs sutinkate su nurodytomis sąlygomis, spauskite Sutinku. Jūs privalote sutikti, jei norite įdiegti $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jei jūs sutinkate su nurodytomis sąlygomis, padėkite varnelę tam skirtame laukelyje. Jūs privalote sutikti, jei norite įdiegti $(^NameDA). " + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jei jūs sutinkate su nurodytomis sąlygomis, pasirinkite pirmą pasirinkimą esantį žemiau. Jūs privalote sutikti, jei norite įdiegti $(^NameDA). " +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Naudojimo sutartis" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Prašome perskaityti sutartį prieš $(^NameDA) pašalinimą." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jei jūs sutinkate su nurodytomis sąlygomis, spauskite Sutinku. Jūs privalote sutikti, jei norite ištrinti $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "s, padėkite varnelę tam skirtame laukelyje. Jūs privalote sutikti, jei norite ištrinti $(^NameDA). " + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jei jūs sutinkate su nurodytomis sąlygomis, pasirinkite pirmą pasirinkimą esantį žemiau. Jūs privalote sutikti, jei norite ištrinti $(^NameDA)." +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Paspauskite Page Down ir perskaitykite visą sutartį." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Pasirinkite" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Pasirinkite kokias $(^NameDA) galimybes jūs norite įdiegti." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Pasirinkite" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Pasirinkite kokias $(^NameDA) galimybes jūs norite pašalinti." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Paaiškinimas" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Užveskite pelės žymeklį ant komponento ir pamatysite jo aprašymą." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Pasirinkite komponentį ir pamatysite jo aprašymą." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Pasirinkite įdiegimo vietą" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Pasirinkite katalogą į kūri įdiegsite $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Pasirinkite ištrinimo vietą" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Pasirinkite katalogą iš kurio ištrinsite $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Diegiama" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Prašome palaukti, kol $(^NameDA) bus įdiegtas." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Įdiegimas baigtas" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Įdiegimas baigtas sekmingai." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Įdiegimas nutrauktas" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Įdiegimas nebuvo baigtas sekmingai." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Šalinama" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Prašome palaukti, kol $(^NameDA) bus pašalinta." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Programos pašalinimas baigtas" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Ištrynimas baigtas sekmingai." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Ištrynimas nutrauktas" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Ištrynimas nebuvo baigtas sekmingai." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Baigiu $(^NameDA) įdiegimo procesą" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) buvo įdiegtas į jūsų kompiuterį.$\r$\n$\r$\nPaspauskite Baigti." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Jūsų kompiuteris turi būti perkrautas, kad būtų baigtas $(^NameDA) įdiegimas. Ar jūs norite perkrauti dabar?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Baigiu $(^NameDA) pašalinimo programą." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) buvo ištrinta iš jūsų kompiuterio.$\r$\n$\r$\nPaspauskite Baigti." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Jūsų kompiuteris turi būti perkrautas, kad būtų baigtas $(^NameDA) pašalinimas. Ar jūs norite perkrauti dabar?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Perkrauti dabar" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Aš noriu perkrauti veliau pats" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Leisti $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Parodyti dokumentaciją" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Baigti" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Pasirinkite Start Menu katalogą" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Pasirinkite Start Menu katalogą, kuriame bus sukurtos programos nuorodos." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Pasirinkite Start Menu katalogą, kuriame bus sukurtos programos nuorodos. Jūs taip pat galite sukurti naują katalogą." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nekurti nuorodų" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Panaikinti $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Ištrinti $(^NameDA) iš jūsų kompiuterio." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ar jūs tikrai norite išjungti $(^Name) įdiegimo programą?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ar jūs tikrai norite išjungti $(^Name) pašalinimo programą?" +!endif diff --git a/tools/Contrib/Language files/Luxembourgish.nlf b/tools/Contrib/Language files/Luxembourgish.nlf new file mode 100644 index 0000000..1b59a15 --- /dev/null +++ b/tools/Contrib/Language files/Luxembourgish.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +4103 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Jo Hoeser +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Installatioun +# ^UninstallCaption +$(^Name) Desinstallatioun +# ^LicenseSubCaption +: Lizenzofkommes +# ^ComponentsSubCaption +: Installatiouns-Optiounen +# ^DirSubCaption +: Zielverzeechnis +# ^InstallingSubCaption +: Installéieren +# ^CompletedSubCaption +: Färdeg +# ^UnComponentsSubCaption +: Desinstallatiuons-Optiounen +# ^UnDirSubCaption +: Quellverzeechnes +# ^ConfirmSubCaption +: Bestätegung +# ^UninstallingSubCaption +: Läschen +# ^UnCompletedSubCaption +: Färdeg +# ^BackBtn +< &Zréck +# ^NextBtn +&Weider > +# ^AgreeBtn +&Unhuelen +# ^AcceptBtn +Ech &huelen d'Lizenzofkommes un. +# ^DontAcceptBtn +Ech &lehnen d'Lizenzofkommes of. +# ^InstallBtn +&Installéieren +# ^UninstallBtn +&Desinstalléieren +# ^CancelBtn +Ofbriechen +# ^CloseBtn +&Zou maan +# ^BrowseBtn +&Duerchsichen... +# ^ShowDetailsBtn +&Details uweisen +# ^ClickNext +Klick op weider fir weiderzefueren +# ^ClickInstall +Klick op Installéieren, fir d'Installatioun unzefänken. +# ^ClickUninstall +Klick op Desinstalléieren, fir d'Desinstallatioun unzefänken. +# ^Name +Numm +# ^Completed +Färdeg +# ^LicenseText +W.e.g. d'Lizenzofkommes liesen, ierts de $(^NameDA) installéiers. Wanns de all Bedengungen vum Ofkommes akzeptéiers, klick op Unhuelen. +# ^LicenseTextCB +W.e.g. d'Lizenzofkommes liesen, ierts de $(^NameDA) installéiers. Wanns de all Bedengungen vum Ofkommes akzeptéiers, aktivéier d'Kontrollkeschtchen. $_CLICK +# ^LicenseTextRB +W.e.g. d'Lizenzofkommes liesen, ierts de $(^NameDA) installéiers. Wanns de all Bedengungen vum Ofkommes akzeptéiers, wiel d'entsprichend Optioun. $_CLICK +# ^UnLicenseText +W.e.g. d'Lizenzofkommes liesen, ierts de $(^NameDA) desinstalléiers. Wanns de all Bedengungen vum Ofkommes akzeptéiers, klick op Unhuelen. +# ^UnLicenseTextCB +W.e.g. d'Lizenzofkommes liesen, ierts de $(^NameDA) desinstalléiers. Wanns de all Bedengungen vum Ofkommes akzeptéiers, aktivéier d'Kontrollkeschtchen. $_CLICK +# ^UnLicenseTextRB +W.e.g. d'Lizenzoofkommes liesen, ierts de $(^NameDA) desinstalléiers. Wanns de all Bedengungen vum Oofkommes akzeptéiers, wiel d'entspriechend Optioun. $_CLICK +# ^Custom +Benutzerdefiniert +# ^ComponentsText +Wiel d'Komponenten aus, déis de wëlls installéieren an wiel déijéineg of, déis de net installéieren wëlls. $_CLICK +# ^ComponentsSubText1 +Installatiouns-Typ bestëmmen: +# ^ComponentsSubText2_NoInstTypes +Wiel d'Komponenten aus, déis de installéieren wëlls: +# ^ComponentsSubText2 +oder wiel zousätzlech Komponenten aus déis de installéieren wëlls: +# ^UnComponentsText +Wiel d'Komponenten aus déis de desinstalléieren wëlls an wiel déijéineg of, déis de net desinstalléieren wëlls. $_CLICK +# ^UnComponentsSubText1 +Deinstallatiouns-Typ bestëmmen: +# ^UnComponentsSubText2_NoInstTypes +Wiel d'Komponenten aus, déis de desinstalléieren wëlls: +# ^UnComponentsSubText2 +oder wiel zusätzlech Komponenten aus, déis de desinstalléieren wëlls: +# ^DirText +$(^NameDA) gëtt an den Dossier installéiert deen fierginn gouf. Wanns de et an een aneren Dossier installéieren wëlls, klick op Duechsichen an wiel een aneren Dossier aus. $_CLICK +# ^DirSubText +Zielverzeechnes +# ^DirBrowseText +Wiel en Dossier aus wuers de $(^NameDA) installéieren wëlls: +# ^UnDirText +$(^NameDA) gëtt an deem Dossier desinstalléiert, deen uginn gouf. Wann $(^NameDA) an engem aneren Dossier ass, klick op Duechsichen an wiel een aneren Dossier aus. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Wiel den Dossier aus wou $(^NameDA) dran installéiert ass: +# ^SpaceAvailable +"Verfügbaren Späicher: " +# ^SpaceRequired +"Gebrauchten Späicher: " +# ^UninstallingText +$(^NameDA) gëtt aus dem ausgewielten Dossier desinstalléiert. $_CLICK +# ^UninstallingSubText +Desinstalléieren aus: +# ^FileError +Fehler beim Iwwerschreiwen vun der Datei: \r\n\t"$0"\r\nKlick op ofbriechen fir den Setup ze verloossen,\r\nop Widderhuelen fir den Setup nach eng Kéier duechzeféieren\r\n oder op Ignoréieren fir des Datei ze iwwersprengen an weiderzefueren. +# ^FileError_NoIgnore +Fehler beim Iwwerschreiwen vun der Datei: \r\n\t"$0"\r\nKlick op Widderhuelen fir den Setup nach eng Kéier duechzeféieren,\r\noder op ofbriechen fir den Setup ze verloossen. +# ^CantWrite +"Fehler beim Schreiwen: " +# ^CopyFailed +Kopéieren fehlgeschloen +# ^CopyTo +"Kopéiere an " +# ^Registering +"Registréieren: " +# ^Unregistering +"Deregistréieren: " +# ^SymbolNotFound +"Symbol ass net do: " +# ^CouldNotLoad +"Fehler beim Lueden vun: " +# ^CreateFolder +"Maan Dossier: " +# ^CreateShortcut +"Maan Oofkierzung: " +# ^CreatedUninstaller +"Man Desinstallatiouns-Programm: " +# ^Delete +"Läschen Datei: " +# ^DeleteOnReboot +"Läschen Datei no engem Neistart: " +# ^ErrorCreatingShortcut +"Fehler beim man vun enger Oofkierzung: " +# ^ErrorCreating +"Fehler beim maan: " +# ^ErrorDecompressing +Fehler beim Dekompriméieren. Installations-Programm beschiedegt? +# ^ErrorRegistering +Fehler beim Registréieren vun der DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Starten: " +# ^Extract +"Dekompriméieren: " +# ^ErrorWriting +"Dekompriméierung: Fehler beim Schreiwen vun der Datei " +# ^InvalidOpcode +Installations-Programm Beschiedegt: net zoulässegen Befehlscode +# ^NoOLE +"Keen OLE fier: " +# ^OutputFolder +"Zieldossier: " +# ^RemoveFolder +"Läschen Dossier: " +# ^RenameOnReboot +"Gett no Neistart embenannt: " +# ^Rename +"Embenennen: " +# ^Skipped +"Iwwersprongen: " +# ^CopyDetails +Detailler an d'Zwëschenooflag kopéieren +# ^LogInstall +Installatioun protokolléieren +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Luxembourgish.nsh b/tools/Contrib/Language files/Luxembourgish.nsh new file mode 100644 index 0000000..61fb95d --- /dev/null +++ b/tools/Contrib/Language files/Luxembourgish.nsh @@ -0,0 +1,121 @@ +;Language: Luxembourgish (1031) +;By Snowloard, changes by Philo + +!insertmacro LANGFILE "Luxembourgish" = "Lëtzebuergesch" "Letzebuergesch" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Wëllkomm beim Installatiouns-$\r$\nAssistent vun $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Dësen Assistent wärt dech duech d'Installatioun vun $(^NameDA) begleeden.$\r$\n$\r$\nEt gëtt ugeroden alleguer d'Programmer di am Moment lafen zouzemaan, datt bestëmmt Systemdateien ouni Neistart ersat kënne ginn.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Wëllkomm am Desinstallatiouns-$\r$\n\Assistent fir $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Desen Assistent begleet dech duech d'Desinstallatioun vun $(^NameDA).$\r$\n$\r$\nW.e.g. maach $(^NameDA) zu, ierts de mat der Desinstallatioun ufänks.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lizenzofkommes" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "W.e.g. d'Lizenzoofkommes liesen, ierts de mat der Installatioun weiderfiers." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Wanns de alleguer d'Bedengungen vum Ofkommes akzeptéiers, klick op Unhuelen. Du muss alleguer d'Fuerderungen unerkennen, fir $(^NameDA) installéieren ze kënnen." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Wanns de alleguer d'Bedengungen vum Ofkommes akzeptéiers, aktivéier d'Këschtchen. Du muss alleguer d'Fuerderungen unerkennen, fir $(^NameDA) installéieren ze kënnen. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Wanns de alleguer d'Bedengungen vum Ofkommes akzeptéiers, wiel ënnen di entspriechend Äntwert aus. Du muss alleguer d'Fuerderungen unerkennen, fir $(^NameDA) installéieren ze kënnen. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lizenzofkommes" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "W.e.g. lies d'Lizenzofkommes duech ierts de mat der Desinstallatioun vun $(^NameDA) weiderfiers." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Wanns de d'Fuerderungen vum Ofkommes akzeptéiers, klick op unhuelen. Du muss d'Ofkommes akzeptéieren, fir $(^NameDA) kënnen ze desinstalléieren." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Wanns de d'Fuerderungen vum Ofkommes akzeptéiers, aktivéier d'Këschtchen. Du muss d'Ofkommes akzeptéieren, fir $(^NameDA) kënnen ze desinstalléieren. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Wanns de d'Fuerderungen vum Ofkommes akzeptéiers, wiel ënnen di entspriechend Optioun. Du muss d'Oofkommes akzeptéieren, fir $(^NameDA) kennen ze desinstalléieren. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Dréck d'PageDown-Tast fir den Rescht vum Ofkommes ze liesen." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Komponenten auswielen" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Wiel d'Komponenten aus, déis de wëlls installéieren." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Komponenten auswielen" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Wiel eng Komponent aus, déis de desinstalléieren wëlls." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beschreiwung" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Hal den Mausfeil iwwer eng Komponent, fir d'Beschreiwung dervun ze gesinn." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Zielverzeechnes auswielen" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Wiel den Dossier aus, an deen $(^NameDA) installéiert soll ginn." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Dossier fir d'Desinstallatioun wielen" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Wiel den Dossier aus, aus dem $(^NameDA) desinstalléiert soll ginn." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installéieren..." + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Waard w.e.g während deem $(^NameDA) installéiert gëtt." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installatioun färdeg" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "D'Installatioun ass feelerfräi oofgeschloss ginn." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installatioun ofgebrach" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "D'Installatioun ass net komplett ofgeschloss ginn." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalléieren..." + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "W.e.g. waard, während deems $(^NameDA) desinstalléiert gëtt." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstallatioun ofgeschloss" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "D'Desinstallatioun ass erfollegräich ofgeschloss ginn." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstallatioun oofbriechen" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Desinstallatioun ass net erfollegräich ofgeschloss ginn." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "D'Installatioun vun $(^NameDA) gëtt ofgeschloss." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) ass um Computer installéiert ginn.$\r$\n$\r$\nKlick op färdeg maan, fir den Installatiouns-Assistent zou ze maan.." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Den Windows muss nei gestart ginn, fir d'Installatioun vun $(^NameDA) ofzeschléissen. Wëlls de Windows lo néi starten?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Desinstallatioun vun $(^NameDA) gëtt ofgeschloss" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) ass vum Computer desinstalléiert ginn.$\r$\n$\r$\nKlick op Ofschléissen fir den Assistent zou ze maan." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Windows muss néi gestart gin, fir d'Desinstallatioun vun $(^NameDA) ze vervollstännegen. Wëlls de Windows lo néi starten?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Lo néi starten" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Spéider manuell néi starten" + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) op maan" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Liesmech op maan" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Färdeg man" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Startmenü-Dossier bestëmmen" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Bestëmm een Startmanü-Dossier an deen d'Programmofkierzungen kommen." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Bestëmm een Startmanü-Dossier an deen d'Programmofkierzungen kommen. Wanns de een néien Dossier man wells, gëff deem säin zukünftegen Numm an." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Keng Ofkierzungen man" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstallatioun vun $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA) gett vum Computer desinstalléiert." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Bass de sécher, dass de d'Installatioun vun $(^Name) ofbriechen wëlls?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Bass de sécher, dass de d'Desinstallatioun vun $(^Name) ofbriechen wëlls?" +!endif diff --git a/tools/Contrib/Language files/Macedonian.nlf b/tools/Contrib/Language files/Macedonian.nlf new file mode 100644 index 0000000..8baef13 --- /dev/null +++ b/tools/Contrib/Language files/Macedonian.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1071 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Sasko Zdravkin [wingman2083@yahoo.com] +# ^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). Ако ги прифаќате сите услови, притиснете го Check box-от подоле. $_CLICK +# ^LicenseTextRB +Ве молиме прочитајте го Лиценцниот Договор пред да се инсталира $(^NameDA). Ако ги прифаќате сите услови, одберете ја првата опција подоле. $_CLICK +# ^UnLicenseText +Ве молиме прочитајте го Лиценцниот Договор пред да се деинсталира $(^NameDA). Ако ги прифаќате сите услови, притиснете 'Да'. +# ^UnLicenseTextCB +Ве молиме прочитајте го Лиценцниот Договор пред да се деинсталира $(^NameDA). Ако ги прифаќате сите услови, притиснете го Check box-от подоле. $_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\t"$0"\r\nПритиснете 'Откажи' за да ја откажете инсталацијата,\r\n'Пробај' за да проба да ја запише датотеката, или\r\n'Игнорирај' за да ја прерипа датотеката +# ^FileError_NoIgnore +Грешка при отварањето на датотеката за запишување: \r\n\t"$0"\r\nПритиснете 'Пробај' за да проба да ја запише датотеката, или\r\n'Откажи' за да ја откаже инсталацијата +# ^CantWrite +"Не може да запише: " +# ^CopyFailed +Копирањето не успеа +# ^CopyTo +"Копирај до " +# ^Registering +"Регистрира: " +# ^Unregistering +"Дерегистрира: " +# ^SymbolNotFound +"Не може да го најде симболот: " +# ^CouldNotLoad +"Не може да лоадира: " +# ^CreateFolder +"Создади директориум: " +# ^CreateShortcut +"Создади кратеница: " +# ^CreatedUninstaller +"Создаден деинсталатор: " +# ^Delete +"Избришана датотека: " +# ^DeleteOnReboot +"Избриши после рестартирање: " +# ^ErrorCreatingShortcut +"Грешка при создавањето на скратеницата: " +# ^ErrorCreating +"Грешка при создавањето: " +# ^ErrorDecompressing +Грешка при отпакувањето на податоците! Расипан инсталационен програм? +# ^ErrorRegistering +Грешка при регистрирањето на DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Покрени: " +# ^Extract +"Отпакувано: " +# ^ErrorWriting +"Отпакувај: грешка при снимањето во датотеката " +# ^InvalidOpcode +Расипан инсталационен програм: погрешен код +# ^NoOLE +"Нема OLE за: " +# ^OutputFolder +"Инсталационен директориум: " +# ^RemoveFolder +"Избришан директориум: " +# ^RenameOnReboot +"Преименувај после рестартирање: " +# ^Rename +"Преименувај: " +# ^Skipped +"Прерипано: " +# ^CopyDetails +Копирај ги Деталите во Clipboard-от +# ^LogInstall +Сними лог за инсталационите процеси +# ^Byte +б +# ^Kilo + К +# ^Mega + М +# ^Giga + Г diff --git a/tools/Contrib/Language files/Macedonian.nsh b/tools/Contrib/Language files/Macedonian.nsh new file mode 100644 index 0000000..1694fae --- /dev/null +++ b/tools/Contrib/Language files/Macedonian.nsh @@ -0,0 +1,121 @@ +;Language: Macedonian (1071) +;By Sasko Zdravkin [wingman2083@yahoo.com] + +!insertmacro LANGFILE "Macedonian" = "Македонски" "Makedonski" + +!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 "Ако ги прифаќате условите од договорот, чекирајте го check box-от подоле. Мора да го прифатите договорот за го инсталирате $(^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 "Ако ги прифаќате условите од договорот, чекирајте го check box-от подоле. Мора да го прифатите договорот за го деинсталирате $(^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 "Сигурни ли сте дека сакате да се откажете од инсталацијата на $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Сигурни ли сте дека сакате да се откажете од деинсталацијата на $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Malay.nlf b/tools/Contrib/Language files/Malay.nlf new file mode 100644 index 0000000..6bf0a81 --- /dev/null +++ b/tools/Contrib/Language files/Malay.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1086 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation muhammadazwa@yahoo.com +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Setup $(^Name) +# ^UninstallCaption +Uninstall $(^Name) +# ^LicenseSubCaption +: Perlesenan +# ^ComponentsSubCaption +: Pilihan kemasukan +# ^DirSubCaption +: Folder kemasukan +# ^InstallingSubCaption +: Memasang +# ^CompletedSubCaption +: Selesai +# ^UnComponentsSubCaption +: Pilihan membuang +# ^UnDirSubCaption +: Folder Uninstal +# ^ConfirmSubCaption +: Kepastian +# ^UninstallingSubCaption +: Membuang +# ^UnCompletedSubCaption +: Tidak Selesai +# ^BackBtn +< &Ke Belakang +# ^NextBtn +&Ke Depan > +# ^AgreeBtn +Saya &setuju +# ^AcceptBtn +Saya s&etuju dengan Perlesenan +# ^DontAcceptBtn +Saya &tidak setuju dengan Perlesenan +# ^InstallBtn +&Masukkan +# ^UninstallBtn +&Buang +# ^CancelBtn +Batal +# ^CloseBtn +&Tutup +# ^BrowseBtn +S&elusur... +# ^ShowDetailsBtn +Buka &lagi +# ^ClickNext +Klik Ke Depan untuk teruskan. +# ^ClickInstall +Klik Masukkan untuk kemasukkan. +# ^ClickUninstall +Klik Uninstall untuk membuang. +# ^Name +Nama +# ^Completed +Selesai +# ^LicenseText +Sila baca lesen sebelum memasukkan $(^NameDA). Jika anda terima perlesenan, klik Saya setuju. +# ^LicenseTextCB +Sila baca lesen sebelum memasukkan $(^NameDA). Jika terima, beri tanda dicheckbox. $_CLICK +# ^LicenseTextRB +Sila baca lesen sebelum sebelum membuang $(^NameDA). Jika anda terima perlesenan, pilihlah salah satu item dibawah ini. $_CLICK +# ^UnLicenseText +Sila baca lesen sebelum sebelum membuang $(^NameDA). Jika anda terima perlesenan, klik Saya setuju. +# ^UnLicenseTextCB +Sila baca lesen sebelum memasukkan $(^NameDA). Jika terima, beri tanda dicheckbox. $_CLICK +# ^UnLicenseTextRB +Sila baca lesen sebelum sebelum membuang $(^NameDA).Jika anda terima perlesenan, pilihlah salah satu item dibawah ini. $_CLICK +# ^Custom +Custom +# ^ComponentsText +Beri tanda dicheckbox pada komponen yang ingin dimasukkan and hilangkan tanda pada komponen yang tidak perlu dimasukkan. $_CLICK +# ^ComponentsSubText1 +Pilih kemasukan: +# ^ComponentsSubText2_NoInstTypes +Pilih komponen-komponen untuk dimasukkan: +# ^ComponentsSubText2 +Atau, pilih komponen berikut untuk dimasukkan: +# ^UnComponentsText +Beri tanda dicheckbox pada komponen yang ingin dimasukkan and hilangkan tanda pada komponen yang tidak perlu dimasukkan. $_CLICK +# ^UnComponentsSubText1 +Pilih tipe un-kemasukan: +# ^UnComponentsSubText2_NoInstTypes +Pilih komponen-komponen untuk di buang: +# ^UnComponentsSubText2 +Atau, pilih komponen berikut untuk di buang: +# ^DirText +Setup akan memasukkan $(^NameDA) pada folder berikut. Untuk memilih folder lainnya, klik Selusur dan pilih folder pilihan anda. $_CLICK +# ^DirSubText +Folder tujuan +# ^DirBrowseText +Pilih folder untuk memasukkan $(^NameDA): +# ^UnDirText +Setup akan membuang $(^NameDA) dari folder berikut. Untuk memilih folder lainnya, klik Selusur dan pilih folder pilihan anda. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Pilih folder untuk dibuang $(^NameDA): +# ^SpaceAvailable +"Ruang cakera keras yang ada: " +# ^SpaceRequired +"Ruang cakera keras yang diperlukan: " +# ^UninstallingText +$(^NameDA) akan buang dari folder berikut. $_CLICK +# ^UninstallingSubText +Membuang: +# ^FileError +Tidak dapat menulis pada fail: \r\n\t"$0"\r\nKlik abort untuk membatalkan kemasukan,\r\nretry untuk cuba lagi, atau\r\nignore untuk abaikan fail ini. +# ^FileError_NoIgnore +Tidak dapat menulis pada fail: \r\n\t"$0"\r\nKlik retry untuk cuba lagi, atau\r\ncancel untuk batalkan kemasukan +# ^CantWrite +"Gagal menulis pada: " +# ^CopyFailed +Gagal menyalin +# ^CopyTo +"Menyalin ke " +# ^Registering +"Mendaftarkan modul: " +# ^Unregistering +"Melepaskan modul: " +# ^SymbolNotFound +"Symbol tidak jumpa : " +# ^CouldNotLoad +"Tidak dapat membuka: " +# ^CreateFolder +"Membuat folder: " +# ^CreateShortcut +"Membuat pintasan: " +# ^CreatedUninstaller +"Membuat program unistall: " +# ^Delete +"Memadam fail: " +# ^DeleteOnReboot +"Akan dipadam ketika reboot: " +# ^ErrorCreatingShortcut +"Tidak dapat membuat pintasan: " +# ^ErrorCreating +"Ralat penciptaan: " +# ^ErrorDecompressing +Ralat ketika membuka data! Program Installer rosak +# ^ErrorRegistering +Ralat mendaftarkan modul DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Menjalankan: " +# ^Extract +"Mengekstrak: " +# ^ErrorWriting +"Ekstrak: ralat ketika menulis ke fail " +# ^InvalidOpcode +Installer rosak: opcode tidak lengkap +# ^NoOLE +"OLE tidak ditemukan: " +# ^OutputFolder +"Folder tujuan: " +# ^RemoveFolder +"Menghapuskan folder: " +# ^RenameOnReboot +"Menamakan semula pada reboot: " +# ^Rename +"Menamakan semula: " +# ^Skipped +"Diabaikan: " +# ^CopyDetails +Salin terperinci ke clipboard +# ^LogInstall +Catat proses kemasukan +# ^Byte +Bait +# ^Kilo + Kilo +# ^Mega + Mega +# ^Giga + Giga diff --git a/tools/Contrib/Language files/Malay.nsh b/tools/Contrib/Language files/Malay.nsh new file mode 100644 index 0000000..81ae9de --- /dev/null +++ b/tools/Contrib/Language files/Malay.nsh @@ -0,0 +1,121 @@ +;Language: Malay (1086) +;By muhammadazwa@yahoo.com + +!insertmacro LANGFILE "Malay" = "Bahasa Melayu" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Assalamualaikum, Selamat datang ke $(^NameDA) Setup Wizard" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Setup Wizard akan membantu anda untuk memasukkan $(^NameDA).$\r$\n$\r$\nSila tutup program aplikasi yang lain sebelum Setup ini dimulakan. Ini supaya tiada proses reboot komputer diperlukan.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Selamat datang ke $(^NameDA) Uninstall Wizard" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Uninstall Wizard akan membantu anda pada proses membuang $(^NameDA).$\r$\n$\r$\nSebelum membuang, pastikan dulu $(^NameDA) dimatikan.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Perlesenan" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Sila baca teks lesen berikut sebelum memasukkan $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jika anda bersetuju, klik Saya setuju untuk teruskan. Anda mesti setuju untuk sebelum aplikasi dapat dimasukkan $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jika anda bersetuju dengan syarat-syarat lesen, sila tanda dicheckbox. Anda mesti setuju sebelum memasukkan $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jika anda terima semua yang ada di lesen, pilihlah salah satu item dibawah ini. Anda mesti setuju sebelum memasukkan $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Tentang Lesen" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Sila baca teks lesen sebelum membuang $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jika anda menerima lesen, klik Saya setuju untuk teruskan. Anda mesti setuju untuk dapat membuang $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jika anda menerima semua yang ada di lesen, beri tanda dicheckbox. Anda mesti setuju untuk dapat membuang $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jika anda menerima semua yang ada di lesen, pilihlah salah satu item dibawah ini. Anda mesti setuju untuk dapat membuang $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Tekan Page Down untuk melihat teks selebihnya." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Pilih Komponen" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Pilih fungsi-fungsi dari $(^NameDA) yang ingin dimasukkan." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Pilih Komponen" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Pilih fungsi-fungsi $(^NameDA) yang ingin dibuang." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Penerangan" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Alihkan tetikus ke komponen untuk mengetahui penerangannya." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Pilih komponen untuk mengetahui penerangannya." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Pilih Lokasi Kemasukan" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Pilih folder untuk memasukkan $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Pilih Lokasi Uninstall" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Pilih folder untuk meng-uninstall $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Pemasangan" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Sila tunggu ketika $(^NameDA) sedang dimasukkan." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Proses Selesai" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Setup sudah selesai." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Proses Dibatalkan" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Setup terbatal." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Uninstall" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Sila tunggu ketika $(^NameDA) sedang di-buang." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Proses Uninstall Selesai" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Uninstall sudah selesai." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Proses Uninstall Dibatalkan" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Uninstall belum selesai secara sempurna." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Menyelesaikan $(^NameDA) Setup Wizard" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) sudah dimasukkan di komputer anda.$\r$\n$\r$\nKlik Selesai untuk menutup Setup Wizard." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Komputer anda harus direboot untuk menyelesaikan proses memasukkan $(^NameDA). Apakah anda hendak reboot sekarang juga?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Menyelesaikan $(^NameDA) Uninstall Wizard" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) sudah dibuang dari komputer anda.$\r$\n$\r$\nKlik Selesai untuk menutup Setup Wizard." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Komputer anda harus di reboot untuk menyelesaikan proses membuang $(^NameDA). Reboot sekarang?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reboot sekarang" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Reboot nanti" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Jalankan $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Buka fail Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Selesai" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Pilih Folder Start Menu" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Pilih folder Start Menu untuk meletakkan pintasan $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Pilih folder Start Menu untuk perletakkan pintasan aplikasi ini. Boleh cipta nama folder anda sendiri." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Tidak perlu pintasan" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Buang $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Padam $(^NameDA) dari komputer anda." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Adakan anda yakin ingin membatalkan Setup $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Adakan anda yakin ingin membatalkan proses buang $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Mongolian.nlf b/tools/Contrib/Language files/Mongolian.nlf new file mode 100644 index 0000000..5ea8431 --- /dev/null +++ b/tools/Contrib/Language files/Mongolian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1104 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Bayarsaikhan Enkhtaivan. ebayaraa@gmail.com +# ^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 +&Xaax +# ^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 +Устгах нэгдлүүдийг сонгоно ууl: +# ^UnComponentsSubText2 +Эсвэл, заавал устгахгүй байх нэгдлүүдийг сонго: +# ^DirText +$(^NameDA) нь дараах хавтсанд сууна. Өөр газар суулгахыг хүсвэл Хөтлөх товч дээр даран өөр хавтас сонгоно уу. $_CLICK +# ^DirSubText +Зорилтот Хавтас +# ^DirBrowseText +$(^NameDA)-ыг суулгах хавтсыг сонгох: +# ^UnDirText +$(^NameDA)-г уг хавтаснаас устгана. Өөр газраас устгахыг хүсвэл Хөтлөх товч дээр даран өөр хавтас сонгоно уу. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +$(^NameDA)-г устгах хавтсыг сонгох: +# ^SpaceAvailable +"Боломжит зай: " +# ^SpaceRequired +"Шаардагдах зай: " +# ^UninstallingText +$(^NameDA) нь уг хавтаснаас устгагдлаа. $_CLICK +# ^UninstallingSubText +Устгагдах газар: +# ^FileError +Файл бичихээр нээхэд алдлаа: \r\n\t"$0"\r\nТаслах дарвал суулгалт таслагдана,\r\nДахья дарвал файлыг бичихээр дахин оролдоно,\r\nэсвэл Үл тоох дарвал уг файлыг алгасна +# ^FileError_NoIgnore +Файл бичихээр нээхэд алдлаа: \r\n\t"$0"\r\nДахия дарвал файлыг бичихээр дахин оролдоно, \r\nэсвэл болих дарвал суулгалт таслагдана +# ^CantWrite +"Бичиж чадсангүй: " +# ^CopyFailed +Хуулалт бүтсэнгүй +# ^CopyTo +"Хуулах нь " +# ^Registering +"Бүртгэж байна: " +# ^Unregistering +"Бүртгэлийг арилгаж байна: " +# ^SymbolNotFound +"Тэмдэг хайгдсангүй: " +# ^CouldNotLoad +"Дуудагдсангүй: " +# ^CreateFolder +"Үүсгэх хавтас: " +# ^CreateShortcut +"Үүсгэх shortcut: " +# ^CreatedUninstaller +"Үүссэн uninstaller: " +# ^Delete +"Файл устгах: " +# ^DeleteOnReboot +"Д.ачаалахад устгах: " +# ^ErrorCreatingShortcut +"Shortcut үүсгэхэд алдлаа: " +# ^ErrorCreating +"Үүсгэх алдаа: " +# ^ErrorDecompressing +Өгөгдөл задлахад алдлаа! Суулгац эвдэрчээ? +# ^ErrorRegistering +DLL бүртгүүлэхэд алдлаа +# ^ExecShell +"Ажиллуулах команд(ExecShell): " +# ^Exec +"Ажиллуулах: " +# ^Extract +"Задлах: " +# ^ErrorWriting +"Задлалт:файл руу бичихэд алдаа " +# ^InvalidOpcode +Суулгац эвдэрчээ: задлах код буруу +# ^NoOLE +"OLE байхгүй: " +# ^OutputFolder +"Гаргах хавтас: " +# ^RemoveFolder +"Устгах хавтас: " +# ^RenameOnReboot +"Д.ачаалахад дахин нэрлэх: " +# ^Rename +"Дахин нэрлэх: " +# ^Skipped +"Алгассан: " +# ^CopyDetails +Дэлгэрэнгүйг Clipboard руу хуулах +# ^LogInstall +Суулгах явцын баримт +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Mongolian.nsh b/tools/Contrib/Language files/Mongolian.nsh new file mode 100644 index 0000000..831f1be --- /dev/null +++ b/tools/Contrib/Language files/Mongolian.nsh @@ -0,0 +1,129 @@ +;Language: Mongolian (1104) +;By Bayarsaikhan Enkhtaivan + +!insertmacro LANGFILE "Mongolian" "Mongolian (Cyrillic)" "Монгол Кирилл" "Mongol kirill" + +!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 "&Readme харуулах" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Төгсгөл" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Start цэсний хавтсыг сонго" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Start цэс дэх $(^NameDA) shortcut-ын хавтсыг сонго." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Start цэсэнд програмын shortcut үүсгэх хавтсыг сонго. Эсвэл та шинэ нэрээр үүсгэж болно." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Shortcut үүсгэхгүй" +!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/tools/Contrib/Language files/Norwegian.nlf b/tools/Contrib/Language files/Norwegian.nlf new file mode 100644 index 0000000..a4d6930 --- /dev/null +++ b/tools/Contrib/Language files/Norwegian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1044 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Jonas Lindstrøm (jonasc_88@hotmail.com). Reviewed and fixed by Jan Ivar Beddari +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) installasjon +# ^UninstallCaption +$(^Name) avinstallasjon +# ^LicenseSubCaption +: Lisensavtale +# ^ComponentsSubCaption +: Installasjonsvalg +# ^DirSubCaption +: Installasjonsmappe +# ^InstallingSubCaption +: Installerer +# ^CompletedSubCaption +: Ferdig +# ^UnComponentsSubCaption +: Avinstallasjonsvalg +# ^UnDirSubCaption +: Avinstallasjonsmappe +# ^ConfirmSubCaption +: Bekreft +# ^UninstallingSubCaption +: Avinstallerer +# ^UnCompletedSubCaption +: Ferdig +# ^BackBtn +< &Tilbake +# ^NextBtn +&Neste > +# ^AgreeBtn +&Godta +# ^AcceptBtn +Jeg &godtar vilkårene i lisensavtalen +# ^DontAcceptBtn +Jeg godtar &ikke vilkårene i lisensavtalen +# ^InstallBtn +&Installer +# ^UninstallBtn +&Avinstaller +# ^CancelBtn +Avbryt +# ^CloseBtn +&Lukk +# ^BrowseBtn +Bla &gjennom... +# ^ShowDetailsBtn +Vis &detaljer +# ^ClickNext +Trykk Neste for å fortsette. +# ^ClickInstall +Trykk Installer for å starte installasjonen. +# ^ClickUninstall +Trykk Avinstaller for å starte avinstallasjonen. +# ^Name +Navn +# ^Completed +Ferdig +# ^LicenseText +Vennligst les gjennom lisensavtalen før du installerer $(^Name). Hvis du godtar vilkårene i avtalen, trykk på Godta. +# ^LicenseTextCB +Vennligst les gjennom lisensavtalen før du installerer $(^Name). Hvis du godtar vilkårene i avtalen, merk av under. $_CLICK +# ^LicenseTextRB +Vennligst les gjennom lisensavtalen før du installerer $(^Name). Hvis du godtar vilkårene i avtalen, velg det første alternativet. $_CLICK +# ^UnLicenseText +Vennligst les gjennom lisensavtalen før du avinstallerer $(^Name). Hvis du godtar vilkårene i avtalen, trykk på Godta. +# ^UnLicenseTextCB +Vennligst les gjennom lisensavtalen før du avinstallerer $(^Name). Hvis du godtar vilkårene i avtalen, merk av under. $_CLICK +# ^UnLicenseTextRB +Vennligst les gjennom lisensavtalen før du avinstallerer $(^Name). Hvis du godtar vilkårene i avtalen, velg det første alternativet. $_CLICK +# ^Custom +Egendefinert +# ^ComponentsText +Merk komponentene du vil installere og fjern merkingen for de du ikke vil installere. $_CLICK +# ^ComponentsSubText1 +Velg hvilken måte du vil installere på: +# ^ComponentsSubText2_NoInstTypes +Merk komponenter du vil installere: +# ^ComponentsSubText2 +Eller merk de valgfrie komponentene du ønsker å installere: +# ^UnComponentsText +Merk komponentene du vil avinstallere og fjern merkingen for de du vil beholde. $_CLICK +# ^UnComponentsSubText1 +Velg hvilken måte du vil avinstallere på: +# ^UnComponentsSubText2_NoInstTypes +Merk komponenter du vil avinstallere: +# ^UnComponentsSubText2 +Eller merk de valgfrie komponentene du ønsker å avinstallere: +# ^DirText +$(^Name) vil bli installert i følgende mappe. For å velge en annen mappe, trykk Bla gjennom. $_CLICK +# ^DirSubText +Målmappe +# ^DirBrowseText +Velg mappe du vil installere $(^Name) i: +# ^UnDirText +$(^Name) i følgende mappe vil bli avinstallert. For å velge en annen mappe, trykk Bla gjennom. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Velg mappe du vil avinstallere $(^Name) fra: +# ^SpaceAvailable +"Ledig plass: " +# ^SpaceRequired +"Nødvendig plass: " +# ^UninstallingText +Denne veiviseren vil avinstallere $(^Name) fra din datamaskin. $_CLICK +# ^UninstallingSubText +Avinstallerer fra: +# ^FileError +Feil under åpning av fil for skriving: \r\n\t\"$0\"\r\nTrykk Avbryt for å avbryte installasjonen,\r\nPrøv igjen for å prøve igjen, eller\r\nIgnorer for å hoppe over denne filen +# ^FileError_NoIgnore +Feil under åpning av fil for skriving: \r\n\t\"$0\"\r\nTrykk Prøv igjen for å prøve igjen, or\r\neller Avbryt for å avbryte installasjonen +# ^CantWrite +"Kan ikke skrive: " +# ^CopyFailed +Kopiering mislyktes +# ^CopyTo +"Kopier til " +# ^Registering +"Registrerer: " +# ^Unregistering +""Avregistrerer: " +# ^SymbolNotFound +"Kunne ikke finne symbol: " +# ^CouldNotLoad +"Kunne ikke laste: " +# ^CreateFolder +"Lag mappe: " +# ^CreateShortcut +"Lag snarvei: " +# ^CreatedUninstaller +"Avinstallasjon laget: " +# ^Delete +"Slett fil: " +# ^DeleteOnReboot +"Slett ved omstart: " +# ^ErrorCreatingShortcut +"Feil under opprettelse av snarvei: " +# ^ErrorCreating +"Feil under opprettelse av: " +# ^ErrorDecompressing +Feil under utpakking av data! Installasjonsprogrammet kan være skadet. +# ^ErrorRegistering +Feil under registrering av DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Kjøre: " +# ^Extract +"Pakk ut: " +# ^ErrorWriting +"Pakk ut: Feil under skriving til fil " +# ^InvalidOpcode +Installasjonsprogrammet er skadet: ukjent kode +# ^NoOLE +"Ingen OLE for: " +# ^OutputFolder +"Ut-mappe: " +# ^RemoveFolder +"Fjern mappe: " +# ^RenameOnReboot +"Gi nytt navn ved omstart: " +# ^Rename +"Gi nytt navn: " +# ^Skipped +"Hoppet over: " +# ^CopyDetails +Kopier detaljer til utklippstavlen +# ^LogInstall +Loggfør installasjonsprosessen +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Norwegian.nsh b/tools/Contrib/Language files/Norwegian.nsh new file mode 100644 index 0000000..a8cb181 --- /dev/null +++ b/tools/Contrib/Language files/Norwegian.nsh @@ -0,0 +1,129 @@ +;Language: Norwegian (2068) +;By Jonas Lindsrøm (jonasc_88@hotmail.com) Reviewed and fixed by Jan Ivar Beddari, d0der at online.no + +!insertmacro LANGFILE "Norwegian" = "Norsk" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Velkommen til veiviseren for installasjon av $(^NameDA) " + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Denne veiviseren vil lede deg gjennom installasjonen av $(^NameDA).$\r$\n$\r$\nDet anbefales at du avslutter alle andre programmer før du fortsetter. Dette vil la installasjonsprogrammet forandre på systemfiler uten at du må starte datamaskinen på nytt.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Velkommen til veiviseren for avinstallasjon av $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Denne veiviseren vil lede deg gjennom avinstallasjonen av $(^NameDA).$\r$\n$\r$\nFør du fortsetter må du forsikre deg om at $(^NameDA) ikke kjører.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisensavtale" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Vennligst les gjennom lisensavtalen før du starter installasjonen av $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Hvis du godtar lisensavtalen trykk Godta for å fortsette. Du må godta lisensavtalen for å installere $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Hvis du godtar lisensavtalen, kryss av på merket under. Du må godta lisensavtalen for å installere $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Hvis du godtar lisensavtalen, velg det første alternativet ovenfor. Du må godta lisensavtalen for å installere $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisensavtale" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Vennligst les gjennom lisensavtalen før du avinstallerer $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Hvis du godtar lisensavtalen trykk Godta for å fortsette. Du må godta lisensavtalen for å avintallere $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Hvis du godtar lisensavtalen, kryss av på merket under. Du må godta lisensavtalen for å avinstallere $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Hvis du godtar lisensavtalen, velg det første alternativet ovenfor. Du må godta lisensavtalen for å avinstallere $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Trykk Page Down knappen for å se resten av lisensavtalen." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Velg komponenter" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Velg hvilke deler av $(^NameDA) du ønsker å installere." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Velg komponenter" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Velg hvilke deler av $(^NameDA) du ønsker å avinstallere." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskrivelse" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beveg musen over komponentene for å se beskrivelsen." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Velg en komponent for å se beskrivelsen." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Velg installasjonsmappe" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Velg hvilken mappe du vil installere $(^NameDA) i." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Velg mappe for avinstallasjon" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Velg mappen du vil avinstallere $(^NameDA) fra." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installasjonen pågår" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vennligst vent mens $(^NameDA) blir installert." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installasjonen er ferdig" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Installasjonen ble fullført uten feil." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installasjonen er avbrutt" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Installasjonen ble ikke fullført riktig." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Avinstallasjon pågår" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vennligst vent mens $(^NameDA) blir avinstallert." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Avinstallasjon ferdig" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Avinstallasjonen ble utført uten feil." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Avinstallasjon avbrutt" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Avinstallasjonen ble ikke utført riktig." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Avslutter $(^NameDA) installasjonsveiviser" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) er klart til bruk på din datamskin.$\r$\n$\r$\nTrykk Ferdig for å avslutte installasjonsprogrammet." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Du må starte datamaskinen på nytt for å fullføre installasjonen av $(^NameDA). Vil du starte datamaskinen på nytt nå?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Fullfører avinstallasjonen av $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) har blitt avinstallert fra din datamaskin.$\r$\n$\r$\nTrykk på ferdig for å avslutte denne veiviseren." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Datamaskinen må starte på nytt for å fullføre avinstallasjonen av $(^NameDA). Vil du starte datamaskinen på nytt nå?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ja. Start datamaskinen på nytt nå" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Nei. Jeg vil starte datamaskinen på nytt senere" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Kjør $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Vis Readme filen" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Ferdig" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Velg plassering på startmenyen" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Velg hvilken mappe snarveiene til $(^NameDA) skal ligge i." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Velg mappe for snarveiene til programmet. Du kan også skrive inn et nytt navn for å lage en ny mappe." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ikke lag snarveier" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Avinstaller $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Fjern $(^NameDA) fra din datamaskin." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Er du sikker på at du vil avslutte installasjonen av $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Er du sikker på at du vil avbryte avinstallasjonen av $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Velg brukere" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Velg hvilke brukere du vil installere $(^NameDA) for." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Velg om du vil installere $(^NameDA) bare for deg selv, eller for alle som bruker denne maskinen. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installer for alle som bruker denne maskinen" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installer bare for meg" +!endif diff --git a/tools/Contrib/Language files/NorwegianNynorsk.nlf b/tools/Contrib/Language files/NorwegianNynorsk.nlf new file mode 100644 index 0000000..f2a52d9 --- /dev/null +++ b/tools/Contrib/Language files/NorwegianNynorsk.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Language ID +2068 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Vebjørn Sture, vsture gmail com +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) installasjon +# ^UninstallCaption +$(^Name) avinstallasjon +# ^LicenseSubCaption +: Lisensavtale +# ^ComponentsSubCaption +: Installasjonsval +# ^DirSubCaption +: Installasjonsmappe +# ^InstallingSubCaption +: Installerer +# ^CompletedSubCaption +: Ferdig +# ^UnComponentsSubCaption +: Avinstallasjonsval +# ^UnDirSubCaption +: Avinstallasjonsmappe +# ^ConfirmSubCaption +: Stadfest +# ^UninstallingSubCaption +: Avinstallerer +# ^UnCompletedSubCaption +: Ferdig +# ^BackBtn +< &Attende +# ^NextBtn +&Neste > +# ^AgreeBtn +&Godta +# ^AcceptBtn +Eg &godtek vilkåra i lisensavtalen +# ^DontAcceptBtn +Eg godtek &ikkje vilkåra i lisensavtalen +# ^InstallBtn +&Installer +# ^UninstallBtn +&Avinstaller +# ^CancelBtn +Avbryt +# ^CloseBtn +&Lat att +# ^BrowseBtn +Bla &gjennom ... +# ^ShowDetailsBtn +Syn &detaljar +# ^ClickNext +Trykk Neste for å halda fram. +# ^ClickInstall +Trykk Installer for å starta installasjonen. +# ^ClickUninstall +Trykk Avinstaller for å starta avinstallasjonen. +# ^Name +Namn +# ^Completed +Ferdig +# ^LicenseText +Ver grei og les gjennom lisensavtalen før du installerer $(^NameDA). Dersom du godtek vilkåra i avtalen, trykk på Godta. +# ^LicenseTextCB +Ver grei og les gjennom lisensavtalen før du installerer $(^NameDA). Dersom du godtek vilkåra i avtalen, merk av under. $_CLICK +# ^LicenseTextRB +Ver grei og les gjennom lisensavtalen før du installerer $(^NameDA). Dersom du godtek vilkåra i avtalen, vel det fyrste alternativet. $_CLICK +# ^UnLicenseText +Ver grei og les gjennom lisensavtalen før du avinstallerer $(^NameDA). Dersom du godtek vilkåra i avtalen, trykk på Godta. +# ^UnLicenseTextCB +Ver grei og les gjennom lisensavtalen før du avinstallerer $(^NameDA). Dersom du godtek vilkåra i avtalen, merk av under. $_CLICK +# ^UnLicenseTextRB +Ver grei og les gjennom lisensavtalen før du avinstallerer $(^NameDA). Dersom du godtek vilkåra i avtalen, vel det fyrste alternativet. $_CLICK +# ^Custom +Eigendefinert +# ^ComponentsText +Merk komponentane du vil installera og fjern merkinga for dei du ikkje vil installera. $_CLICK +# ^ComponentsSubText1 +Vel kva måte du vil installera på: +# ^ComponentsSubText2_NoInstTypes +Merk komponentar du vil installera: +# ^ComponentsSubText2 +Eller merk dei valfrie komponentane du ynskjer å installera: +# ^UnComponentsText +Merk komponentane du vil avinstallera og fjern merkinga for dei du vil ta vare på. $_CLICK +# ^UnComponentsSubText1 +Vel kva måte du vil avinstallera på: +# ^UnComponentsSubText2_NoInstTypes +Merk komponentar du vil avinstallera: +# ^UnComponentsSubText2 +Eller merk dei valfrie komponentane du ynskjer å avinstallera: +# ^DirText +$(^NameDA) vil verta installert i fylgjande mappe. For å velja ei anna mappe, trykk Bla gjennom. $_CLICK +# ^DirSubText +Målmappe +# ^DirBrowseText +Vel mappe du vil installera $(^NameDA) i: +# ^UnDirText +$(^NameDA) i fylgjande mappe vil verta avinstallert. For å velja ei anna mappe, trykk Bla gjennom. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Vel mappe du vil avinstallera $(^NameDA) frå: +# ^SpaceAvailable +"Ledig plass: " +# ^SpaceRequired +"Naudsynt plass: " +# ^UninstallingText +Denne vegvisaren vil avinstallera $(^NameDA) frå din datamaskin. $_CLICK +# ^UninstallingSubText +Avinstallerer frå: +# ^FileError +Feil under opning av fil for skriving: \r\n\t\"$0\"\r\nTrykk Avbryt for å avbryta installasjonen,\r\nPrøv igjen for å prøva igjen, eller\r\nIgnorer for å hoppa over denne fila +# ^FileError_NoIgnore +Feil under opning av fil for skriving: \r\n\t\"$0\"\r\nTrykk Prøv igjen for å prøva igjen, or\r\neller Avbryt for å avbryta installasjonen +# ^CantWrite +"Kan ikkje skriva: " +# ^CopyFailed +Kopiering mislukka +# ^CopyTo +"Kopier til " +# ^Registering +"Registrerer: " +# ^Unregistering +""Avregistrerer: " +# ^SymbolNotFound +"Kunne ikkje finna symbol: " +# ^CouldNotLoad +"Kunne ikkje lasta: " +# ^CreateFolder +"Lag mappe: " +# ^CreateShortcut +"Lag snarveg: " +# ^CreatedUninstaller +"Avinstallasjon laga: " +# ^Delete +"Slett fil: " +# ^DeleteOnReboot +"Slett ved omstart: " +# ^ErrorCreatingShortcut +"Feil under oppretting av snarveg: " +# ^ErrorCreating +"Feil under oppretting av: " +# ^ErrorDecompressing +Feil under utpakking av data! Installasjonsprogrammet kan vera skadd. +# ^ErrorRegistering +Feil under registrering av DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Køyra: " +# ^Extract +"Pakk ut: " +# ^ErrorWriting +"Pakk ut: Feil under skriving til fil " +# ^InvalidOpcode +Installasjonsprogrammet er skadd: ukjend kode +# ^NoOLE +"Ingen OLE for: " +# ^OutputFolder +"Ut-mappe: " +# ^RemoveFolder +"Fjern mappe: " +# ^RenameOnReboot +"Gje nytt namn ved omstart: " +# ^Rename +"Gje nytt namn: " +# ^Skipped +"Hoppa over: " +# ^CopyDetails +Kopier detaljar til utklyppstavla +# ^LogInstall +Loggfør installasjonsprosessen +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G + diff --git a/tools/Contrib/Language files/NorwegianNynorsk.nsh b/tools/Contrib/Language files/NorwegianNynorsk.nsh new file mode 100644 index 0000000..8a9398f --- /dev/null +++ b/tools/Contrib/Language files/NorwegianNynorsk.nsh @@ -0,0 +1,129 @@ +;Language: Norwegian nynorsk (2068) +;By Vebjoern Sture and Håvard Mork (www.firefox.no) + +!insertmacro LANGFILE "NorwegianNynorsk" "Norwegian (Nynorsk)" "Norsk (nynorsk)" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Velkommen til $(^NameDA) innstallasjonsvegvisar" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Denne vegvisaren vil leie deg gjennom installeringa av $(^NameDA).$\n$\nDet er tilrådd at du avsluttar alle andre program før du held fram. Dette vil la installeringsprogrammet oppdatera systemfiler utan at du må starta datamaskinen på nytt.$\n$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Velkommen til avinstallering av $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Denne vegvisaren vil leie deg gjennom avinstalleringen av $(^NameDA).$\n$\nFør du fortsetter må du forsikre deg om at $(^NameDA) ikkje er opent.$\n$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisensavtale" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Les gjennom lisensavtalen før du startar installeringa av $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Trykk på «Godta» dersom du godtar betingelsane i avtala. Du må godta avtala for å installere $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Trykk på avkryssingsboksen nedanfor nedanfor dersom du godtar betingelsane i avtala. Du må godta avtala for å installere $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Vel det første alternativet nedanfor dersom du godtek vilkåra i avtala. Du må godta avtala for å installera $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisensavtale" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Les gjennom lisensavtalen før du startar avinstalleringa av $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Trykk på «Godta» dersom du godtar betingelsane i avtala. Du må godta avtala for å avinstallera $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Trykk på avkryssingsboksen nedanfor nedanfor dersom du godtar betingelsane i avtala. Du må godta avtala for å avinstallera $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Vel det første alternativet nedanfor dersom du godtar betingelsane i avtala. Du må godta avtala for å avinstallera $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Trykk Page Down-knappen for å sjå resten av lisensavtala." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Vel komponentar" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Vel kva delar av $(^NameDA) du ynskjer å installera." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Vel funksjonar" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Vel kva for funksjonar du vil avinstallera i $(^NameDA)." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskriving" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beveg musa over komponentene for å sjå beskrivinga." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Vel ein komponent for å sjå beskrivinga." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Vel installasjonsmappe" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Vel kva mappe du vil installera $(^NameDA) i." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Vel avinstalleringplassering" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Vel mappa du vil avinstallere $(^NameDA) frå." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installerer" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vent mens $(^NameDA) blir installert." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installeringa er fullført" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Installeringa vart fullført." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installeringa vart avbroten" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Installeringa vart ikkje fullført." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Avinstallerer" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vent medan $(^NameDA) vert avinstallert." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Avinstallering ferdig" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Avinstallering ble utført uten feil." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Avinstallering broten" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Avinstallering ble ikkje utført riktig." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Installering fullført" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) er installert og klar til bruk.$\n$\nTrykk på «Fullfør» for å avslutte installeringa." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Du må starta datamaskinen på nytt for å fullføra installeringa av $(^NameDA). Vil du starta på nytt no?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Fullfører avinstalleringa av $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) er no avinstallert frå datamaskina di.$\n$\nTrykk på «Fullfør» for å avslutta denne vegvisaren." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Datamaskinen må starta på nytt for å fullføra avinstalleringa av $(^NameDA). Vil du starta datamaskina på nytt no?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Start på nytt no" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Eg vil starta på nytt seinare" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Køyr $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Syn lesmeg" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Fullfør" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Vel mappe på startmenyen" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Vel kva mappe snarvegane til $(^NameDA) skal liggja i." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Vel mappa du vil oppretta snarvegane til programmet i. Du kan òg skriva inn eit nytt namn for å laga ei ny mappe." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ikkje opprett snarvegar" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Avinstaller $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Slett $(^NameDA) frå datamaskinen." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Er du viss på at du vil avslutta installeringa av $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Er du viss på at du vil avbryta avinstalleringa av $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Vel brukarar" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Vel kva brukarar du vil installere $(^NameDA) for." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Vel om du vil installere $(^NameDA) berre for deg, eller for alle som nyttar denne maskina. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installer for alle som nyttar maskina" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installer berre for me" +!endif diff --git a/tools/Contrib/Language files/Pashto.nlf b/tools/Contrib/Language files/Pashto.nlf new file mode 100644 index 0000000..5bb291d --- /dev/null +++ b/tools/Contrib/Language files/Pashto.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1123 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1256 +# RTL - anything else than RTL means LTR +RTL +# Translation by Pakhtosoft (www.pakhtosoft.com) +# ^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 +$_CLICK .د لګولو نه مخکښې منښتليک وګورئ. که چېرې تاسې د منښتليک ټول توکي منئ، لاندې خوښبکس ټک وهئ $(^NameDA) د +# ^LicenseTextRB +$_CLICK .د لګولو نه مخکښې منښتليک وګورئ. که چېرې تاسې د منښتليک ټول توکي منئ، لاندې لمړی غوراوی خوښ کړئ $(^NameDA) د +# ^UnLicenseText +.د نالګاو نه مخکښې منښتليک وګورئ. که چېرې تاسې د منښتليک ټول توکي منئ، زه منم ټک وهئ $(^NameDA) د +# ^UnLicenseTextCB +$_CLICK .د نالګاو نه مخکښې منښتليک وګورئ. که چېرې تاسې د منښتليک ټول توکي منئ، لاندې خوښبکس ټک وهئ $(^NameDA) د +# ^UnLicenseTextRB +$_CLICK .د نالګاو نه مخکښې منښتليک وګورئ. که چېرې تاسې د منښتليک ټول توکي منئ، لاندې لمړی غوراوي خوښ کړئ $(^NameDA) د +# ^Custom +دوديز +# ^ComponentsText +$_CLICK .کوم رغتوکي چې لګول غواړئ خوښ يې کړئ او کوم رغتوکي چې نه غواړئ ويې لګوئ مه يې خوښوئ +# ^ComponentsSubText1 +:د لګاو ډول وټاکئ +# ^ComponentsSubText2_NoInstTypes +:د لګولو لپاره رغتوکي خوښ کړئ +# ^ComponentsSubText2 +:يا، هغه غوراويز رغتوکي چې لګول يې غواړئ وټاکئ +# ^UnComponentsText +$_CLICK .کوم رغتوکي چې نالګول غواړئ خوښ يې کړئ او کوم رغتوکي چې نه غواړئ ويې نالګوئ مه يې خوښوئ +# ^UnComponentsSubText1 +:د نالګاو ډول وټاکئ +# ^UnComponentsSubText2_NoInstTypes +:د نالګولو لپاره رغتوکي وټاکئ +# ^UnComponentsSubText2 +:يا، هغه غوراويز رغتوکي چې نالګول يې غواړئ وټاکئ +# ^DirText +$_CLICK .په لاندې پوښۍ کښې ولګوي. په بلې پوښۍ کښې يې د لګولو لپاره، چڼل ټک وهئ او بله پوښۍ وټاکئ $(^NameDA) امسته به +# ^DirSubText +موخه پوښۍ +# ^DirBrowseText +:پکښې لګول غواړئ وټاکئ $(^NameDA) هغه پوښۍ چې +# ^UnDirText +$_CLICK .د لاندې پوښۍ نه ونالګوي. د بلې پوښۍ نې د نالګولو لپاره، چڼل ټک وهئ او بله پوښۍ وټاکئ $(^NameDA) امسته به +# ^UnDirSubText +"" +# ^UnDirBrowseText +:ترې نالګول غواړئ وټاکئ $(^NameDA) هغه پوښۍ چې +# ^SpaceAvailable +" :شته تشه" +# ^SpaceRequired +" :اړينه تشه" +# ^UninstallingText +$_CLICK .به د لاندې پوښۍ نه ونالګول شي $(^NameDA) +# ^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 +د ډلل نومکښلو ستونزه +# ^ExecShell +" :اکزک شل" +# ^Exec +" :پېلول" +# ^Extract +" :وېستل" +# ^ErrorWriting +"وېستل: دوتنې کښې ليکلو ستونزه " +# ^InvalidOpcode +اندرغل لګاند: ناسم اپکوډ +# ^NoOLE +"No OLE for: " +# ^OutputFolder +" :وتنې پوښۍ" +# ^RemoveFolder +" :پوښې ړنګول" +# ^RenameOnReboot +" :پر بياپېلات بيانومول" +# ^Rename +" :بيانومول" +# ^Skipped +" :پرېښودلي" +# ^CopyDetails +خبرتياوې ټوټې ډړې ته لمېسل +# ^LogInstall +د لګاو بهير خبرالول +# ^Byte +ب +# ^Kilo + ک +# ^Mega + م +# ^Giga + ګ diff --git a/tools/Contrib/Language files/Pashto.nsh b/tools/Contrib/Language files/Pashto.nsh new file mode 100644 index 0000000..cfcd879 --- /dev/null +++ b/tools/Contrib/Language files/Pashto.nsh @@ -0,0 +1,121 @@ +;Language: Pashto (1123) +;By Pakhtosoft - www.pakhtosoft.com + +!insertmacro LANGFILE "Pashto" = "پښتو" "Pashto" + +!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 ".د تړون د نورې برخې کتلو لپاره پېج ډاون کيلۍ ووهئ" +!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 + #FIXME: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 "امسته بندول غواړﺉ؟ $(^Name) ايا په ډاډمنه توګه د" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "نالګاو بندول غواړﺉ؟ $(^Name) ايا په ډاډمنه توګه د" +!endif diff --git a/tools/Contrib/Language files/Polish.nlf b/tools/Contrib/Language files/Polish.nlf new file mode 100644 index 0000000..1a34dcb --- /dev/null +++ b/tools/Contrib/Language files/Polish.nlf @@ -0,0 +1,195 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1045 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Piotr Murawski & Rafał Lampe +# Updated by cube and SYSTEMsoft Group +# Corrected by Marek Stępień - http://www.aviary.pl +# Corrected by Mateusz Gola (aka Prozac) - http://www.avirecomp.com +# Updated by Paweł Porwisz (http://www.pawelporwisz.pl) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalator $(^Name) +# ^UninstallCaption +Deinstalator $(^Name) +# ^LicenseSubCaption +: Umowa licencyjna +# ^ComponentsSubCaption +: Opcje instalacji +# ^DirSubCaption +: Folder instalacyjny +# ^InstallingSubCaption +: Instalowanie plików +# ^CompletedSubCaption +: Zakończono +# ^UnComponentsSubCaption +: Opcje deinstalacji +# ^UnDirSubCaption +: Folder deinstalacyjny +# ^ConfirmSubCaption +: Potwierdzenie +# ^UnDirSubCaption +: Deinstalowanie plików +# ^UnCompletedSubCaption +: Zakończono +# ^BackBtn +< &Wstecz +# ^NextBtn +&Dalej > +# ^AgreeBtn +&Zgadzam się +# ^AcceptBtn +&Akceptuję warunki umowy licencyjnej +# ^DontAcceptBtn +&Nie akceptuję warunków umowy licencyjnej +# ^InstallBtn +&Zainstaluj +# ^UninstallBtn +&Odinstaluj +# ^CancelBtn +Anuluj +# ^CloseBtn +&Zamknij +# ^BrowseBtn +&Przeglądaj... +# ^ShowDetailsBtn +Pokaż &szczegóły +# ^ClickNext +Kliknij przycisk 'Dalej', aby kontynuować. +# ^ClickInstall +Kliknij przycisk 'Zainstaluj', aby rozpocząć instalację. +# ^ClickUninstall +Kliknij przycisk 'Odinstaluj', aby rozpocząć deinstalację. +# ^Name +Nazwa +# ^Completed +Zakończono +# ^LicenseText +Przed instalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, kliknij przycisk 'Zgadzam się'. +# ^LicenseTextCB +Przed instalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, kliknij poniższe pole wyboru. $_CLICK. +# ^LicenseTextRB +Przed instalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, wybierz pierwszą z poniższych opcji. $_CLICK. +# ^UnLicenseText +Przed deinstalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, kliknij przycisk 'Zgadzam się'. +# ^UnLicenseTextCB +Przed deinstalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, kliknij poniższe pole wyboru. $_CLICK. +# ^UnLicenseTextRB +Przed deinstalacją $(^NameDA) zapoznaj się z warunkami licencji. Jeśli akceptujesz wszystkie warunki umowy, wybierz pierwszą z poniższych opcji. $_CLICK. +# ^Custom +Użytkownika +# ^ComponentsText +Zaznacz komponenty, które chcesz zainstalować i odznacz te, których nie chcesz instalować. $_CLICK +# ^ComponentsSubText1 +Wybierz typ instalacji: +# ^ComponentsSubText2_NoInstTypes +Wybierz komponenty do zainstalowania: +# ^ComponentsSubText2 +Albo wybierz opcjonalne komponenty, które chcesz zainstalować: +# ^UnComponentsText +Zaznacz komponenty, które chcesz odinstalować i odznacz te, które nie zostaną odinstalowane. $_CLICK +# ^UnComponentsSubText1 +Wybierz typ deinstalacji: +# ^UnComponentsSubText2_NoInstTypes +Wybierz komponenty do odinstalowania: +# ^UnComponentsSubText2 +Albo wybierz opcjonalne komponenty, które chcesz odinstalować: +# ^DirText +Instalator zainstaluje $(^NameDA) w podanym poniżej folderze docelowym (możesz także kliknąć przycisk 'Przeglądaj...' i wybrać inny folder). $_CLICK +# ^DirSubText +Folder docelowy +# ^DirBrowseText +Wybierz folder instalacyjny $(^NameDA): +# ^UnDirText +Deinstalator usunie $(^NameDA) z następującego folderu. Aby odinstalować z innego folderu, kliknij przycisk 'Przeglądaj...' i wybierz folder. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Wybierz folder, z którego zostanie odinstalowany $(^NameDA): +# ^SpaceAvailable +"Dostępne miejsce: " +# ^SpaceRequired +"Wymagane miejsce: " +# ^UninstallingText +Ten kreator odinstaluje $(^NameDA) z Twojego komputera. $_CLICK +# ^UninstallingSubText +Deinstalacja z: +# ^FileError +Błąd otwarcia pliku do zapisu: \r\n\r\n$0\r\n\r\nWybierz 'Anuluj', aby przerwać instalację,\r\n'Ponów', aby ponowić zapis do pliku lub\r\n'Ignoruj', aby pominąć ten plik. +# ^FileError_NoIgnore +Błąd otwarcia pliku do zapisu: \r\n\r\n$0\r\n\r\nWybierz 'Ponów', aby ponowić zapis do pliku lub\r\n'Anuluj', aby przerwać instalację. +# ^CantWrite +"Nie można zapisać: " +# ^CopyFailed +Błąd kopiowania +# ^CopyTo +"Kopiuj do " +# ^Registering +"Rejestrowanie: " +# ^Unregistering +"Wyrejestrowywanie: " +# ^SymbolNotFound +"Nie można odnaleźć symbolu: " +# ^CouldNotLoad +"Nie można wczytać: " +#^CreateFolder +"Utwórz folder: " +# ^CreateShortcut +"Utwórz skrót: " +# ^CreatedUninstaller +"Utworzono deinstalator: " +# ^Delete +"Usuń plik: " +# ^DeleteOnReboot +"Usuń przy ponownym uruchomieniu: " +# ^ErrorCreatingShortcut +"Błąd tworzenia skrótu: " +# ^ErrorCreating +"Błąd tworzenia: " +# ^ErrorDecompressing +Błąd wyodrębniania danych! Uszkodzony instalator? +# ^ErrorRegistering +Błąd rejestracji pliku DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Uruchom: " +# ^Extract +"Wyodrębnij: " +# ^ErrorWriting +"Wyodrębnij: błąd zapisu do pliku " +# ^InvalidOpcode +Instalator uszkodzony: nieprawidłowy kod operacji +# ^NoOLE +"Brak OLE dla: " +# ^OutputFolder +"Folder wyjściowy: " +# ^RemoveFolder +"Usuń folder: " +# ^RenameOnReboot +"Zmień nazwę przy ponownym uruchomieniu: " +# ^Rename +"Zmień nazwę: " +# ^Skipped +"Pominięte: " +# ^CopyDetails +Kopiuj szczegóły do schowka +# ^LogInstall +Rejestruj przebieg instalacji +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Polish.nsh b/tools/Contrib/Language files/Polish.nsh new file mode 100644 index 0000000..59987a8 --- /dev/null +++ b/tools/Contrib/Language files/Polish.nsh @@ -0,0 +1,132 @@ +;Language: Polish (1045) +;By Piotr Murawski & Rafał Lampe +;Updated by cube and SYSTEMsoft Group +;Updated by Mateusz Gola (aka Prozac) - http://www.avirecomp.com +;Updated by Paweł Porwisz (http://www.pawelporwisz.pl) + +!insertmacro LANGFILE "Polish" = "Polski" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Witamy w kreatorze instalacji $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Kreator ten pomoże Ci zainstalować $(^NameDA).$\r$\n$\r$\nZalecane jest zamknięcie wszystkich uruchomionych programów przed rozpoczęciem instalacji. Pozwoli to na uaktualnienie niezbędnych plików systemowych bez konieczności ponownego uruchamiania komputera.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Witamy w kreatorze deinstalacji $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Kreator ten pomoże Ci odinstalować $(^NameDA).$\r$\n$\r$\nPrzed rozpoczęciem deinstalacji, upewnij się, że $(^NameDA) nie jest uruchomiony.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Umowa licencyjna" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Przed instalacją $(^NameDA) zapoznaj się z warunkami licencji." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Jeżeli akceptujesz warunki umowy, kliknij przycisk 'Zgadzam się', aby kontynuować. Musisz zaakceptować warunki umowy, aby zainstalować $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jeżeli akceptujesz warunki umowy, zaznacz poniższe pole wyboru, aby kontynuować. Musisz zaakceptować warunki umowy, aby zainstalować $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jeżeli akceptujesz warunki umowy, wybierz pierwszą z poniższych opcji, aby kontynuować. Musisz zaakceptować warunki umowy, aby zainstalować $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Umowa licencyjna" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Przed deinstalacją $(^NameDA) zapoznaj się z warunkami licencji." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Jeżeli akceptujesz warunki umowy, kliknij przycisk 'Zgadzam się', aby kontynuować. Musisz zaakceptować warunki umowy, aby odinstalować $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Jeżeli akceptujesz warunki umowy, zaznacz poniższe pole wyboru, aby kontynuować. Musisz zaakceptować warunki umowy, aby odinstalować $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Jeżeli akceptujesz warunki umowy, wybierz pierwszą z poniższych opcji, aby kontynuować. Musisz zaakceptować warunki umowy, aby odinstalować $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Naciśnij klawisz Page Down, aby zobaczyć dalszą część umowy." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Wybierz komponenty" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Wybierz komponenty $(^NameDA), które chcesz zainstalować." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Wybierz komponenty" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Wybierz, które elementy $(^NameDA) chcesz odinstalować." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Opis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Przesuń kursor myszy nad komponent, aby zobaczyć jego opis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Wybierz komponent, aby zobaczyć jego opis." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Wybierz lokalizację dla instalacji" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Wybierz folder, w którym chcesz zainstalować $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Wybierz lokalizację dla deinstalacji" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Wybierz folder, z którego chcesz odinstalować $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalacja" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Proszę czekać, trwa instalacja $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Zakończono instalację" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalacja zakończona pomyślnie." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalacja przerwana" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalacja nie została zakończona pomyślnie." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Deinstalacja" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Proszę czekać, trwa deinstalacja $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Zakończono deinstalację" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Odinstalowanie zakończone pomyślnie." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Deinstalacja przerwana" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Deinstalacja nie została zakończona pomyślnie." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Kończenie pracy kreatora instalacji $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) został pomyślnie zainstalowany na Twoim komputerze.$\r$\n$\r$\nKliknij przycisk 'Zakończ', aby zakończyć działanie instalatora." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Twój komputer musi zostać ponownie uruchomiony, aby zakończyć instalację $(^NameDA). Czy chcesz teraz ponownie uruchomić komputer?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Kończenie pracy kreatora deinstalacji $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) został odinstalowany z Twojego komputera.$\r$\n$\r$\nKliknij przycisk 'Zakończ', aby zakończyć działanie deinstalatora." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Twój komputer musi zostać ponownie uruchomiony w celu zakończenia deinstalacji $(^NameDA). Czy chcesz teraz ponownie uruchomić komputer?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Uruchom ponownie teraz" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Sam uruchomię ponownie komputer później" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Uruchom $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Pokaż plik ReadMe" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Zakończ" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Wybierz folder w menu Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Wybierz folder menu Start, w którym zostaną umieszczone skróty do $(^NameDA)" + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Wybierz folder w menu Start, w którym chciałbyś umieścić skróty do programu. Możesz także utworzyć nowy folder wpisując jego nazwę." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nie twórz skrótów" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Odinstaluj $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Usuń $(^NameDA) z Twojego komputera." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Czy na pewno chcesz zakończyć działanie instalatora $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Czy na pewno chcesz przerwać proces deinstalacji $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Wybierz użytkowników" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Wybierz, dla których użytkowników chcesz zainstalować $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Wybierz, czy chcesz zainstalować $(^NameDA) tylko dla siebie, czy dla wszystkich użytkowników tego komputera. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Zainstaluj dla wszystkich użytkowników tego komputera" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Zainstaluj tylko dla mnie" +!endif diff --git a/tools/Contrib/Language files/Portuguese.nlf b/tools/Contrib/Language files/Portuguese.nlf new file mode 100644 index 0000000..c51d85e --- /dev/null +++ b/tools/Contrib/Language files/Portuguese.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +2070 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation v4.0.3 by DragonSoull with help from Dre` - Updated by Ramon +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalação de $(^Name) +# ^UninstallCaption +Desinstalação de $(^Name) +# ^LicenseSubCaption +: Contrato de Licença +# ^ComponentsSubCaption +: Opções de instalação +# ^DirSubCaption +: Diretório de instalação +# ^InstallingSubCaption +: Instalando Ficheiros +# ^CompletedSubCaption +: Concluído +# ^UnComponentsSubCaption +: Opções de Desinstalação +# ^UnDirSubCaption +: Pasta de Desinstalação +# ^ConfirmSubCaption +: Confirmação +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Concluído +# ^BackBtn +< &Anterior +# ^NextBtn +&Seguinte > +# ^AgreeBtn +&Aceito +# ^AcceptBtn +Eu &aceito os termos do Contrato de Licença +# ^DontAcceptBtn +Eu &não aceito os termos do Contrato de Licença +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Cancelar +# ^CloseBtn +&Fechar +# ^BrowseBtn +&Procurar... +# ^ShowDetailsBtn +Ver &Detalhes +# ^ClickNext +Clique em 'Seguinte' para continuar. +# ^ClickInstall +Clique em 'Instalar' para iniciar a instalação. +# ^ClickUninstall +Clique em 'Desinstalar' para iniciar a desinstalação. +# ^Name +Nome +# ^Completed +Concluído +# ^LicenseText +Por favor reveja o acordo de licença antes de instalar $(^NameDA). Se concorda com todos os termos da licença, clique em 'Aceito'. +# ^LicenseTextCB +Por favor reveja o acordo de licença antes de instalar $(^NameDA). Se concorda com todos os termos da licença, clique na caixa de seleção abaixo. $_CLICK +# ^LicenseTextRB +Por favor reveja o acordo de licença antes de instalar $(^NameDA). Se concorda com todos os termos da licença, escolha a primeira opção abaixo. $_CLICK +# ^UnLicenseText +Por favor reveja o acordo de licença antes de desinstalar $(^NameDA). Se concorda com todos os termos da licença, clique em 'Aceito'. +# ^UnLicenseTextCB +Por favor reveja o acordo de licença antes de desinstalar $(^NameDA). Se concorda com todos os termos da licença, clique na caixa de seleção abaixo. $_CLICK +# ^UnLicenseTextRB +Por favor reveja o acordo de licença antes de desinstalar $(^NameDA). Se concorda com todos os termos da licença, escolha a primeira opção abaixo. $_CLICK +# ^Custom +Personalizado +# ^ComponentsText +Marque os componentes que deseja instalar e desmarque os componentes que não deseja instalar. $_CLICK +# ^ComponentsSubText1 +Escolha o tipo de instalação: +# ^ComponentsSubText2_NoInstTypes +Escolha os componentes para instalar: +# ^ComponentsSubText2 +Ou, escolha os componentes opcionais que deseja instalar: +# ^UnComponentsText +Marque os componentes que queira desinstalar e vice versa. $_CLICK +# ^UnComponentsSubText1 +Escolha o tipo de desinstalação: +# ^UnComponentsSubText2_NoInstTypes +Escolha os componentes para desinstalar: +# ^UnComponentsSubText2 +Ou, escolha os componentes opcionais que queira desinstalar: +# ^DirText +O $(^NameDA) será instalado na seguinte pasta. Para instalar numa pasta diferente, clique em 'Procurar...' e escolha outra pasta. $_CLICK +# ^DirSubText +Pasta de Destino +# ^DirBrowseText +Escolha uma pasta para instalar o $(^NameDA): +# ^UnDirText +O $(^NameDA) será desinstalado da seguinte pasta. Para desinstalar de uma pasta diferente, clique em 'Procurar...' e escolha outra pasta. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Escolha uma pasta de onde será desinstalado o $(^NameDA): +# ^SpaceAvailable +"Espaço disponível: " +# ^SpaceRequired +"Espaço necessário: " +# ^UninstallingText +$(^NameDA) será desinstalado da seguinte pasta. $_CLICK +# ^UninstallingSubText +Desinstalando de: +# ^FileError +Erro ao abrir ficheiro para escrita: \r\n\t"$0"\r\nClique em Abortar para abortar a instalação,\r\nRepetir para tentar novamente a escrita do ficheiro, ou\r\nIgnorar para ignorar este ficheiro. +# ^FileError_NoIgnore +Erro ao abrir ficheiro para escrita: \r\n\t"$0"\r\nClique em Repetir para tentar novamente a gravação do ficheiro, ou\r\nCancelar para abortar a instalação. +# ^CantWrite +"Não foi possível escrever: " +# ^CopyFailed +Falha ao copiar +# ^CopyTo +"Copiar para " +# ^Registering +"Registando: " +# ^Unregistering +"Desregistando: " +# ^SymbolNotFound +"Símbolo não encontrado: " +# ^CouldNotLoad +"Não foi possível carregar: " +# ^CreateFolder +"Criando diretório: " +# ^CreateShortcut +"Criando atalho: " +# ^CreatedUninstaller +"Criando desinstalador: " +# ^Delete +"Apagando ficheiro: " +# ^DeleteOnReboot +"Apagar ao reiniciar: " +# ^ErrorCreatingShortcut +"Erro ao criar atalho: " +# ^ErrorCreating +"Erro ao criar: " +# ^ErrorDecompressing +Erro ao descomprimir dados! Instalador corrompido? +# ^ErrorRegistering +Erro ao registar DLL +# ^ExecShell +"Executando pelo Shell: " +# ^Exec +"Executando: " +# ^Extract +"Extraindo: " +# ^ErrorWriting +"Extraindo: erro ao escrever ficheiro " +# ^InvalidOpcode +Instalador corrompido: código de operação inválido +# ^NoOLE +"Sem OLE para: " +# ^OutputFolder +"Pasta de destino: " +# ^RemoveFolder +"Removendo pasta: " +# ^RenameOnReboot +"Renomear ao reiniciar: " +# ^Rename +"Renomeando: " +# ^Skipped +"Ignorado: " +# ^CopyDetails +Copiar detalhes para a Área de Transfêrencia +# ^LogInstall +Registar processo de instalação +# ^Byte +B +# kilo + K +# mega + M +# giga + G diff --git a/tools/Contrib/Language files/Portuguese.nsh b/tools/Contrib/Language files/Portuguese.nsh new file mode 100644 index 0000000..4633688 --- /dev/null +++ b/tools/Contrib/Language files/Portuguese.nsh @@ -0,0 +1,129 @@ +;Language: Portuguese (2070) +;By Ramon + +!insertmacro LANGFILE "Portuguese" = "Português" "Portugues" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bem vindo ao Assistente de Instalação do $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Este assistente ajudá-lo-á durante a instalação do $(^NameDA).$\r$\n$\r$\nÉ recomendado que feche todas as outras aplicações antes de iniciar a Instalação. Isto permitirá que o Instalador actualize ficheiros relacionados com o sistema sem necessidade de reiniciar o computador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bem vindo ao Assistente de desinstalação do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Este assistente ajudá-lo-á durante a desinstalação do $(^NameDA).$\r$\n$\r$\nAntes de iniciar a desinstalação, certifique-se de que o $(^NameDA) não está em execução.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Contrato de Licença" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor, verifique os termos da licença antes de instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Se aceitar os termos da licença, clique em 'Aceito' para continuar. Deverá aceitar o contrato para instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se aceitar os termos da licença, clique na caixa de seleção abaixo. Deverá aceitar o contrato para instalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se aceitar os termos da licença, selecione a primeira opção abaixo. Você deve aceitar o contrato para instalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Contrato de Licença" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor, verifique os termos da licença antes de desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Se aceitar os termos da licença, clique em 'Aceito' para continuar. Deverá aceitar o contrato para desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se aceitar os termos da licença, clique na caixa de seleção abaixo. Deverá aceitar o contrato para desinstalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se aceitar os termos da licença, selecione a primeira opção abaixo. Você deve aceitar o contrato para desinstalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Tecle Page Down para ver o restante da licença." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Escolha de Componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Escolha quais as características do $(^NameDA) que deseja instalar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Escolher Componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Escolha quais as características do $(^NameDA) que deseja desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descrição" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Posicione o rato sobre um componente para ver a sua descrição." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Seleccione um componente para ver a sua descrição." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Escolha do Local da Instalação" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Escolha a pasta na qual deseja instalar o $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Escolha o Local de desinstalação" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Escolha a pasta de onde pretende desinstalar o $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor, aguarde enquanto o $(^NameDA) está sendo instalado." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalação Completa" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "A instalação foi concluída com sucesso." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalação Abortada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "A instalação não foi concluída com sucesso." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor, aguarde enquanto o $(^NameDA) está sendo desinstalado." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalação Completa" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "A desinstalação foi concluída com sucesso." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalação Abortada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "A desinstalação não foi concluída com sucesso" +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Concluindo o Assistente de Instalação do $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) foi instalado no seu computador.$\r$\n$\r$\nClique em Terminar para fechar este assistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "O seu computador deve ser reiniciado para concluír a instalação do $(^NameDA). Deseja reiniciar agora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Concluíndo o assistente de desisntalação do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) foi removido do seu computador.$\r$\n$\r$\nClique em Terminar para fechar este assistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "O seu computador deve ser reiniciado para concluír a desinstalação do $(^NameDA). Deseja reiniciar agora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reiniciar Agora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Eu quero reiniciar manualmente depois" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Executar $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Mostrar Leiame" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Terminar" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Escolha uma Pasta do Menu Iniciar" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Escolha uma pasta do Menu Iniciar para os atalhos do programa." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Selecione uma pasta do Menu Iniciar em que deseja criar os atalhos do programa. Você pode também digitar um nome para criar uma nova pasta. " + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Não criar atalhos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Remover o $(^NameDA) do seu computador." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Deseja realmente cancelar a instalação do $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Deseja realmente cancelar a desinstalação do $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Escolha utilizadores" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Escolha para quais utilizadores deseja instalar o $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Escolha se deseja instalar o $(^NameDA) apenas para si ou para todos os utilizadores. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instalar para todos os utilizadores" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalar apenas para si" +!endif diff --git a/tools/Contrib/Language files/PortugueseBR.nlf b/tools/Contrib/Language files/PortugueseBR.nlf new file mode 100644 index 0000000..8cc4c32 --- /dev/null +++ b/tools/Contrib/Language files/PortugueseBR.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1046 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Diego Pedroso and Felipe, reviewed by Georger Araújo +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalação do $(^Name) +# ^UninstallCaption +Desinstalação do $(^Name) +# ^LicenseSubCaption +: Acordo de Licença +# ^ComponentsSubCaption +: Opções da Instalação +# ^DirSubCaption +: Pasta da Instalação +# ^InstallingSubCaption +: Instalando +# ^CompletedSubCaption +: Completado +# ^UnComponentsSubCaption +: Opções da Desinstalação +# ^UnDirSubCaption +: Pasta da Desinstalação +# ^ConfirmSubCaption +: Confirmação +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Completado +# ^BackBtn +< &Voltar +# ^NextBtn +&Próximo > +# ^AgreeBtn +Eu &Concordo +# ^AcceptBtn +Eu &aceito os termos do Acordo de Licença +# ^DontAcceptBtn +Eu &não aceito os termos do Acordo de Licença +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Cancelar +# ^CloseBtn +&Fechar +# ^BrowseBtn +P&rocurar... +# ^ShowDetailsBtn +Mostrar &detalhes +# ^ClickNext +Clique em Próximo pra continuar. +# ^ClickInstall +Clique em Instalar pra iniciar a instalação. +# ^ClickUninstall +Clique em Desinstalar pra iniciar a desinstalação. +# ^Name +Nome +# ^Completed +Completado +# ^LicenseText +Por favor reveja o acordo de licença antes de instalar o $(^NameDA). Se você aceita todos os termos do acordo clique em Eu Concordo. +# ^LicenseTextCB +Por favor reveja o acordo de licença antes de instalar o $(^NameDA). Se você aceita todos os termos do acordo clique na caixa de seleção abaixo. $_CLICK +# ^LicenseTextRB +Por favor reveja o acordo de licença antes de instalar o $(^NameDA). Se você aceita todos os termos do acordo selecione a primeira opção abaixo. $_CLICK +# ^UnLicenseText +Por favor reveja o acordo de licença antes de desinstalar o $(^NameDA). Se você aceita todos os termos do acordo clique em Eu Concordo. +# ^UnLicenseTextCB +Por favor reveja o acordo de licença antes de desinstalar o $(^NameDA). Se você aceita todos os termos do acordo clique na caixa de seleção abaixo. $_CLICK +# ^UnLicenseTextRB +Por favor reveja o acordo de licença antes de desinstalar o $(^NameDA). Se você aceita todos os termos do acordo selecione a primeira opção abaixo. $_CLICK +# ^Custom +Personalizar +# ^ComponentsText +Marque os componentes que você quer instalar e desmarque os componentes que você não quer instalar. $_CLICK +# ^ComponentsSubText1 +Selecione o tipo de instalação: +# ^ComponentsSubText2_NoInstTypes +Selecione os componentes a instalar: +# ^ComponentsSubText2 +Ou selecione os componentes opcionais que você deseja instalar: +# ^UnComponentsText +Marque os componentes que você quer desinstalar e desmarque os componentes que você não quer desinstalar. $_CLICK +# ^UnComponentsSubText1 +Selecione o tipo de desinstalação: +# ^UnComponentsSubText2_NoInstTypes +Selecione os componentes a desinstalar: +# ^UnComponentsSubText2 +Ou selecione os componentes opcionais que você deseja desinstalar: +# ^DirText +O Instalador instalará o $(^NameDA) na seguinte pasta. Pra instalar em uma pasta diferente clique em Procurar e selecione outra pasta. $_CLICK +# ^DirSubText +Pasta Destino +# ^DirBrowseText +Selecione a pasta pra instalar o $(^NameDA): +# ^UnDirText +O Instalador desinstalará o $(^NameDA) da seguinte pasta. Pra desinstalar de uma pasta diferente clique em Procurar e selecione outra pasta. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Selecione a pasta pra desinstalar o $(^NameDA): +# ^SpaceAvailable +"Espaço disponível: " +# ^SpaceRequired +"Espaço requerido: " +# ^UninstallingText +O $(^NameDA) será desinstalado da seguinte pasta. $_CLICK +# ^UninstallingSubText +Desinstalando de: +# ^FileError +Erro ao abrir o arquivo pra gravação: \r\n\r\n$0\r\n\r\nClique em Abortar pra parar a instalação,\r\nRepetir pra tentar de novo ou em\r\nIgnorar pra ignorar este arquivo. +# ^FileError_NoIgnore +Erro ao abrir o arquivo pra gravação: \r\n\r\n$0\r\n\r\nClique em Repetir pra tentar de novo ou em\r\nCancelar pra parar a instalação. +# ^CantWrite +"Não pôde gravar: " +# ^CopyFailed +Falhou em copiar +# ^CopyTo +"Copiar para " +# ^Registering +"Registrando: " +# ^Unregistering +"Desfazendo o registro: " +# ^SymbolNotFound +"Não pôde achar o símbolo: " +# ^CouldNotLoad +"Não pôde carregar: " +# ^CreateFolder +"Criar pasta: " +# ^CreateShortcut +"Criar atalho: " +# ^CreatedUninstaller +"Desinstalador criado: " +# ^Delete +"Apagar o arquivo: " +# ^DeleteOnReboot +"Apagar ao reiniciar: " +# ^ErrorCreatingShortcut +"Erro ao criar o atalho: " +# ^ErrorCreating +"Erro ao criar: " +# ^ErrorDecompressing +Erro ao descomprimir os dados! Instalador corrompido? +# ^ErrorRegistering +Erro ao registar a DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Executar: " +# ^Extract +"Extrair: " +# ^ErrorWriting +"Extrair: erro ao gravar no arquivo " +# ^InvalidOpcode +Instalador corrompido: opcode inválido +# ^NoOLE +"Sem OLE para: " +# ^OutputFolder +"Pasta de saída: " +# ^RemoveFolder +"Remover a pasta: " +# ^RenameOnReboot +"Renomear ao reiniciar: " +# ^Rename +"Renomear: " +# ^Skipped +"Ignorado: " +# ^CopyDetails +Copiar os Detalhes pra Área de Transferência +# ^LogInstall +Gravar no log o processo de instalação +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G \ No newline at end of file diff --git a/tools/Contrib/Language files/PortugueseBR.nsh b/tools/Contrib/Language files/PortugueseBR.nsh new file mode 100644 index 0000000..ba5bcf2 --- /dev/null +++ b/tools/Contrib/Language files/PortugueseBR.nsh @@ -0,0 +1,129 @@ +;Language: Brazilian Portuguese (1046) +;By Diego Pedroso and Felipe + +!insertmacro LANGFILE "PortugueseBR" "Brazilian Portuguese" "Português Brasileiro" "Portugues Brasileiro" ; Veja \Include\LangFile.nsh pra uma descriçaõ destes parâmetros + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bem-vindo ao Instalador do $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "O instalador guiará você através da instalação do $(^NameDA).$\r$\n$\r$\nÉ recomendado que você feche todos os outros aplicativos antes de iniciar o instalador. Isto tornará possível atualizar os arquivos de sistema relevantes sem ter que reiniciar seu computador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bem-vindo ao Desinstalador do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Este assistente guiará você através da desinstalação do $(^NameDA).$\r$\n$\r$\nAntes de iniciar a desinstalação tenha certeza de que o $(^NameDA) não está em execução.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Acordo de Licença" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor reveja os termos da licença antes de instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Se você aceita os termos do acordo clique em Eu Concordo pra continuar. Você deve aceitar o acordo pra instalar o $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se você aceita os termos do acordo clique na caixa de seleção abaixo. Você deve aceitar o acordo pra instalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se você aceita os termos do acordo selecione a primeira opção abaixo. Você deve aceitar o acordo pra instalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Acordo de Licença" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor reveja os termos da licença antes de desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Se você aceita os termos do acordo clique em Eu Concordo pra continuar. Você deve aceitar o acordo pra desinstalar o $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Se você aceita os termos do acordo clique na caixa de seleção abaixo. Você deve aceitar o acordo pra desinstalar o $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Se você aceita os termos do acordo selecione a primeira opção abaixo. Você deve aceitar o acordo pra desinstalar o $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Pressione Page Down pra ver o resto do acordo." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Escolher Componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Escolha quais funções do $(^NameDA) você quer instalar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Escolher Componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Escolha quais funções do $(^NameDA) você quer desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descrição" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Posicione seu mouse sobre um componente pra ver a descrição dele." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Selecione um componente pra ver a descrição dele." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Escolha o Local da Instalação" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Escolha a pasta na qual instalar o $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Escolha o Local da Desinstalação" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Escolha a pasta da qual desinstalar o $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor espere enquanto o $(^NameDA) está sendo instalado." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalação Completa" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "A instalação foi completada com sucesso." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalação Abortada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "A instalação não foi completada com sucesso." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor espere enquanto o $(^NameDA) está sendo desinstalado." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalação Completa" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "A desinstalação foi completada com sucesso." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalação Abortada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "A desinstalação não foi completada com sucesso." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Completando a instalação do $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "O $(^NameDA) foi instalado no seu computador.$\r$\n$\r$\nClique em Concluir pra fechar o instalador." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Seu computador deve ser reiniciado a fim de completar a instalação do $(^NameDA). Você quer reiniciar agora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Completando a desinstalação do $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "O $(^NameDA) foi desinstalado do seu computador.$\r$\n$\r$\nClique em Concluir pra fechar o instalador." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Seu computador deve ser reiniciado a fim de completar a desinstalação do $(^NameDA). Você quer reiniciar agora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reiniciar agora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Eu quero reiniciar manualmente mais tarde" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Executar o $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Mostrar o Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Concluir" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Escolha a Pasta do Menu Iniciar" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Escolha uma pasta do Menu Iniciar para os atalhos do $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Selecione a pasta do Menu Iniciar na qual você gostaria de criar os atalhos do programa. Você pode também inserir um nome pra criar uma nova pasta." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Não criar atalhos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar o $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Remover o $(^NameDA) do seu computador." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Você tem certeza que você quer sair da Instalação do $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Você tem certeza que você quer sair da Desinstalação do $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Escolher Usuários" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Escolha pra quais usuários você quer instalar o $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Selecione se você quer instalar o $(^NameDA) só pra si mesmo ou pra todos os usuários deste computador. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instalar pra qualquer um usando este computador" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalar apenas pra mim" +!endif diff --git a/tools/Contrib/Language files/Romanian.nlf b/tools/Contrib/Language files/Romanian.nlf new file mode 100644 index 0000000..545e0a8 --- /dev/null +++ b/tools/Contrib/Language files/Romanian.nlf @@ -0,0 +1,202 @@ +# Header, don't edit +NLF v6 +# Language ID +1048 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Cristian Pirvu (pcristip@yahoo.com) v6 +# Revision by Sorin Sbarnea (sorin@intersol.ro) v5.1 +# and Sorin Sbarnea INTERSOL SRL (sorin@intersol.ro) v4 +# New revision by George Radu (georadu@hotmail.com) +# New revision by Iulian Dogariu (iulian@jayomega.net) +# - Use Romanian letters ăâîşţ +# - Use imperative forms on buttons +# - Replace some neologisms +# New revision by Vlad Rusu (vlad@bitattack.ro) +# - "Rasfoieşte" replaced with "Alege" - more appropriate +# - "Elimină" related terms replaced with more appropriate "Dezinstalează" +# - Fixed: Wrong translation in ^FileError and ^FileError_NoIgnore -> no translation +# needed Abort/Retry/Ignore, as these are not translated into local language, OS related +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalare $(^Name) +# ^UninstallCaption +Dezinstalare $(^Name) +# ^LicenseSubCaption +: Contract de licenţă +# ^ComponentsSubCaption +: Opţiuni instalare +# ^DirSubCaption +: Directorul destinaţie +# ^InstallingSubCaption +: În curs de instalare +# ^CompletedSubCaption +: Instalare terminată +# ^UnComponentsSubCaption +: Opţiuni dezinstalare +# ^UnDirSubCaption +: Directorul de dezinstalare +# ^ConfirmSubCaption +: Confirmă +# ^UninstallingSubCaption +: În curs de dezinstalare +# ^UnCompletedSubCaption +: Termină +# ^BackBtn +< Îna&poi +# ^NextBtn +Îna&inte > +# ^AgreeBtn +&De acord +# ^AcceptBtn +&Accept termenii contractului de licenţă +# ^DontAcceptBtn +Nu accept termenii contractului de licenţă +# ^InstallBtn +&Instalează +# ^UninstallBtn +&Dezinstalează +# ^CancelBtn +&Renunţă +# ^CloseBtn +În&chide +# ^BrowseBtn +&Alege... +# ^ShowDetailsBtn +Arată &detalii +# ^ClickNext +Apăsaţi Înainte pentru a continua. +# ^ClickInstall +Apăsaţi Instalează pentru a începe instalarea. +# ^ClickUninstall +Apăsaţi Dezinstalează pentru a începe dezinstalarea. +# ^Name +Nume +# ^Completed +Terminat +# ^LicenseText +Citiţi cu atenţie contractul de licenţă înainte de a instala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, apăsaţi butonul De acord. +# ^LicenseTextCB +Citiţi cu atenţie contractul de licenţă înainte de a instala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, bifaţi căsuţa de mai jos. $_CLICK +# ^LicenseTextRB +Citiţi cu atenţie contractul de licenţă înainte de a instala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, selectaţi prima opţiune de mai jos. $_CLICK +# ^UnLicenseText +Citiţi cu atenţie contractul de licenţă înainte de a dezinstala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, apăsaţi butonul De acord. +# ^UnLicenseTextCB +Citiţi cu atenţie contractul de licenţă înainte de a dezinstala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, bifaţi căsuţa de mai jos. $_CLICK +# ^UnLicenseTextRB +Citiţi cu atenţie contractul de licenţă înainte de a dezinstala $(^NameDA). Dacă acceptaţi termenii contractului de licenţă, selectaţi prima opţiune de mai jos. $_CLICK +# ^Custom +Personalizată +# ^ComponentsText +Alegeţi componentele pe care doriţi să le instalaţi. $_CLICK +# ^ComponentsSubText1 +Alegeţi tipul instalării: +# ^ComponentsSubText2_NoInstTypes +Alegeţi componentele ce urmează a fi instalate: +# ^ComponentsSubText2 +Sau, alegeţi componentele opţionale pe care doriţi să le instalaţi: +# ^UnComponentsText +Alegeţi componentele pe care doriţi să le dezinstalaţi. $_CLICK +# ^UnComponentsSubText1 +Alegeţi tipul de dezinstalare: +# ^UnComponentsSubText2_NoInstTypes +Alegeţi componentele ce urmează a fi dezinstalate: +# ^UnComponentsSubText2 +Sau, alegeţi componentele opţionale pe care doriţi să le dezinstalaţi: +# ^DirText +$(^NameDA) se va instala în următorul director. Pentru a alege altă destinaţie, apăsaţi Alege şi alegeţi alt director. $_CLICK +# ^DirSubText +Director destinaţie +# ^DirBrowseText +Alegeţi directorul în care doriţi să instalaţi $(^NameDA): +# ^UnDirText +$(^NameDA) se va dezinstala din următorul director. Pentru a dezinstala din alt director, apăsaţi Alege şi alegeţi alt director. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Alegeţi directorul de dezinstalare al $(^NameDA): +# ^SpaceAvailable +"Spaţiu disponibil: " +# ^SpaceRequired +"Spaţiu necesar: " +# ^UninstallingText +Această aplicaţie va dezinstala $(^NameDA) din computerul Dv. $_CLICK +# ^UninstallingSubText +Dezinstalare din: +# ^FileError +Eroare la scrierea fişierului: \r\n\t"$0"\r\nApăsaţi Abort pentru oprirea instalării,\r\nRetry pentru a mai încerca o dată scrierea fişierului, \r\nIgnore pentru a trece peste acest fişier. +# ^FileError_NoIgnore +Eroare la scrierea fişierului: \r\n\t"$0"\r\nApăsaţi Retry pentru a mai încerca o dată, sau\r\nAbort pentru oprirea instalării. +# ^CantWrite +"Nu am putut scrie: " +# ^CopyFailed +Copierea a eşuat +# ^CopyTo +"Copiere în " +# ^Registering +"Se înregistrează: " +# ^Unregistering +"Se dezînregistrează din registru: " +# ^SymbolNotFound +"Simbolul nu a fost găsit: " +# ^CouldNotLoad +"Nu am putut încărca: " +# ^CreateFolder +"Creare director: " +# ^CreateShortcut +"Creare comandă rapidă: " +# ^CreatedUninstaller +"S-a creat aplicaţia de dezinstalare: " +# ^Delete +"Ştergere fişier: " +# ^DeleteOnReboot +"Ştergere la repornire: " +# ^ErrorCreatingShortcut +"Eroare la crearea comenzii rapide: " +# ^ErrorCreating +"Eroare la creare: " +# ^ErrorDecompressing +Eroare la dezarhivarea datelor! Aplicatia de instalare este defectă? +# ^ErrorRegistering +Eroare la Înregistrarea DLL-ului +# ^ExecShell +"ExecShell: " +# ^Exec +"Executare: " +# ^Extract +"Extragere: " +# ^ErrorWriting +"Extragere: eroare la scriere în fişier " +# ^InvalidOpcode +Aplicaţie de instalare defectă: opcode incorect +# ^NoOLE +"Nu există OLE pentru: " +# ^OutputFolder +"Directorul destinaţie: " +# ^RemoveFolder +"Ştergere destinaţie: " +# ^RenameOnReboot +"Redenumire la repornirea computerului: " +# ^Rename +"Redenumire: " +# ^Skipped +"Sărite: " +# ^CopyDetails +Copiere detalii în clipboard +# ^LogInstall +Jurnal proces instalare +# ^Byte +O +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Romanian.nsh b/tools/Contrib/Language files/Romanian.nsh new file mode 100644 index 0000000..e98dd0c --- /dev/null +++ b/tools/Contrib/Language files/Romanian.nsh @@ -0,0 +1,128 @@ +;Language: Romanian (1048) +;Translated by Cristian Pirvu (pcristip@yahoo.com) +;Updates by Sorin Sbarnea - INTERSOL SRL (sbarneasorin@intersol.ro) - ROBO Design (www.robodesign.ro) +;New revision by George Radu (georadu@hotmail.com) http://mediatae.3x.ro +;New revision by Vlad Rusu (vlad@bitattack.ro) +; - Use Romanian letters ăâîşţ +; - ".. produsului" removed as unnecessary +; - "Elimină" related terms replaced with more appropriate "Dezinstalează" +; - Misc language tweaks + +!insertmacro LANGFILE "Romanian" = "Română" "Romana" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bine aţi venit la instalarea $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Această aplicaţie va instala $(^NameDA).$\r$\n$\r$\nEste recomandat să închideţi toate aplicaţiile înainte de începerea procesului de instalare. Acest lucru vă poate asigura un proces de instalare fără erori sau situaţii neprevăzute.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bine aţi venit la dezinstalarea $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Această aplicaţie va dezinstala $(^NameDA).$\r$\n$\r$\nEste recomandat să închideţi toate aplicaţiile înainte de începerea procesului de dezinstalare. Acest lucru vă poate asigura un proces de dezinstalare fără erori sau situaţii neprevăzute.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Contract de licenţă" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Citiţi cu atenţie termenii contractului de licenţă înainte de a instala $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Dacă acceptaţi termenii contractului de licenţă, apăsati De Acord. Pentru a instala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Dacă acceptaţi termenii contractului de licenţă, bifaţi căsuţa de mai jos. Pentru a instala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Dacă acceptaţi termenii contractului de licenţă, selectaţi prima opţiune de mai jos. Pentru a instala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Contract de licenţă" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Citiţi cu atenţie termenii contractului de licenţă înainte de a dezinstala $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Dacă acceptaţi termenii contractului de licenţă, apăsati De Acord. Pentru a dezinstala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Dacă acceptaţi termenii contractului de licenţă, bifaţi căsuţa de mai jos. Pentru a dezinstala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Dacă acceptaţi termenii contractului de licenţă, selectaţi prima opţiune de mai jos. Pentru a dezinstala $(^NameDA) trebuie să acceptaţi termenii din contractul de licenţă. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Apăsaţi Page Down pentru a vizualiza restul contractului de licenţă." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Selectare componente" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Selectaţi componentele $(^NameDA) pe care doriţi să le instalaţi." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Selectare componente" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Selectaţi componentele $(^NameDA) pe care doriţi să le dezinstalaţi." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descriere" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Aşezaţi mouse-ul deasupra fiecărei componente pentru a vizualiza descrierea acesteia." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Selectare director destinaţie" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Selectaţi directorul în care doriţi să instalaţi $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Selectare director de dezinstalat" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Selectaţi directorul din care doriţi să dezinstalaţi $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "În curs de instalare" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vă rugăm să aşteptaţi, $(^NameDA) se instalează." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalare terminată" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalarea s-a terminat cu succes." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalare anulată" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalarea a fost anulată de utilizator." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "În curs de dezinstalare" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vă rugăm să aşteptaţi, $(^NameDA) se dezinstalează." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Dezinstalare terminată" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Dezinstalarea s-a terminat cu succes." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Dezinstalare anulată" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Dezinstalarea fost anulată de utilizator." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Terminare instalare $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) a fost instalat.$\r$\n$\r$\nApăsaţi Terminare pentru a încheia instalarea." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Trebuie să reporniţi calculatorul pentru a termina instalarea. Doriţi să-l reporniţi acum?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Terminare dezinstalare $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) a fost dezinstalat.$\r$\n$\r$\nApăsaţi Terminare pentru a încheia dezinstalarea." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Trebuie să reporniţi calculatorul pentru a termina dezinstalarea. Doriţi să-l reporniţi acum?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reporneşte acum" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Repornesc eu mai târziu" + ${LangFileString} MUI_TEXT_FINISH_RUN "Executare $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Afişare fişier readme (citeşte-mă)." + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Terminare" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Selectare grup Meniul Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Selectaţi un grup in Meniul Start pentru a crea comenzi rapide pentru produs." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Selectaţi grupul din Meniul Start în care vor fi create comenzi rapide pentru produs. Puteţi de asemenea să creaţi un grup nou." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nu doresc comenzi rapide" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Dezinstalare $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Dezinstalare $(^NameDA) din calculatorul dumneavoastră." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Sunteţi sigur(ă) că doriţi să anulaţi instalarea $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Sunteţi sigur(ă) că doriţi să anulaţi dezinstalarea $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/Russian.nlf b/tools/Contrib/Language files/Russian.nlf new file mode 100644 index 0000000..87642fc --- /dev/null +++ b/tools/Contrib/Language files/Russian.nlf @@ -0,0 +1,192 @@ +# Header, don't edit +NLF v6 +# Language ID +1049 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Timon [ timon@front.ru ] + 20030919 +# Translation updated by Dmitry Yerokhin [erodim@mail.ru] (20050424) +# Minor updates by Oleksandr Gavenko (20100514 - patch #226) +# ^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\t"$0"\r\n"Прервать": остановить установку;\r\n"Повтор": повторить попытку;\r\n"Пропуск": пропустить это действие. +# ^FileError_NoIgnore +Невозможно открыть файл для записи: \r\n\t"$0"\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/tools/Contrib/Language files/Russian.nsh b/tools/Contrib/Language files/Russian.nsh new file mode 100644 index 0000000..e14a0da --- /dev/null +++ b/tools/Contrib/Language files/Russian.nsh @@ -0,0 +1,129 @@ +;Language: Russian (1049) +;Translation updated by Dmitry Yerokhin [erodim@mail.ru] (050424) + +!insertmacro LANGFILE "Russian" = "Русский" "Russkij" + +!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 "Если вы принимаете условия соглашения, нажмите кнопку $\"Принимаю$\". Чтобы установить программу, необходимо принять соглашение." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Если вы принимаете условия соглашения, установите флажок ниже. Чтобы установить программу, необходимо принять соглашение. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Если вы принимаете условия соглашения, выберите первый вариант из предложенных ниже. Чтобы установить программу, необходимо принять соглашение. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Лицензионное соглашение" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Перед удалением $(^NameDA) ознакомьтесь с лицензионным соглашением." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Если вы принимаете условия соглашения, нажмите кнопку $\"Принимаю$\". Для удаления необходимо принять соглашение. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Если вы принимаете условия соглашения, установите флажок ниже. Для удаления необходимо принять соглашение. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Если вы принимаете условия соглашения, выберите первый вариант из предложенных ниже. Для удаления необходимо принять соглашение. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Для перемещения по тексту используйте клавиши $\"PageUp$\" и $\"PageDown$\"." +!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 "&Показать файл ReadMe" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Готово" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Папка в меню $\"Пуск$\"" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Выберите папку в меню $\"Пуск$\" для размещения ярлыков программы." + ${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 "Вы действительно хотите отменить установку $(^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/tools/Contrib/Language files/ScotsGaelic.nlf b/tools/Contrib/Language files/ScotsGaelic.nlf new file mode 100644 index 0000000..60c3aae --- /dev/null +++ b/tools/Contrib/Language files/ScotsGaelic.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1169 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by GunChleoc +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +A’ stàladh $(^Name) +# ^UninstallCaption +A’ dì-stàladh $(^Name) +# ^LicenseSubCaption +: Aonta ceadachais +# ^ComponentsSubCaption +: Roghainnean an stàlaidh +# ^DirSubCaption +: Pasgan an stàlaidh +# ^InstallingSubCaption +: ’Ga stàladh +# ^CompletedSubCaption +: Deiseil +# ^UnComponentsSubCaption +: Roghainnean an dì-stàlaidh +# ^UnDirSubCaption +: Pasgan an dì-stàlaidh +# ^ConfirmSubCaption +: Dearbhadh +# ^UninstallingSubCaption +: ’Ga dhì-stàladh +# ^UnCompletedSubCaption +: Deiseil +# ^BackBtn +< Air ai&s +# ^NextBtn +Air adha&rt > +# ^AgreeBtn +&Gabhaidh mi ris +# ^AcceptBtn +&Gabhaidh mi teirmichean an aonta cheadachais +# ^DontAcceptBtn +&Diùltaidh mi teirmichean an aonta ceadachais +# ^InstallBtn +&Stàlaich +# ^UninstallBtn +&Dì-stàlaich +# ^CancelBtn +Sguir dheth +# ^CloseBtn +&Dùin +# ^BrowseBtn +&Rùraich… +# ^ShowDetailsBtn +&Mion-fhiosrachadh +# ^ClickNext +Briog air “Air adhart” gus leantainn air adhart. +# ^ClickInstall +Briog air “Stàlaich” gus tòiseachadh air an stàladh. +# ^ClickUninstall +Briog air “Dì-stàlaich” gus tòiseachadh air an dì-stàladh. +# ^Name +Ainm +# ^Completed +Coileanta +# ^LicenseText +Feuch an doir thu sùil air an aonta cheadachais mus stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, briog air “Gabhaidh mi ris”. +# ^LicenseTextCB +Feuch an doir thu sùil air an aonta cheadachais mus stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, cuir cromag sa bhogsa gu h-ìosal. $_CLICK +# ^LicenseTextRB +Feuch an doir thu sùil air an aonta cheadachais mus stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, tagh a’ chiad roghainn gu h-ìosal. $_CLICK +# ^UnLicenseText +Feuch an doir thu sùil air an aonta cheadachais mus dì-stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, Briog air “Gabhaidh mi ris”. +# ^UnLicenseTextCB +Feuch an doir thu sùil air an aonta cheadachais mus dì-stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, cuir cromag sa bhogsa gu h-ìosal. $_CLICK +# ^UnLicenseTextRB +Feuch an doir thu sùil air an aonta cheadachais mus dì-stàlaich thu $(^NameDA). Ma ghabhas tu ris a h-uile teirm san aonta, tagh a’ chiad roghainn gu h-ìosal. $_CLICK +# ^Custom +Gnàthaichte +# ^ComponentsText +Thoir cromag ann am bogsaichean nan co-phàirtean a tha thu airson stàladh is thoir air falbh i o bhogsaichean nan co-phàirtean nach eil thu ag iarraidh. $_CLICK +# ^ComponentsSubText1 +Tagh an seòrsa dhen stàladh: +# ^ComponentsSubText2_NoInstTypes +Tagh na co-phàirtean a tha thu airson stàladh: +# ^ComponentsSubText2 +No tagh na co-phàirtean roghainneil a tha thu airson stàladh: +# ^UnComponentsText +Thoir cromag ann am bogsaichean nan co-phàirtean a tha thu airson dì-stàladh is thoir air falbh i o bhogsaichean nan co-phàirtean a tha thu airson cumail. $_CLICK +# ^UnComponentsSubText1 +Tagh an seòrsa dhen dì-stàladh: +# ^UnComponentsSubText2_NoInstTypes +Tagh na co-phàirtean a tha thu airson dì-stàladh: +# ^UnComponentsSubText2 +No tagh na co-phàirtean roghainneil a tha thu airson dì-stàladh: +# ^DirText +Thèid $(^NameDA) a stàladh sa phasgan seo. Gus stàladh ann am pasgan eile, briog air “Rùraich” is tagh pasgan eile. $_CLICK +# ^DirSubText +Pasgan-uidhe +# ^DirBrowseText +Tagh am pasgan san dèid $(^NameDA) a stàladh: +# ^UnDirText +Thèid $(^NameDA) a dhì-stàladh on phasgan seo. Gus dì-stàladh o phasgan eile, briog air “Rùraich” is tagh pasgan eile. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Tagh am pasgan on a tha thu airson $(^NameDA) a dhì-stàladh: +# ^SpaceAvailable +"Àite ri fhaighinn: " +# ^SpaceRequired +"Àite air a bheil feum: " +# ^UninstallingText +Thèid $(^NameDA) a dhì-stàladh on phasgan seo. $_CLICK +# ^UninstallingSubText +’Ga dhì-stàladh o: +# ^FileError +Thachair mearachd a’ fosgladh an fhaidhle a chum sgrìobhaidh: \r\n\r\n$0\r\n\r\nBriog air “Sguir dheth” gus sgur dhen stàladh, air\r\n“Feuch ris a-rithist” gus feuchainn ris a-rithist no air\r\n“Leig seachad” gus leum a ghearradh thairis air an fhaidhle seo. +# ^FileError_NoIgnore +Thachair mearachd a’ fosgladh an fhaidhle seo a chum sgrìobhaidh: \r\n\r\n$0\r\n\r\nBriog air “Feuch ris a-rithist” gus feuchainn ris a-rithist no air\r\n“Sguir dheth” gus sgur dhen stàladh. +# ^CantWrite +"Cha ghabh sgrìobhadh ann: " +# ^CopyFailed +Cha deach leinn lethbhreac dheth a dhèanamh +# ^CopyTo +"Cuir lethbhreac gu " +# ^Registering +"A’ clàradh: " +# ^Unregistering +"A’ neo-chlàradh: " +# ^SymbolNotFound +"Cha deach an samhla a lorg: " +# ^CouldNotLoad +"Cha b’ urrainn dhuinn a luchdadh: " +# ^CreateFolder +"Cruthaich pasgan: " +# ^CreateShortcut +"Cruthaich ath-ghoirid: " +# ^CreatedUninstaller +"Dì-stàlaichear air a chruthachadh: " +# ^Delete +"Sguab às dhan fhaidhle: " +# ^DeleteOnReboot +"Sguab às leis an ath-thòiseachadh: " +# ^ErrorCreatingShortcut +"Mearachd le cruthachadh na h-ath-ghoirid: " +# ^ErrorCreating +"Mearachd le cruthachadh: " +# ^ErrorDecompressing +Thachair mearachd a’ dì-dhùmhlachadh an dàta! ’S dòcha gu bheil an t-inneal-stàlaidh coirbte. +# ^ErrorRegistering +Mearachd le clàradh DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Cuir àithne an gnìomh: " +# ^Extract +"Dì-dhùmhlaich: " +# ^ErrorWriting +"Dì-dhùmhlachadh: mearachd a’ sgrìobhadh gu faidhle " +# ^InvalidOpcode +Stàlaichear coirbte: opcode mì-dhligheach +# ^NoOLE +"Chan eil OLE ann airson: " +# ^OutputFolder +"Pasgan às-chuir: " +# ^RemoveFolder +"Thoir pasgan air falbh: " +# ^RenameOnReboot +"Cuir ainm ùr air leis an ath-thòiseachadh: " +# ^Rename +"Cuir ainm ùr air: " +# ^Skipped +"Air leum a ghearradh: " +# ^CopyDetails +Cuir lethbhreac dhen mhion-fhiosrachadh san stòr-bhòrd +# ^LogInstall +Dèan loga dhen stàladh +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/ScotsGaelic.nsh b/tools/Contrib/Language files/ScotsGaelic.nsh new file mode 100644 index 0000000..be440fa --- /dev/null +++ b/tools/Contrib/Language files/ScotsGaelic.nsh @@ -0,0 +1,129 @@ +;Language: Gàidhlig (1169) +;Le GunChleoc + +!insertmacro LANGFILE "ScotsGaelic" "Scottish Gaelic" "Gàidhlig" "Gaidhlig" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Fàilte gu stàladh $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Stiùiridh sinn tron stàladh aig $(^NameDA) thu.$\r$\n$\r$\nMholamaid gun dùin thu a h-uile aplacaid eile mus tòisich thu air an stàladh. Mar sin, ’s urrainn dhuinn faidhlichean iomchaidh an t-siostaim ùrachadh gun fheum air ath-thòiseachadh a’ choimpiutair agad.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Fàilte gun dì-stàladh aig $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Stiùiridh sinn tron dì-stàladh aig $(^NameDA) thu.$\r$\n$\r$\nMus tòisich thu air an dì-stàladh, dèan cinnteach nach eil $(^NameDA) a’ ruith.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Aonta ceadachais" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "An doir thu sùil air teirmichean a’ cheadachais mus stàlaich thu $(^NameDA)?" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ma ghabhas tu ri teirmichean an aonta, briog air “Gabhaidh mi ris” gus leantainn air adhart. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a stàladh." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ma ghabhas tu ri teirmichean an aonta, thoir cromag sa bhogsa gu h-ìosal. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a stàladh. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ma ghabhas tu ri teirmichean an aonta, tagh a’ chiad roghainn gu h-ìosal. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a stàladh. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Aonta ceadachais" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "An doir thu sùil air teirmichean a’ cheadachais mus dì-stàlaich thu $(^NameDA)?" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ma ghabhas tu ri teirmichean an aonta, briog air “Gabhaidh mi ris” gus leantainn air adhart. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a dhì-stàladh." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ma ghabhas tu ri teirmichean an aonta, cuir cromag sa bhogsa gu h-ìosal. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a dhì-stàladh. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ma ghabhas tu ri teirmichean an aonta, tagh a’ chiad roghainn gu h-ìosal. Feumaidh tu gabhail ris an aonta mus urrainn dhut $(^NameDA) a dhì-stàladh. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Brùth air Page Down gus an corr dhen aonta a shealltainn." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Tagh co-phàirtean" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Tagh na gleusan aig $(^NameDA) a tha thu airson stàladh." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Tagh co-phàirtean" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Tagh na gleusan aig $(^NameDA) a tha thu airson dì-stàladh." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Tuairisgeul" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Cuir an luchag agad air co-phàirt gus a tuairisgeul a shealltainn." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Tagh co-phàirt gus a tuairisgeul a shealltainn." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Tagh ionad an stàlaidh" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Tagh am pasgan san dèid $(^NameDA) a stàladh." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Tagh ionad an dì-stàlaidh" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Tagh am pasgan on a thèid $(^NameDA) a dhì-stàladh." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "’Ga stàladh" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Fuirich ort fhad ’s a tha $(^NameDA) ’ga stàladh." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Stàladh deiseil" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Tha an stàladh deiseil." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Chaidh sgur dhen stàladh" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Cha deach an stàladh a choileanadh." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "’Ga dhì-stàladh" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Fuirich ort fhad ’s a tha $(^NameDA) ’ga dhì-stàladh." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Dì-stàladh deiseil" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Chaidh a dhì-stàladh." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Chaidh sgur dhen dì-stàladh" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Cha deach an dì-stàladh a choileanadh." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "A’ coileanadh an stàlaidh aig $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Chaidh $(^NameDA) a stàladh air a’ choimpiutair agad.$\r$\n$\r$\nBriog air “Crìochnaich” gus an t-inneal-stàlaidh a dhùnadh." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Tha ath-thòiseachadh a dhìth air a’ choimpiutair agad gus an stàladh aig $(^NameDA) a choileanadh. A bheil thu airson ath-thòiseachadh an-dràsta?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "A’ coileanadh an dì-stàlaidh aig $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Chaidh $(^NameDA) a dhì-stàladh on choimpiutair agad.$\r$\n$\r$\nBriog air “Crìochnaich” gus an t-inneal-stàlaidh a dhùnadh." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Tha ath-thòiseachadh a dhìth air a’ choimpiutair agad gus an dì-stàladh aig $(^NameDA) a choileanadh. A bheil thu airson ath-thòiseachadh an-dràsta?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ath-tòisich an-dràsta" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Nì mi fhìn ath-thòiseachadh a làimh uaireigin eile" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Ruith $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Seall am faidhle “Leughmi”" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Crìochnaich" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Tagh pasgan sa chlàr-taice tòiseachaidh" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Tagh pasgan sa chlàr-taice tòiseachaidh airson na h-ath-ghoiridean aig $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Tagh pasgan sa chlàr-taice tòiseachaidh sa bheil thu airson na h-ath-ghoiridean aig a’ phrògram a chruthachadh. ’S urrainn dhut cuideachd ainm a chur a-steach gus pasgan ùr a chruthachadh." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Na cruthaich ath-ghoiridean" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Dì-stàlaich $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Thoir $(^NameDA) air falbh on choimpiutair agad." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "A bheil thu cinnteach gu bheil thu airson an stàladh aig $(^Name) fhàgail?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "A bheil thu cinnteach gu bheil thu airson an dì-stàladh aig $(^Name) fhàgail?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Tagh cleachdaichean" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Tagh na cleachdaichean dhan a thèid $(^NameDA) a stàladh." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Tagh an stàlaich thu $(^NameDA) air do shon fhìn a-mhàin no airson a h-uile cleachdaiche air a’ choimpiutair seo. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Stàlaich airson duine sam bith a chleachdas an coimpiutair seo" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Na stàlaich ach air mo shon-sa" +!endif diff --git a/tools/Contrib/Language files/Serbian.nlf b/tools/Contrib/Language files/Serbian.nlf new file mode 100644 index 0000000..30786b2 --- /dev/null +++ b/tools/Contrib/Language files/Serbian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +3098 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Срђан Обућина +# ^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\t"$0"\r\nПритисните дугме „Одустани“ за прекид инсталације,\r\n„Понови“ за поновни покушај писања у фајл, или\r\n„Игнориши“ за прескакање овог фајла. +# ^FileError_NoIgnore +Грешка при отварању фајла за писање: \r\n\t"$0"\r\nПритисните дугме „Понови“ за поновни покушај писања у фајл, или\r\n„Одустани“ за прекид инсталирања. +# ^CantWrite +"Немогуће писање: " +# ^CopyFailed +Неуспешно копирање +# ^CopyTo +"Копирање у " +# ^Registering +"Регистровање: " +# ^Unregistering +"Дерегистровање: " +# ^SymbolNotFound +"Симбол није нађен: " +# ^CouldNotLoad +"Немогуће учитавање: " +# ^CreateFolder +"Креирање фолдера: " +# ^CreateShortcut +"Креирање пречице: " +# ^CreatedUninstaller +"Креирање деинсталера: " +# ^Delete +"Брисање фајла: " +# ^DeleteOnReboot +"Брисање при рестарту: " +# ^ErrorCreatingShortcut +"Грешка при креирању пречице: " +# ^ErrorCreating +"Грешка при креирању: " +# ^ErrorDecompressing +Грешка при отпакивању података! Оштећен инсталациони програм? +# ^ErrorRegistering +Грешка при регистровању библиотеке +# ^ExecShell +"Извршавање у окружењу: " +# ^Exec +"Извршавање: " +# ^Extract +"Отпакивање: " +# ^ErrorWriting +"Отпакивање: грешка при упису у фајл " +# ^InvalidOpcode +Оштећен инсталациони програм: неисправна команда +# ^NoOLE +"Нема OLE подршке за: " +# ^OutputFolder +"Излазни фолдер: " +# ^RemoveFolder +"Брисање фолдера: " +# ^RenameOnReboot +"Преименовање при рестартовању: " +# ^Rename +"Преименован: " +# ^Skipped +"Прескочен: " +# ^CopyDetails +Копирај детаље у клипборд +# ^LogInstall +Води записник о процесу инсталације +# ^Byte +B +# ^Kilo + k +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Serbian.nsh b/tools/Contrib/Language files/Serbian.nsh new file mode 100644 index 0000000..78a9141 --- /dev/null +++ b/tools/Contrib/Language files/Serbian.nsh @@ -0,0 +1,121 @@ +;Language: Serbian (3098) +;Translation by Срђан Обућина + +!insertmacro LANGFILE "Serbian" "Serbian (Cyrillic)" "Српски" "Srpski (Cyrillic)" + +!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) искључен. $_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 "Изаберите компоненте за инсталацију. Инсталирају се само означене компоненте." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Избор компоненти за деинсталацију" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Изаберите компоненте за деинсталацију. Деинсталирају се само означене компоненте." +!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 "Избор фолдера за деинсталaцију" + ${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 "Изаберите фолдер у Старт менију у коме ћете креирати пречице." + ${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 "Сигурно желите да прекинете инсталацију програма $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Сигурно желите да прекинете деинсталацију програма $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/SerbianLatin.nlf b/tools/Contrib/Language files/SerbianLatin.nlf new file mode 100644 index 0000000..1d009fc --- /dev/null +++ b/tools/Contrib/Language files/SerbianLatin.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +2074 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Srđan Obućina +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Instalacija +# ^UninstallCaption +$(^Name) Deinstalacija +# ^LicenseSubCaption +: Dogovor o pravu korišćenja +# ^ComponentsSubCaption +: Opcije instalacije +# ^DirSubCaption +: Izbor foldera za instalaciju +# ^InstallingSubCaption +: Instalacija +# ^CompletedSubCaption +: Završena instalacija +# ^UnComponentsSubCaption +: Opcije deinstalacije +# ^UnDirSubCaption +: Izbor foldera za deinstalaciju +# ^ConfirmSubCaption +: Potvrđivanje +# ^UninstallingSubCaption +: Deinstalacija +# ^UnCompletedSubCaption +: Završena deinstalacija +# ^BackBtn +< Nazad +# ^NextBtn +Napred > +# ^AgreeBtn +Prihvatam +# ^AcceptBtn +Prihvatam uslove dogovora o pravu korišćenja +# ^DontAcceptBtn +Ne prihvatam uslove dogovora o pravu korišćenja +# ^InstallBtn +Instaliraj +# ^UninstallBtn +Deinstaliraj +# ^CancelBtn +Odustani +# ^CloseBtn +Zatvori +# ^BrowseBtn +Izbor... +# ^ShowDetailsBtn +Detalji +# ^ClickNext +Pritisnite dugme „Napred“ za nastavak. +# ^ClickInstall +Pritisnite dugme „Instaliraj“ za početak instalacije. +# ^ClickUninstall +Pritisnite dugme „Deinstaliraj“ za početak deinstalacije. +# ^Name +Ime +# ^Completed +Završeno +# ^LicenseText +Pažlivo pročitajte dogovor o pravu korišćenja pre instalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, pritisnite dugme „Prihvatam“. +# ^LicenseTextCB +Pažlivo pročitajte dogovor o pravu korišćenja pre instalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, obeležite kvadratić ispod. $_CLICK +# ^LicenseTextRB +Pažlivo pročitajte dogovor o pravu korišćenja pre instalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, izaberite prvu opciju ispod. $_CLICK +# ^UnLicenseText +Pažlivo pročitajte dogovor o pravu korišćenja pre deinstalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, pritisnite dugme „Prihvatam“. +# ^UnLicenseTextCB +Pažlivo pročitajte dogovor o pravu korišćenja pre deinstalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, obeležite kvadratić ispod. $_CLICK +# ^UnLicenseTextRB +Pažlivo pročitajte dogovor o pravu korišćenja pre deinstalacije programa $(^NameDA). Ako prihvatate sve uslove dogovora, izaberite prvu opciju ispod. $_CLICK +# ^Custom +Prilagođavanje +# ^ComponentsText +Izaberite komponente za instalaciju. Instaliraju se samo označene komponente. $_CLICK +# ^ComponentsSubText1 +Izaberite tip instalacije: +# ^ComponentsSubText2_NoInstTypes +Izaberite komponente za instalaciju: +# ^ComponentsSubText2 +Ili, izaberite opcione komponente koje želite da instalirate: +# ^UnComponentsText +Izaberite komponente za deinstalaciju. Deinstaliraju se samo označene komponente. $_CLICK +# ^UnComponentsSubText1 +Izaberite tip deinstalacije: +# ^UnComponentsSubText2_NoInstTypes +Izaberite komponente za deinstalaciju: +# ^UnComponentsSubText2 +Ili, izaberite opcione komponente koje želite da deinstalirate: +# ^DirText +Program $(^NameDA) će biti instaliran u navedeni folder. Za instalaciju u drugi folder pritisnite dugme „Izbor...“ i izaberite folder. $_CLICK +# ^DirSubText +Folder +# ^DirBrowseText +Izaberite folder u koji ćete instalirati program $(^NameDA): +# ^UnDirText +Program $(^NameDA) će biti deinstaliran iz navedenog foldera. Za deinstalaciju iz drugog foldera pritisnite dugme „Izbor...“ i izaberite folder. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Izaberite folder iz koga ćete deinstalirati program $(^NameDA): +# ^SpaceAvailable +"Slobodan prostor: " +# ^SpaceRequired +"Potreban prostor: " +# ^UninstallingText +Program $(^NameDA) će biti deinstaliran iz navedenog foldera. $_CLICK +# ^UninstallingSubText +Deinstalacija iz: +# ^FileError +Greška pri otvaranju fajla za pisanje: \r\n\t"$0"\r\nPritisnite dugme „Odustani“ za prekid instalacije,\r\n„Ponovi“ za ponovni pokušaj pisanja u fajl, ili\r\n„Ignoriši“ za preskakanje ovog fajla. +# ^FileError_NoIgnore +Greška pri otvaranju fajla za pisanje: \r\n\t"$0"\r\nPritisnite dugme „Ponovi“ za ponovni pokušaj pisanja u fajl, ili\r\n„Odustani“ za prekid instaliranja. +# ^CantWrite +"Nemoguće pisanje: " +# ^CopyFailed +Neuspešno kopiranje +# ^CopyTo +"Kopiranje u " +# ^Registering +"Registrovanje: " +# ^Unregistering +"Deregistrovanje: " +# ^SymbolNotFound +"Simbol nije nađen: " +# ^CouldNotLoad +"Nemoguće učitavanje: " +# ^CreateFolder +"Kreiranje foldera: " +# ^CreateShortcut +"Kreiranje prečice: " +# ^CreatedUninstaller +"Kreiranje deinstalera: " +# ^Delete +"Brisanje fajla: " +# ^DeleteOnReboot +"Brisanje pri restartu: " +# ^ErrorCreatingShortcut +"Greška pri kreiranju prečice: " +# ^ErrorCreating +"Greška pri kreiranju: " +# ^ErrorDecompressing +Greška pri otpakivanju podataka! Oštećen instalacioni program? +# ^ErrorRegistering +Greška pri registrovanju biblioteke +# ^ExecShell +"Izvršavanje u okruženju: " +# ^Exec +"Izvršavanje: " +# ^Extract +"Otpakivanje: " +# ^ErrorWriting +"Otpakivanje: greška pri upisu u fajl " +# ^InvalidOpcode +Oštećen instalacioni program: neispravna komanda +# ^NoOLE +"Nema OLE podrške za: " +# ^OutputFolder +"Izlazni folder: " +# ^RemoveFolder +"Brisanje foldera: " +# ^RenameOnReboot +"Preimenovanje pri restartu: " +# ^Rename +"Preimenovan: " +# ^Skipped +"Preskočen: " +# ^CopyDetails +Kopiraj detalje u klipbord +# ^LogInstall +Vodi zapisnik o procesu instalacije +# ^Byte +B +# ^Kilo + k +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/SerbianLatin.nsh b/tools/Contrib/Language files/SerbianLatin.nsh new file mode 100644 index 0000000..5ac473f --- /dev/null +++ b/tools/Contrib/Language files/SerbianLatin.nsh @@ -0,0 +1,121 @@ +;Language: Serbian Latin (2074) +;Translation by Srđan Obućina + +!insertmacro LANGFILE "SerbianLatin" "Serbian (Latin)" "Srpski" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Dobrodošli u vodič za instalaciju programa $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Bićete vođeni kroz proces instalacije programa $(^NameDA).$\r$\n$\r$\nPreporučljivo je da isključite sve druge programe pre početka instalacije. Ovo može omogućiti ažuriranje sistemskih fajlova bez potrebe za ponovnim pokretanjem računara.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Dobrodošli u deinstalaciju programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Bićete vođeni kroz proces deinstalacije programa $(^NameDA).$\r$\n$\r$\nPre početka deinstalacije, uverite se da je program $(^NameDA) isključen. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Dogovor o pravu korišćenja" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Pažljivo pročitajte dogovor o pravu korišćenja pre instalacije programa $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ako prihvatate sve uslove dogovora, pritisnite dugme „Prihvatam“ za nastavak. Morate prihvatiti dogovor da biste instalirali program $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ako prihvatate sve uslove dogovora, obeležite kvadratić ispod. Morate prihvatiti dogovor da biste instalirali program $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ako prihvatate sve uslove dogovora, izaberite prvu opciju ispod. Morate prihvatiti dogovor da biste instalirali program $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Dogovor o pravu korišćenja" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Pažlivo pročitajte dogovor o pravu korišćenja pre deinstalacije programa $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ako prihvatate sve uslove dogovora, pritisnite dugme „Prihvatam“ za nastavak. Morate prihvatiti dogovor da biste deinstalirali program $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ako prihvatate sve uslove dogovora, obeležite kvadratić ispod. Morate prihvatiti dogovor da biste deinstalirali program $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ako prihvatate sve uslove dogovora, izaberite prvu opciju ispod. Morate prihvatiti dogovor da biste deinstalirali program $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Pritisnite Page Down da biste videli ostatak dogovora." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Izbor komponenti za instalaciju" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Izaberite komponente za instalaciju. Instaliraju se samo označene komponente." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Izbor komponenti za deinstalaciju" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Izaberite komponente za deinstalaciju. Deinstaliraju se samo označene komponente." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Opis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Pređite kursorom miša preko imena komponente da biste videli njen opis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Izaberite komponentu da biste videli njen opis." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Izbor foldera za instalaciju" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Izaberite folder u koji ćete instalirati program $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Izbor foldera za deinstalaciju" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Izaberite folder iz koga ćete deinstalirati program $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalacija" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Sačekajte dok se program $(^NameDA) instalira." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Završena instalacija" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Instalacija je uspešno završena." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Prekinuta instalacija" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Instalacija je prekinuta i nije uspešno završena." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Deinstalacija" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Sačekajte dok se program $(^NameDA) deinstalira." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Završena deinstalacija" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Deinstalacija je uspešno završena." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Prekinuta deinstalacija" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Deinstalacija je prekinuta i nije uspešno završena." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Završena instalacija programa $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) je instaliran na računar.$\r$\n$\r$\nPritisnite dugme „Kraj“ za zatvaranje ovog prozora." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Računar mora biti ponovo pokrenut da bi se proces instalacije programa $(^NameDA) uspešno završio. Želite li to odmah da uradite?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Završena deinstalacija programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) je deinstaliran sa računara.$\r$\n$\r$\nPritisnite dugme „Kraj“ za zatvaranje ovog prozora." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Računar mora biti ponovo pokrenut da bi se proces deinstalacije programa $(^NameDA) uspešno završio. Želite li to da uradite odmah?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Odmah ponovo pokreni računar" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Bez ponovnog pokretanja" + ${LangFileString} MUI_TEXT_FINISH_RUN "Pokreni program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Prikaži PročitajMe fajl" + ${LangFileString} MUI_BUTTONTEXT_FINISH "Kraj" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Izbor foldera u Start meniju" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Izaberite folder u Start meniju u kome ćete kreirati prečice." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Izaberite folder u Start meniju u kome želite da budu kreirane prečice programa. Možete upisati i ime za kreiranje novog foldera." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Bez kreiranja prečica" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Deinstalacija programa $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Deinstalacija programa $(^NameDA) sa računara." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Sigurno želite da prekinete instalaciju programa $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Sigurno želite da prekinete deinstalaciju programa $(^Name)?" +!endif diff --git a/tools/Contrib/Language files/SimpChinese.nlf b/tools/Contrib/Language files/SimpChinese.nlf new file mode 100644 index 0000000..fbe1e11 --- /dev/null +++ b/tools/Contrib/Language files/SimpChinese.nlf @@ -0,0 +1,192 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +2052 +# Font and size - dash (-) means default 字体名称与大小 +宋体 +9 +# Codepage - dash (-) means ASCII code page ASCII 字码页 +936 +# RTL - anything else than RTL means LTR 由右至左书写 +- +# Revision date: 2020-06-03 +# Translator: Kii Ali , , , Tyson Tan +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) 安装 +# ^UninstallCaption +$(^Name) 卸载 +# ^LicenseSubCaption +: 许可证协议 +# ^ComponentsSubCaption +: 安装选项 +# ^DirSubCaption +: 安装目录 +# ^InstallingSubCaption +: 正在安装 +# ^CompletedSubCaption +: 已完成 +# ^UnComponentsSubCaption +: 卸载选项 +# ^UnDirSubCaption +: 卸载文件夹 +# ^ConfirmSubCaption +: 确认 +# ^UninstallingSubCaption +: 正在卸载 +# ^UnCompletedSubCaption +: 完成 +# ^BackBtn +< 上一步(&P) +# ^NextBtn +下一步(&N) > +# ^AgreeBtn +我接受(&I) +# ^AcceptBtn +我接受许可证协议中的条款(&A) +# ^DontAcceptBtn +我不接受许可证协议中的条款(&N) +# ^InstallBtn +安装(&I) +# ^UninstallBtn +卸载(&U) +# ^CancelBtn +取消(&C) +# ^CloseBtn +关闭(&L) +# ^BrowseBtn +浏览(&B)... +# ^ShowDetailsBtn +显示详情(&D) +# ^ClickNext +点击 [下一步(N)] 继续。 +# ^ClickInstall +点击 [安装(I)] 开始安装。 +# ^ClickUninstall +点击 [卸载(U)] 开始卸载。 +# ^Name +名称 +# ^Completed +已完成 +# ^LicenseText +请在安装 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,点击 [我同意(I)] 。 +# ^LicenseTextCB +请在安装 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,点击下方的选框。 $_CLICK +# ^LicenseTextRB +请在安装 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,选择下方的第一个选项。 $_CLICK +# ^UnLicenseText +请在卸载 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,点击 [我同意(I)] 。 +# ^UnLicenseTextCB +请在卸载 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,点击下方的选框。 $_CLICK +# ^UnLicenseTextRB +请在卸载 $(^NameDA) 之前阅读许可证协议。如果你接受协议中所有条款,选择下方的第一个选项。 $_CLICK +# ^Custom +自定义 +# ^ComponentsText +请勾选你想安装的组件,并取消勾选你不想安装的组件。 $_CLICK +# ^ComponentsSubText1 +选定的安装的类型: +# ^ComponentsSubText2_NoInstTypes +选定安装的组件: +# ^ComponentsSubText2 +或者,自定义选定想安装的组件: +# ^UnComponentsText +请勾选你想卸载的组件,并取消勾选你不想卸载的组件。 $_CLICK +# ^UnComponentsSubText1 +选择卸载的类型: +# ^UnComponentsSubText2_NoInstTypes +选择要卸载的组件: +# ^UnComponentsSubText2 +或是,选择想要解除安装的可选项组件: +# ^DirText +安装程序将把 $(^NameDA) 安装到以下目录。要安装到另一个目录,请点击 [浏览(B)...] 并选择其他的文件夹。 $_CLICK +# ^DirSubText +安装目录 +# ^DirBrowseText +选择安装此软件的 $(^NameDA) 的位置: +# ^UnDirText +安装程序将把 $(^NameDA) 从以下目录卸载。要从另一个目录卸载,点击 [浏览(B)...] 并选择其他目录。 $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +选择要卸载 $(^NameDA) 的目录: +# ^SpaceAvailable +"可用空间: " +# ^SpaceRequired +"所需空间: " +# ^UninstallingText +此向导将从本机卸载 $(^NameDA) 。 $_CLICK +# ^UninstallingSubText +卸载目录: +# ^FileError +无法打开要写入的文件: \r\n\t"$0"\r\n点击 [Abort] 停止安装,\r\n [Retry] 重新尝试写入文件,或者\r\n [Ignore] 忽略这个文件。 +# ^FileError_NoIgnore +无法打开要写入的文件: \r\n\t"$0"\r\n点击 [Retry] 重新尝试写入文件,或者\r\n [Cancel] 停止安装。 +# ^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 +B +# kilo + K +# mega + M +# giga + G diff --git a/tools/Contrib/Language files/SimpChinese.nsh b/tools/Contrib/Language files/SimpChinese.nsh new file mode 100644 index 0000000..a34f469 --- /dev/null +++ b/tools/Contrib/Language files/SimpChinese.nsh @@ -0,0 +1,130 @@ +;Language: 'Chinese (Simplified)' (2052) +;Translator: Kii Ali , , , Tyson Tan +;Revision date: 2020-06-03 + +!insertmacro LANGFILE "SimpChinese" "Chinese (Simplified)" "中文(简体)" "Hanyu (Jiantizi)" + +!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 "如果你接受许可证的条款,请点击 [我同意(I)] 继续安装。你必须在同意后才能安装 $(^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)] 继续卸载。如果你点击 [取消(C)] ,卸载程序将会关闭。你必须在同意后才能卸载 $(^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 "要阅读协议的其余部分,请按 [PgDn] 键向下翻页。" +!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点击 [完成(F)] 关闭安装程序。" + ${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 "是,立即重新启动(&Y)" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "否,我会在之后重新启动(&N)" + ${LangFileString} MUI_TEXT_FINISH_RUN "运行 $(^NameDA)(&R)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "显示自述文件(&M)" + ${LangFileString} MUI_BUTTONTEXT_FINISH "完成(&F)" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "选择开始菜单文件夹" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "选择开始菜单文件夹,用于创建程序的快捷方式。" + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "选择开始菜单文件夹,用于创建程序的快捷方式。你也可以输入自定义名称,创建新文件夹。" + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "不要创建快捷方式(&N)" +!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 "为本机所有用户安装(&A)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "只为我自己安装(&M)" +!endif diff --git a/tools/Contrib/Language files/Slovak.nlf b/tools/Contrib/Language files/Slovak.nlf new file mode 100644 index 0000000..b7e58bd --- /dev/null +++ b/tools/Contrib/Language files/Slovak.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1051 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +#Translated by: Kypec (peter.dzugas@mahe.sk); edited by: Marián Hikaník (podnety@mojepreklady.net), Ivan Masár , 2008. +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Inštalácia programu $(^Name) +# ^UninstallCaption +Odinštalovanie programu $(^Name) +# ^LicenseSubCaption +: Licenčná zmluva +# ^ComponentsSubCaption +: Možnosti inštalácie +# ^DirSubCaption +: Inštalačný priečinok +# ^InstallingSubCaption +: Prebieha inštalácia +# ^CompletedSubCaption +: Hotovo +# ^UnComponentsSubCaption +: Možnosti odinštalovania +# ^UnDirSubCaption +: Priečinok s informáciami pre odinštalovanie +# ^ConfirmSubCaption +: Potvrdenie +# ^UninstallingSubCaption +: Prebieha odinštalácia +# ^UnCompletedSubCaption +: Hotovo +# ^BackBtn +< &Späť +# ^NextBtn +Ď&alej > +# ^AgreeBtn +&Súhlasím +# ^AcceptBtn +&Súhlasím s podmienkami licenčnej zmluvy +# ^DontAcceptBtn +N&esúhlasím s podmienkami licenčnej zmluvy +# ^InstallBtn +&Nainštalovať +# ^UninstallBtn +&Odinštalovať +# ^CancelBtn +Zrušiť +# ^CloseBtn +&Zatvoriť +# ^BrowseBtn +&Prehľadávať... +# ^ShowDetailsBtn +&Podrobnosti +# ^ClickNext +V inštalácii pokračujte kliknutím na tlačidlo Ďalej. +# ^ClickInstall +Pre spustenie inštalácie kliknite na tlačidlo Nainštalovať. +# ^ClickUninstall +Pre spustenie procesu odinštalovania kliknite na tlačidlo Odinštalovať. +# ^Name +Názov +# ^Completed +Hotovo +# ^LicenseText +Pred inštaláciou programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, kliknite na tlačidlo Súhlasím. +# ^LicenseTextCB +Pred inštaláciou programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, zaškrtnite nasledujúce políčko. $_CLICK +# ^LicenseTextRB +Pred inštaláciou programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, označte prvú z nasledujúcich možností. $_CLICK +# ^UnLicenseText +Pred odinštalovaním programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, kliknite na tlačidlo Súhlasím. +# ^UnLicenseTextCB +Pred odinštalovaním programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, zaškrtnite nasledujúce políčko. $_CLICK +# ^UnLicenseTextRB +Pred odinštalovaním programu si prosím dôkladne prečítajte licenčnú zmluvu $(^NameDA). Ak súhlasíte so všetkými jej podmienkami, označte prvú z nasledujúcich možností. $_CLICK +# ^Custom +Voliteľná +# ^ComponentsText +Označte súčasti programu, ktoré chcete nainštalovať a odznačte tie, ktoré nainštalovať nechcete. $_CLICK +# ^ComponentsSubText1 +Vyberte si typ inštalácie: +# ^ComponentsSubText2_NoInstTypes +Vyberte si tie súčasti programu, ktoré chcete nainštalovať: +# ^ComponentsSubText2 +Alebo označte voliteľné doplnky, ktoré chcete nainštalovať: +# ^UnComponentsText +Označte súčasti programu, ktoré chcete odinštalovať a odznačte tie, ktoré chcete ponechať nainštalované. $_CLICK +# ^UnComponentsSubText1 +Zvoľte typ deinštalácie: +# ^UnComponentsSubText2_NoInstTypes +Vyberte súčasti, ktoré chcete odinštalovať: +# ^UnComponentsSubText2 +Alebo označte voliteľné súčasti, ktoré chcete odinštalovať: +# ^DirText +$(^NameDA) bude nainštalovaný do nasledujúceho priečinka. Inštalovať do iného priečinka môžete po kliknutí na tlačidlo Prehľadávať a vybraní iného priečinka. $_CLICK +# ^DirSubText +Cieľový priečinok +# ^DirBrowseText +Zvoľte priečinok, do ktorého sa nainštaluje program $(^NameDA): +# ^UnDirText +Inštalátor odinštaluje program $(^NameDA) z nasledovného priečinka. Ak ho chcete odinštalovať z iného priečinka, kliknite na tlačidlo Prehľadávať a vyberte iný priečinok. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Zvoľte priečinok, z ktorého sa odinštaluje program $(^NameDA): +# ^SpaceAvailable +"Voľné miesto na disku: " +# ^SpaceRequired +"Potrebné miesto na disku: " +# ^UninstallingText +Program $(^NameDA) sa odinštaluje z nasledovného priečinka. $_CLICK +# ^UninstallingSubText +Prebieha odinštalovanie z: +# ^FileError +Chyba pri otváraní súboru na zápis: \r\n\r\n$0\r\n\r\n. Ak chcete inštaláciu ukončiť, kliknite na tlačidlo Ukončiť,\r\ ak chcete zápis súboru zopakovať, kliknite na tlačidlo Opakovať alebo kliknite na tlačidlo \r\nIgnorovať, ak chcete inštaláciu tohto súboru vynechať. +# ^FileError_NoIgnore +Chyba pri otváraní súboru na zápis: \r\n\r\n$0\r\n\r\n. Ak chcete zopakovať zápis súboru, kliknite na tlačidlo Opakovať, alebo kliknite na tlačidlo \r\nZrušiť, v prípade, že chcete inštaláciu ukončiť. +# ^CantWrite +"Nemožno zapísať súbor: " +# ^CopyFailed +Kopírovanie zlyhalo. +# ^CopyTo +"Kopírovať do " +# ^Registering +"Registruje sa: " +# ^Unregistering +"Vymazáva sa z registra: " +# ^SymbolNotFound +"Nemožno nájsť symbol: " +# ^CouldNotLoad +"Nemožno načítať: " +# ^CreateFolder +"Vytvorený priečinok: " +# ^CreateShortcut +"Vytvorený odkaz: " +# ^CreatedUninstaller +"Program pre odinštalovanie: " +# ^Delete +"Vymazaný súbor: " +# ^DeleteOnReboot +"Vymazať po reštartovaní systému: " +# ^ErrorCreatingShortcut +"Chyba pri vytváraní odkazu: " +# ^ErrorCreating +"Chyba pri vytváraní: " +# ^ErrorDecompressing +Chyba pri dekomprimovaní dát! Inštalátor je pravdepodobne poškodený... +# ^ErrorRegistering +Chyba pri registrácii súčasti +# ^ExecShell +"Vykonať príkaz: " +# ^Exec +"Spustiť: " +# ^Extract +"Extrahuje sa: " +# ^ErrorWriting +"Chyba pri zápise do súboru " +# ^InvalidOpcode +Inštalátor je pravdepodobne poškodený, pretože obsahuje neplatný operačný kód. +# ^NoOLE +"Žiadny zápis OLE pre: " +# ^OutputFolder +"Výstupný priečinok: " +# ^RemoveFolder +"Odstrániť priečinok: " +# ^RenameOnReboot +"Premenovať po reštartovaní systému: " +# ^Rename +"Premenovať: " +# ^Skipped +"Vynechané: " +# ^CopyDetails +Skopírovať podrobnosti do schránky +# ^LogInstall +Zaznamenať priebeh inštalácie +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Slovak.nsh b/tools/Contrib/Language files/Slovak.nsh new file mode 100644 index 0000000..fdba1a5 --- /dev/null +++ b/tools/Contrib/Language files/Slovak.nsh @@ -0,0 +1,133 @@ +;Language: Slovak (1051) +;Translated by: +; Kypec (peter.dzugas@mahe.sk) +;edited by: +; Marián Hikaník (podnety@mojepreklady.net) +; Ivan Masár , 2008. + +!insertmacro LANGFILE "Slovak" = "Slovenčina" "Slovencina" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Vitajte v sprievodcovi inštaláciou programu $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Tento sprievodca vás prevedie inštaláciou $(^NameDA).$\r$\n$\r$\nPred začiatkom inštalácie sa odporúča ukončiť všetky ostatné programy. Tým umožníte aktualizovanie systémových súborov bez potreby reštartovania vášho počítača.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Vitajte v sprievodcovi odinštalovaním programu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Tento sprievodca vás prevedie procesom odinštalovania programu $(^NameDA).$\r$\n$\r$\nPred spustením procesu odinštalovania sa uistite, že program $(^NameDA) nie je práve aktívny.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licenčná zmluva" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Pred inštaláciou $(^NameDA) si prosím preštudujte licenčné podmienky." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Ak súhlasíte s podmienkami zmluvy, kliknite na tlačidlo Súhlasím a môžete pokračovať v inštalácii. Ak chcete v inštalácii pokračovať, musíte odsúhlasiť podmienky licenčnej zmluvy $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ak súhlasíte s podmienkami zmluvy, zaškrtnite nižšie uvedené políčko. Ak chcete v inštalácii pokračovať, musíte odsúhlasiť podmienky licenčnej zmluvy $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ak súhlasíte s podmienkami zmluvy, označte prvú z nižšie uvedených možností. Ak chcete v inštalácii pokračovať, musíte odsúhlasiť podmienky licenčnej zmluvy $(^NameDA)." +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licenčná zmluva" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Pred odinštalovaním programu $(^NameDA) si prosím prečítajte licenčné podmienky." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Ak súhlasíte s podmienkami zmluvy, zvoľte Súhlasím. Licenčnú zmluvu musíte odsúhlasiť, ak chcete v odinštalovaní programu $(^NameDA) pokračovať." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Ak súhlasíte s podmienkami zmluvy, zaškrtnite nižšie uvedené políčko. Licenčnú zmluvu musíte odsúhlasiť, ak chcete pokračovať v odinštalovaní programu $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Ak súhlasíte s podmienkami licenčnej zmluvy, označte prvú z nižšie uvedených možností. Licenčnú zmluvu musíte odsúhlasiť, ak chcete pokračovať v odinštalovaní programu $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Stlačením klávesu Page Down posuniete text licenčnej zmluvy." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Voľba súčastí programu" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Zvoľte si tie súčasti programu $(^NameDA), ktoré chcete nainštalovať." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Voľba súčastí" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Zvoľte súčasti programu $(^NameDA), ktoré chcete odinštalovať." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Popis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Pri prejdení kurzorom myši nad názvom súčasti sa zobrazí jej popis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Označte nejakú súčasť, ak chcete zobraziť jej podrobnejší popis." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Voľba umiestnenia programu" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Vyberte si priečinok, do ktorého chcete nainštalovať program $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Umiestenie programu pre odinštalovanie" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Vyberte si priečinok, z ktorého chcete odinštalovať program $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Inštalácia" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Počkajte prosím, kým prebehne inštalácia programu $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Ukončenie inštalácie" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Inštalácia bola dokončená úspešne." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Prerušenie inštalácie" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Inštaláciu sa nepodarilo dokončiť." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Odinštalovanie" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Čakajte prosím, kým prebehne odinštalovanie programu $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Ukončenie odinštalovania" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Odinštalovanie bolo úspešne dokončené." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Prerušenie odinštalovania" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Odinštalovanie sa neukončilo úspešne." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Dokončenie inštalácie programu $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) bol nainštalovaný do vášho počítača.$\r$\nKliknite na tlačidlo Dokončiť a tento sprievodca sa ukončí." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Pre úplné dokončenie inštalácie programu $(^NameDA) je potrebné reštartovať váš počítač. Chcete ho reštartovať ihneď?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Dokončenie sprievodcu odinštalovaním" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) bol odinštalovaný z vášho počítača.$\r$\n$\r$\nKliknite na tlačidlo Dokončiť a tento sprievodca sa ukončí." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Pre úplné dokončenie odinštalovania programu $(^NameDA) je nutné reštartovať váš počítač. Chcete ho reštartovať ihneď?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reštartovať teraz" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Reštartovať neskôr (manuálne)" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Spustiť program $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Zobraziť súbor s informáciami" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Dokončiť" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Voľba umiestnenia v ponuke Štart" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Vyberte si priečinok v ponuke Štart, kam sa umiestnia odkazy na program $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Vyberte si priečinok v ponuke Štart, v ktorom chcete vytvoriť odkazy na program. Takisto môžete napísať názov nového priečinka." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Nevytvárať odkazy" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Odinštalovanie programu $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Odstránenie programu $(^NameDA) z vášho počítača." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Naozaj chcete ukončiť inštaláciu programu $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Naozaj chcete ukončiť proces odinštalovania programu $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Vybrať používateľov" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Vyberte pre ktorých používateľov chcete nainštalovať $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Vyberte, či chcete nainštalovať program $(^NameDA) iba pre seba alebo pre všetkých používateľov tohto počítača. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Nainštalovať pre všetkých používateľov tohto počítača" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Nainštalovať iba pre mňa" +!endif \ No newline at end of file diff --git a/tools/Contrib/Language files/Slovenian.nlf b/tools/Contrib/Language files/Slovenian.nlf new file mode 100644 index 0000000..581b149 --- /dev/null +++ b/tools/Contrib/Language files/Slovenian.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1060 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1250 +# RTL - anything else than RTL means LTR +- +# Translation by Janez Dolinar, edited by Martin Srebotnjak - Lugos.si +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Namestitev $(^Name) +# ^UninstallCaption +Odstranitev $(^Name) +# ^LicenseSubCaption +: Licenčna pogodba +# ^ComponentsSubCaption +: Možnosti namestitve +# ^DirSubCaption +: Mapa namestitve +# ^InstallingSubCaption +: Nameščanje poteka +# ^CompletedSubCaption +: Dokončano +# ^UnComponentsSubCaption +: Možnosti odstranitve +# ^UnDirSubCaption +: Mapa odstranitve +# ^ConfirmSubCaption +: Potrditev +# ^UninstallingSubCaption +: Odstranjevanje poteka +# ^UnCompletedSubCaption +: Dokončano +# ^BackBtn +< &Nazaj +# ^NextBtn +N&aprej > +# ^AgreeBtn +Se &strinjam +# ^AcceptBtn +&Sprejmem pogoje licenčne pogodbe +# ^DontAcceptBtn +&Ne sprejmem pogojev licenčne pogodbe +# ^InstallBtn +&Namesti +# ^UninstallBtn +&Odstrani +# ^CancelBtn +Prekliči +# ^CloseBtn +&Zapri +# ^BrowseBtn +Prebrsk&aj ... +# ^ShowDetailsBtn +&Podrobnosti +# ^ClickNext +Kliknite Naprej za nadaljevanje. +# ^ClickInstall +Kliknite Namesti za začetek namestitve. +# ^ClickUninstall +Kliknite Odstrani za odstranitev. +# ^NameIme +Ime +# ^Completed +Dokončano +# ^LicenseText +Prosimo, da pred namestitvijo $(^NameDA) pregledate licenčno pogodbo. Če se z njo strinjate, pritisnite Se strinjam. +# ^LicenseTextCB +Prosimo, da pred namestitvijo $(^NameDA) pregledate licenčno pogodbo. Če sprejmete vse naštete pogoje, potrdite spodnje polje. $_CLICK +# ^LicenseTextRB +Prosimo, da pred namestitvijo $(^NameDA) pregledate licenčno pogodbo. Če sprejmete vse naštete pogoje, izberite prvo spodaj podano možnost. $_CLICK +# ^UnLicenseText +Prosimo, da pred odstranitvijo $(^NameDA) pregledate licenčno pogodbo. Če se z njo strinjate, pritisnite Se strinjam. +# ^UnLicenseTextCB +Prosimo, da pred odstranitvijo $(^NameDA) pregledate licenčno pogodbo. Če sprejmete vse naštete pogoje, potrdite spodnje polje. $_CLICK +# ^UnLicenseTextRB +Prosimo, da pred odstranitvijo $(^NameDA) pregledate licenčno pogodbo. Če sprejmete vse naštete pogoje, izberite prvo spodaj podano možnost. $_CLICK +# ^Custom +Po meri ... +# ^ComponentsText +Označite komponente, ki jih želite namestiti, in pustite neoznačene tiste, katerih ne želite namestiti. $_CLICK +# ^ComponentsSubText1 +Izberite vrsto namestitve: +# ^ComponentsSubText2_NoInstTypes +Izberite komponente namestitve: +# ^ComponentsSubText2 +Ali pa izberite komponente, ki jih želite namestiti: +# ^UnComponentsText +Označite komponente, ki jih želite odstraniti, in pustite neoznačene tiste, ki jih ne želite odstraniti. $_CLICK +# ^UnComponentsSubText1 +Izberite vrsto odstranitve: +# ^UnComponentsSubText2_NoInstTypes +Izberite komponente za odstranitev: +# ^UnComponentsSubText2 +Ali pa izberite komponente namestitve, ki jih želite odstraniti: +# ^DirText +$(^NameDA) boste namestili v sledečo mapo. Za izbiro druge mape kliknite tipko Prebrskaj in izberite drugo mapo. $_CLICK +# ^DirSubText +Ciljna mapa +# ^DirBrowseText +Izberite mapo, kamor želite namestiti $(^NameDA): +# ^UnDirText +Odstranili boste $(^NameDA) iz sledeče mape. Za izbiro druge mape kliknite tipko Prebrskaj in izberite drugo mapo. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Izberite mapo, od koder želite odstraniti $(^NameDA): +# ^SpaceAvailable +"Prostor na disku: " +# ^SpaceRequired +"Potreben prostor: " +# ^UninstallingText +$(^NameDA) bo odstranjen iz naslednje mape. $_CLICK +# ^UninstallingSubText +Odstranjevanje iz: +# ^FileError +Napaka pri odpiranju datoteke za pisanje: \r\n\r\n$0\r\n\r\nPritisnite Prekini za prekinitev namestitve,\r\nPonovi za ponoven poskus ali\r\nPrezri za izpust te datoteke. +# ^FileError_NoIgnore +Napaka pri odpiranju datoteke za pisanje: \r\n\r\n$0\r\n\r\nPritisnite Ponovi za ponoven poskus pisanja ali\r\Prekliči za prekinitev namestitve. +# ^CantWrite +"Ni mogoče pisati: " +# ^CopyFailed +Kopiranje neuspešno +# ^CopyTo +"Kopiranje v " +# ^Registering +"Registracija: " +# ^Unregistering +"Preklic registracije: " +# ^SymbolNotFound +"Ni mogoče najti simbola: " +# ^CouldNotLoad +"Ni mogoče naložiti: " +# ^CreateFolder +"Ustvarjanje mape: " +# ^CreateShortcut +"Ustvarjanje bližnjice: " +# ^CreatedUninstaller +"Ustvarjena odstranitev: " +# ^Delete +"Brisanje datoteke: " +# ^DeleteOnReboot +"Brisanje ob ponovnem zagonu: " +# ^ErrorCreatingShortcut +"Napaka ustvarjanja bližnjice: " +# ^ErrorCreating +"Napaka ustvarjanja: " +# ^ErrorDecompressing +Napaka pri razširjanju podatkov! Je namestitvena datoteka okvarjena? +# ^ErrorRegistering +Napaka registracije DLL +# ^ExecShell +"Izvajanje v lupini: " +# ^Exec +"Izvajanje: " +# ^Extract +"Razširjanje: " +# ^ErrorWriting +"Razširjanje: napaka pri pisanju v datoteko " +# ^InvalidOpcode +Namestitev neveljavna: napačen ukaz +# ^NoOLE +"Neobstoječi OLE za: " +# ^OutputFolder +"Ciljna mapa: " +# ^RemoveFolder +"Odstranjevanje mape: " +# ^RenameOnReboot +"Preimenovanje ob zagonu: " +# ^Rename +"Preimenovanje: " +# ^Skipped +"Izpuščeno: " +# ^CopyDetails +Kopiraj podrobnosti v odložišče +# ^LogInstall +Shrani potek namestitve +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Slovenian.nsh b/tools/Contrib/Language files/Slovenian.nsh new file mode 100644 index 0000000..7a77901 --- /dev/null +++ b/tools/Contrib/Language files/Slovenian.nsh @@ -0,0 +1,130 @@ +;Language: Slovenian (1060) +;By Janez Dolinar, edited by Martin Srebotnjak - Lugos.si + +# We use "slovenski", the other alternative is "slovenščina" (Note: "slovenčina" is the native name of Slovak) +!insertmacro LANGFILE "Slovenian" = "Slovenski" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Dobrodošli v čarovniku namestitve $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Ta čarovnik vas vodi skozi namestitev programa $(^NameDA).$\r$\n$\r$\nPred namestitvijo je priporočeno zapreti vsa ostala okna in programe. S tem omogočite nemoteno namestitev programa in potrebnih sistemskih datotek brez ponovnega zagona računalnika.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Dobrodošli v čarovniku za odstranitev $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Ta čarovnik vas bo vodil skozi odstranitev $(^NameDA).$\r$\n$\r$\nPreden pričnete z odstranitvijo, se prepričajte, da program $(^NameDA) ni zagnan.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licenčna pogodba" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Prosimo, da si ogledate pogoje licenčne pogodbe pred namestitvijo $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Če se strinjate s pogoji, pritisnite Se strinjam. Da bi lahko namestili $(^NameDA), se morate s pogodbo strinjati." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Če se strinjate z licenčnimi pogoji pogodbe, spodaj izberite ustrezno okence. Za namestitev $(^NameDA) se morate strinjati s pogoji pogodbe. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Če se strinjate z licenčnimi pogoji pogodbe, spodaj izberite prvo možnost. Za namestitev $(^NameDA) se morate strinjati s pogoji pogodbe. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licenčna pogodba" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Prosimo, da pred odstranitvijo $(^NameDA) pregledate pogoje licenčne pogodbe." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Če se strinjate s pogoji licenčne pogodbe, izberite Se strinjam. Za odstranitev $(^NameDA) se morate strinjati s pogoji." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Če se strinjate s pogoji licenčne pogodbe, kliknite na okence spodaj. Za odstranitev $(^NameDA) se morate strinjati s pogoji. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Če se strinjate s pogoji licenčne pogodbe, spodaj izberite prvo podano možnost. Za odstranitev $(^NameDA) se morate strinjati s pogoji. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Za preostali del pogodbe pritisnite tipko 'Page Down'." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Izbor komponent" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Izberite, katere komponente izdelka $(^NameDA) želite namestiti." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Izbor komponent" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Izberite komponente $(^NameDA), ki jih želite odstraniti." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Opis" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Povlecite miško nad komponento, da vidite njen opis." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Izberite komponento za prikaz njenega opisa." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Izberite pot namestive" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Izberite mapo, v katero želite namestiti $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Izbor mape" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Izberite mapo, iz katere želite odstraniti $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Nameščanje poteka" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Prosimo, počakajte, $(^NameDA) se namešča." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Dokončana namestitev" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Namestitev je uspešno zaključena." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Prekinjena namestitev" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Namestitev ni bila uspešno zaključena." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Odstranjevanje poteka" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Prosimo, počakajte, dokler se program $(^NameDA) odstranjuje." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Odstranitev končana" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Odstranitev je uspešno končana." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Odstranitev prekinjena" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Odstranitev ni bila končana uspešno." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Zaključevanje namestitve $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Program $(^NameDA) je bil nameščen na vaš računalnik.$\r$\n$\r$\nPritisnite Dokončaj za zaprtje čarovnika." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Za dokončanje namestitve $(^NameDA) morate ponovno zagnati računalnik. Želite zdaj ponovno zagnati računalnik?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Čarovnik za odstranitev $(^NameDA) se zaključuje" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Program $(^NameDA) je odstranjen z vašega računalnika.$\r$\n$\r$\nKliknite Dokončaj, da zaprete čarovnika." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Da bi se namestitev $(^NameDA) dokončala, morate ponovno zagnati računalnik. Želite zdaj znova zagnati računalnik?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ponovni zagon" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Računalnik želim znova zagnati kasneje" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Zaženi $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Pokaži BeriMe" + ${LangFileString} MUI_BUTTONTEXT_FINISH "Do&končaj" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Izberite mapo menija Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Izberite mapo menija Start za bližnjice do $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Izberite mapo menija Start, kjer želite ustvariti bližnjico do programa. Če vpišete novo ime, boste ustvarili istoimensko mapo." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Ne ustvari bližnjic" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Odstranitev $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Odstrani $(^NameDA) z vašega računalnika." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ste prepričani, da želite prekiniti namestitev $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ste prepričani, da želite zapustiti odstranitev $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Izberite uporabnike" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Izberite uporabnike, za katere želite namestiti $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Izberite, ali želite namestiti $(^NameDA) le zase ali za vse uporabnike tega računalnika. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Namesti za vse uporabnike tega računalnika" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Namesti le zame" +!endif diff --git a/tools/Contrib/Language files/Spanish.nlf b/tools/Contrib/Language files/Spanish.nlf new file mode 100644 index 0000000..4f6e309 --- /dev/null +++ b/tools/Contrib/Language files/Spanish.nlf @@ -0,0 +1,191 @@ +# Header, don't edit ;Español - España (Alfabetización Tradicional) +NLF v6 +# Language ID +1034 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by MoNKi & Joel +# Review and minor corrections Darwin Rodrigo Toledo Cáceres (niwrad777@gmail.com) www.winamp-es.com +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalación de $(^Name) +# ^UninstallCaption +Desinstalación de $(^Name) +# ^LicenseSubCaption +: Acuerdo de Licencia +# ^ComponentsSubCaption +: Opciones de Instalación +# ^DirSubCaption +: Directorio de Instalación +# ^InstallingSubCaption +: Instalando +# ^CompletedSubCaption +: Completado +# ^UnComponentsSubCaption +: Opciones de Desinstalación +# ^UnDirSubCaption +: Directorio de Desinstalación +# ^ConfirmSubCaption +: Confirmación +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Completado +# ^BackBtn +< &Atrás +# ^NextBtn +&Siguiente > +# ^AgreeBtn +A&cepto +# ^AcceptBtn +A&cepto los términos de la licencia +# ^DontAcceptBtn +&No acepto los términos de la licencia +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Cancelar +# ^CloseBtn +&Cerrar +# ^BrowseBtn +&Examinar... +# ^ShowDetailsBtn +Ver &detalles +# ^ClickNext +Presione Siguiente para continuar. +# ^ClickInstall +Presione Instalar para comenzar la instalación. +# ^ClickUninstall +Presione Desinstalar para comenzar la desinstalación. +# ^Name +Nombre +# ^Completed +Completado +# ^LicenseText +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si acepta todos los términos del acuerdo, presione Acepto. +# ^LicenseTextCB +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si acepta todos los términos del acuerdo, marque abajo la casilla. $_CLICK +# ^LicenseTextRB +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si acepta todos los términos del acuerdo, seleccione abajo la primera opción. $_CLICK +# ^UnLicenseText +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si acepta todos los términos del acuerdo, presione Acepto. +# ^UnLicenseTextCB +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si acepta todos los términos del acuerdo, marque abajo la casilla. $_CLICK. +# ^UnLicenseTextRB +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si acepta todos los términos del acuerdo, seleccione abajo la primera opción. $_CLICK +# ^Custom +Personalizada +# ^ComponentsText +Marque los componentes que desee instalar y desmarque los componentes que no desee instalar. $_CLICK +# ^ComponentsSubText1 +Tipos de instalación: +# ^ComponentsSubText2_NoInstTypes +Seleccione los componentes a instalar: +# ^ComponentsSubText2 +O seleccione los componentes opcionales que desee instalar: +# ^UnComponentsText +Marque los componentes que desee desinstalar y desmarque los componentes que no desee desinstalar. $_CLICK +# ^UnComponentsSubText1 +Tipos de desinstalación: +# ^UnComponentsSubText2_NoInstTypes +Seleccione los componentes a desinstalar: +# ^UnComponentsSubText2 +O seleccione los componentes opcionales que desee desinstalar: +# ^DirText +El programa de instalación instalará $(^NameDA) en el siguiente directorio. Para instalar en un directorio diferente, presione Examinar y seleccione otro directorio. $_CLICK +# ^DirSubText +Directorio de Destino +# ^DirBrowseText +Seleccione el directorio en el que instalará $(^NameDA): +# ^UnDirText +El programa de instalación desinstalará $(^NameDA) del siguiente directorio. Para desinstalar de un directorio diferente, presione Examinar y seleccione otro directorio. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Seleccione el directorio desde el cual desinstalará $(^NameDA): +# ^SpaceAvailable +Espacio disponible: +# ^SpaceRequired +Espacio requerido: +# ^UninstallingText +$(^NameDA) será desinstalado del siguiente directorio. $_CLICK +# ^UninstallingSubText +Desinstalando desde: +# ^FileError +Error abriendo archivo para escritura: \r\n\t"$0"\r\nPresione abortar para anular la instalación,\r\nreintentar para volver a intentar escribir el archivo, u\r\nomitir para ignorar este archivo +# ^FileError_NoIgnore +Error abriendo archivo para escritura: \r\n\t"$0"\r\nPresione reintentar para volver a intentar escribir el archivo, o\r\ncancelar para anular la instalación +# ^CantWrite +"No pudo escribirse: " +# ^CopyFailed +Falló la copia +# ^CopyTo +"Copiar a " +# ^Registering +"Registrando: " +# ^Unregistering +"Eliminando registro: " +# ^SymbolNotFound +"No pudo encontrarse símbolo: " +# ^CouldNotLoad +"No pudo cargarse: " +# ^CreateFolder +"Creando directorio: " +# ^CreateShortcut +"Creando acceso directo: " +# ^CreatedUninstaller +"Creando desinstalador: " +# ^Delete +"Borrar archivo: " +# ^DeleteOnReboot +"Borrar al reinicio: " +# ^ErrorCreatingShortcut +"Error creando acceso directo: " +# ^ErrorCreating +"Error creando: " +# ^ErrorDecompressing +¡Error descomprimiendo datos! ¿Instalador corrupto? +# ^ErrorRegistering +Error registrando DLL +# ^ExecShell +"Extrayendo comando: " +# ^Exec +"Extrayendo : " +# ^Extract +"Extraer: " +# ^ErrorWriting +"Extraer: error escribiendo al archivo " +# ^InvalidOpcode +Instalador corrupto: código de operación no válido +# ^NoOLE +"Sin OLE para: " +# ^OutputFolder +"Directorio de salida: " +# ^RemoveFolder +"Eliminar directorio: " +# ^RenameOnReboot +"Renombrar al reinicio: " +# ^Rename +"Renombrar: " +# ^Skipped +"Omitido: " +# ^CopyDetails +Copiar Detalles al Portapapeles +# ^LogInstall +Registrar proceso de instalación +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Spanish.nsh b/tools/Contrib/Language files/Spanish.nsh new file mode 100644 index 0000000..679a426 --- /dev/null +++ b/tools/Contrib/Language files/Spanish.nsh @@ -0,0 +1,130 @@ +;Language: Spanish (1034) +;By MoNKi & Joel +;Updates & Review Darwin Rodrigo Toledo Cáceres - www.winamp-es.com - niwrad777@gmail.com + +!insertmacro LANGFILE "Spanish" = "Español" "Espanol" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bienvenido al Asistente de Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Este programa instalará $(^NameDA) en su ordenador.$\r$\n$\r$\nSe recomienda que cierre todas las demás aplicaciones antes de iniciar la instalación. Esto hará posible actualizar archivos relacionados con el sistema sin tener que reiniciar su ordenador.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bienvenido al Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Este asistente le guiará durante la desinstalación de $(^NameDA).$\r$\n$\r$\nAntes de comenzar la desinstalación, asegúrese de que $(^NameDA) no se está ejecutando.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Acuerdo de licencia" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor revise los términos de la licencia antes de instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Si acepta todos los términos del acuerdo, seleccione Acepto para continuar. Debe aceptar el acuerdo para instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si acepta los términos del acuerdo, marque abajo la casilla. Debe aceptar los términos para instalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si acepta los términos del acuerdo, seleccione abajo la primera opción. Debe aceptar los términos para instalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Acuerdo de licencia" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor revise los términos de la licencia antes de desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Si acepta todos los términos del acuerdo, seleccione Acepto para continuar. Debe aceptar el acuerdo para desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si acepta los términos del acuerdo, marque abajo la casilla. Debe aceptar los términos para desinstalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si acepta los términos del acuerdo, seleccione abajo la primera opción. Debe aceptar los términos para desinstalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Presione Avanzar Página para ver el resto del acuerdo." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Selección de componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Seleccione qué características de $(^NameDA) desea instalar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Selección de componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Seleccione qué características de $(^NameDA) desea desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descripción" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Sitúe el ratón encima de un componente para ver su descripción." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Seleccione un componente para ver su descripción." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Elegir lugar de instalación" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Elija el directorio para instalar $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Elegir lugar de desinstalación" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Elija el directorio desde el cual se desinstalará $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor espere mientras $(^NameDA) se instala." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalación Completada" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "La instalación se ha completado correctamente." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalación Anulada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "La instalación no se completó correctamente." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor espere mientras $(^NameDA) se desinstala." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalación Completada" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La desinstalación se ha completado correctamente." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalación Anulada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La desinstalación no se completó correctamente." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Completando el Asistente de Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) ha sido instalado en su sistema.$\r$\n$\r$\nPresione Terminar para cerrar este asistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Su sistema debe ser reiniciado para que pueda completarse la instalación de $(^NameDA). ¿Desea reiniciar ahora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Completando el Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) ha sido desinstalado de su sistema.$\r$\n$\r$\nPresione Terminar para cerrar este asistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Su ordenador debe ser reiniciado para completar la desinstalación de $(^NameDA). ¿Desea reiniciar ahora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reiniciar ahora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Deseo reiniciar manualmente más tarde" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Ejecutar $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Ver Léame" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Terminar" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Elegir Carpeta del Menú Inicio" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Elija una Carpeta del Menú Inicio para los accesos directos de $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleccione una carpeta del Menú Inicio en la que quiera crear los accesos directos del programa. También puede introducir un nombre para crear una nueva carpeta." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "No crear accesos directos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Elimina $(^NameDA) de su sistema." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "¿Está seguro de que desea salir de la instalación de $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "¿Está seguro de que desea salir de la desinstalación de $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Elegir Usuarios" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Elija los usuarios para los cuales Ud. desea instalar $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Seleccione si desea instalar $(^NameDA) sólo para Ud. o para todos los usuarios de este Ordenador.$(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instación para cualquier usuario de este ordenador" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalación solo para mí" +!endif diff --git a/tools/Contrib/Language files/SpanishInternational.nlf b/tools/Contrib/Language files/SpanishInternational.nlf new file mode 100644 index 0000000..281c576 --- /dev/null +++ b/tools/Contrib/Language files/SpanishInternational.nlf @@ -0,0 +1,191 @@ +# Header, don't edit ;Español (Alfabetización Internacional) +NLF v6 +# Language ID +3082 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Darwin Rodrigo Toledo Cáceres - www.winamp-es.com - nwrad777@gmail.com +# Base traslation by MoNKi & Joel +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Instalación de $(^Name) +# ^UninstallCaption +Desinstalación de $(^Name) +# ^LicenseSubCaption +: Acuerdo de Licencia +# ^ComponentsSubCaption +: Opciones de Instalación +# ^DirSubCaption +: Carpeta de Instalación +# ^InstallingSubCaption +: Instalando +# ^CompletedSubCaption +: Finalizado +# ^UnComponentsSubCaption +: Opciones de Desinstalación +# ^UnDirSubCaption +: Carpeta de Desinstalación +# ^ConfirmSubCaption +: Confirmación +# ^UninstallingSubCaption +: Desinstalando +# ^UnCompletedSubCaption +: Finalizado +# ^BackBtn +< &Atrás +# ^NextBtn +&Siguiente > +# ^AgreeBtn +&Acepto +# ^AcceptBtn +&Acepto las condiciones del Acuerdo de Licencia +# ^DontAcceptBtn +No &acepto las condiciones del Acuerdo de Licencia +# ^InstallBtn +&Instalar +# ^UninstallBtn +&Desinstalar +# ^CancelBtn +Cancelar +# ^CloseBtn +&Cerrar +# ^BrowseBtn +&Examinar... +# ^ShowDetailsBtn +Mostrar &detalles +# ^ClickNext +Presione Siguiente para continuar. +# ^ClickInstall +Presione Instalar para iniciar la instalación. +# ^ClickUninstall +Presione Desinstalar para iniciar la desinstalación. +# ^Name +Nombre +# ^Completed +Finalizado +# ^LicenseText +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, presione Acepto. +# ^LicenseTextCB +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, marque abajo la casilla. $_CLICK +# ^LicenseTextRB +Por favor, revise el acuerdo de licencia antes de instalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, seleccione abajo la primera opción. $_CLICK +# ^UnLicenseText +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, presione Acepto. +# ^UnLicenseTextCB +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, marque abajo la casilla. $_CLICK +# ^UnLicenseTextRB +Por favor, revise el acuerdo de licencia antes de desinstalar $(^NameDA). Si usted acepta todas las condiciones del acuerdo, seleccione abajo la primera opción. $_CLICK +# ^Custom +Personalizada +# ^ComponentsText +Marque los componentes que desee instalar y desmarque los componentes que no desee instalar. $_CLICK +# ^ComponentsSubText1 +Seleccione el tipo de instalación: +# ^ComponentsSubText2_NoInstTypes +Seleccione los componentes a instalar: +# ^ComponentsSubText2 +O seleccione los componentes opcionales que desee instalar: +# ^UnComponentsText +Marque los componentes que desee desinstalar y desmarque los componentes que no desee desinstalar. $_CLICK +# ^UnComponentsSubText1 +Seleccione el tipo de desinstalación: +# ^UnComponentsSubText2_NoInstTypes +Seleccione los componentes a desinstalar: +# ^UnComponentsSubText2 +O seleccione los componentes opcionales que desee desinstalar: +# ^DirText +El programa de instalación instalará $(^NameDA) en la siguiente carpeta. Para instalar en una carpeta diferente, presione Examinar y seleccione otra carpeta. $_CLICK +# ^DirSubText +Carpeta de Destino +# ^DirBrowseText +Seleccione la carpeta en la que instalará $(^NameDA): +# ^UnDirText +El programa de instalación desinstalará $(^NameDA) de la siguiente carpeta. Para desinstalar de una carpeta diferente, presione Examinar y seleccione otra carpeta. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Seleccione la carpeta desde la que desinstalará $(^NameDA): +# ^SpaceAvailable +Espacio disponible: +# ^SpaceRequired +Espacio requerido: +# ^UninstallingText +$(^NameDA) será desinstalado de la siguiente carpeta. $_CLICK +# ^UninstallingSubText +Desinstalando desde: +# ^FileError +Error abriendo archivo para escribir: \r\n\r\n$0\r\n\r\nPresione Abortar para detener la instalación,\r\nReintentar para probar otra vez, o\r\nOmitir para ignorar este archivo. +# ^FileError_NoIgnore +Error abriendo archivo para escribir: \r\n\r\n$0\r\n\r\nPresione Reintentar para probar otra vez, o\r\nCancelar para detener la instalación. +# ^CantWrite +"No pudo escribirse: " +# ^CopyFailed +Copia fallida +# ^CopyTo +"Copiar a " +# ^Registering +"Registrando: " +# ^Unregistering +"Eliminando registro: " +# ^SymbolNotFound +"No se encontró simbolo: " +# ^CouldNotLoad +"No pudo cargarse: " +# ^CreateFolder +"Creando carpeta: " +# ^CreateShortcut +"Creando acceso directo: " +# ^CreatedUninstaller +"Creando desinstalador: " +# ^Delete +"Borrar archivo: " +# ^DeleteOnReboot +"Borrar al reinicio: " +# ^ErrorCreatingShortcut +"Error creando acceso directo: " +# ^ErrorCreating +"Error creando: " +# ^ErrorDecompressing +¡Error descomprimiendo datos! ¿Instalador corrupto? +# ^ErrorRegistering +Error registrando DLL +# ^ExecShell +"Ejecutando comando: " +# ^Exec +"Ejecutando: " +# ^Extract +"Extrayendo: " +# ^ErrorWriting +"Extrayendo: error escribiendo al archivo " +# ^InvalidOpcode +Instalador corrupto: código de operación no válido +# ^NoOLE +"Sin OLE para: " +# ^OutputFolder +"Carpeta de salida: " +# ^RemoveFolder +"Eliminar carpeta: " +# ^RenameOnReboot +"Renombrar al reinicio: " +# ^Rename +"Renombrar: " +# ^Skipped +"Omitido: " +# ^CopyDetails +Copiar Detalles al Portapapeles +# ^LogInstall +Registrar proceso de instalación +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/SpanishInternational.nsh b/tools/Contrib/Language files/SpanishInternational.nsh new file mode 100644 index 0000000..24140c5 --- /dev/null +++ b/tools/Contrib/Language files/SpanishInternational.nsh @@ -0,0 +1,130 @@ +;Language: Spanish International (3082) +;By Darwin Rodrigo Toledo Cáceres - www.winamp-es.com - niwrad777@gmail.com +;Base by Monki y Joel + +!insertmacro LANGFILE "SpanishInternational" "Spanish (International)" "Español (Alfabetización Internacional)" "Espanol (Alfabetizacion Internacional)" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Bienvenido al Asistente de Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Este asistente le guiará a través de la instalación de $(^NameDA).$\r$\n$\r$\nSe recomienda que cierre todas la demás aplicaciones antes de iniciar la instalación. Esto hará posible actualizar archivos de sistema sin tener que reiniciar su computadora.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Bienvenido al Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Este asistente le guiará durante la desinstalación de $(^NameDA).$\r$\n$\r$\nAntes de iniciar la desinstalación, asegúrese de que $(^NameDA) no se está ejecutando.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Acuerdo de licencia" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Por favor revise el acuerdo de licencia antes de instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Si acepta todas las condiciones del acuerdo, seleccione Acepto para continuar. Debe aceptar el acuerdo para instalar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si acepta las condiciones del acuerdo, marque abajo la casilla. Debe aceptar las condiciones para instalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si acepta las condiciones del acuerdo, seleccione abajo la primera opción. Debe aceptar las condiciones para instalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Acuerdo de licencia" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Por favor revise el acuerdo de licencia antes de desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Si acepta todas las condiciones del acuerdo, seleccione Acepto para continuar. Debe aceptar el acuerdo para desinstalar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Si acepta los términos del acuerdo, marque abajo la casilla. Debe aceptar los términos para desinstalar $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Si acepta los términos del acuerdo, seleccione abajo la primera opción. Debe aceptar los términos para desinstalar $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Presione Avanzar Página para ver el resto del acuerdo." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Selección de componentes" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Seleccione qué características de $(^NameDA) desea instalar." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Selección de componentes" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Seleccione qué características de $(^NameDA) desea desinstalar." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Descripción" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Sitúe el ratón encima de un componente para ver su descripción." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Seleccione un componente para ver su descripción." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Elegir lugar de instalación" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Elija la carpeta para instalar $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Elegir lugar de desinstalación" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Elija la carpeta desde la cual desinstalará $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Instalando" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Por favor espere mientras $(^NameDA) se instala." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Instalación Finalizada" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "La instalación se ha finalizado correctamente." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Instalación Abortada" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "La instalación no se terminó correctamente." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Desinstalando" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Por favor espere mientras $(^NameDA) se desinstala." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Desinstalación Finalizada" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "La desinstalación se ha finalizado correctamente." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Desinstalación Abortada" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "La desinstalación no se terminó correctamente." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Finalizando el Asistente de Instalación de $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) ha sido instalado en su sistema.$\r$\n$\r$\nPresione Terminar para cerrar este asistente." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Su sistema debe ser reiniciado para poder finalizar la instalación de $(^NameDA). ¿Desea reiniciar ahora?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Completando el Asistente de Desinstalación de $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) ha sido desinstalado de su sistema.$\r$\n$\r$\nPresione Terminar para cerrar este asistente." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Su computadora debe ser reiniciada para finalizar la desinstalación de $(^NameDA). ¿Desea reiniciar ahora?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Reiniciar ahora" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Deseo reiniciar manualmente más tarde" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Ejecutar $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Mostrar Léame" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Terminar" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Elegir Carpeta del Menú Inicio" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Elija una Carpeta del Menú Inicio para los accesos directos de $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Seleccione una carpeta del Menú Inicio en la que quiera crear los accesos directos del programa. También puede introducir un nombre para crear una nueva carpeta." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "No crear accesos directos" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Desinstalar $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Elimina $(^NameDA) de su sistema." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "¿Está seguro de que desea salir de la instalación de $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "¿Está seguro de que desea salir de la desinstalación de $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Elegir Usuarios" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Elija los usuarios para los cuales Ud. desea instalar $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Elija una opción si desea instalar $(^NameDA) para sólo para Ud., o para todos los usuarios de esta computadora.$(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Instación para cualquier usuario de esta computadora" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Instalación solo para mí" +!endif diff --git a/tools/Contrib/Language files/Swedish.nlf b/tools/Contrib/Language files/Swedish.nlf new file mode 100644 index 0000000..87b9122 --- /dev/null +++ b/tools/Contrib/Language files/Swedish.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1053 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Magnus Bonnevier (magnus.bonnevier@telia.com) +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Installation +# ^UninstallCaption +$(^Name) Avinstallation +# ^LicenseSubCaption +: Licensavtal +# ^ComponentsSubCaption +: Installationsval +# ^DirSubCaption +: Installationskatalog +# ^InstallingSubCaption +: Installerar +# ^CompletedSubCaption +: Slutförd +# ^UnComponentsSubCaption +: Avinstallationsval +# ^UnDirSubCaption +: Avinstallationskatalog +# ^ConfirmSubCaption +: Bekräftelse +# ^UninstallingSubCaption +: Avinstallerar +# ^UnCompletedSubCaption +: Slutförd +# ^BackBtn +< &Tillbaka +# ^NextBtn +&Nästa > +# ^AgreeBtn +Jag &Godkänner +# ^AcceptBtn +Jag &Godkänner villkoren i licensavtalet +# ^DontAcceptBtn +Jag &Godkänner inte villkoren i licensavtalet +# ^InstallBtn +&Installera +# ^UninstallBtn +&Avinstallera +# ^CancelBtn +Avbryt +# ^CloseBtn +&Stäng +# ^BrowseBtn +B&läddra... +# ^ShowDetailsBtn +Visa &detaljer +# ^ClickNext +Klicka på Nästa för att fortsätta. +# ^ClickInstall +Klicka på Installera för att starta installationen. +# ^ClickUninstall +Klicka på Avinstallera för att starta avinstallationen. +# ^Name +Namn +# ^Completed +Slutförd +# ^LicenseText +Var vänlig läs igenom licensvillkoren innan du installerar $(^NameDA). Om du accepterar villkoren i avtalet, klicka Jag Godkänner. +# ^LicenseTextCB +Var vänlig läs igenom licensvillkoren innan du installerar $(^NameDA). Om du accepterar villkoren i avtalet, klicka i checkrutan nedan. $_CLICK +# ^LicenseTextRB +Var vänlig läs igenom licensvillkoren innan du installerar $(^NameDA). Om du accepterar villkoren i avtalet, välj det första alternativet nedan. $_CLICK +# ^UnLicenseText +Var vänlig läs igenom licensvillkoren innan du avinstallerar $(^NameDA). Om du accepterar villkoren i avtalet, klicka Jag Godkänner. +# ^UnLicenseTextCB +Var vänlig läs igenom licensvillkoren innan du avinstallerar $(^NameDA). Om du accepterar villkoren i avtalet, klicka i checkrutan nedan. $_CLICK +# ^UnLicenseTextRB +Var vänlig läs igenom licensvillkoren innan du avinstallerar $(^NameDA). Om du accepterar villkoren i avtalet, välj det första alternativet nedan. $_CLICK +# ^Custom +Valfri +# ^ComponentsText +Markera de komponenter du vill installera och avmarkera de komponenter du inte vill installera. $_CLICK +# ^ComponentsSubText1 +Välj typ av installation: +# ^ComponentsSubText2_NoInstTypes +Välj komponenter att installera: +# ^ComponentsSubText2 +Eller, välj de alternativa komponenter du önskar installera: +# ^UnComponentsText +Markera de komponenter du vill avinstallera och avmarkera de komponenter du inte vill avinstallera. $_CLICK +# ^UnComponentsSubText1 +Välj typ av avinstallation: +# ^UnComponentsSubText2_NoInstTypes +Välj komponenter att avinstallera: +# ^UnComponentsSubText2 +Eller, välj de alternativa komponenter du önskar avinstallera: +# ^DirText +Guiden kommer att installera $(^NameDA) i följande katalog. För att installera i en annan katalog, klicka Bläddra och välj en alternativ katalog. $_CLICK +# ^DirSubText +Målkatalog +# ^DirBrowseText +Välj katalog att installera $(^NameDA) i: +# ^UnDirText +Installationsguiden kommer att avinstallera $(^NameDA) från följande katalog. För att avinstallera från en annan katalog, klicka Bläddra och välj en annan katalog. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Välj katalog att avinstallera $(^NameDA) från: +# ^SpaceAvailable +"Utrymme tillgängligt: " +# ^SpaceRequired +"Utrymme som behövs: " +# ^UninstallingText +$(^NameDA) kommer att avinstalleras från följande katalog. $_CLICK +# ^UninstallingSubText +Avinstallerar från: +# ^FileError +Fel vid Öppning av fil för skrivning: \r\n\t"$0"\r\nKlicka på avbryt för att avbryta installationen,\r\nförsök igen för att försöka skriva till filen igen, eller\r\nIgnorera för att skippa denna fil +# ^FileError_NoIgnore +Fel vid Öppning av fil för skrivning: \r\n\t"$0"\r\nKlicka på försök igen för att skriva till filen igen, eller\r\navbryt för att avbryta installationen +# ^CantWrite +"Kan inte skriva: " +# ^CopyFailed +Kopiering misslyckades +# ^CopyTo +"Kopiera till " +# ^Registering +"Registrerar: " +# ^Unregistering +"Avregistrerar: " +# ^SymbolNotFound +"Kunde inte hitta symbol: " +# ^CouldNotLoad +"Kunde inte ladda: " +# ^CreateFolder +"Skapa katalog: " +# ^CreateShortcut +"Skapa genväg: " +# ^CreatedUninstaller +"Skapade avinstallationsprogram: " +# ^Delete +"Radera fil: " +# ^DeleteOnReboot +"Radera vid omstart: " +# ^ErrorCreatingShortcut +"Fel vid skapande av genväg: " +# ^ErrorCreating +"Fel vid skapande: " +# ^ErrorDecompressing +Fel vid uppackning av data! Skadat installationspaket? +# ^ErrorRegistering +Fel vid registrering av DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Kör: " +# ^Extract +"Extrahera: " +# ^ErrorWriting +"Extrahera: fel vid skrivning till fil " +# ^InvalidOpcode +Installationspaket skadat: ogiltig opcode +# ^NoOLE +"Ingen OLE för: " +# ^OutputFolder +"Målkatalog: " +# ^RemoveFolder +"Ta bort katalog: " +# ^RenameOnReboot +"Döp om vid omstart: " +# ^Rename +"Döp om: " +# ^Skipped +"Ignorerad: " +# ^CopyDetails +Kopiera detaljinformation till klippbordet +# ^LogInstall +Logga installationsförfarandet +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Swedish.nsh b/tools/Contrib/Language files/Swedish.nsh new file mode 100644 index 0000000..b8eb9cd --- /dev/null +++ b/tools/Contrib/Language files/Swedish.nsh @@ -0,0 +1,130 @@ +;Compatible with Modern UI 1.72 +;Language: Swedish (1053) +;By Magnus Bonnevier (magnus.bonnevier@telia.com), updated by Rickard Angbratt (r.angbratt@home.se), updated by Ulf Axelsson (ulf.axelsson@gmail.com) + +!insertmacro LANGFILE "Swedish" = "Svenska" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Välkommen till installationsguiden för $(^NameDA)." + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Denna guide tar dig igenom installationen av $(^NameDA).$\r$\n$\r$\nDet rekommenderas att du avslutar alla andra program innan du fortsätter installationen. Detta tillåter att installationen uppdaterar nödvändiga systemfiler utan att behöva starta om din dator.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Välkommen till avinstallationsguiden för $(^NameDA)." + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Denna guide tar dig igenom avinstallationen av $(^NameDA).$\r$\n$\r$\nInnan du startar avinstallationen, försäkra dig om att $(^NameDA) inte körs.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Licensavtal" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Var vänlig läs igenom licensvillkoren innan du installerar $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Om du accepterar villkoren i avtalet, klicka Jag Godkänner för att fortsätta. Du måste acceptera avtalet för att installera $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Om du accepterar villkoren i avtalet, klicka i checkrutan nedan. Du måste acceptera avtalet för att installera $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Om du accepterar villkoren i avtalet, välj det första alternativet nedan. Du måste acceptera avtalet för att installera $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licensavtal" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Var vänlig läs igenom licensvillkoren innan du avinstallerar $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Om du accepterar villkoren i avtalet, klicka Jag Godkänner för att fortsätta. Du måste acceptera avtalet för att avinstallera $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Om du accepterar villkoren i avtalet, klicka i checkrutan nedan. Du måste acceptera avtalet för att avinstallera $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Om du accepterar villkoren i avtalet, välj det första alternativet nedan. Du måste acceptera avtalet för att avinstallera $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Tryck Page Down för att se resten av licensavtalet." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Välj komponenter" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Välj vilka alternativ av $(^NameDA) som du vill installera." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Välj komponenter" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Välj vilka alternativ av $(^NameDA) som du vill avinstallera." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beskrivning" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Håll muspekaren över ett alternativ för att se dess beskrivning." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Välj ett alternativ för att se dess beskrivning." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Välj installationsväg" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Välj katalog att installera $(^NameDA) i." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Välj avinstallationsväg" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Välj katalog att avinstallera $(^NameDA) från." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installerar" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Var vänlig vänta medan $(^NameDA) installeras." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Installationen är klar" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Guiden avslutades korrekt." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Installationen avbröts" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Guiden genomfördes inte korrekt." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Avinstallerar" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Var vänlig vänta medan $(^NameDA) avinstalleras." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Avinstallationen genomförd" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Avinstallationen genomfördes korrekt." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Avinstallationen avbruten" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Avinstallationen genomfördes inte korrekt." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Avslutar installationsguiden för $(^NameDA)." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) har installerats på din dator.$\r$\n$\r$\nKlicka på Slutför för att avsluta guiden." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Din dator måste startas om för att fullborda installationen av $(^NameDA). Vill du starta om nu?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Avslutar avinstallationsguiden för $(^NameDA)." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) komponenter har avinstallerats från din dator.$\r$\n$\r$\nKlicka på Slutför för att avsluta guiden." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Din dator måste startas om för att fullborda avinstallationen av $(^NameDA). Vill du starta om nu?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Starta om nu" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Jag vill starta om själv senare" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Kör $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Visa Readme-filen" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Slutför" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Välj Startmenykatalog" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Välj en Startmenykatalog för programmets genvägar." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Välj startmenykatalog i vilken du vill skapa programmets genvägar. Du kan ange ett eget namn för att skapa en ny katalog." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Skapa ej genvägar" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Avinstallera $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Ta bort $(^NameDA) från din dator." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Är du säker på att du vill avbryta installationen av $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Är du säker på att du vill avbryta avinstallationen av $(^Name)?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Välj användare" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Välj för vilka användare du vill installera $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Välj huruvida du vill installera $(^NameDA) enbart för dig själv eller för alla användare på denna dator. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installera för alla som använder denna dator" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installera bara för mig" +!endif diff --git a/tools/Contrib/Language files/Tatar.nlf b/tools/Contrib/Language files/Tatar.nlf new file mode 100644 index 0000000..aaf11bd --- /dev/null +++ b/tools/Contrib/Language files/Tatar.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1092 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- +# Translation by Bulat Azat uly [ bulat_ibrahim@mail.ru ] +# ^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\t"$0"\r\n'Туктату': урнаштыруны туктатырга;\r\n"Кабатлау": омтылышны кабатларга;\r\n"Калдыру": бу гамәлне төшереп калдырырга. +# ^FileError_NoIgnore +Яздыру өчен файлны ачып булмый: \r\n\t"$0"\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/tools/Contrib/Language files/Tatar.nsh b/tools/Contrib/Language files/Tatar.nsh new file mode 100644 index 0000000..a42d365 --- /dev/null +++ b/tools/Contrib/Language files/Tatar.nsh @@ -0,0 +1,129 @@ +;Language: Tatar (1092) +;Translation by Bulat Azat uly [bulat_ibrahim@mail.ru] + +!insertmacro LANGFILE "Tatar" = "Татарча" "Tatarcha" + +!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 "Текст буенча күчү өчен, $\"PageUp$\" һәм $\"PageDown$\" төймәләренә басыгыз." +!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 "&ReadMe файлын күрсәтергә" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Тәмам" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "$\"Башлау$\" менюсында папка" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "$\"Башлау$\" менюсында программа сылтамаларын урнаштыру өчен папка сайлагыз." + ${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 "Чыннан да $(^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/tools/Contrib/Language files/Thai.nlf b/tools/Contrib/Language files/Thai.nlf new file mode 100644 index 0000000..d866de3 --- /dev/null +++ b/tools/Contrib/Language files/Thai.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1054 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +874 +# RTL - anything else than RTL means LTR +- +# Translation by SoKoOLz, TuW@nNu (asdfuae) +# ^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 +ตัวติดตั้งมีปัญหา: รหัส opcode ผิดพลาด +# ^NoOLE +"ไม่มี OLE สำหรับ: " +# ^OutputFolder +"แฟ้มทีติดตั้ง: " +# ^RemoveFolder +"ลบแฟ้ม: " +# ^RenameOnReboot +"เปลี่ยนชื่อตอนรีบูท: " +# ^Rename +"เปลี่ยนชื่อ: " +# ^Skipped +"ข้าม: " +# ^CopyDetails +คัดลอกรายละเอียดลงคลิปบอร์ด +# ^LogInstall +บันทึกการติดตั้ง +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Thai.nsh b/tools/Contrib/Language files/Thai.nsh new file mode 100644 index 0000000..99dc77d --- /dev/null +++ b/tools/Contrib/Language files/Thai.nsh @@ -0,0 +1,121 @@ +;Language: Thai (1054) +;By SoKoOLz, TuW@nNu (asdfuae) + +!insertmacro LANGFILE "Thai" = "ไทย" /* TODO: ISO 11940? */ "Thai" + +!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 "เลือกแฟ้ม Start Menu" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "เลือกแฟ้ม Start Menu เพื่อสร้างชอร์ตคัทของ $(^NameDA). " + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "เลือกแผ้ม Start Menu ที่คุณต้องการจะสร้างชอร์ตคัทของโปรแกรม, คุณยังสามารถกำหนดชื่อเพื่อสร้างแฟ้มใหม่ได้อีกด้วย" + ${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 diff --git a/tools/Contrib/Language files/TradChinese.nlf b/tools/Contrib/Language files/TradChinese.nlf new file mode 100644 index 0000000..81ce2b5 --- /dev/null +++ b/tools/Contrib/Language files/TradChinese.nlf @@ -0,0 +1,194 @@ +# Header, don't edit +NLF v6 +# Language ID +1028 +# Font and size - dash (-) means default 字型名稱與大小 +新細明體 +9 +# Codepage - dash (-) means ASCII code page ASCII 字碼頁 +950 +# RTL - anything else than RTL means LTR 由右至左書寫 +- +# Revision date: 2017-03-17 +# Translators: +## Kii Ali , , +## Walter Cheuk +# +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) 安裝 +# ^UninstallCaption +$(^Name) 解除安裝 +# ^LicenseSubCaption +: 授權協議 +# ^ComponentsSubCaption +: 安裝選項 +# ^DirSubCaption +: 安裝資料夾 +# ^InstallingSubCaption +: 正在安裝 +# ^CompletedSubCaption +: 已完成 +# ^UnComponentsSubCaption +: 解除安裝選項 +# ^UnDirSubCaption +: 解除安裝資料夾 +# ^ConfirmSubCaption +: 確認 +# ^UninstallingSubCaption +: 正在解除安裝 +# ^UnCompletedSubCaption +: 完成 +# ^BackBtn +< 上一步(&B) +# ^NextBtn +下一步(&N) > +# ^AgreeBtn +我同意(&A) +# ^AcceptBtn +我接受「授權協議」的條款(&A) +# ^DontAcceptBtn +我不接受「授權協議」的條款(&D) +# ^InstallBtn +安裝(&I) +# ^UninstallBtn +解除安裝(&U) +# ^CancelBtn +取消 +# ^CloseBtn +關閉(&C) +# ^BrowseBtn +瀏覽(&R)... +# ^ShowDetailsBtn +顯示細節(&D) +# ^ClickNext +按「下一步(N)」繼續。 +# ^ClickInstall +按「安裝(I)」開始安裝。 +# ^ClickUninstall +按「解除安裝(U)」開始解除安裝。 +# ^Name +名稱 +# ^Completed +已完成 +# ^LicenseText +在安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議所有條款,按「我同意(A)」。 +# ^LicenseTextCB +在安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議所有條款,按下方的勾選框。 $_CLICK +# ^LicenseTextRB +在安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議所有條款,選擇下方的第一個選項。 $_CLICK +# ^UnLicenseText +在解除安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議中所有條款,按「我同意(A)」。 +# ^UnLicenseTextCB +在解除安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議中所有條款,按下方的勾選框。 $_CLICK +# ^UnLicenseTextRB +在解除安裝 $(^NameDA) 之前請檢閱授權協議。如果接受協議中所有條款,選擇的第一個選項。 $_CLICK +# ^Custom +自訂 +# ^ComponentsText +勾選想要安裝的元件,並解除勾選不想安裝的元件。 $_CLICK +# ^ComponentsSubText1 +選取安裝的類型: +# ^ComponentsSubText2_NoInstTypes +選取安裝的元件: +# ^ComponentsSubText2 +又或者,自訂選取想安裝的元件: +# ^UnComponentsText +勾選想要解除安裝的元件,並解除勾選不想解除安裝的元件。 $_CLICK +# ^UnComponentsSubText1 +選取解除安裝的類型: +# ^UnComponentsSubText2_NoInstTypes +選取要解除安裝的元件: +# ^UnComponentsSubText2 +又或者,選擇想要解除安裝的可選項元件: +# ^DirText +安裝程式會將 $(^NameDA) 安裝在以下資料夾。要安裝到不同的資料夾,按「瀏覽(B)...」並選擇其他資料夾。 $_CLICK +# ^DirSubText +目標資料夾 +# ^DirBrowseText +選取要安裝 $(^NameDA) 的資料夾: +# ^UnDirText +安裝程式會自以下資料夾解除安裝 $(^NameDA) 。要解除安裝不同的資料夾,按「瀏覽(B)...」並選擇其他資料夾。 $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +選取要解除安裝 $(^NameDA) 的資料夾: +# ^SpaceAvailable +"可用空間: " +# ^SpaceRequired +"所需空間: " +# ^UninstallingText +會自以下資料夾解除安裝 $(^NameDA) 。 $_CLICK +# ^UninstallingSubText +解除安裝目錄: +# ^FileError +無法開啟要寫入的檔案: \r\n\t"$0"\r\n按「中止」停止安裝,\r\n「重試」重新嘗試寫入檔案,或\r\n「忽略」略過此檔案。 +# ^FileError_NoIgnore +無法開啟要寫入的檔案: \r\n\t"$0"\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 +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/TradChinese.nsh b/tools/Contrib/Language files/TradChinese.nsh new file mode 100644 index 0000000..2e8e28e --- /dev/null +++ b/tools/Contrib/Language files/TradChinese.nsh @@ -0,0 +1,131 @@ +;Language: 'Chinese (Traditional)' (1028) +;Translator: Kii Ali , , +;Translator: Walter Cheuk +;Revision date: 2017-03-17 + +!insertmacro LANGFILE "TradChinese" "Chinese (Traditional)" "中文(繁體)" "Hanyu (Fantizi)" + +!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 "如果接受協議的條款,按 [我同意(A)] 繼續安裝。必須要接受協議才能安裝 $(^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 "如果接受協議的條款,按 [我同意(A)] 繼續解除安裝。如果選取 [取消] ,安裝程式會關閉。必須要接受協議才能解除安裝 $(^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 "檢閱協議的其餘部分,按 [PgDn] 往下捲動頁面。" +!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按 [完成(F)] 關閉安裝程式。" + ${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按 [完成(F)] 關閉安裝程式。" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "電腦需要重新開機,才能完成解除安裝 $(^NameDA) 。要馬上重新開機嗎?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "是,馬上重新開機(&Y)" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "否,我稍後再自行重新開機(&N)" + ${LangFileString} MUI_TEXT_FINISH_RUN "執行 $(^NameDA)(&R)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "顯示「讀我檔案」(&S)" + ${LangFileString} MUI_BUTTONTEXT_FINISH "完成(&F)" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "選擇「開始功能表」資料夾" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "選擇「開始功能表」資料夾,用於程式的捷徑。" + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "選擇「開始功能表」資料夾,以便建立程式的捷徑。你也可以輸入名稱,建立新資料夾。" + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "不要建立捷徑(&N)" +!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/tools/Contrib/Language files/Turkish.nlf b/tools/Contrib/Language files/Turkish.nlf new file mode 100644 index 0000000..6ec8dee --- /dev/null +++ b/tools/Contrib/Language files/Turkish.nlf @@ -0,0 +1,192 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1055 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1254 +# RTL - anything else than RTL means LTR +- +# Translation by ?atay Dilsiz(chagy) (amigos_cagi@hotmail.com) +# Corrections by Mozilla Türkiye Yerelleştirme Topluluğu tarafından çevrilmiştir. http://mozilla.org.tr +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +$(^Name) Kurulumu +# ^UninstallCaption +$(^Name) Kaldırma +# ^LicenseSubCaption +: Lisans Sözleşmesi +# ^ComponentsSubCaption +: Kurulum Seçenekleri +# ^DirSubCaption +: Kurulum Dizini +# ^InstallingSubCaption +: Kuruluyor +# ^CompletedSubCaption +: Tamamlandı +# ^UnComponentsSubCaption +: Kaldırma Seçenekleri +# ^UnDirSubCaption +: Kaldırılacak Dizin +# ^ConfirmSubCaption +: Onay +# ^UninstallingSubCaption +: Kaldırılıyor +# ^UnCompletedSubCaption +: Tamamlandı +# ^BackBtn +< &Geri +# ^NextBtn +İ&leri > +# ^AgreeBtn +&Katılıyorum +# ^AcceptBtn +Lisans Sözleşmesi'nin koşullarını &kabul ediyorum +# ^DontAcceptBtn +Lisans Sözleşmesi'nin koşullarını kabul et&miyorum +# ^InstallBtn +&Kur +# ^UninstallBtn +&Kaldır +# ^CancelBtn +Vazgeç +# ^CloseBtn +&Kapat +# ^BrowseBtn +&Gözat... +# ^ShowDetailsBtn +&Ayrıntıları göster +# ^ClickNext +Devam etmek için İleri düğmesine basın. +# ^ClickInstall +Kurulumu başlatmak için Kur düğmesine basın. +# ^ClickUninstall +Kaldırmayı başlatmak için Kaldır düğmesine basın. +# ^Name +Ad +# ^Completed +Tamamlandı +# ^LicenseText +Lütfen $(^NameDA) uygulamasını kurmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız Kabul Ediyorum düğmesine basın. +# ^LicenseTextCB +Lütfen $(^NameDA) uygulamasını kurmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız aşağıdaki kutuya işaret koyun. $_CLICK +# ^LicenseTextRB +Lütfen $(^NameDA) uygulamasını kurmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız aşağıdaki ilk seçeneği seçin. $_CLICK +# ^UnLicenseText +Lütfen $(^NameDA) uygulamasını kaldırmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız Kabul Ediyorum düğmesine basın. +# ^UnLicenseTextCB +Lütfen $(^NameDA) uygulamasını kaldırmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız aşağıdaki kutuya işaret koyun. $_CLICK +# ^UnLicenseTextRB +Lütfen $(^NameDA) uygulamasını kaldırmadan önce lisans sözleşmesini gözden geçirin. Sözleşmedeki bütün koşulları kabul ediyorsanız aşağıdaki ilk seçeneği seçin. $_CLICK +# ^Custom +Özel +# ^ComponentsText +Kurmak istediğiniz bileşenleri işaretleyip kurmak istemediklerinizi işaretlemeden bırakın. $_CLICK +# ^ComponentsSubText1 +Kurulum türünü seçin: +# ^ComponentsSubText2_NoInstTypes +Kurulacak bileşenleri seçin: +# ^ComponentsSubText2 +ya da isteğe bağlı olarak kurmak istediğiniz bileşenleri seçin: +# ^UnComponentsText +Kaldırmak istediğiniz bileşenleri işaretleyip kaldırmak istemediklerinizi işaretlemeden bırakın. $_CLICK +# ^UnComponentsSubText1 +Kaldırma türünü seçin: +# ^UnComponentsSubText2_NoInstTypes +Kaldırılacak bileşenleri seçin: +# ^UnComponentsSubText2 +ya da isteğe bağlı olarak kaldırmak istediğiniz bileşenleri seçin: +# ^DirText +$(^NameDA) aşağıdaki dizinde kurulacak. Farklı bir dizinde kurmak için Gözat düğmesine basıp başka bir dizin seçin. $_CLICK +# ^DirSubText +Hedef Dizin +# ^DirBrowseText +$(^NameDA) uygulamasının kurulacağı dizini seçin: +# ^UnDirText +$(^NameDA) aşağıdaki dizinden kaldırılacak. Farklı bir dizinden kaldırmak için Gözat düğmesine basıp başka bir dizin seçin. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +$(^NameDA) uygulamasının kaldırılacağı dizini seçin: +# ^SpaceAvailable +"Kullanılabilir boş alan: " +# ^SpaceRequired +"Gereken boş alan: " +# ^UninstallingText +$(^NameDA) aşağıdaki dizinden kaldırılacak. $_CLICK +# ^UninstallingSubText +Kaldırılan yer: +# ^FileError +Dosya yazmak için açılırken hata meydana geldi: \r\n\r\n$0\r\n\r\nKurulumu durdurmak için Dur düğmesine,\r\nyeniden denemek için Yeniden Dene düğmesine,\r\nbu dosyayı atlamak için Yoksay düğmesine basın. +# ^FileError_NoIgnore +Dosya yazmak için açılırken hata meydana geldi: \r\n\r\n$0\r\n\r\nYeniden denemek için Yeniden Dene düğmesine,\r\nkurulumu durdurmak için Vazgeç düğmesine basın. +# ^CantWrite +"Yazılamadı: " +# ^CopyFailed +Kopyalama başarısız oldu +# ^CopyTo +"Kayıt: " +# ^Registering +"Kaydediliyor: " +# ^Unregistering +"Kayıt siliniyor: " +# ^SymbolNotFound +"Simge bulunamadı: " +# ^CouldNotLoad +"Yüklenemedi: " +# ^CreateFolder +"Dizin oluştur: " +# ^CreateShortcut +"Kısayol oluştur: " +# ^CreatedUninstaller +"Kaldırma uygulaması oluştur: " +# ^Delete +"Dosya sil: " +# ^DeleteOnReboot +"Açılışta sil: " +# ^ErrorCreatingShortcut +"Kısayol oluşturulurken hata meydana geldi: " +# ^ErrorCreating +"Oluşturma hatası: " +# ^ErrorDecompressing +Veriyi açarken hata meydana geldi! Acaba kurulum uygulaması mı bozuk? +# ^ErrorRegistering +DLL kaydedilirken hata meydana geldi +# ^ExecShell +"ExecShell: " +# ^Exec +"Çalıştır: " +# ^Extract +"Aç: " +# ^ErrorWriting +"Açma: Dosyaya yazarken hata meydana geldi " +# ^InvalidOpcode +Kurulum bozuk: Geçersiz kod +# ^NoOLE +"OLE yok: " +# ^OutputFolder +"Çıktı dizini: " +# ^RemoveFolder +"Dizini sil: " +# ^RenameOnReboot +"Açılışta adını değiştir: " +# ^Rename +"Ad değiştir: " +# ^Skipped +"Atlandı: " +# ^CopyDetails +Ayrıntıları panoya kopyala +# ^LogInstall +Kurulum sürecinin kaydını tut +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Turkish.nsh b/tools/Contrib/Language files/Turkish.nsh new file mode 100644 index 0000000..c4d1358 --- /dev/null +++ b/tools/Contrib/Language files/Turkish.nsh @@ -0,0 +1,122 @@ +;Language: Turkish (1055) +;By Çagatay Dilsiz(Chagy) +;Updated by Fatih BOY (fatih_boy@yahoo.com) + +!insertmacro LANGFILE "Turkish" = "Türkçe" "Turkce" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "$(^NameDA) Kurulum sihirbazına hoş geldiniz" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Bu sihirbaz size $(^NameDA) kurulumu boyunca rehberlik edecektir.$\r$\n$\r$\nKurulumu başlatmadan önce çalışan diğer programlari kapatmanızı öneririz. Böylece bilgisayarınızı yeniden başlatmadan bazı sistem dosyaları sorunsuz kurulabilir.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "$(^NameDA) Programını Kaldırma Sihirbazına Hoş Geldiniz" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Bu sihirbaz size $(^NameDA) programının kadırılımı boyunca rehberlik edecektir.$\r$\n$\r$\nKaldırım işlemeni başlatmadan önce çalışan diğer programlari kapatmanızı öneririz. Böylece bilgisayarınızı yeniden başlatmadan bazı sistem dosyaları sorunsuz kaldırılabilir.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisans Sözleşmesi" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Lütfen $(^NameDA) programını kurmadan önce sözleşmeyi okuyunuz." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Sözleşme koşullarını kabul ediyorsanız, 'Kabul Ediyorum'a basınız. $(^NameDA) programını kurmak için sözleşme koşullarını kabul etmelisiniz." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Sözleşme koşullarını kabul ediyorsanız, aşağıdaki onay kutusunu doldurunuz. $(^NameDA) programını kurmak için sözleşme koşullarını kabul etmelisiniz. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Sözleşme koşullarını kabul ediyorsanız, asagidaki onay düğmesini seçiniz. $(^NameDA) programını kurmak için sözleşme koşullarını kabul etmelisiniz. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisans Sözleşmesi" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Lütfen $(^NameDA) programını sisteminizden kaldırmadan önce sözleşmeyi okuyunuz." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Sözleşme koşullarını kabul ediyorsanız, 'Kabul Ediyorum'a basınız. $(^NameDA) programını sisteminizden kaldırmak için sözleşme koşullarını kabul etmelisiniz." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Sözleşme koşullarını kabul ediyorsanız, aşağıdaki onay kutusunu doldurunuz. $(^NameDA) programını sisteminizden kaldırmak için sözleşme koşullarını kabul etmelisiniz. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Sözleşme koşullarını kabul ediyorsanız, asagidaki onay düğmesini seçiniz. $(^NameDA) programını sisteminizden kaldırmak için sözleşme koşullarını kabul etmelisiniz. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Sözleşmenin geri kalanını okumak için 'page down' tuşuna basabilirsiniz." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Bileşen seçimi" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Lütfen $(^NameDA) için kurmak istediginiz bileşenleri seçiniz." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Bileşen Şeçimi" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Lütfen kaldırmak istediğiniz $(^NameDA) program bileşenini seçiniz." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Açıklama" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Bileşenlerin açıklamalarını görmek için imleci bileşen üzerine götürün." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Hedef dizini seçimi" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "$(^NameDA) programını kurmak istediğiniz dizini şeçiniz." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Kaldırılıcak Dizin Seçimi" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "$(^NameDA) programını kaldırmak istediginiz dizini seçiniz." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Kuruluyor" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Lütfen $(^NameDA) kurulurken bekleyiniz." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Kurulum Tamamlandı" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Kurulum başarıyla tamamlandı." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Kurulum İptal Edildi" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Kurulum tam olarak tamamlanmadı." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Kaldırılıyor" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Litfen $(^NameDA) programı sisteminizden kaldırılırken bekleyiniz." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Kaldırma İşlemi Tamamlandır" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Kaldırma işlemi başarıyla tamamlandı." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Kaldırma İşlemi İptal Edildi" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Kaldırma İşlemi tamamlanamadı." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "$(^NameDA) Kurulum sihirbazı tamamlanıyor." + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) bilgisayariniza yüklendi.$\r$\n$\r$\nLütfen 'Bitir'e basarak kurulumu sonlandırın." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "$(^NameDA) kurulumunun tamamlanması için bilgisayarınızı yeniden başlatmanız gerekiyor.Bilgisayarınızı yeniden başlatmak istiyor musunuz?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "$(^NameDA) Programı Kaldırma Sihirbazı Tamamlanıyor" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) programı sisteminizden kaldırıldı.$\r$\n$\r$\nSihirbazı kapatmak için 'bitir'e basınız." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "$(^NameDA) programını kaldırma işleminin tamamlanması için bilgisayarınızın yeniden başlatılması gerekiyor. Bilgisayarınızın şimdi yeniden başlatılmasını ister misiniz?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Yeniden başlat" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Bilgisayarımı daha sonra başlatacağım." + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) programını çalıştır" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "beni oku/readme dosyasını &göster" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Bitir" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Başlat Menüsü Klasör Seçimi" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "$(^NameDA) kısayollarının konulacagı başlat menüsü klasörünü seçiniz." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Programın kısayollarının konulacağı başlat menüsü klasörünü seçiniz. Farklı bir isim girerek yeni bir klasör yaratabilirsiniz." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Kısayolları oluşturmadan devam et" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "$(^NameDA) Programını Kaldır" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA) programını sisteminizden kaldırma." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "$(^Name) kurulumundan çıkmak istediğinize emin misiniz?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "$(^Name) Programi Kaldırma işleminden çıkmak istediğinize emin misiniz?" +!endif diff --git a/tools/Contrib/Language files/Ukrainian.nlf b/tools/Contrib/Language files/Ukrainian.nlf new file mode 100644 index 0000000..186d963 --- /dev/null +++ b/tools/Contrib/Language files/Ukrainian.nlf @@ -0,0 +1,192 @@ +# Header, don't edit +NLF v6 +# Language ID +1058 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1251 +# RTL - anything else than RTL means LTR +- + +# Translation by Yuri Holubow, Nash-Soft.com, Dmitriy Kononchuk [gri3ly.kiev.ua], Osidach Vitaly and others + +# ^Branding +Система встановлення Nullsoft %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 + Г diff --git a/tools/Contrib/Language files/Ukrainian.nsh b/tools/Contrib/Language files/Ukrainian.nsh new file mode 100644 index 0000000..58ab77c --- /dev/null +++ b/tools/Contrib/Language files/Ukrainian.nsh @@ -0,0 +1,130 @@ +;Language: Ukrainian (1058) +;By Yuri Holubow, Nash-Soft.com +;Corrections by Osidach Vitaly (Vit_Os2) and others + +!insertmacro LANGFILE "Ukrainian" = "Українська" "Ukrayins'ka" + +!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 "Натисніть клавішу PageDown, щоб переглянути угоду далі." +!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 "Ви дійсно хочете вийти з встановлення $(^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 \ No newline at end of file diff --git a/tools/Contrib/Language files/Uzbek.nlf b/tools/Contrib/Language files/Uzbek.nlf new file mode 100644 index 0000000..8d32284 --- /dev/null +++ b/tools/Contrib/Language files/Uzbek.nlf @@ -0,0 +1,190 @@ +# Header, don't edit +NLF v6 +# Language ID +1091 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Emil Garipov [emil.garipov@gmail.com] +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +O'rnatish $(^Name) +# ^UninstallCaption +O'chirish $(^Name) +# ^LicenseSubCaption +: Lisenzion kelishuv +# ^ComponentsSubCaption +: O'rnatish parametrlari +# ^DirSubCaption +: O'rnatish papkasi +# ^InstallingSubCaption +: Fayllarni kopiya qilish +# ^CompletedSubCaption +: Operatsiya yakunlandi +# ^UnComponentsSubCaption +: O'chirish parametrlari +# ^UnDirSubCaption +: O'chirsh papkasi +# ^ConfirmSubCaption +: Tasdiqlash +# ^UninstallingSubCaption +: Fayllarni o'chirish +# ^UnCompletedSubCaption +: Operatsiya yakunlandi +# ^BackBtn +< &Orqaga +# ^NextBtn +&Oldinga > +# ^AgreeBtn +&Qabul qilaman +# ^AcceptBtn +Men &kelishuv shartlarini qabul qilaman +# ^DontAcceptBtn +Men &kelishuv shartlarini qabul qilmayman +# ^InstallBtn +&O'rnatish +# ^UninstallBtn +&O'chirish +# ^CancelBtn +Bekor qilish +# ^CloseBtn +&Yopish +# ^BrowseBtn +&Ko'rish ... +# ^ShowDetailsBtn +&Äåòàëè... +# ^ClickNext +Davom etish uchun 'Oldinga'tugmachasini bosing. +# ^ClickInstall +Dasturni o'rnatish uchun'O'rnatish' tugmachasini bosing. +# ^ClickUninstall +Dasturni o'chirish uchun 'O'chirsh' tugmachasini bosing. +# ^Name +Ism +# ^Completed +Tayor +# ^LicenseText +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz 'Qabul qilaman' tugmachasini bosing. +# ^LicenseTextCB +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz bayroqchani joylashtiring. $_CLICK +# ^LicenseTextRB +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz quyida taklif etilganlardan birinchi variantni tanlang. $_CLICK +# ^UnLicenseText +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz 'Qabul qilaman' tugmachasini bosing. +# ^UnLicenseTextCB +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz bayroqchani joylashtiring. $_CLICK +# ^UnLicenseTextRB +$(^NameDA)ni o'rnatishdan oldin lisenzion kelishuv bilan tanishib oling. Kelishuv shartlarini qabul qilsangiz quyida taklif etilganlardan birinchi variantni tanlang. $_CLICK +# ^Custom +Tanlash bo'icha +# ^ComponentsText +O'rnatish ucun dastur komponentlarini tanlang. $_CLICK +# ^ComponentsSubText1 +O'rnatish jarayonini tanlang: +# ^ComponentsSubText2_NoInstTypes +O'rnatish uchun dastur komponentlarini tanlang: +# ^ComponentsSubText2 +Yoki o'rnatish uchun qushimcha komponentlarini tanlang: +# ^UnComponentsText +O'chirish uchun dastur komponentlarini tanlang. $_CLICK +# ^UnComponentsSubText1 +O'chirish jarayonini tanlang: +# ^UnComponentsSubText2_NoInstTypes +O'chirish uchun dastur komponentlarini tanlang: +# ^UnComponentsSubText2 +Yoki o'chirish uchun qushimcha komponentlarini tanlang: +# ^DirText +Dastur $(^NameDA)ni ko'rsatilgan papkaga o'rnatadi. Boshqa papkaga o'rnatish uchun, 'Ko'rish'tugmachasini bosing va uni ko'rsatib bering. $_CLICK +# ^DirSubText +O'rnatish papkasi +# ^DirBrowseText +O'rnatish papkasini ko'rsating $(^NameDA): +# ^UnDirText +Dastur $(^NameDA)ni ko'rsatilgan papkadan o'chiradi. Boshqa papkaga o'rnatish uchun, 'Ko'rish'tugmachasini bosing va uni ko'rsatib bering. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +$(^NameDA)ni o'chirish uchun papkani ko'rsating: +# ^SpaceAvailable +"Diskda joriy qilingan: " +# ^SpaceRequired +"Diskda talab qilinadigan: " +# ^UninstallingText +$(^NameDA) dasturi kompyuterizdan uchiriladi. $_CLICK +# ^UninstallingSubText +O'chirilish: +# ^FileError +Yozish uchun faylni ochish imkoniyati yuq: \r\n\t"$0"\r\n'Tuxtashish': O'rnatishni tuxtatish;\r\n"Takrorlash":yana bir o'rinib ko'rish;\r\n"Taylab ketish": shu xarakatni taylab ketish. +# ^FileError_NoIgnore +Yozish uchun faylni ochish imkoniyati yuq: \r\n\t"$0"\r\n'Takrorlash': yana bir o'rinib ko'rish;\r\n'Bekor qilish': o'rnatish protsessini bekor qilish. +# ^CantWrite +"Yozish uchun imkoniyat yuq: " +# ^CopyFailed +Kopiya qilganda xato bor +# ^CopyTo +"Kopiya qilish " +# ^Registering +"Ro'yxatga olish: " +# ^Unregistering +"Ro'xatdan chiqish: " +# ^SymbolNotFound +"Simvolni topish imkoniyati yuq: " +# ^CouldNotLoad +"Zagruzka qilish imkoniyati yuq: " +# ^CreateFolder +"Papkani yaratish: " +# ^CreateShortcut +"Belgini yaratish: " +# ^CreatedUninstaller +"O'chirish dasturini yaratish: " +# ^Delete +"Faylni o'chirish: " +# ^DeleteOnReboot +"Kompyuter qayta yuklash jaraonida o'chirish: " +# ^ErrorCreatingShortcut +"Belgini yaratish jarayonida xato: " +# ^ErrorCreating +"Yaratish xatosi: " +# ^ErrorDecompressing +Ma'lumotlarni asilga qaytarish xatosi! Distributiv ziyonlangan bulishi mumkin. +# ^ErrorRegistering +Kutubxonani ro'xatga olish imkoniyati yuq (DLL) +# ^ExecShell +"Qoplang'ich komandasini bajarish: " +# ^Exec +"Bajarish: " +# ^Extract +"Ichidan olish: " +# ^ErrorWriting +"Ichidan olish: fayl yozish xatosi " +# ^InvalidOpcode +Distributiv ziyonlangan: ruxsatlanmangan kod +# ^NoOLE +"Quydagilarga OLE yuq: " +# ^OutputFolder +"Papkani o'rnatish: " +# ^RemoveFolder +"Papkani o'chirish: " +# ^RenameOnReboot +"Kompyuter qayta yuklanish jarayonida ismni qaita quyish: " +# ^Rename +"Ismni qayta quyish: " +# ^Skipped +"O'tkazib yuborish: " +# ^CopyDetails +Bufer obmenaga ma'lumotlarni kopiya qilish +# ^LogInstall +O'rnatish xisobotini chiqorish +# byte +áàéò +# kilo + Ê +# mega + Ì +# giga + Ã \ No newline at end of file diff --git a/tools/Contrib/Language files/Uzbek.nsh b/tools/Contrib/Language files/Uzbek.nsh new file mode 100644 index 0000000..b60afd5 --- /dev/null +++ b/tools/Contrib/Language files/Uzbek.nsh @@ -0,0 +1,121 @@ +;Language: Uzbek (1091) +;Translation updated by Emil Garipov [emil.garipov@gmail.com] + +!insertmacro LANGFILE "Uzbek" = "O‘zbek" "O'zbek" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Sizni o'rnatish dastur tabriklaydi $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Bu dastur sizning komputeringizga $(^NameDA) dasturni o'rnatadi.$\r$\n$\r$\nO'rnatishdan oldin ishlayotgan barcha ilovalarni yopish tavsiya etiladi. Bu o'rnatuvchi dasturga kompyuterni qayta yuklamasdan sistemali fayllarni yangilash imkonini beradi.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Sizni $(^NameDA)ni o'chirish dasturi tabriklaydi" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Bu dastur $(^NameDA)ni sizning kompyuteringizdan o'chiradi.$\r$\n$\r$\nO'chirishdan oldin $(^NameDA) dasturni ishlamayotganligini aniqlang.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Lisenzion kelishuv" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "$(^NameDA) dasturini o'rnatishdan oldin lisenzion kelishuv bilan tanishib chiking." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Agar kelishuv shartlariga rozi bo'lsangiz $\"Qabul kilaman$\" tugmasini bosing.Dasturni o'rnatish uchun,kelishuv shartlarini qabul qilish kerak." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Agar siz kelishuv shartlarini qabul kilsangiz,bayroqchani joylashtiring. Dasturni o'rnatish uchun kelisuv shartlarini qabul qilish kerak. $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kelishuv shartlarini qabul qilsangiz quida taklif etilganlardan birinchi variantni tanlang. Dasturni o'rnatish uchun kelisuv shartlarini qabul qilish kerak. $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Lisenzion kelishuv" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "$(^NameDA)ni o'chirishdan oldin lesinzion kelishuv bilan tanishing." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Agar siz kelishuv shartlariniqabul qilsangiz $\"Qabul qilaman$\" tugmasini bosing. O'chirish uchun kelishuv shartlarini qabul qilishingiz kerak. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Agar shartlarni qabul qilsangiz, bayroqchani o'rnating.O'chirish uchun kelishuv shartlarini qabul qilishingiz kerak. $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Kelishuv shartlarini qabul qilsangiz, taklif etilganlardan birinchi variantni tanlang.O'chirish uchun kelishuv shartlarini qabul qilishingiz kerak. $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Matn bo'icha silgish uchun $\"PageUp$\" va $\"PageDown$\" tugmasidan foydalaning." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "O'rnatilayotgan dastur komponentlari" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "$(^NameDA) dasturning o'zingizga kerak bo'lgan komponentasini tanlang." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Dastur komponentlari" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "$(^NameDA)ning o'chirish kerak bo'lgan komponentlarini tanlang." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Tasvir" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Sichqonchaning kursorini komponent tasvirini o'qish uchun ustiga quying." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Tasvirini o'qish o'chun, komponentni tanlang." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "O'rnatish papkasini tanlash" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "$(^NameDA)ni o'rnatish uchun papka tanlang." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "O'chiriladigan papkani tanlash" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "$(^NameDA) o'chiriladigan papkasini ko'rsating." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Fayllarni ko'chirish" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Biror kuting, $(^NameDA) fayllari ko'chirilmoqda..." + ${LangFileString} MUI_TEXT_FINISH_TITLE "O'rnatish jarayoni tugadi" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "O'rnatish jarayoni muvaffaqiyat bilan tugadi." + ${LangFileString} MUI_TEXT_ABORT_TITLE "O'rnatish jarayoni uzildi" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "O'rnatish jarayoni tugamadi." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "O'chirish" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Biror kutib turing, $(^NameDA) fayllarini o'chirish bajarilmoqda..." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "O'chirish tuganlandi" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Dasturni o'chirish muvaffaqiyatli yakunlandi." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "O'chirish jarayoni uzildi" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "O'chirish to'la bajarilmadi." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "$(^NameDA)ni o'rnatuvci dasturi o'z ishini tugatmoqda" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA)ni o'rnatish bajarildi.$\r$\n$\r$\nO'rnatuvchi dasturdan chiqish uchun $\"Tayor$\" tugmasini bosing." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "$(^NameDA) dasturini o'rnatish jarayonini tugatish uchun Kompyuterni qayta yuklash kerak.Shu ishni bajarishni xoziroq istaysizmi?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "$(^NameDA)ni o'chirish dasturi o'z ishini tugatdi." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) dasturi kompyuteringizdan o'chirildi.$\r$\n$\r$\nO'chirish dasturidan chiqish uchun $\"Tayor$\"tugmasini bosing." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "$(^NameDA) dasturini o'chirishni tugatish uchun kompyuterni qayta yuklash kerak.shu ishni xozir bajarasizmi?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ha, kompyuter hozir qayta yuklansin" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Yo'q, bu ishni keyinroq bajaraman" + ${LangFileString} MUI_TEXT_FINISH_RUN "$(^NameDA) &Ishga tushirilsin" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Readme fayli ko'rsatilsin" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Tayor" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Papka $\"Ïóñê$\" menyusida" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Dastur belgilarini joylashtirish uchun $\"Ïóñê$\" menyusidan papka tanlang." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "$\"Ïóñê$\" menyusidan dastur belgilari joylashadigan papka tanlang. Siz papkaning boshqa ismini kiritishingiz mumkin" + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Belgilar yaratilmasin" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "$(^NameDA)ni o'chirish" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "$(^NameDA)ni kompyuterdan o'chirish." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Haqiqatdan ham siz $(^Name)ni o'rnatishni bekor qilmoqchimisiz?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "$(^Name)ni o'chirish jarayonini bekor qilmoqchisizmi?" +!endif diff --git a/tools/Contrib/Language files/Vietnamese.nlf b/tools/Contrib/Language files/Vietnamese.nlf new file mode 100644 index 0000000..3e90576 --- /dev/null +++ b/tools/Contrib/Language files/Vietnamese.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1066 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1258 +# RTL - anything else than RTL means LTR +- +# Translation by NGUYỄN Mạnh Hùng +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Cài đặt $(^Name) +# ^UninstallCaption +Gỡ bỏ $(^Name) +# ^LicenseSubCaption +: Thỏa thuận Giấy phép +# ^ComponentsSubCaption +: Tùy chọn Cài đặt +# ^DirSubCaption +: Thư mục Cài đặt +# ^InstallingSubCaption +: Cài đặt +# ^CompletedSubCaption +: Hoàn thành +# ^UnComponentsSubCaption +: Tùy chọn Gỡ bỏ +# ^UnDirSubCaption +: Thư mục Gỡ bỏ +# ^ConfirmSubCaption +: Xác nhận +# ^UninstallingSubCaption +: Gỡ bỏ +# ^UnCompletedSubCaption +: Hoàn thành +# ^BackBtn +< &Lùi +# ^NextBtn +&Tiến > +# ^AgreeBtn +Tô&i đồng ý +# ^AcceptBtn +Tô&i chấp thuận các điều khoản của Thỏa thuận Giấy phép +# ^DontAcceptBtn +Tôi &không chấp thuận các điều khoản của Thỏa thuận Giấy phép +# ^InstallBtn +&Cài đặt +# ^UninstallBtn +&Gỡ bỏ +# ^CancelBtn +Hủy bỏ +# ^CloseBtn +Đón&g +# ^BrowseBtn +Du&yệt... +# ^ShowDetailsBtn +&Hiện chi tiết +# ^ClickNext +Nhấn Tiến để tiếp tục. +# ^ClickInstall +Nhấn “Cài đặt” để bắt đầu việc cài đặt. +# ^ClickUninstall +Nhấn “Gỡ bỏ” để bắt đầu việc gỡ bỏ. +# ^Name +Tên +# ^Completed +Hoàn thành +# ^LicenseText +Vui lòng xem xét thỏa thuận giấy phép trước khi cài đặt $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy nhấn “Tôi đồng ý”. +# ^LicenseTextCB +Vui lòng xem xét thỏa thuận giấy phép trước khi cài đặt $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy nhấn ô bên dưới. $_CLICK +# ^LicenseTextRB +Vui lòng xem xét thỏa thuận giấy phép trước khi cài đặt $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy chọn ô đầu tiên bên dưới. $_CLICK +# ^UnLicenseText +Vui lòng xem xét thỏa thuận giấy phép trước khi gỡ bỏ $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy nhấn “Tôi đồng ý”. +# ^UnLicenseTextCB +Vui lòng xem xét thỏa thuận giấy phép trước khi gỡ bỏ $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy nhấn ô bên dưới. $_CLICK +# ^UnLicenseTextRB +Vui lòng xem xét thỏa thuận giấy phép trước khi gỡ bỏ $(^NameDA). Nếu bạn chấp thuận tất cả các điều khoản của thỏa thuận, hãy chọn ô đầu tiên bên dưới. $_CLICK +# ^Custom +Tùy biến +# ^ComponentsText +Chọn thành phần mà bạn muốn cài đặt và không chọn các thành phần mà bạn không muốn cài đặt. $_CLICK +# ^ComponentsSubText1 +Chọn kiểu cài đặt: +# ^ComponentsSubText2_NoInstTypes +Chọn thành phần để cài đặt: +# ^ComponentsSubText2 +Hoặc, chọn thành phần phụ mà bạn muốn cài đặt: +# ^UnComponentsText +Chọn thành phần mà bạn muốn gỡ bỏ và không chọn các thành phần mà bạn không muốn gỡ bỏ. $_CLICK +# ^UnComponentsSubText1 +Chọn kiểu gỡ bỏ: +# ^UnComponentsSubText2_NoInstTypes +Chọn thành phần để gỡ bỏ: +# ^UnComponentsSubText2 +Hoặc, chọn thành phần phụ mà bạn muốn gỡ bỏ: +# ^DirText +Trình trợ lí sẽ cài đặt $(^NameDA) vào thư mục sau. Để cài đặt vào một thư mục khác, hãy nhấn Duyệt để chọn thư mục. $_CLICK +# ^DirSubText +Thư mục đích +# ^DirBrowseText +Chọn thư mục để cài đặt $(^NameDA): +# ^UnDirText +Trình trợ lí sẽ gỡ bỏ $(^NameDA) khỏi thư mục sau. Để gỡ bỏ khỏi một thư mục khác, hãy nhấn Duyệt để chọn thư mục. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Chọn thư mục để gỡ bỏ $(^NameDA): +# ^SpaceAvailable +"Dung lượng hiện có: " +# ^SpaceRequired +"Dung lượng yêu cầu: " +# ^UninstallingText +$(^NameDA) sẽ bị gỡ bỏ khỏi thư mục sau. $_CLICK +# ^UninstallingSubText +Đang gỡ bỏ khỏi: +# ^FileError +Lỗi khi mở tập tin để ghi: \r\n\r\n$0\r\n\r\nNhấn “Hủy bỏ” để ngừng việc cài đặt,\r\n“Thử lại” để thử lần nữa, hoặc\r\n“Bỏ qua” để bỏ qua tập tin này. +# ^FileError_NoIgnore +Lỗi khi mở tập tin để ghi: \r\n\r\n$0\r\n\r\nNhấn “Thử lại” để thử lần nữa, hoặc\r\n“Hủy bỏ” để ngừng việc cài đặt. +# ^CantWrite +"Không thể ghi: " +# ^CopyFailed +Sao chép bị thất bại +# ^CopyTo +"Sao chép vào " +# ^Registering +"Đang đăng kí: " +# ^Unregistering +"Đang hủy đăng kí: " +# ^SymbolNotFound +"Không thể tìm thấy biểu tượng: " +# ^CouldNotLoad +"Không thể nạp: " +# ^CreateFolder +"Tạo thư mục: " +# ^CreateShortcut +"Tạo lối tắt: " +# ^CreatedUninstaller +"Tạo trình gỡ bỏ: " +# ^Delete +"Xóa tập tin: " +# ^DeleteOnReboot +"Xóa khi khởi động lại: " +# ^ErrorCreatingShortcut +"Lỗi khi tạo lối tắt: " +# ^ErrorCreating +"Lỗi khi tạo: " +# ^ErrorDecompressing +Lỗi khi giải nén dữ liệu! Có thể trình cài đặt đã bị hỏng? +# ^ErrorRegistering +Lỗi khi đăng kí DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Thực thi: " +# ^Extract +"Trích xuất: " +# ^ErrorWriting +"Trích xuất: lôi khi ghi vào tập tin " +# ^InvalidOpcode +Trình cài đặt bị hỏng: mã tác vụ bất hợp lệ +# ^NoOLE +"Không có OLE cho: " +# ^OutputFolder +"Thư mục đầu ra: " +# ^RemoveFolder +"Xóa thư mục: " +# ^RenameOnReboot +"Đổi tên khi khởi động lại: " +# ^Rename +"Đổi tên: " +# ^Skipped +"Đã bỏ qua: " +# ^CopyDetails +Sao chép Chi tiết vào Clipboard +# ^LogInstall +Lưu kí quá trình cài đặt +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Vietnamese.nsh b/tools/Contrib/Language files/Vietnamese.nsh new file mode 100644 index 0000000..a9468c9 --- /dev/null +++ b/tools/Contrib/Language files/Vietnamese.nsh @@ -0,0 +1,129 @@ +;Language: Vietnamese (1066) +;By NGUYỄN Mạnh Hùng + +!insertmacro LANGFILE "Vietnamese" = "Tiếng Việt" "Tieng Viet" + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Chào mừng đến với Trợ lí Cài đặt $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Trình trợ lí sẽ hướng dẫn bạn việc cài đặt $(^NameDA).$\r$\n$\r$\nBạn nên đóng tất cả các chương trình khác trước khi bắt đầu cài đặt. Điều này có thể giúp cập nhật các tập tin hệ thống mà không cần phải khởi động lại máy tính.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Chào mừng đến với Trợ lí Gỡ bỏ $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Trình trợ lí sẽ hướng dẫn bạn việc gỡ bỏ $(^NameDA).$\r$\n$\r$\nTrước khi bắt đầu gỡ bỏ, hãy chắc chắn rằng $(^NameDA) đang không chạy.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Thỏa thuận Giấy phép" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Vui lòng xem xét các điều khoản giấy phép trước khi cài đặt $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy nhấn “Tôi đồng ý” để tiếp tục. Bạn phải chấp thuận bản thỏa thuận để cài đặt $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy nhấn ô bên dưới. Bạn phải chấp thuận bản thỏa thuận để cài đặt $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy chọn ô đầu tiên bên dưới. Bạn phải chấp thuận bản thỏa thuận để cài đặt $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Thỏa thuận Giấy phép" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Vui lòng xem xét các điều khoản giấy phép trước khi gỡ bỏ $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy nhấn “Tôi đồng ý” để tiếp tục. Bạn phải chấp thuận bản thỏa thuận để gỡ bỏ $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy nhấn ô bên dưới. Bạn phải chấp thuận bản thỏa thuận để gỡ bỏ $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Nếu bạn chấp thuận các điều khoản của thỏa thuận, hãy chọn ô đầu tiên bên dưới. Bạn phải chấp thuận bản thỏa thuận để gỡ bỏ $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Ấn Page Down để xem phần còn lại của thỏa thuận." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Chọn thành phần" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Chọn các tính năng của $(^NameDA) mà bạn muốn cài đặt." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Chọn thành phần" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Chọn các tính năng của $(^NameDA) mà bạn muốn gỡ bỏ." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Mô tả" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Rê chuột lên trên một thành phần để thấy mô tả của nó." + !else + #FIXME:MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Chọn thư mục cài đặt" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Chọn thư mục để cài đặt $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Chọn thư mục gỡ bỏ" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Chọn thư mục để gỡ bỏ $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Cài đặt" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Vui lòng đợi trong khi $(^NameDA) đang được cài đặt." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Cài đặt hoàn tất" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Việc cài đặt đã hoàn tất thành công." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Cài đặt bị hủy" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Việc cài đặt không hoàn tất thành công." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Gỡ bỏ" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Vui lòng đợi trong khi $(^NameDA) đang được gỡ bỏ." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Gỡ bỏ hoàn tất" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Việc gỡ bỏ đã hoàn tất thành công." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Gỡ bỏ bị hủy" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Việc gỡ bỏ không hoàn tất thành công." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Hoàn tất Cài đặt $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) đã được cài đặt vào máy tính của bạn.$\r$\n$\r$\nNhấn “Hoàn thành” để đóng Trình trợ lí." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Máy tính của bạn phải được khởi động lại để hoàn tất việc cài đặt $(^NameDA). Bạn có muốn khởi động lại ngay không?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Hoàn tất Gỡ bỏ $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) đã được gỡ bỏ khỏi máy tính của bạn.$\r$\n$\r$\nNhấn “Hoàn thành” để đóng Trình trợ lí." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Máy tính của bạn phải được khởi động lại để hoàn tất việc gỡ bỏ $(^NameDA). Bạn có muốn khởi động lại ngay không?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Khởi động lại ngay" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Tôi muốn khởi động lại sau" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Chạy $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "Hiện &Readme" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Hoàn thành" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Chọn thư mục Trình đơn Start" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Chọn một thư mục trên Trình đơn Start để tạo lối tắt cho $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Chọn thư mục trên Trình đơn Start mà bạn muốn tạo lối tắt cho chương trình. Bạn cũng có thể nhập tên để tạo thư mục mới." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Không tạo lối tắt" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Gỡ bỏ $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Gỡ bỏ $(^NameDA) khỏi máy tính của bạn." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Bạn có thật sự muốn thoát trình Cài đặt $(^Name) không?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Bạn có thật sự muốn thoát trình Gỡ bỏ $(^Name) không?" +!endif + +!ifdef MULTIUSER_INSTALLMODEPAGE + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Chọn người dùng" + ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Chọn người dùng mà bạn muốn cài đặt $(^NameDA)." + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Chọn giữa việc cài đặt $(^NameDA) cho riêng bạn hoặc cho tất cả người dùng của máy tính này. $(^ClickNext)" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Cài đặt cho bất kì người nào sử dụng máy tính này" + ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Chỉ cài đặt cho riêng tôi" +!endif diff --git a/tools/Contrib/Language files/Welsh.nlf b/tools/Contrib/Language files/Welsh.nlf new file mode 100644 index 0000000..516e1e9 --- /dev/null +++ b/tools/Contrib/Language files/Welsh.nlf @@ -0,0 +1,191 @@ +# Header, don't edit +NLF v6 +# Start editing here +# Language ID +1106 +# Font and size - dash (-) means default +- +- +# Codepage - dash (-) means ASCII code page +1252 +# RTL - anything else than RTL means LTR +- +# Translation by Rhoslyn Prys, Meddal.com +# ^Branding +Nullsoft Install System %s +# ^SetupCaption +Rhaglen Osod $(^Name) +# ^UninstallCaption +Rhaglen Dadosod $(^Name) +# ^LicenseSubCaption +: Cytundeb Trwyddedu +# ^ComponentsSubCaption +: Dewisiadau Gosod +# ^DirSubCaption +: Ffolder Gosod +# ^InstallingSubCaption +: Gosod +# ^CompletedSubCaption +: Cwblhawyd +# ^UnComponentsSubCaption +: Dewisiadau Dadosod +# ^UnDirSubCaption +: Ffolder Dadosod +# ^ConfirmSubCaption +: Cadarnhad +# ^UninstallingSubCaption +: Dadosod +# ^UnCompletedSubCaption +: Cwblhawyd +# ^BackBtn +< &Nôl +# ^NextBtn +&Nesaf > +# ^AgreeBtn +&Cytuno +# ^AcceptBtn +Rwy'n &derbyn Amodau'r Drwydded +# ^DontAcceptBtn +Rwy'n &gwrthod Amodau'r Drwydded +# ^InstallBtn +&Gosod +# ^UninstallBtn +&Dadosod +# ^CancelBtn +Diddymu +# ^CloseBtn +C&au +# ^BrowseBtn +&Pori... +# ^ShowDetailsBtn +&Dangos manylion +# ^ClickNext +Cliciwch Nesaf i barhau. +# ^ClickInstall +Cliciwch Gosod i gychwyn gosod. +# ^ClickUninstall +Cliciwch Dadosod i gychwyn dadosod. +# ^Name +Enw +# ^Completed +Cwblhawyd +# ^LicenseText +Darllenwch y cytundeb trwyddedu cyn gosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, cliciwch Cytuno. +# ^LicenseTextCB +Darllenwch y cytundeb trwyddedu cyn gosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, cliciwch y blwch ticio isod. $_CLICK +# ^LicenseTextRB +Darllenwch y cytundeb trwyddedu cyn gosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, ticiwch y dewis cyntaf isod. $_CLICK +# ^UnLicenseText +Darllenwch y cytundeb trwyddedu cyn dadosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, cliciwch Cytuno. +# ^UnLicenseTextCB +Darllenwch y cytundeb trwyddedu cyn dadosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, cliciwch y blwch ticio isod. $_CLICK +# ^UnLicenseTextRB +Darllenwch y cytundeb trwyddedu cyn dadosod $(^NameDA). Os ydych yn derbyn holl amodau'r cytundeb, ticiwch y dewis cyntaf isod. $_CLICK +# ^Custom +Addasu +# ^ComponentsText +Ticiwch y cydrannau rydych am eu gosod a dad-dicio'r cydrannau nad ydych am eu gosod. $_CLICK +# ^ComponentsSubText1 +Dewis y math o osod: +# ^ComponentsSubText2_NoInstTypes +Dewis cydrannau i'w gosod: +# ^ComponentsSubText2 +Neu, ddewis y cydrannau ychwanegol i'w gosod: +# ^UnComponentsText +Ticiwch y cydrannau rydych am eu dadosod a dad-dicio'r cydrannau nad ydych am eu dadosod. $_CLICK +# ^UnComponentsSubText1 +Dewis y math o ddadosod: +# ^UnComponentsSubText2_NoInstTypes +Dewis cydrannau i'w dadosod: +# ^UnComponentsSubText2 +Neu, ddewis y cydrannau ychwanegol i'w dadosod: +# ^DirText +Bydd y Rhaglen Osod yn gosod $(^NameDA) yn y ffolder canlynol. I'w osod mewn ffolder gwahanol, cliciwch Pori a dewis ffolder arall. $_CLICK +# ^DirSubText +Ffolder Cyrchfan +# ^DirBrowseText +Dewis y ffolder i osod $(^NameDA) ynddo: +# ^UnDirText +Bydd y Rhegen Osod yn dadosod $(^NameDA) o'r ffolder canlynol. I ddadosod o ffolder gwahanol, cliciwch Pori a dewis ffolder arall. $_CLICK +# ^UnDirSubText +"" +# ^UnDirBrowseText +Dewis ffolder i ddadosod $(^NameDA) ohono: +# ^SpaceAvailable +"Lle ar gael: " +# ^SpaceRequired +"Lle angenrheidiol: " +# ^UninstallingText +Bydd $(^NameDA) yn cael ei ddadosod o'r ffolder canlynol. $_CLICK +# ^UninstallingSubText +Dadosod o: +# ^FileError +Gwall agor ffeil i'w hysgrifennu: \r\n\r\n$0\r\n\r\nCliciwch Atal i atal y gosod,\r\nEto i geisio eto, neu\r\nAnwybyddu i hepgor y ffeil. +# ^FileError_NoIgnore +Gwall agor ffeil i'w hysgrifennu: \r\n\r\n$0\r\n\r\nCliciwch Eto i geisio eto, neu\r\nDiddymu i atal y gosod. +# ^CantWrite +"Methu ysgrifennu: " +# ^CopyFailed +Methu Copïo +# ^CopyTo +"Copïo i " +# ^Registering +"Cofrestru: " +# ^Unregistering +"Dadgofrestru: " +# ^SymbolNotFound +"Methu canfod symbol: " +# ^CouldNotLoad +"Methu llwytho: " +# ^CreateFolder +"Creu ffolder: " +# ^CreateShortcut +"Creu llwybr byr: " +# ^CreatedUninstaller +"Creu dadosodwr: " +# ^Delete +"Dileu ffeil: " +# ^DeleteOnReboot +"Dileu wrth ailgychwyn: " +# ^ErrorCreatingShortcut +"Gwall wrth greu llwybr byr: " +# ^ErrorCreating +"Gwall wrth greu: " +# ^ErrorDecompressing +Gwall wrth ddatgywasgu data! Gosodwr llwgr? +# ^ErrorRegistering +Gwall cofrestru DLL +# ^ExecShell +"ExecShell: " +# ^Exec +"Gweithredu: " +# ^Extract +"Echdynnu: " +# ^ErrorWriting +"Echdynnu: gwall ysgrifennu i ffeil " +# ^InvalidOpcode +Gosodwr llwgr: opcode annilys +# ^NoOLE +"Dim OLE ar gyfer: " +# ^OutputFolder +"Ffolder allbwn: " +# ^RemoveFolder +"Tynnu ffolder: " +# ^RenameOnReboot +"Ailenwi wrth ailgychwyn: " +# ^Rename +"Ailenwi: " +# ^Skipped +"Hepgor: " +# ^CopyDetails +Copïo Manylion i'r Clipfwrdd +# ^LogInstall +Cofnodi'r brosed gosod +# ^Byte +B +# ^Kilo + K +# ^Mega + M +# ^Giga + G diff --git a/tools/Contrib/Language files/Welsh.nsh b/tools/Contrib/Language files/Welsh.nsh new file mode 100644 index 0000000..1aeabf1 --- /dev/null +++ b/tools/Contrib/Language files/Welsh.nsh @@ -0,0 +1,121 @@ +;Language: Welsh (1106) +;By Rhoslyn Prys, Meddal.com + +!insertmacro LANGFILE "Welsh" = "Cymraeg" = + +!ifdef MUI_WELCOMEPAGE + ${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Croeso i Ddewin Gosod $(^NameDA)" + ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Bydd y dewin yn eich arwain drwy osodiad $(^NameDA).$\r$\n$\r$\nCaewch pob rhaglen cyn cychwyn y rhaglen osod. Bydd hyn yn ei gwneud yn bosibl i ddiweddaru'r ffeiliau system berthnasol heb fod angen ailgychwyn eich cyfrifiadur.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_UNWELCOMEPAGE + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Croeso i Ddewin Dadosod $(^NameDA)" + ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Bydd y dewin yn eich arwain drwy ddadosod $(^NameDA).$\r$\n$\r$\nCyn cychwyn dadosod, gwnewch yn siwr nad yw $(^NameDA) yn rhedeg.$\r$\n$\r$\n$_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE + ${LangFileString} MUI_TEXT_LICENSE_TITLE "Cytundeb Trwyddedu" + ${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Darllenwch amodau'r drwydded cyn gosod $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Os ydych yn derbyn amodau'r cytundeb, cliciwch Cytuno i barhau. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn gosod $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Os ydych yn derbyn amodau'r cytundeb, cliciwch y blwch ticio isod. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn gosod $(^NameDA). $_CLICK" + ${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Os ydych yn derbyn amodau'r cytundeb, cliciwch y dewis cyntaf isod. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn gosod $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_UNLICENSEPAGE + ${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Cytundeb Trwyddedu" + ${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Darllenwch amodau'r drwydded cyn dadosod $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Os ydych yn derbyn amodau'r cytundeb, cliciwch Cytuno i barhau. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn dadosod $(^NameDA)." + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Os ydych yn derbyn amodau'r cytundeb, cliciwch y blwch ticio isod. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn dadosod $(^NameDA). $_CLICK" + ${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Os ydych yn derbyn amodau'r cytundeb, cliciwch y dewis cyntaf isod. Mae'n rhaid i chi dderbyn amodau'r cytundeb er mwyn dadosod $(^NameDA). $_CLICK" +!endif + +!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE + ${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Pwyswch Page Down i ddarllen gweddill y cytundeb." +!endif + +!ifdef MUI_COMPONENTSPAGE + ${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Dewis Cydrannau" + ${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Dewis pa nodweddion o $(^NameDA) rydych am eu gosod." +!endif + +!ifdef MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Dewis Cydrannau" + ${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Dewis pa nodweddion o $(^NameDA) i'w dadoso." +!endif + +!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Disgrifiad" + !ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Gosod eich llygoden dros gydran i weld ei ddisgrifiad." + !else + ${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Dewis cydran i weld ei ddisgrifiad." + !endif +!endif + +!ifdef MUI_DIRECTORYPAGE + ${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Dewis Lleoliad Gosod" + ${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Dewis y ffolder i osod $(^NameDA)." +!endif + +!ifdef MUI_UNDIRECTORYPAGE + ${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Dewis Lleoliad Dadosod" + ${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Dewis y ffolder i ddadosod $(^NameDA)." +!endif + +!ifdef MUI_INSTFILESPAGE + ${LangFileString} MUI_TEXT_INSTALLING_TITLE "Gosod" + ${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Arhoswch tra fo $(^NameDA) yn cael ei osod." + ${LangFileString} MUI_TEXT_FINISH_TITLE "Cwblhawyd y Gosod" + ${LangFileString} MUI_TEXT_FINISH_SUBTITLE "Mae'r Gosod wedi ei gwblhau'n llwyddiannus." + ${LangFileString} MUI_TEXT_ABORT_TITLE "Ataliwyd y Gosod" + ${LangFileString} MUI_TEXT_ABORT_SUBTITLE "Methwyd â chwblhau'r gosod yn llwyddiannus." +!endif + +!ifdef MUI_UNINSTFILESPAGE + ${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "Dadosod" + ${LangFileString} MUI_UNTEXT_UNINSTALLING_SUBTITLE "Arhoswch tra bo $(^NameDA) yn cael ei ddadosod." + ${LangFileString} MUI_UNTEXT_FINISH_TITLE "Cwblhawyd y Dadosod" + ${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Mae'r Dadosod wedi ei gwblhau'n llwyddiannus." + ${LangFileString} MUI_UNTEXT_ABORT_TITLE "Ataliwyd y Dadosod" + ${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Methwyd â chwblhau'r dadosod yn llwyddiannus." +!endif + +!ifdef MUI_FINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Cwblhau Dewin Gosod $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "Mae $(^NameDA) wedi cael ei osod ar eich cyfrifiadur.$\r$\n$\r$\nCliciwch Gorffen i gau'r dewin." + ${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Rhaid ailgychwyn eich cyfrifiadur i gwblhau gosod $(^NameDA). Hoffech chi ailgychwyn?" +!endif + +!ifdef MUI_UNFINISHPAGE + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Cwblhau Dewin Dadosod $(^NameDA)" + ${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "Mae $(^NameDA) wedi ei ddadosod oddi ar eich cyfrifiadur.$\r$\n$\r$\nCliciwch Gorffen i gau'r dewin." + ${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Rhaid ailgychwyn eich cyfrifiadur i gwblhau gosod $(^NameDA). Hoffech chi ailgychwyn?" +!endif + +!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE + ${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Ailgychwyn" + ${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Rwyf am ailgychwyn yn hwyrach" + ${LangFileString} MUI_TEXT_FINISH_RUN "&Rhedeg $(^NameDA)" + ${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Dangos Darllenfi" + ${LangFileString} MUI_BUTTONTEXT_FINISH "&Gorffen" +!endif + +!ifdef MUI_STARTMENUPAGE + ${LangFileString} MUI_TEXT_STARTMENU_TITLE "Dewis Ffolder Dewislen Cychwyn" + ${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Dewis ffolder Dewislen Cychwyn ar gyfer llwybrau byr $(^NameDA)." + ${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Dewis ffolder Dewislen Cychwyn i greu llwybrau byr y rhaglen. Gallwch roi enw i greu ffolder newydd." + ${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Peidio creu llwybrau byr" +!endif + +!ifdef MUI_UNCONFIRMPAGE + ${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Dadosod $(^NameDA)" + ${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Tynnu $(^NameDA) oddiar eich cyfrifiadur." +!endif + +!ifdef MUI_ABORTWARNING + ${LangFileString} MUI_TEXT_ABORTWARNING "Ydych chi'n si?r eich bod am adael Rhaglen Osod $(^Name)?" +!endif + +!ifdef MUI_UNABORTWARNING + ${LangFileString} MUI_UNTEXT_ABORTWARNING "Ydych chi'n siwr eich bod am adael Rhaglen Dadosod $(^Name)?" +!endif diff --git a/tools/Contrib/Modern UI 2/Deprecated.nsh b/tools/Contrib/Modern UI 2/Deprecated.nsh new file mode 100644 index 0000000..85339f2 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Deprecated.nsh @@ -0,0 +1,86 @@ +/* + +NSIS Modern User Interface +Deprecated code - display warnings + +*/ + + +!macro MUI_LEGACY_MAP_NOSTRETCH NAME R + !if "${R}" != "" + !ifdef ${NAME}NOSTRETCH + !define /IfNDef ${NAME}STRETCH NoStretchNoCropNoAlign + !endif + !else + !insertmacro ${__MACRO__} ${NAME}BITMAP_ 1 + !insertmacro ${__MACRO__} ${NAME}BITMAP_RTL_ 1 + !insertmacro ${__MACRO__} ${NAME}UNBITMAP_ 1 + !insertmacro ${__MACRO__} ${NAME}UNBITMAP_RTL_ 1 + !endif +!macroend + + +;-------------------------------- +;InstallOptions + +!define INSTALLOPTIONS_ERROR "MUI_INSTALLOPTIONS_* macros are no longer a part of MUI2. Include InstallOptions.nsh and use INSTALLOPTIONS_* macros instead. It is also recommended to upgrade to nsDialogs." + +!macro MUI_INSTALLOPTIONS_EXTRACT FILE + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_EXTRACT_AS FILE FILENAME + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_DISPLAY FILE + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_DISPLAY_RETURN FILE + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_INITDIALOG FILE + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_SHOW + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_SHOW_RETURN + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_READ VAR FILE SECTION KEY + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE + + !error "${INSTALLOPTIONS_ERROR}" + +!macroend + +!macro MUI_RESERVEFILE_INSTALLOPTIONS + + !error `MUI_RESERVEFILE_INSTALLOPTIONS is no longer supported as InstallOptions is no longer used by MUI2. Instead, use "ReserveFile /plugin InstallOptions.dll". It is also recommended to upgrade to nsDialogs.` + +!macroend diff --git a/tools/Contrib/Modern UI 2/Interface.nsh b/tools/Contrib/Modern UI 2/Interface.nsh new file mode 100644 index 0000000..ee858bd --- /dev/null +++ b/tools/Contrib/Modern UI 2/Interface.nsh @@ -0,0 +1,363 @@ +/* + +NSIS Modern User Interface +Interface code for all pages + +*/ + +;-------------------------------- +;Variables + +Var mui.Header.Text +Var mui.Header.Text.Font +Var mui.Header.SubText +Var mui.Header.Background +Var mui.Header.Image + +Var mui.Branding.Text +Var mui.Branding.Background + +Var mui.Line.Standard +Var mui.Line.FullWindow + +Var mui.Button.Next +Var mui.Button.Cancel +Var mui.Button.Back + + +;-------------------------------- +;General interface settings + +!macro MUI_INTERFACE + + !ifndef MUI_INTERFACE + + !define MUI_INTERFACE + + ;These values are set after the interface settings in the script, + ;so the script itself can override all values. + + ;Default interface settings in nsisconf.nsh + !ifdef MUI_INSERT_NSISCONF + !insertmacro MUI_NSISCONF + !endif + + ;Default interface settings + !insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe" + !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe" + !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe" + !insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" + !insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" + !insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF" + !insertmacro MUI_DEFAULT MUI_TEXTCOLOR "000000" + + ;Map *_NOSTRETCH legacy define to the correct *_STRETCH value + !verbose push 2 + !insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_HEADERIMAGE_ "" + !insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_WELCOMEFINISHPAGE_ "" + !insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_UNWELCOMEFINISHPAGE_ "" + !verbose pop + + ;Default header images + !ifdef MUI_HEADERIMAGE + + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP_STRETCH "FitControl" + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH} + + !ifndef MUI_HEADERIMAGE_UNBITMAP + !define MUI_HEADERIMAGE_UNBITMAP "${MUI_HEADERIMAGE_BITMAP}" + !insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH} + !endif + + !if "${MUI_HEADERIMAGE_BITMAP}" == "" + !error "Invalid MUI_HEADERIMAGE_BITMAP" + !endif + !if "${MUI_HEADERIMAGE_UNBITMAP}" == "" + !error "Invalid MUI_HEADERIMAGE_UNBITMAP" + !endif + + !ifdef MUI_HEADERIMAGE_BITMAP_RTL + !ifndef MUI_HEADERIMAGE_UNBITMAP_RTL + !define MUI_HEADERIMAGE_UNBITMAP_RTL "${MUI_HEADERIMAGE_BITMAP_RTL}" + !insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_RTL_STRETCH} + !endif + + !if "${MUI_HEADERIMAGE_BITMAP_RTL}" == "" + !error "Invalid MUI_HEADERIMAGE_BITMAP_RTL" + !endif + !if "${MUI_HEADERIMAGE_UNBITMAP_RTL}" == "" + !error "Invalid MUI_HEADERIMAGE_UNBITMAP_RTL" + !endif + !endif + + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_UNBITMAP_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH} + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_RTL_STRETCH} + + !endif + + ;Default texts + !insertmacro MUI_DEFAULT MUI_ABORTWARNING_TEXT "$(MUI_TEXT_ABORTWARNING)" + !insertmacro MUI_DEFAULT MUI_UNABORTWARNING_TEXT "$(MUI_UNTEXT_ABORTWARNING)" + + ;Apply settings + + XPStyle On ;XP style setting in manifest resource + + ;Dialog resources + ChangeUI all "${MUI_UI}" + !ifdef MUI_HEADERIMAGE + !ifndef MUI_HEADERIMAGE_RIGHT + ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE}" + !else + ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE_RIGHT}" + !endif + !endif + + ;Icons + Icon "${MUI_ICON}" + UninstallIcon "${MUI_UNICON}" + + !endif + +!macroend + + +;-------------------------------- +;Abort warning message box + +!macro MUI_ABORTWARNING + + !ifdef MUI_ABORTWARNING_CANCEL_DEFAULT + MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_ABORTWARNING_TEXT}" IDYES mui.Quit + !else + MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_ABORTWARNING_TEXT}" IDYES mui.Quit + !endif + + Abort + mui.Quit: + +!macroend + +!macro MUI_UNABORTWARNING + + !ifdef MUI_UNABORTWARNING_CANCEL_DEFAULT + MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_UNABORTWARNING_TEXT}" IDYES mui.Quit + !else + MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_UNABORTWARNING_TEXT}" IDYES mui.Quit + !endif + + Abort + mui.Quit: + +!macroend + + +;-------------------------------- +;Initialization of GUI + +!macro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO MACRO + + !ifdef MUI_HEADERIMAGE_RIGHT + !ifndef MUI_OPTIMIZE_ALWAYSLTR ; Undocumented + ${if} $(^RTL) == 1 + !insertmacro ${MACRO} $mui.Header.Image "${PATH}" Left Leak + ${Else} + !insertmacro ${MACRO} $mui.Header.Image "${PATH}" Right Leak + ${EndIf} + !else + !insertmacro ${MACRO} $mui.Header.Image "${PATH}" Right Leak + !endif + !else + !insertmacro ${MACRO} $mui.Header.Image "${PATH}" Auto Leak + !endif + +!macroend +!macro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE UN RTL IMGRESID PATH + + GetDlgItem $mui.Header.Image $HWNDPARENT ${IMGRESID} ; This variable is not used by every mode but we have to reference it to avoid a compiler warning. + + !if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "NoStretchNoCropNoAlign" + + SetBrandingImage /IMGID=${IMGRESID} "${PATH}" + + !else if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "NoStretchNoCrop" + + !insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO \ + MUI_LOADANDXALIGNIMAGE + + !else if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "AspectFitHeight" + + !insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO \ + MUI_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT + + !else + + !if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" != "FitControl" + !warning 'MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH set to unknown value, defaulting to FitControl' + !endif + SetBrandingImage /IMGID=${IMGRESID} /RESIZETOFIT "${PATH}" + + !endif + +!macroend + +!macro MUI_HEADERIMAGE_INIT UN IMGRESID + + ;Load and display header image + + !ifdef MUI_HEADERIMAGE + + InitPluginsDir + + !ifdef MUI_HEADERIMAGE_${UN}BITMAP_RTL + ${if} $(^RTL) == 1 + + File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UN}BITMAP_RTL}" + !pragma verifyloadimage "${MUI_HEADERIMAGE_${UN}BITMAP_RTL}" + !insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE "${UN}" "_RTL" ${IMGRESID} "$PLUGINSDIR\modern-header.bmp" + + ${else} + !endif + + File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UN}BITMAP}" + !pragma verifyloadimage "${MUI_HEADERIMAGE_${UN}BITMAP}" + !insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE "${UN}" "" ${IMGRESID} "$PLUGINSDIR\modern-header.bmp" + + !ifdef MUI_HEADERIMAGE_${UN}BITMAP_RTL + ${endif} + !endif + + !endif + +!macroend + +!macro MUI_GUIINIT_OUTERDIALOG UNINSTALLER + + ;Initialize outer dialog (fonts & colors) + + ;Header + GetDlgItem $mui.Header.Text $HWNDPARENT 1037 + CreateFont $mui.Header.Text.Font "$(^Font)" "$(^FontSize)" "700" + SendMessage $mui.Header.Text ${WM_SETFONT} $mui.Header.Text.Font 0 + + GetDlgItem $mui.Header.SubText $HWNDPARENT 1038 + + !ifndef MUI_HEADER_TRANSPARENT_TEXT + SetCtlColors $mui.Header.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + SetCtlColors $mui.Header.SubText "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !else + SetCtlColors $mui.Header.Text "${MUI_TEXTCOLOR}" "transparent" + SetCtlColors $mui.Header.SubText "${MUI_TEXTCOLOR}" "transparent" + !endif + + ;Header image + !insertmacro MUI_HEADERIMAGE_INIT "${UNINSTALLER}" 1046 + + ;Header background + GetDlgItem $mui.Header.Background $HWNDPARENT 1034 + SetCtlColors $mui.Header.Background "" "${MUI_BGCOLOR}" + + ;Header icon image background + !ifndef MUI_HEADERIMAGE + GetDlgItem $mui.Header.Image $HWNDPARENT 1039 + SetCtlColors $mui.Header.Image "" "${MUI_BGCOLOR}" + !endif + + ;Branding text + GetDlgItem $mui.Branding.Background $HWNDPARENT 1028 + SetCtlColors $mui.Branding.Background /BRANDING + GetDlgItem $mui.Branding.Text $HWNDPARENT 1256 + SetCtlColors $mui.Branding.Text /BRANDING + SendMessage $mui.Branding.Text ${WM_SETTEXT} 0 "STR:$(^Branding) " + + ;Lines + GetDlgItem $mui.Line.Standard $HWNDPARENT 1035 + GetDlgItem $mui.Line.FullWindow $HWNDPARENT 1045 + + ;Buttons + GetDlgItem $mui.Button.Next $HWNDPARENT 1 + GetDlgItem $mui.Button.Cancel $HWNDPARENT 2 + GetDlgItem $mui.Button.Back $HWNDPARENT 3 + +!macroend + + +;-------------------------------- +;Interface functions + +!macro MUI_FUNCTION_GUIINIT + + Function .onGUIInit + + !insertmacro MUI_GUIINIT_OUTERDIALOG "" + + !ifdef MUI_PAGE_FUNCTION_GUIINIT + Call "${MUI_PAGE_FUNCTION_GUIINIT}" + !endif + + !ifdef MUI_CUSTOMFUNCTION_GUIINIT + Call "${MUI_CUSTOMFUNCTION_GUIINIT}" + !endif + + FunctionEnd + +!macroend + +!macro MUI_UNFUNCTION_GUIINIT + + Function un.onGUIInit + + !insertmacro MUI_GUIINIT_OUTERDIALOG UN + + !ifdef MUI_UNPAGE_FUNCTION_GUIINIT + Call "${MUI_UNPAGE_FUNCTION_GUIINIT}" + !endif + + !ifdef MUI_CUSTOMFUNCTION_UNGUIINIT + Call "${MUI_CUSTOMFUNCTION_UNGUIINIT}" + !endif + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_ABORTWARNING + + Function .onUserAbort + + !ifdef MUI_PAGE_FUNCTION_ABORTWARNING + Call ${MUI_PAGE_FUNCTION_ABORTWARNING} + !endif + + !ifdef MUI_ABORTWARNING + !insertmacro MUI_ABORTWARNING + !endif + + !ifdef MUI_CUSTOMFUNCTION_ABORT + Call "${MUI_CUSTOMFUNCTION_ABORT}" + !endif + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_UNABORTWARNING + + Function un.onUserAbort + + !ifdef MUI_UNPAGE_FUNCTION_ABORTWARNING + Call ${MUI_UNPAGE_FUNCTION_ABORTWARNING} + !endif + + !ifdef MUI_UNABORTWARNING + !insertmacro MUI_UNABORTWARNING + !endif + + !ifdef MUI_CUSTOMFUNCTION_UNABORT + Call "${MUI_CUSTOMFUNCTION_UNABORT}" + !endif + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Localization.nsh b/tools/Contrib/Modern UI 2/Localization.nsh new file mode 100644 index 0000000..1f02b18 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Localization.nsh @@ -0,0 +1,198 @@ +/* + +NSIS Modern User Interface +Localization + +*/ + +;-------------------------------- +;Variables + +!macro MUI_LANGDLL_VARIABLES + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + !ifndef MUI_LANGDLL_REGISTRY_VARIABLES + !define MUI_LANGDLL_REGISTRY_VARIABLES + + ;/GLOBAL because the macros are included in a function + Var /GLOBAL mui.LangDLL.RegistryLanguage + + !endif + !endif + +!macroend + + +;-------------------------------- +;Include language files + +!macro MUI_LANGUAGEEX LangDir NLFID + + !verbose push ${MUI_VERBOSE} + + !ifndef MUI_PAGE_UNINSTALLER_PREFIX + !ifndef MUI_DISABLE_INSERT_LANGUAGE_AFTER_PAGES_WARNING ; Define this to avoid the warning if you only have custom pages + !warning "MUI_LANGUAGE[EX] should be inserted after the MUI_[UN]PAGE_* macros" + !endif + !endif + + !insertmacro MUI_INSERT + + ;Include a language + LoadLanguageFile "${LangDir}\${NLFID}.nlf" + + ;Include MUI language file + !insertmacro LANGFILE_INCLUDE_WITHDEFAULT \ + "${LangDir}\${NLFID}.nsh" "${NSISDIR}\Contrib\Language files\English.nsh" + + ;Add language to list of languages for selection dialog + !define /ifndef MUI_LANGDLL_LANGUAGES "" + !define /redef MUI_LANGDLL_LANGUAGES \ + `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" ${MUI_LANGDLL_LANGUAGES}` + !define /ifndef MUI_LANGDLL_LANGUAGES_CP "" + !define /redef MUI_LANGDLL_LANGUAGES_CP \ + `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" "${LANG_${NLFID}_CP}" ${MUI_LANGDLL_LANGUAGES_CP}` + + !verbose pop + +!macroend + +!macro MUI_LANGUAGE NLFID + + !verbose push ${MUI_VERBOSE} + + !insertmacro MUI_LANGUAGEEX "${NSISDIR}\Contrib\Language files" "${NLFID}" + + !verbose pop + +!macroend + + +;-------------------------------- +;Language selection + +!macro MUI_LANGDLL_DISPLAY + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifndef MUI_LANGDLL_LANGUAGES + !warning "MUI_LANGDLL_DISPLAY should only be used after inserting the MUI_LANGUAGE macro(s)" + !endif + + !insertmacro MUI_LANGDLL_VARIABLES + + !insertmacro MUI_DEFAULT MUI_LANGDLL_WINDOWTITLE "Installer Language" + !insertmacro MUI_DEFAULT MUI_LANGDLL_INFO "Please select a language." + + !ifdef MUI_LANGDLL_REGISTRY_VARIABLES + + ReadRegStr $mui.LangDLL.RegistryLanguage "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" + + ${if} $mui.LangDLL.RegistryLanguage != "" + ;Set default language to registry language + StrCpy $LANGUAGE $mui.LangDLL.RegistryLanguage + ${endif} + + !endif + + !ifdef NSIS_CONFIG_SILENT_SUPPORT + ${unless} ${Silent} + !endif + + !ifndef MUI_LANGDLL_ALWAYSSHOW + !ifdef MUI_LANGDLL_REGISTRY_VARIABLES + ${if} $mui.LangDLL.RegistryLanguage == "" + !endif + !endif + + ;Show language selection dialog + !ifdef MUI_LANGDLL_ALLLANGUAGES + LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" A ${MUI_LANGDLL_LANGUAGES} "" + !else + LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" AC ${MUI_LANGDLL_LANGUAGES_CP} "" + !endif + + Pop $LANGUAGE + ${if} $LANGUAGE == "cancel" + Abort + ${endif} + + !ifndef MUI_LANGDLL_ALWAYSSHOW + !ifdef MUI_LANGDLL_REGISTRY_VARIABLES + ${endif} + !endif + !endif + + + !ifdef NSIS_CONFIG_SILENT_SUPPORT + ${endif} + !endif + + !verbose pop + +!macroend + +!macro MUI_LANGDLL_SAVELANGUAGE + + ;Save language in registry + + !ifndef MUI_PAGE_UNINSTALLER + + IfAbort mui.langdllsavelanguage_abort + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + WriteRegStr "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" $LANGUAGE + !endif + + mui.langdllsavelanguage_abort: + + !endif + +!macroend + +!macro MUI_UNGETLANGUAGE + + ;Get language from registry in uninstaller + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_LANGDLL_VARIABLES + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + + ReadRegStr $mui.LangDLL.RegistryLanguage "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" + + ${if} $mui.LangDLL.RegistryLanguage = "" + + !endif + + !insertmacro MUI_LANGDLL_DISPLAY + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + + ${else} + StrCpy $LANGUAGE $mui.LangDLL.RegistryLanguage + ${endif} + + !endif + + !verbose pop + +!macroend + + +;-------------------------------- +;Rerserve LangDLL file + +!macro MUI_RESERVEFILE_LANGDLL + + !verbose push + !verbose ${MUI_VERBOSE} + + ReserveFile /plugin LangDLL.dll + + !verbose pop + +!macroend diff --git a/tools/Contrib/Modern UI 2/MUI2.nsh b/tools/Contrib/Modern UI 2/MUI2.nsh new file mode 100644 index 0000000..94cea26 --- /dev/null +++ b/tools/Contrib/Modern UI 2/MUI2.nsh @@ -0,0 +1,117 @@ +/* + +NSIS Modern User Interface - Version 2.1 +Copyright 2002-2023 Joost Verburg +Contributors: Amir Szekely, Anders Kjersem + +*/ + +!ifndef MUI_INCLUDED +!verbose push 3 +!define MUI_INCLUDED +!define MUI_SYSVERSION "2.1" +!verbose pop +!echo "NSIS Modern User Interface version ${MUI_SYSVERSION} - Copyright 2002-2023 Joost Verburg" + +;-------------------------------- +!verbose push 3 +!define /IfNDef MUI_VERBOSE 3 +!verbose ${MUI_VERBOSE} + +!addincludedir "${NSISDIR}\Contrib\Modern UI 2" + +;-------------------------------- +;Header files required by MUI + +!include WinMessages.nsh +!include LogicLib.nsh +!include nsDialogs.nsh +!include LangFile.nsh + + +;-------------------------------- +;Macros for compile-time defines + +!macro MUI_DEFAULT SYMBOL CONTENT + + ;Define symbol if not yet defined + ;For setting default values + + !ifndef "${SYMBOL}" + !define "${SYMBOL}" "${CONTENT}" + !endif + +!macroend + +!macro MUI_SET SYMBOL CONTENT + + ;Define symbol and undefine if necessary + + !insertmacro MUI_UNSET "${SYMBOL}" + !define "${SYMBOL}" "${CONTENT}" + +!macroend + +!macro MUI_UNSET SYMBOL + + ;Undefine symbol if defined + + !ifdef "${SYMBOL}" + !undef "${SYMBOL}" + !endif + +!macroend + + +;-------------------------------- +;MUI interface + +!include "Deprecated.nsh" +!include "Interface.nsh" +!include "Localization.nsh" +!include "Pages.nsh" + + +;-------------------------------- +;Pages + +!include "Pages\Components.nsh" +!include "Pages\Directory.nsh" +!include "Pages\Finish.nsh" +!include "Pages\InstallFiles.nsh" +!include "Pages\License.nsh" +!include "Pages\StartMenu.nsh" +!include "Pages\UninstallConfirm.nsh" +!include "Pages\Welcome.nsh" + + +;-------------------------------- +;Insert MUI code in script + +!macro MUI_INSERT + + !ifndef MUI_INSERT + !define MUI_INSERT + + ;This macro is included when the first language file is included, + ;after the pages. + + ;Interface settings + !insertmacro MUI_INTERFACE + + ;Interface functions - Installer + !insertmacro MUI_FUNCTION_GUIINIT + !insertmacro MUI_FUNCTION_ABORTWARNING + + ;Interface functions - Uninstaller + !ifdef MUI_UNINSTALLER + !insertmacro MUI_UNFUNCTION_GUIINIT + !insertmacro MUI_FUNCTION_UNABORTWARNING + !endif + + !endif + +!macroend + +!verbose pop +!endif ;~ MUI_INCLUDED diff --git a/tools/Contrib/Modern UI 2/Pages.nsh b/tools/Contrib/Modern UI 2/Pages.nsh new file mode 100644 index 0000000..7a3c377 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages.nsh @@ -0,0 +1,324 @@ +/* + +NSIS Modern User Interface +Support code for all pages + +*/ + +;-------------------------------- +;Page initialization + +!macro MUI_PAGE_INIT + + !ifdef MUI_INSERT + !warning "MUI_PAGE_* inserted after MUI_LANGUAGE" + !endif + + ;Include interface settings if necessary + !insertmacro MUI_INTERFACE + + ;Define settings for installer page + !insertmacro MUI_UNSET MUI_PAGE_UNINSTALLER + !insertmacro MUI_UNSET MUI_PAGE_UNINSTALLER_PREFIX + !insertmacro MUI_UNSET MUI_PAGE_UNINSTALLER_FUNCPREFIX + + !insertmacro MUI_SET MUI_PAGE_UNINSTALLER_PREFIX "" + !insertmacro MUI_SET MUI_PAGE_UNINSTALLER_FUNCPREFIX "" + + ;Generate unique ID + !insertmacro MUI_UNSET MUI_UNIQUEID + !define MUI_UNIQUEID ${__LINE__} + +!macroend + +!macro MUI_UNPAGE_INIT + + !ifdef MUI_INSERT + !warning "MUI_UNPAGE_* inserted after MUI_LANGUAGE" + !endif + + ;Include interface settings + !insertmacro MUI_INTERFACE + + ;Define prefixes for uninstaller page + !insertmacro MUI_SET MUI_UNINSTALLER "" + + !insertmacro MUI_SET MUI_PAGE_UNINSTALLER "" + !insertmacro MUI_SET MUI_PAGE_UNINSTALLER_PREFIX "UN" + !insertmacro MUI_SET MUI_PAGE_UNINSTALLER_FUNCPREFIX "un." + + ;Generate unique ID + !insertmacro MUI_UNSET MUI_UNIQUEID + !define MUI_UNIQUEID ${__LINE__} + +!macroend + + +;-------------------------------- +;Header text for standard MUI page + +!macro MUI_HEADER_TEXT_PAGE TEXT SUBTEXT + + !ifdef MUI_PAGE_HEADER_TEXT & MUI_PAGE_HEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_PAGE_HEADER_TEXT}" "${MUI_PAGE_HEADER_SUBTEXT}" + !else ifdef MUI_PAGE_HEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_PAGE_HEADER_TEXT}" "${SUBTEXT}" + !else ifdef MUI_PAGE_HEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${TEXT}" "${MUI_PAGE_HEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "${TEXT}" "${SUBTEXT}" + !endif + + !insertmacro MUI_UNSET MUI_PAGE_HEADER_TEXT + !insertmacro MUI_UNSET MUI_PAGE_HEADER_SUBTEXT + +!macroend + + +;-------------------------------- +;Header text for custom page + +!macro MUI_HEADER_TEXT TEXT SUBTEXT ;Called from script + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + LockWindow on + !endif + + SendMessage $mui.Header.Text ${WM_SETTEXT} 0 "STR:${TEXT}" + SendMessage $mui.Header.SubText ${WM_SETTEXT} 0 "STR:${SUBTEXT}" + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + LockWindow off + !endif + + !verbose pop + +!macroend + + +;-------------------------------- +;Custom page functions + +!macro MUI_PAGE_FUNCTION_CUSTOM TYPE + + !ifdef MUI_PAGE_CUSTOMFUNCTION_${TYPE} + Call "${MUI_PAGE_CUSTOMFUNCTION_${TYPE}}" + !undef MUI_PAGE_CUSTOMFUNCTION_${TYPE} + !endif + +!macroend + + +;-------------------------------- +;Support for full window pages (like welcome/finish page) + +!macro MUI_PAGE_FUNCTION_FULLWINDOW + + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_FULLWINDOW + !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_FULLWINDOW + + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow + + LockWindow on + + ;The branding text needs to be hidden because the full windows page + ;overlaps with it. + ShowWindow $mui.Branding.Background ${SW_HIDE} + ShowWindow $mui.Branding.Text ${SW_HIDE} + + ;The texts need to be hidden because otherwise they may show through + ;the page above when the Alt key is pressed. + ShowWindow $mui.Header.Text ${SW_HIDE} + ShowWindow $mui.Header.SubText ${SW_HIDE} + ShowWindow $mui.Header.Image ${SW_HIDE} + + ;Show line below full width of page + ShowWindow $mui.Line.Standard ${SW_HIDE} + ShowWindow $mui.Line.FullWindow ${SW_NORMAL} + + LockWindow off + + FunctionEnd + + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow + + ;Set everything back to normal again + + LockWindow on + + ShowWindow $mui.Branding.Background ${SW_NORMAL} + ShowWindow $mui.Branding.Text ${SW_NORMAL} + + ShowWindow $mui.Header.Text ${SW_NORMAL} + ShowWindow $mui.Header.SubText ${SW_NORMAL} + ShowWindow $mui.Header.Image ${SW_NORMAL} + + ShowWindow $mui.Line.Standard ${SW_NORMAL} + ShowWindow $mui.Line.FullWindow ${SW_HIDE} + + LockWindow off + + FunctionEnd + + !endif + +!macroend + +!macro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE _un _hwndImg _ImgPath _RetImgHandle + + !ifdef MUI_${_un}WELCOMEFINISHPAGE_BITMAP_NOSTRETCH + !insertmacro MUI_DEFAULT MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH NoStretchNoCropNoAlign ; Legacy compatibility + !endif + !insertmacro MUI_DEFAULT MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH FitControl + + !if "${MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH}" == "NoStretchNoCropNoAlign" + + ${NSD_SetImage} ${_hwndImg} "${_ImgPath}" "${_RetImgHandle}" + + !else if "${MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH}" == "NoStretchNoCrop" + + !insertmacro MUI_LOADANDXALIGNIMAGE ${_hwndImg} "${_ImgPath}" Auto "${_RetImgHandle}" + + !else if "${MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH}" == "AspectFitHeight" + + !insertmacro MUI_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT ${_hwndImg} "${_ImgPath}" Auto "${_RetImgHandle}" + + !else + + !if "${MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH}" != "FitControl" + !warning 'MUI_${_un}WELCOMEFINISHPAGE_BITMAP_STRETCH set to unknown value, defaulting to FitControl' + !endif + ${NSD_SetStretchedImage} ${_hwndImg} "${_ImgPath}" "${_RetImgHandle}" + + !endif + +!macroend + + +;-------------------------------- +;Helper macros + +!include Util.nsh + +!macro MUI_INTERNAL_LOADANDSIZEIMAGE _macro _hwndImg _ImgPath _XAlign _RetImgHandle + !if "${_XAlign}" == "Auto" + ${if} $(^RTL) == 1 + Push "*${_ImgPath}" + ${Else} + Push "${_ImgPath}" + ${EndIf} + !else if "${_XAlign}" == "Right" + Push "*${_ImgPath}" + !else + Push "${_ImgPath}" + !endif + Push "${_hwndImg}" + ${CallArtificialFunction} ${_macro} + !if "${_RetImgHandle}" == "Leak" + !insertmacro _LOGICLIB_TEMP + Pop $_LOGICLIB_TEMP + !else if "${_RetImgHandle}" != "Stack" + Pop ${_RetImgHandle} + !endif +!macroend + +!macro MUI_LOADANDXALIGNIMAGE _hwndImg _ImgPath _XAlign _RetImgHandle +!insertmacro MUI_INTERNAL_LOADANDSIZEIMAGE \ + MUI_INTERNAL_LOADANDXALIGNIMAGE "${_hwndImg}" "${_ImgPath}" "${_XAlign}" "${_RetImgHandle}" +!macroend +!macro MUI_INTERNAL_LOADANDXALIGNIMAGE + System::Store "S" + System::Call 'USER32::GetWindowRect(psr0,@r1)' + System::Call 'USER32::MapWindowPoints(p0,p$hwndparent,pr1,i2)' ; Note: Assuming control is not in inner dialog + System::Call '*$1(i.r5,i.r6,i.r7,i.r8)' + IntOp $7 $7 - $5 + IntOp $8 $8 - $6 + + Pop $1 + StrCpy $3 $1 1 + ${If} $3 == "*" ; Move control to the right? + StrCpy $1 $1 "" 1 + ${Endif} + System::Call 'USER32::LoadImage(p0,tr1,i${IMAGE_BITMAP},i0,i0,i${LR_LOADFROMFILE})p.r2' + SendMessage $0 ${STM_SETIMAGE} ${IMAGE_BITMAP} $2 $1 + Push $2 ; Return value + System::Call 'GDI32::DeleteObject(pr1)' ; Note: Assuming the previous image (if any) was a bitmap + System::Call 'USER32::GetClientRect(pr0,@r1)' + System::Call '*$1(i,i,i.r1,i.r2)' + + ${If} $3 == "*" + ${AndIf} $1 < $7 ; ImgW < CtlW + IntOp $3 $7 - $1 + IntOp $5 $5 + $3 + System::Call 'USER32::SetWindowPos(pr0,p0,ir5,ir6,i,i,i0x15)' + ${EndIf} + + System::Store "L" +!macroend + +!macro MUI_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT _hwndImg _ImgPath _XAlign _RetImgHandle +!insertmacro MUI_INTERNAL_LOADANDSIZEIMAGE \ + MUI_INTERNAL_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT "${_hwndImg}" "${_ImgPath}" "${_XAlign}" "${_RetImgHandle}" +!macroend +!macro MUI_INTERNAL_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT + System::Store "S" + System::Call 'USER32::GetWindowRect(psr0,@r1)' + System::Call 'USER32::MapWindowPoints(p0,p$hwndparent,pr1,i2)' ; Note: Assuming control is not in inner dialog + System::Call '*$1(i.r5,i.r6,i.r7,i.r8)' + IntOp $7 $7 - $5 + IntOp $8 $8 - $6 + + Pop $1 + StrCpy $3 $1 1 + ${If} $3 == "*" ; Move control to the right? + StrCpy $1 $1 "" 1 + ${Endif} + System::Call 'USER32::LoadImage(p0,tr1,i${IMAGE_BITMAP},i0,i0,i${LR_LOADFROMFILE})p.r2' + SendMessage $0 ${STM_SETIMAGE} ${IMAGE_BITMAP} $2 $1 + Push $2 ; Return value + System::Call 'GDI32::DeleteObject(pr1)' ; Note: Assuming the previous image (if any) was a bitmap + System::Call 'USER32::GetClientRect(pr0,@r1)' + System::Call '*$1(i,i,i.r1,i.r2)' + + IntOp $R7 $7 * 10000 + IntOp $R8 $8 * 10000 + IntOp $R1 $1 * 10000 + IntOp $R2 $2 * 10000 + IntOp $R3 $R1 / $2 + StrCpy $R4 10000 + ${If} $R1 > $R2 + StrCpy $R3 10000 + IntOp $R4 $R2 / $1 + ${EndIf} + + ${DoWhile} $R2 > $R8 ; ImgH > CtlH + IntOp $R1 $R1 - $R3 + IntOp $R2 $R2 - $R4 + ${Loop} + ${DoWhile} $R2 < $R8 ; ImgH < CtlH + IntOp $R1 $R1 + $R3 + IntOp $R2 $R2 + $R4 + ${Loop} + IntOp $1 $R1 / 10000 + IntOp $2 $R2 / 10000 + + ${If} $1 < $7 + ${AndIf} $3 == "*" + IntOp $R3 $7 - $1 + IntOp $5 $5 + $R3 + ${EndIf} + + ${DoWhile} $2 > $8 ; Non-aspect-maintained stretch to make it a pixel perfect match + IntOp $2 $2 - 1 + IntOp $1 $1 - 1 + ${IfThen} $3 == "*" ${|} IntOp $5 $5 + 1 ${|} + ${Loop} + + System::Call 'USER32::SetWindowPos(pr0,p0,ir5,ir6,ir1,ir2,i0x14)' + System::Store "L" +!macroend + + diff --git a/tools/Contrib/Modern UI 2/Pages/Components.nsh b/tools/Contrib/Modern UI 2/Pages/Components.nsh new file mode 100644 index 0000000..5003e5e --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/Components.nsh @@ -0,0 +1,242 @@ +/* + +NSIS Modern User Interface +Components page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_COMPONENTSPAGE_INTERFACE + + !ifndef MUI_COMPONENTSPAGE_INTERFACE + !define MUI_COMPONENTSPAGE_INTERFACE + Var mui.ComponentsPage + + Var mui.ComponentsPage.Text + Var mui.ComponentsPage.InstTypesText + Var mui.ComponentsPage.ComponentsText + + Var mui.ComponentsPage.InstTypes + Var mui.ComponentsPage.Components + + Var mui.ComponentsPage.DescriptionTitle + Var mui.ComponentsPage.DescriptionText.Info + Var mui.ComponentsPage.DescriptionText + + Var mui.ComponentsPage.SpaceRequired + + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" + + !insertmacro MUI_DEFAULT MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe" + !insertmacro MUI_DEFAULT MUI_UI_COMPONENTSPAGE_NODESC "${NSISDIR}\Contrib\UIs\modern_nodesc.exe" + + ;Apply settings + + !ifdef MUI_COMPONENTSPAGE_SMALLDESC + ChangeUI IDD_SELCOM "${MUI_UI_COMPONENTSPAGE_SMALLDESC}" + !else ifdef MUI_COMPONENTSPAGE_NODESC + ChangeUI IDD_SELCOM "${MUI_UI_COMPONENTSPAGE_NODESC}" + !endif + + CheckBitmap "${MUI_COMPONENTSPAGE_CHECKBITMAP}" + + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_COMPONENTS + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}COMPONENTSPAGE "" + !insertmacro MUI_COMPONENTSPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_COMPLIST "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_INSTTYPE "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE)" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO)" + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}components + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsLeave_${MUI_UNIQUEID} + + Caption " " + + ComponentText "${MUI_COMPONENTSPAGE_TEXT_TOP}" "${MUI_COMPONENTSPAGE_TEXT_INSTTYPE}" "${MUI_COMPONENTSPAGE_TEXT_COMPLIST}" + + PageExEnd + + !insertmacro MUI_FUNCTION_COMPONENTSPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsLeave_${MUI_UNIQUEID} + + !undef MUI_COMPONENTSPAGE_TEXT_TOP + !undef MUI_COMPONENTSPAGE_TEXT_COMPLIST + !undef MUI_COMPONENTSPAGE_TEXT_INSTTYPE + !insertmacro MUI_UNSET MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE + !insertmacro MUI_UNSET MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO + +!macroend + +!macro MUI_PAGE_COMPONENTS + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_COMPONENTS + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_COMPONENTS + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_COMPONENTS + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_COMPONENTSPAGE PRE SHOW LEAVE + + Function "${PRE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_COMPONENTS_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_COMPONENTS_SUBTITLE) + FunctionEnd + + Function "${SHOW}" + + ;Get control handles + FindWindow $mui.ComponentsPage "#32770" "" $HWNDPARENT + GetDlgItem $mui.ComponentsPage.Text $mui.ComponentsPage 1006 + GetDlgItem $mui.ComponentsPage.InstTypesText $mui.ComponentsPage 1021 + GetDlgItem $mui.ComponentsPage.ComponentsText $mui.ComponentsPage 1022 + GetDlgItem $mui.ComponentsPage.InstTypes $mui.ComponentsPage 1017 + GetDlgItem $mui.ComponentsPage.Components $mui.ComponentsPage 1032 + GetDlgItem $mui.ComponentsPage.DescriptionTitle $mui.ComponentsPage 1042 + GetDlgItem $mui.ComponentsPage.DescriptionText $mui.ComponentsPage 1043 + GetDlgItem $mui.ComponentsPage.SpaceRequired $mui.ComponentsPage 1023 + + ;Default text in description textbox + SendMessage $mui.ComponentsPage.DescriptionTitle ${WM_SETTEXT} 0 "STR:${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE}" + EnableWindow $mui.ComponentsPage.DescriptionText 0 + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}" + + StrCpy $mui.ComponentsPage.DescriptionText.Info "${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}" ;Text for current components page + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + + +;-------------------------------- +;Script functions for components descriptions + +!macro MUI_DESCRIPTION_BEGIN + + ${if} $0 == -1 + ;No mouse hover over component in list + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:" + EnableWindow $mui.ComponentsPage.DescriptionText 0 + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:$mui.ComponentsPage.DescriptionText.Info" + +!macroend + +!macro MUI_DESCRIPTION_TEXT VAR TEXT + + !verbose push + !verbose ${MUI_VERBOSE} + + ${elseif} $0 == ${VAR} + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:" + EnableWindow $mui.ComponentsPage.DescriptionText 1 + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:${TEXT}" + + !verbose pop + +!macroend + +!macro MUI_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + ${endif} + + !verbose pop + +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_BEGIN + + !verbose push + !verbose ${MUI_VERBOSE} + + Function .onMouseOverSection + !insertmacro MUI_DESCRIPTION_BEGIN + + !verbose pop + +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_DESCRIPTION_END + !ifdef MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION + Call "${MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION}" + !endif + FunctionEnd + + !verbose pop + +!macroend + +!macro MUI_UNFUNCTION_DESCRIPTION_BEGIN + + !verbose push + !verbose ${MUI_VERBOSE} + + Function un.onMouseOverSection + !insertmacro MUI_DESCRIPTION_BEGIN + + !verbose pop + +!macroend + +!macro MUI_UNFUNCTION_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_DESCRIPTION_END + !ifdef MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION + Call "${MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION}" + !endif + FunctionEnd + + !verbose pop + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/Directory.nsh b/tools/Contrib/Modern UI 2/Pages/Directory.nsh new file mode 100644 index 0000000..6209357 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/Directory.nsh @@ -0,0 +1,126 @@ +/* + +NSIS Modern User Interface +Directory page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_DIRECTORYPAGE_INTERFACE + + !ifndef MUI_DIRECTORYPAGE_INTERFACE + !define MUI_DIRECTORYPAGE_INTERFACE + Var mui.DirectoryPage + + Var mui.DirectoryPage.Text + + Var mui.DirectoryPage.DirectoryBox + Var mui.DirectoryPage.Directory + Var mui.DirectoryPage.BrowseButton + + Var mui.DirectoryPage.SpaceRequired + Var mui.DirectoryPage.SpaceAvailable + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_DIRECTORY + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}DIRECTORYPAGE "" + !insertmacro MUI_DIRECTORYPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_DESTINATION "" + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}directory + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryLeave_${MUI_UNIQUEID} + + Caption " " + + DirText "${MUI_DIRECTORYPAGE_TEXT_TOP}" "${MUI_DIRECTORYPAGE_TEXT_DESTINATION}" + + !ifdef MUI_DIRECTORYPAGE_VARIABLE + DirVar "${MUI_DIRECTORYPAGE_VARIABLE}" + !endif + + !ifdef MUI_DIRECTORYPAGE_VERIFYONLEAVE + DirVerify leave + !endif + + PageExEnd + + !insertmacro MUI_FUNCTION_DIRECTORYPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryLeave_${MUI_UNIQUEID} + + !undef MUI_DIRECTORYPAGE_TEXT_TOP + !undef MUI_DIRECTORYPAGE_TEXT_DESTINATION + !insertmacro MUI_UNSET MUI_DIRECTORYPAGE_VARIABLE + !insertmacro MUI_UNSET MUI_DIRECTORYPAGE_VERIFYONLEAVE + +!macroend + +!macro MUI_PAGE_DIRECTORY + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_DIRECTORY + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_DIRECTORY + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_DIRECTORY + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_DIRECTORYPAGE PRE SHOW LEAVE + + Function "${PRE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_DIRECTORY_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_DIRECTORY_SUBTITLE) + FunctionEnd + + Function "${SHOW}" + + ;Get control handles + FindWindow $mui.DirectoryPage "#32770" "" $HWNDPARENT + GetDlgItem $mui.DirectoryPage.Text $mui.DirectoryPage 1006 + GetDlgItem $mui.DirectoryPage.DirectoryBox $mui.DirectoryPage 1020 + GetDlgItem $mui.DirectoryPage.Directory $mui.DirectoryPage 1019 + GetDlgItem $mui.DirectoryPage.BrowseButton $mui.DirectoryPage 1001 + GetDlgItem $mui.DirectoryPage.SpaceRequired $mui.DirectoryPage 1023 + GetDlgItem $mui.DirectoryPage.SpaceAvailable $mui.DirectoryPage 1024 + + !ifdef MUI_DIRECTORYPAGE_BGCOLOR + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXTCOLOR "" + SetCtlColors $mui.DirectoryPage.Directory "${MUI_DIRECTORYPAGE_TEXTCOLOR}" "${MUI_DIRECTORYPAGE_BGCOLOR}" + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + FunctionEnd + + Function "${LEAVE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/Finish.nsh b/tools/Contrib/Modern UI 2/Pages/Finish.nsh new file mode 100644 index 0000000..493c1e0 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/Finish.nsh @@ -0,0 +1,510 @@ + /* + +NSIS Modern User Interface +Finish page (implemented using nsDialogs) + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_FINISHPAGE_INTERFACE + + !ifndef MUI_FINISHPAGE_INTERFACE + !define MUI_FINISHPAGE_INTERFACE + Var mui.FinishPage + + Var mui.FinishPage.Image + Var mui.FinishPage.Image.Bitmap + + Var mui.FinishPage.Title + Var mui.FinishPage.Title.Font + + Var mui.FinishPage.Text + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + !ifndef MUI_FINISHPAGE_RETURNVALUE_VARIABLES + !define MUI_FINISHPAGE_RETURNVALUE_VARIABLES + Var mui.FinishPage.ReturnValue + !endif + !else ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME + !ifndef MUI_FINISHPAGE_RETURNVALUE_VARIABLES + !define MUI_FINISHPAGE_RETURNVALUE_VARIABLES + Var mui.FinishPage.ReturnValue + !endif + !endif + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + !ifndef MUI_FINISHPAGE_CANCEL_ENABLED_VARIABLES + !define MUI_FINISHPAGE_CANCEL_ENABLED_VARIABLES + Var mui.FinishPage.DisableAbortWarning + !endif + !endif + + !ifdef MUI_FINISHPAGE_RUN + !ifndef MUI_FINISHPAGE_RUN_VARIABLES + !define MUI_FINISHPAGE_RUN_VARIABLES + Var mui.FinishPage.Run + !endif + !endif + + !ifdef MUI_FINISHPAGE_SHOWREADME + !ifndef MUI_FINISHPAGE_SHOWREADME_VARIABLES + !define MUI_FINISHPAGE_SHOWREADME_VARIABLES + Var mui.FinishPage.ShowReadme + !endif + !endif + + !ifdef MUI_FINISHPAGE_LINK + !ifndef MUI_FINISHPAGE_LINK_VARIABLES + !define MUI_FINISHPAGE_LINK_VARIABLES + Var mui.FinishPage.Link + !endif + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + !ifndef MUI_FINISHPAGE_REBOOT_VARIABLES + !define MUI_FINISHPAGE_REBOOT_VARIABLES + Var mui.FinishPage.RebootNow + Var mui.FinishPage.RebootLater + !endif + !endif + + !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" + !if "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" == "" + !error "Invalid MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP" + !endif + +!macroend + + +;-------------------------------- +;Interface initialization + +!macro MUI_FINISHPAGE_GUIINIT + + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_GUINIT + !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_GUINIT + + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.GUIInit + + InitPluginsDir + File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" + !pragma verifyloadimage "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" + + !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT + Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}" + !endif + + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}FINISHPAGE_NOAUTOCLOSE + SetAutoClose true + !endif + + FunctionEnd + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.GUIInit + + !endif + +!macroend + + +;-------------------------------- +;Abort warning + +!macro MUI_FINISHPAGE_ABORTWARNING + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}FINISHPAGE_ABORTWARNING + !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}FINISHPAGE_ABORTWARNING + + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.AbortWarning + + ${if} $mui.FinishPage.DisableAbortWarning == "1" + Quit + ${endif} + + !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_ABORTWARNING + Call ${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_ABORTWARNING} + !endif + + FunctionEnd + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_ABORTWARNING ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.AbortWarning + + !endif + + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_FINISH + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}FINISHPAGE "" + !insertmacro MUI_FINISHPAGE_INTERFACE + + !insertmacro MUI_FINISHPAGE_GUIINIT + !insertmacro MUI_FINISHPAGE_ABORTWARNING + + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_TITLE)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_TEXT)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_BUTTON "$(MUI_BUTTONTEXT_FINISH)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_REBOOT)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOTNOW "$(MUI_TEXT_FINISH_REBOOTNOW)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOTLATER "$(MUI_TEXT_FINISH_REBOOTLATER)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_RUN_TEXT "$(MUI_TEXT_FINISH_RUN)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_SHOWREADME_TEXT "$(MUI_TEXT_FINISH_SHOWREADME)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_LINK_COLOR "000080" + + !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.Pre_${MUI_UNIQUEID} \ + ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.Leave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_FINISHPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.Pre_${MUI_UNIQUEID} \ + ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.Leave_${MUI_UNIQUEID} \ + ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPage.Link_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_FINISHPAGE_TITLE + !insertmacro MUI_UNSET MUI_FINISHPAGE_TITLE_3LINES + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_LARGE + !insertmacro MUI_UNSET MUI_FINISHPAGE_BUTTON + !insertmacro MUI_UNSET MUI_FINISHPAGE_CANCEL_ENABLED + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOTNOW + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOTLATER + !insertmacro MUI_UNSET MUI_FINISHPAGE_REBOOTLATER_DEFAULT + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_PARAMETERS + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_NOTCHECKED + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_FUNCTION + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_FUNCTION + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK_LOCATION + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK_COLOR + !insertmacro MUI_UNSET MUI_FINISHPAGE_NOREBOOTSUPPORT + + !insertmacro MUI_UNSET MUI_FINISHPAGE_ABORTWARNINGCHECK + !insertmacro MUI_UNSET MUI_FINISHPAGE_CURFIELD_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_CURFIELD_BOTTOM + +!macroend + +!macro MUI_PAGE_FINISH + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_FINISH + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_FINISH + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_FINISH + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_FINISHPAGE PRE LEAVE LINK + + !ifdef MUI_FINISHPAGE_LINK + + Function "${LINK}" + + ExecShell open "${MUI_FINISHPAGE_LINK_LOCATION}" + + FunctionEnd + + !endif + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + ;Set text on Next button + SendMessage $mui.Button.Next ${WM_SETTEXT} 0 "STR:${MUI_FINISHPAGE_BUTTON}" + + ;Enable cancel button if set in script + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + EnableWindow $mui.Button.Cancel 1 + !endif + + ;Create dialog + nsDialogs::Create 1044 + Pop $mui.FinishPage + nsDialogs::SetRTL $(^RTL) + SetCtlColors $mui.FinishPage "" "${MUI_BGCOLOR}" + + ;Image control + ${NSD_CreateBitmap} 0u 0u 109u 193u "" + Pop $mui.FinishPage.Image + !insertmacro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE "${MUI_PAGE_UNINSTALLER_PREFIX}" $mui.FinishPage.Image $PLUGINSDIR\modern-wizard.bmp $mui.FinishPage.Image.Bitmap + + ;Positiong of controls + + ;Title + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !define MUI_FINISHPAGE_TITLE_HEIGHT 28 + !else + !define MUI_FINISHPAGE_TITLE_HEIGHT 38 + !endif + + ;Text + ;17 = 10 (top margin) + 7 (distance between texts) + !define /math MUI_FINISHPAGE_TEXT_TOP 17 + ${MUI_FINISHPAGE_TITLE_HEIGHT} + + ;Height if space required for radio buttons or check boxes + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !define MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS 40 + !else + !define MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS 60 + !endif + + !define /math MUI_FINISHPAGE_TEXT_BOTTOM_BUTTONS ${MUI_FINISHPAGE_TEXT_TOP} + ${MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS} + + ;Positioning of radio buttons to ask for a reboot + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + !define /math MUI_FINISHPAGE_REBOOTNOW_TOP ${MUI_FINISHPAGE_TEXT_BOTTOM_BUTTONS} + 5 ;Distance between text and options + ;25 = 10 (height of first radio button) + 15 (distance between buttons) + !define /math MUI_FINISHPAGE_REBOOTLATER_TOP ${MUI_FINISHPAGE_REBOOTNOW_TOP} + 25 + !endif + + ;Positioning of checkboxes + !ifdef MUI_FINISHPAGE_RUN + !define /math MUI_FINISHPAGE_RUN_TOP ${MUI_FINISHPAGE_TEXT_BOTTOM_BUTTONS} + 5 ;Distance between text and options + !endif + !ifdef MUI_FINISHPAGE_SHOWREADME + !ifdef MUI_FINISHPAGE_RUN + ;25 = 10 (height of run checkbox) + 10 (distance between checkboxes) + !define /math MUI_FINISHPAGE_SHOWREADME_TOP ${MUI_FINISHPAGE_RUN_TOP} + 20 + !else + !define /math MUI_FINISHPAGE_SHOWREADME_TOP ${MUI_FINISHPAGE_TEXT_BOTTOM_BUTTONS} + 5 ;Distance between text and options + !endif + !endif + + !ifndef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + ;Height if full space is available for text and link + !ifndef MUI_FINISHPAGE_LINK + !define MUI_FINISHPAGE_TEXT_HEIGHT 130 + !else + !define MUI_FINISHPAGE_TEXT_HEIGHT 120 + !endif + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + + ${if} ${RebootFlag} + + ;Title text + ${NSD_CreateLabel} 120u 10u 195u ${MUI_FINISHPAGE_TITLE_HEIGHT}u "${MUI_FINISHPAGE_TITLE}" + Pop $mui.FinishPage.Title + SetCtlColors $mui.FinishPage.Title "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + CreateFont $mui.FinishPage.Title.Font "$(^Font)" "12" "700" + SendMessage $mui.FinishPage.Title ${WM_SETFONT} $mui.FinishPage.Title.Font 0 + + ;Finish text + ${NSD_CreateLabel} 120u ${MUI_FINISHPAGE_TEXT_TOP}u 195u ${MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS}u "${MUI_FINISHPAGE_TEXT_REBOOT}" + Pop $mui.FinishPage.Text + SetCtlColors $mui.FinishPage.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + ;Radio buttons for reboot page + ${NSD_CreateRadioButton} 120u ${MUI_FINISHPAGE_REBOOTNOW_TOP}u 195u 10u "${MUI_FINISHPAGE_TEXT_REBOOTNOW}" + Pop $mui.FinishPage.RebootNow + SetCtlColors $mui.FinishPage.RebootNow "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + ${NSD_CreateRadioButton} 120u ${MUI_FINISHPAGE_REBOOTLATER_TOP}u 195u 10u "${MUI_FINISHPAGE_TEXT_REBOOTLATER}" + Pop $mui.FinishPage.RebootLater + SetCtlColors $mui.FinishPage.RebootLater "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !ifndef MUI_FINISHPAGE_REBOOTLATER_DEFAULT + SendMessage $mui.FinishPage.RebootNow ${BM_SETCHECK} ${BST_CHECKED} 0 + !else + SendMessage $mui.FinishPage.RebootLater ${BM_SETCHECK} ${BST_CHECKED} 0 + !endif + ${NSD_SetFocus} $mui.FinishPage.RebootNow + + ${else} + + !endif + + ;Title text + ${NSD_CreateLabel} 120u 10u 195u ${MUI_FINISHPAGE_TITLE_HEIGHT}u "${MUI_FINISHPAGE_TITLE}" + Pop $mui.FinishPage.Title + SetCtlColors $mui.FinishPage.Title "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + CreateFont $mui.FinishPage.Title.Font "$(^Font)" "12" "700" + SendMessage $mui.FinishPage.Title ${WM_SETFONT} $mui.FinishPage.Title.Font 0 + + ;Finish text + !ifndef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + ${NSD_CreateLabel} 120u ${MUI_FINISHPAGE_TEXT_TOP}u 195u ${MUI_FINISHPAGE_TEXT_HEIGHT}u "${MUI_FINISHPAGE_TEXT}" + !else + ${NSD_CreateLabel} 120u ${MUI_FINISHPAGE_TEXT_TOP}u 195u ${MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS}u "${MUI_FINISHPAGE_TEXT}" + !endif + Pop $mui.FinishPage.Text + SetCtlColors $mui.FinishPage.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + ;Checkboxes + !ifdef MUI_FINISHPAGE_RUN + ${NSD_CreateCheckbox} 120u ${MUI_FINISHPAGE_RUN_TOP}u 195u 10u "${MUI_FINISHPAGE_RUN_TEXT}" + Pop $mui.FinishPage.Run + SetCtlColors $mui.FinishPage.Run "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !ifndef MUI_FINISHPAGE_RUN_NOTCHECKED + SendMessage $mui.FinishPage.Run ${BM_SETCHECK} ${BST_CHECKED} 0 + !endif + ${NSD_SetFocus} $mui.FinishPage.Run + !endif + !ifdef MUI_FINISHPAGE_SHOWREADME + ${NSD_CreateCheckbox} 120u ${MUI_FINISHPAGE_SHOWREADME_TOP}u 195u 10u "${MUI_FINISHPAGE_SHOWREADME_TEXT}" + Pop $mui.FinishPage.ShowReadme + SetCtlColors $mui.FinishPage.ShowReadme "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !ifndef MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + SendMessage $mui.FinishPage.ShowReadme ${BM_SETCHECK} ${BST_CHECKED} 0 + !endif + !ifndef MUI_FINISHPAGE_RUN + ${NSD_SetFocus} $mui.FinishPage.ShowReadme + !endif + !endif + + ;Link + !ifdef MUI_FINISHPAGE_LINK + ${NSD_CreateLink} 120u 175u 195u 10u "${MUI_FINISHPAGE_LINK}" + Pop $mui.FinishPage.Link + SetCtlColors $mui.FinishPage.Link "${MUI_FINISHPAGE_LINK_COLOR}" "${MUI_BGCOLOR}" + ${NSD_OnClick} $mui.FinishPage.Link "${LINK}" + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + ${endif} + !endif + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + StrCpy $mui.FinishPage.DisableAbortWarning "1" + !endif + + !ifndef MUI_FORCECLASSICCONTROLS + ${If} ${IsHighContrastModeActive} + !endif + ; SetCtlColors does not change the check/radio text color (bug #443) + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + System::Call 'UXTHEME::SetWindowTheme(p$mui.FinishPage.RebootNow,w" ",w" ")' + System::Call 'UXTHEME::SetWindowTheme(p$mui.FinishPage.RebootLater,w" ",w" ")' + !endif + !ifdef MUI_FINISHPAGE_RUN + System::Call 'UXTHEME::SetWindowTheme(p$mui.FinishPage.Run,w" ",w" ")' + !endif + !ifdef MUI_FINISHPAGE_SHOWREADME + System::Call 'UXTHEME::SetWindowTheme(p$mui.FinishPage.ShowReadme,w" ",w" ")' + !endif + !ifndef MUI_FORCECLASSICCONTROLS + ${EndIf} + !endif + + ;Show page + Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + nsDialogs::Show + !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED + Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + StrCpy $mui.FinishPage.DisableAbortWarning "" + !endif + + ;Delete image from memory + ${NSD_FreeImage} $mui.FinishPage.Image.Bitmap + + !insertmacro MUI_UNSET MUI_FINISHPAGE_TITLE_HEIGHT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_HEIGHT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_HEIGHT_BUTTONS + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_BOTTOM_BUTTONS + !insertmacro MUI_UNSET MUI_FINISHPAGE_REBOOTNOW_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_REBOOTLATER_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_TOP + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + + ;Check whether the user has chosen to reboot the computer + ${if} ${RebootFlag} + SendMessage $mui.FinishPage.RebootNow ${BM_GETCHECK} 0 0 $mui.FinishPage.ReturnValue + ${if} $mui.FinishPage.ReturnValue = ${BST_CHECKED} + Reboot + ${else} + Return + ${endif} + ${endif} + + !endif + + ;Run functions depending on checkbox state + + !ifdef MUI_FINISHPAGE_RUN + + SendMessage $mui.FinishPage.Run ${BM_GETCHECK} 0 0 $mui.FinishPage.ReturnValue + + ${if} $mui.FinishPage.ReturnValue = ${BST_CHECKED} + !ifndef MUI_FINISHPAGE_RUN_FUNCTION + !ifndef MUI_FINISHPAGE_RUN_PARAMETERS + Exec "$\"${MUI_FINISHPAGE_RUN}$\"" + !else + Exec "$\"${MUI_FINISHPAGE_RUN}$\" ${MUI_FINISHPAGE_RUN_PARAMETERS}" + !endif + !else + Call "${MUI_FINISHPAGE_RUN_FUNCTION}" + !endif + ${endif} + + !endif + + !ifdef MUI_FINISHPAGE_SHOWREADME + + SendMessage $mui.FinishPage.ShowReadme ${BM_GETCHECK} 0 0 $mui.FinishPage.ReturnValue + + ${if} $mui.FinishPage.ReturnValue = ${BST_CHECKED} + !ifndef MUI_FINISHPAGE_SHOWREADME_FUNCTION + ExecShell open "${MUI_FINISHPAGE_SHOWREADME}" + !else + Call "${MUI_FINISHPAGE_SHOWREADME_FUNCTION}" + !endif + ${endif} + + !endif + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/InstallFiles.nsh b/tools/Contrib/Modern UI 2/Pages/InstallFiles.nsh new file mode 100644 index 0000000..868ae17 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/InstallFiles.nsh @@ -0,0 +1,149 @@ +/* + +NSIS Modern User Interface +InstallFiles page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_INSTFILESPAGE_INTERFACE + + !ifndef MUI_INSTFILESYPAGE_INTERFACE + !define MUI_INSTFILESYPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_INSTFILESPAGE_COLORS "/windows" + !insertmacro MUI_DEFAULT MUI_INSTFILESPAGE_PROGRESSBAR "smooth" + + Var mui.InstFilesPage + + Var mui.InstFilesPage.Text + Var mui.InstFilesPage.ProgressBar + Var mui.InstFilesPage.ShowLogButton + Var mui.InstFilesPage.Log + + ;Apply settings + InstallColors ${MUI_INSTFILESPAGE_COLORS} + InstProgressFlags ${MUI_INSTFILESPAGE_PROGRESSBAR} + SubCaption 4 " " + UninstallSubCaption 2 " " + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_INSTFILES + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INSTFILESPAGE "" + !insertmacro MUI_INSTFILESPAGE_INTERFACE + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}instfiles + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesLeave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_INSTFILESPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_FINISHHEADER_TEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_ABORTWARNING_TEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_ABORTWARNING_SUBTEXT + +!macroend + +!macro MUI_PAGE_INSTFILES + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_INSTFILES + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_INSTFILES + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_INSTFILES + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_INSTFILESPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLING_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLING_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + ;Get controls handles + FindWindow $mui.InstFilesPage "#32770" "" $HWNDPARENT + GetDlgItem $mui.InstFilesPage.Text $mui.InstFilesPage 1006 + GetDlgItem $mui.InstFilesPage.ProgressBar $mui.InstFilesPage 1004 + GetDlgItem $mui.InstFilesPage.ShowLogButton $mui.InstFilesPage 1027 + GetDlgItem $mui.InstFilesPage.Log $mui.InstFilesPage 1016 + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + ;Set text on completed page header + + IfAbort mui.endheader_abort + + !ifdef MUI_INSTFILESPAGE_FINISHHEADER_TEXT & MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_FINISHHEADER_TEXT}" "${MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT}" + !else ifdef MUI_INSTFILESPAGE_FINISHHEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_FINISHHEADER_TEXT}" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_SUBTITLE)" + !else ifdef MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_TITLE)" "${MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_TITLE)" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_SUBTITLE)" + !endif + + Goto mui.endheader_done + + mui.endheader_abort: + + !ifdef MUI_INSTFILESPAGE_ABORTHEADER_TEXT & MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_ABORTHEADER_TEXT}" "${MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT}" + !else ifdef MUI_INSTFILESPAGE_ABORTHEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_ABORTHEADER_TEXT}" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_SUBTITLE)" + !else ifdef MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_TITLE)" "${MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_TITLE)" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_SUBTITLE)" + !endif + + mui.endheader_done: + + !insertmacro MUI_LANGDLL_SAVELANGUAGE + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/License.nsh b/tools/Contrib/Modern UI 2/Pages/License.nsh new file mode 100644 index 0000000..a74214a --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/License.nsh @@ -0,0 +1,143 @@ +/* + +NSIS Modern User Interface +License page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_LICENSEPAGE_INTERFACE + + !ifndef MUI_LICENSEPAGE_INTERFACE + !define MUI_LICENSEPAGE_INTERFACE + Var mui.LicensePage + + Var mui.Licensepage.TopText + Var mui.Licensepage.Text + Var mui.Licensepage.LicenseText + + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_BGCOLOR "/windows" + + ;Apply settings + LicenseBkColor "${MUI_LICENSEPAGE_BGCOLOR}" + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_LICENSE LICENSEDATA + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}LICENSEPAGE "" + !insertmacro MUI_LICENSEPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_TEXT_TOP "$(MUI_INNERTEXT_LICENSE_TOP)" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_BUTTON "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_CHECKBOX_TEXT "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "" + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}license + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicensePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseLeave_${MUI_UNIQUEID} + + Caption " " + + LicenseData "${LICENSEDATA}" + + !ifndef MUI_LICENSEPAGE_TEXT_BOTTOM + !ifndef MUI_LICENSEPAGE_CHECKBOX & MUI_LICENSEPAGE_RADIOBUTTONS + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM)" "${MUI_LICENSEPAGE_BUTTON}" + !else ifdef MUI_LICENSEPAGE_CHECKBOX + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM_CHECKBOX)" "${MUI_LICENSEPAGE_BUTTON}" + !else + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS)" "${MUI_LICENSEPAGE_BUTTON}" + !endif + !else + LicenseText "${MUI_LICENSEPAGE_TEXT_BOTTOM}" "${MUI_LICENSEPAGE_BUTTON}" + !endif + + !ifdef MUI_LICENSEPAGE_CHECKBOX + LicenseForceSelection checkbox "${MUI_LICENSEPAGE_CHECKBOX_TEXT}" + !else ifdef MUI_LICENSEPAGE_RADIOBUTTONS + LicenseForceSelection radiobuttons "${MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT}" "${MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE}" + !endif + + PageExEnd + + !insertmacro MUI_FUNCTION_LICENSEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicensePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_LICENSEPAGE_TEXT_TOP + !insertmacro MUI_UNSET MUI_LICENSEPAGE_TEXT_BOTTOM + !insertmacro MUI_UNSET MUI_LICENSEPAGE_BUTTON + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT + !insertmacro MUI_UNSET MUI_LICENSEPAGE_RADIOBUTTONS + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT_ACCEPT + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT_DECLINE + +!macroend + +!macro MUI_PAGE_LICENSE LICENSEDATA + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_LICENSE "${LICENSEDATA}" + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_LICENSE LICENSEDATA + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_LICENSE "${LICENSEDATA}" + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_LICENSEPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_LICENSE_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_LICENSE_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + ;Get control handles + FindWindow $mui.LicensePage "#32770" "" $HWNDPARENT + GetDlgItem $mui.LicensePage.TopText $mui.LicensePage 1040 + GetDlgItem $mui.LicensePage.Text $mui.LicensePage 1006 + GetDlgItem $mui.LicensePage.LicenseText $mui.LicensePage 1000 + + ;Top text + SendMessage $mui.LicensePage.TopText ${WM_SETTEXT} 0 "STR:${MUI_LICENSEPAGE_TEXT_TOP}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/StartMenu.nsh b/tools/Contrib/Modern UI 2/Pages/StartMenu.nsh new file mode 100644 index 0000000..71c41bb --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/StartMenu.nsh @@ -0,0 +1,236 @@ +/* + +NSIS Modern User Interface +Start Menu folder page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_STARTMENUPAGE_INTERFACE + + !ifndef MUI_STARTMENUPAGE_INTERFACE + !define MUI_STARTMENUPAGE_INTERFACE + Var mui.StartMenuPage + Var mui.StartMenuPage.Location + Var mui.StartMenuPage.FolderList + + Var mui.StartMenuPage.Temp + !endif + + !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME + !ifndef MUI_STARTMENUPAGE_REGISTRY_VARIABLES + !define MUI_STARTMENUPAGE_REGISTRY_VARIABLES + Var mui.StartMenuPage.RegistryLocation + !endif + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_STARTMENU ID VAR + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}STARTMENUPAGE "" + !insertmacro MUI_STARTMENUPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)" + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_TOP "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_TOP)" + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_CHECKBOX "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_CHECKBOX)" + + !define MUI_STARTMENUPAGE_VARIABLE "${VAR}" + !define "MUI_STARTMENUPAGE_${ID}_VARIABLE" "${MUI_STARTMENUPAGE_VARIABLE}" + !define "MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" + !endif + !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" + !endif + !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}" + !endif + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_STARTMENUPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID} + + !undef MUI_STARTMENUPAGE_VARIABLE + !undef MUI_STARTMENUPAGE_TEXT_TOP + !undef MUI_STARTMENUPAGE_TEXT_CHECKBOX + !undef MUI_STARTMENUPAGE_DEFAULTFOLDER + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_NODISABLE + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_ROOT + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_KEY + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_VALUENAME + +!macroend + +!macro MUI_PAGE_STARTMENU ID VAR + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_STARTMENU "${ID}" "${VAR}" + + !verbose pop + +!macroend + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_STARTMENUPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME + + ;Get Start Menu location from registry + + ${if} "${MUI_STARTMENUPAGE_VARIABLE}" == "" + + ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}" + ${if} $mui.StartMenuPage.RegistryLocation != "" + StrCpy "${MUI_STARTMENUPAGE_VARIABLE}" $mui.StartMenuPage.RegistryLocation + ${endif} + + ClearErrors + + ${endif} + + !endif + + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(MUI_TEXT_STARTMENU_SUBTITLE) + + ${if} $(^RTL) == "0" + !ifndef MUI_STARTMENUPAGE_NODISABLE + StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !else + StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !endif + ${else} + !ifndef MUI_STARTMENUPAGE_NODISABLE + StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !else + StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !endif + ${endif} + + Pop $mui.StartMenuPage + + ;Get control handles + GetDlgItem $mui.StartMenuPage.Location $mui.StartMenuPage 1002 + GetDlgItem $mui.StartMenuPage.FolderList $mui.StartMenuPage 1004 + + !ifdef MUI_STARTMENUPAGE_BGCOLOR + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXTCOLOR "" + SetCtlColors $mui.StartMenuPage.Location "${MUI_STARTMENUPAGE_TEXTCOLOR}" "${MUI_STARTMENUPAGE_BGCOLOR}" + SetCtlColors $mui.StartMenuMenu.FolderList "${MUI_STARTMENUPAGE_TEXTCOLOR}" "${MUI_STARTMENUPAGE_BGCOLOR}" + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + StartMenu::Show + !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED + + Pop $mui.StartMenuPage.Temp + ${if} $mui.StartMenuPage.Temp == "success" + Pop "${MUI_STARTMENUPAGE_VARIABLE}" + ${endif} + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + + +;-------------------------------- +;Script macros to get Start Menu folder + +!macro MUI_STARTMENU_GETFOLDER ID VAR + + !verbose push + !verbose ${MUI_VERBOSE} + + ;Get Start Menu folder from registry + ;Can be called from the script in the uninstaller + + !ifdef MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME + + ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}" + + ${if} $mui.StartMenuPage.RegistryLocation != "" + StrCpy "${VAR}" $mui.StartMenuPage.RegistryLocation + ${else} + StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}" + ${endif} + + !else + + StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}" + + !endif + + !verbose pop + +!macroend + +!macro MUI_STARTMENU_WRITE_BEGIN ID + + ;The code in the script to write the shortcuts should be put between the + ;MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros + + !verbose push + !verbose ${MUI_VERBOSE} + + !define MUI_STARTMENUPAGE_CURRENT_ID "${ID}" + + StrCpy $mui.StartMenuPage.Temp "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1 + + ;If the folder start with >, the user has chosen not to create a shortcut + ${if} $mui.StartMenuPage.Temp != ">" + + ${if} "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" == "" + ;Get folder from registry if the variable doesn't contain anything + !insertmacro MUI_STARTMENU_GETFOLDER "${MUI_STARTMENUPAGE_CURRENT_ID}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" + ${endif} + + !verbose pop + +!macroend + +!macro MUI_STARTMENU_WRITE_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME + ;Write folder to registry + WriteRegStr "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" + !endif + + ${endif} + + !undef MUI_STARTMENUPAGE_CURRENT_ID + + !verbose pop + +!macroend + diff --git a/tools/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh b/tools/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh new file mode 100644 index 0000000..1ebe927 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/UninstallConfirm.nsh @@ -0,0 +1,100 @@ +/* + +NSIS Modern User Interface +Uninstall confirmation page + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_UNCONFIRMPAGE_INTERFACE + + !ifndef MUI_UNCONFIRMPAGE_INTERFACE + !define MUI_UNCONFIRMPAGE_INTERFACE + Var mui.UnConfirmPage + + Var mui.UnConfirmPage.Text + Var mui.UnConfirmPage.DirectoryText + Var mui.UnConfirmPage.Directory + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_CONFIRM + + !insertmacro MUI_SET MUI_UNCONFIRMPAGE "" + !insertmacro MUI_UNCONFIRMPAGE_INTERFACE + + !insertmacro MUI_DEFAULT MUI_UNCONFIRMPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_UNCONFIRMPAGE_TEXT_LOCATION "" + + PageEx un.uninstConfirm + + PageCallbacks un.mui.ConfirmPre_${MUI_UNIQUEID} un.mui.ConfirmShow_${MUI_UNIQUEID} un.mui.ConfirmLeave_${MUI_UNIQUEID} + + Caption " " + + UninstallText "${MUI_UNCONFIRMPAGE_TEXT_TOP}" "${MUI_UNCONFIRMPAGE_TEXT_LOCATION}" + + !ifdef MUI_UNCONFIRMPAGE_VARIABLE + DirVar "${MUI_UNCONFIRMPAGE_VARIABLE}" + !endif + + PageExEnd + + !insertmacro MUI_UNFUNCTION_CONFIRMPAGE un.mui.ConfirmPre_${MUI_UNIQUEID} un.mui.ConfirmShow_${MUI_UNIQUEID} un.mui.ConfirmLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_UNCONFIRMPAGE_TEXT_TOP + !insertmacro MUI_UNSET MUI_UNCONFIRMPAGE_TEXT_LOCATION + +!macroend + +!macro MUI_UNPAGE_CONFIRM + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_CONFIRM + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_UNFUNCTION_CONFIRMPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_UNTEXT_CONFIRM_TITLE) $(MUI_UNTEXT_CONFIRM_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + ;Get controls handles + FindWindow $mui.UnConfirmPage "#32770" "" $HWNDPARENT + GetDlgItem $mui.UnConfirmPage.Text $mui.UnConfirmPage 1006 + GetDlgItem $mui.UnConfirmPage.DirectoryText $mui.UnConfirmPage 1029 + GetDlgItem $mui.UnConfirmPage.Directory $mui.UnConfirmPage 1000 + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI 2/Pages/Welcome.nsh b/tools/Contrib/Modern UI 2/Pages/Welcome.nsh new file mode 100644 index 0000000..0839b94 --- /dev/null +++ b/tools/Contrib/Modern UI 2/Pages/Welcome.nsh @@ -0,0 +1,181 @@ +/* + +NSIS Modern User Interface +Welcome page (implemented using nsDialogs) + +*/ + +;-------------------------------- +;Page interface settings and variables + +!macro MUI_WELCOMEPAGE_INTERFACE + + !ifndef MUI_WELCOMEPAGE_INTERFACE + !define MUI_WELCOMEPAGE_INTERFACE + Var mui.WelcomePage + + Var mui.WelcomePage.Image + Var mui.WelcomePage.Image.Bitmap + + Var mui.WelcomePage.Title + Var mui.WelcomePage.Title.Font + + Var mui.WelcomePage.Text + !endif + + !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" + !if "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" == "" + !error "Invalid MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP" + !endif + +!macroend + + +;-------------------------------- +;Interface initialization + +!macro MUI_WELCOMEPAGE_GUIINIT + + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT + !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT + + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit + + InitPluginsDir + File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" + !pragma verifyloadimage "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" + + !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT + Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}" + !endif + + FunctionEnd + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit + + !endif + +!macroend + + +;-------------------------------- +;Page declaration + +!macro MUI_PAGEDECLARATION_WELCOME + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEPAGE "" + !insertmacro MUI_WELCOMEPAGE_INTERFACE + + !insertmacro MUI_WELCOMEPAGE_GUIINIT + + !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)" + !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)" + + !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} + + PageExEnd + + !insertmacro MUI_FUNCTION_WELCOMEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT + +!macroend + +!macro MUI_PAGE_WELCOME + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_WELCOME + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_WELCOME + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + !insertmacro MUI_PAGEDECLARATION_WELCOME + + !verbose pop + +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + ;Create dialog + nsDialogs::Create 1044 + Pop $mui.WelcomePage + nsDialogs::SetRTL $(^RTL) + SetCtlColors $mui.WelcomePage "" "${MUI_BGCOLOR}" + + ;Image control + ${NSD_CreateBitmap} 0u 0u 109u 193u "" + Pop $mui.WelcomePage.Image + !insertmacro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE "${MUI_PAGE_UNINSTALLER_PREFIX}" $mui.WelcomePage.Image $PLUGINSDIR\modern-wizard.bmp $mui.WelcomePage.Image.Bitmap + + ;Positiong of controls + + ;Title + !ifndef MUI_WELCOMEPAGE_TITLE_3LINES + !define MUI_WELCOMEPAGE_TITLE_HEIGHT 28 + !else + !define MUI_WELCOMEPAGE_TITLE_HEIGHT 38 + !endif + + ;Text + ;17 = 10 (top margin) + 7 (distance between texts) + !define /math MUI_WELCOMEPAGE_TEXT_TOP 17 + ${MUI_WELCOMEPAGE_TITLE_HEIGHT} + + ;Title + ${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}" + Pop $mui.WelcomePage.Title + SetCtlColors $mui.WelcomePage.Title "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + CreateFont $mui.WelcomePage.Title.Font "$(^Font)" "12" "700" + SendMessage $mui.WelcomePage.Title ${WM_SETFONT} $mui.WelcomePage.Title.Font 0 + + ;Welcome text + ${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 130u "${MUI_WELCOMEPAGE_TEXT}" + Pop $mui.WelcomePage.Text + SetCtlColors $mui.WelcomePage.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + ;Show page + Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + nsDialogs::Show + !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED + Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow + + ;Delete image from memory + ${NSD_FreeImage} $mui.WelcomePage.Image.Bitmap + + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_HEIGHT + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT_TOP + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend diff --git a/tools/Contrib/Modern UI/System.nsh b/tools/Contrib/Modern UI/System.nsh new file mode 100644 index 0000000..4646b44 --- /dev/null +++ b/tools/Contrib/Modern UI/System.nsh @@ -0,0 +1,2255 @@ +/* + +NSIS Modern User Interface - Version 1.81 +Copyright 2002-2023 Joost Verburg + +*/ + +!ifndef MUI_INCLUDED +!verbose push 3 +!define MUI_INCLUDED +!define MUI_SYSVERSION "1.81" +!verbose pop +!echo "NSIS Modern User Interface version ${MUI_SYSVERSION} - Copyright 2002-2023 Joost Verburg" + +;-------------------------------- +!verbose push 3 +!define /IfNDef MUI_VERBOSE 3 +!verbose ${MUI_VERBOSE} + +;-------------------------------- +;HEADER FILES, DECLARATIONS + +!include InstallOptions.nsh +!include LangFile.nsh +!include WinMessages.nsh + +Var MUI_TEMP1 +Var MUI_TEMP2 + +;-------------------------------- +;INSERT CODE + +!macro MUI_INSERT + + !ifndef MUI_INSERT + !define MUI_INSERT + + !ifdef MUI_PRODUCT | MUI_VERSION + !warning "The MUI_PRODUCT and MUI_VERSION defines have been removed. Use a normal Name command now." + !endif + + !insertmacro MUI_INTERFACE + + !insertmacro MUI_FUNCTION_GUIINIT + !insertmacro MUI_FUNCTION_ABORTWARNING + + !ifdef MUI_IOCONVERT_USED + !insertmacro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT + !endif + + !ifdef MUI_UNINSTALLER + !insertmacro MUI_UNFUNCTION_GUIINIT + !insertmacro MUI_FUNCTION_UNABORTWARNING + + !ifdef MUI_UNIOCONVERT_USED + !insertmacro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT + !endif + !endif + + !endif + +!macroend + +;-------------------------------- +;GENERAL + +!macro MUI_DEFAULT SYMBOL CONTENT + + !ifndef "${SYMBOL}" + !define "${SYMBOL}" "${CONTENT}" + !endif + +!macroend + +!macro MUI_DEFAULT_IOCONVERT SYMBOL CONTENT + + !ifndef "${SYMBOL}" + !define "${SYMBOL}" "${CONTENT}" + !insertmacro MUI_SET "${SYMBOL}_DEFAULTSET" + !insertmacro MUI_SET "MUI_${MUI_PAGE_UNINSTALLER_PREFIX}IOCONVERT_USED" + !else + !insertmacro MUI_UNSET "${SYMBOL}_DEFAULTSET" + !endif + +!macroend + +!macro MUI_SET SYMBOL + + !ifndef "${SYMBOL}" + !define "${SYMBOL}" + !endif + +!macroend + +!macro MUI_UNSET SYMBOL + + !ifdef "${SYMBOL}" + !undef "${SYMBOL}" + !endif + +!macroend + +;-------------------------------- +;INTERFACE - COMPILE TIME SETTINGS + +!macro MUI_INTERFACE + + !ifndef MUI_INTERFACE + !define MUI_INTERFACE + + !ifdef MUI_INSERT_NSISCONF + !insertmacro MUI_NSISCONF + !endif + + !insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe" + !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe" + !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe" + !insertmacro MUI_DEFAULT MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe" + !insertmacro MUI_DEFAULT MUI_UI_COMPONENTSPAGE_NODESC "${NSISDIR}\Contrib\UIs\modern_nodesc.exe" + !insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" + !insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_BGCOLOR "/windows" + !insertmacro MUI_DEFAULT MUI_INSTFILESPAGE_COLORS "/windows" + !insertmacro MUI_DEFAULT MUI_INSTFILESPAGE_PROGRESSBAR "smooth" + !insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF" + !insertmacro MUI_DEFAULT MUI_TEXTCOLOR "000000" + !insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_INI "${NSISDIR}\Contrib\Modern UI\ioSpecial.ini" + !insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_INI "${NSISDIR}\Contrib\Modern UI\ioSpecial.ini" + !insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" + !insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" + !if "${MUI_WELCOMEFINISHPAGE_BITMAP}" == "" + !error "Invalid MUI_WELCOMEFINISHPAGE_BITMAP" + !endif + !if "${MUI_UNWELCOMEFINISHPAGE_BITMAP}" == "" + !error "Invalid MUI_UNWELCOMEFINISHPAGE_BITMAP" + !endif + + !ifdef MUI_HEADERIMAGE + + !insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" + + !ifndef MUI_HEADERIMAGE_UNBITMAP + !define MUI_HEADERIMAGE_UNBITMAP "${MUI_HEADERIMAGE_BITMAP}" + !ifdef MUI_HEADERIMAGE_BITMAP_NOSTRETCH + !insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH + !endif + !endif + + !if "${MUI_HEADERIMAGE_BITMAP}" == "" + !error "Invalid MUI_HEADERIMAGE_BITMAP" + !endif + !if "${MUI_HEADERIMAGE_UNBITMAP}" == "" + !error "Invalid MUI_HEADERIMAGE_UNBITMAP" + !endif + + !ifdef MUI_HEADERIMAGE_BITMAP_RTL + !ifndef MUI_HEADERIMAGE_UNBITMAP_RTL + !define MUI_HEADERIMAGE_UNBITMAP_RTL "${MUI_HEADERIMAGE_BITMAP_RTL}" + !ifdef MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH + !insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH + !endif + !endif + + !if "${MUI_HEADERIMAGE_BITMAP_RTL}" == "" + !error "Invalid MUI_HEADERIMAGE_BITMAP_RTL" + !endif + !if "${MUI_HEADERIMAGE_UNBITMAP_RTL}" == "" + !error "Invalid MUI_HEADERIMAGE_UNBITMAP_RTL" + !endif + !endif + + !endif + + XPStyle On + + ChangeUI all "${MUI_UI}" + !ifdef MUI_HEADERIMAGE + !ifndef MUI_HEADERIMAGE_RIGHT + ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE}" + !else + ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE_RIGHT}" + !endif + !endif + !ifdef MUI_COMPONENTSPAGE_SMALLDESC + ChangeUI IDD_SELCOM "${MUI_UI_COMPONENTSPAGE_SMALLDESC}" + !else ifdef MUI_COMPONENTSPAGE_NODESC + ChangeUI IDD_SELCOM "${MUI_UI_COMPONENTSPAGE_NODESC}" + !endif + + Icon "${MUI_ICON}" + UninstallIcon "${MUI_UNICON}" + + CheckBitmap "${MUI_COMPONENTSPAGE_CHECKBITMAP}" + LicenseBkColor "${MUI_LICENSEPAGE_BGCOLOR}" + InstallColors ${MUI_INSTFILESPAGE_COLORS} + InstProgressFlags ${MUI_INSTFILESPAGE_PROGRESSBAR} + + SubCaption 4 " " + UninstallSubCaption 2 " " + + !insertmacro MUI_DEFAULT MUI_ABORTWARNING_TEXT "$(MUI_TEXT_ABORTWARNING)" + !insertmacro MUI_DEFAULT MUI_UNABORTWARNING_TEXT "$(MUI_UNTEXT_ABORTWARNING)" + + !endif + +!macroend + +;-------------------------------- +;INTERFACE - RUN-TIME + +!macro MUI_INNERDIALOG_TEXT CONTROL TEXT + + !verbose push + !verbose ${MUI_VERBOSE} + + FindWindow $MUI_TEMP1 "#32770" "" $HWNDPARENT + GetDlgItem $MUI_TEMP1 $MUI_TEMP1 ${CONTROL} + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:${TEXT}" + + !verbose pop + +!macroend + +!macro MUI_HEADER_TEXT_INTERNAL ID TEXT + + GetDlgItem $MUI_TEMP1 $HWNDPARENT "${ID}" + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + !endif + + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:${TEXT}" + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + + ShowWindow $MUI_TEMP1 ${SW_SHOWNA} + + !endif + +!macroend + +!macro MUI_HEADER_TEXT TEXT SUBTEXT + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + + LockWindow on + + !endif + + !insertmacro MUI_HEADER_TEXT_INTERNAL 1037 "${TEXT}" + !insertmacro MUI_HEADER_TEXT_INTERNAL 1038 "${SUBTEXT}" + + !ifdef MUI_HEADER_TRANSPARENT_TEXT + + LockWindow off + + !endif + + !verbose pop + +!macroend + +!macro MUI_HEADER_TEXT_PAGE TEXT SUBTEXT + + !ifdef MUI_PAGE_HEADER_TEXT & MUI_PAGE_HEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_PAGE_HEADER_TEXT}" "${MUI_PAGE_HEADER_SUBTEXT}" + !else ifdef MUI_PAGE_HEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_PAGE_HEADER_TEXT}" "${SUBTEXT}" + !else ifdef MUI_PAGE_HEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${TEXT}" "${MUI_PAGE_HEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "${TEXT}" "${SUBTEXT}" + !endif + + !insertmacro MUI_UNSET MUI_PAGE_HEADER_TEXT + !insertmacro MUI_UNSET MUI_PAGE_HEADER_SUBTEXT + +!macroend + +!macro MUI_DESCRIPTION_BEGIN + + FindWindow $MUI_TEMP1 "#32770" "" $HWNDPARENT + GetDlgItem $MUI_TEMP1 $MUI_TEMP1 1043 + + StrCmp $0 -1 0 mui.description_begin_done + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:" + EnableWindow $MUI_TEMP1 0 + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:$MUI_TEXT" + Goto mui.description_done + mui.description_begin_done: + +!macroend + +!macro MUI_DESCRIPTION_TEXT VAR TEXT + + !verbose push + !verbose ${MUI_VERBOSE} + + StrCmp $0 ${VAR} 0 mui.description_${VAR}_done + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:" + EnableWindow $MUI_TEMP1 1 + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:${TEXT}" + Goto mui.description_done + mui.description_${VAR}_done: + + !verbose pop + +!macroend + +!macro MUI_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + mui.description_done: + + !verbose pop + +!macroend + +!macro MUI_ENDHEADER + + IfAbort mui.endheader_abort + + !ifdef MUI_INSTFILESPAGE_FINISHHEADER_TEXT & MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_FINISHHEADER_TEXT}" "${MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT}" + !else ifdef MUI_INSTFILESPAGE_FINISHHEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_FINISHHEADER_TEXT}" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_SUBTITLE)" + !else ifdef MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_TITLE)" "${MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_TITLE)" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_SUBTITLE)" + !endif + + Goto mui.endheader_done + + mui.endheader_abort: + + !ifdef MUI_INSTFILESPAGE_ABORTHEADER_TEXT & MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_ABORTHEADER_TEXT}" "${MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT}" + !else ifdef MUI_INSTFILESPAGE_ABORTHEADER_TEXT + !insertmacro MUI_HEADER_TEXT "${MUI_INSTFILESPAGE_ABORTHEADER_TEXT}" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_SUBTITLE)" + !else ifdef MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_TITLE)" "${MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT}" + !else + !insertmacro MUI_HEADER_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_TITLE)" "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_ABORT_SUBTITLE)" + !endif + + mui.endheader_done: + +!macroend + +!macro MUI_ABORTWARNING + + !ifdef MUI_FINISHPAGE_ABORTWARNINGCHECK + StrCmp $MUI_NOABORTWARNING "1" mui.quit + !endif + + !ifdef MUI_ABORTWARNING_CANCEL_DEFAULT + MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_ABORTWARNING_TEXT}" IDYES mui.quit + !else + MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_ABORTWARNING_TEXT}" IDYES mui.quit + !endif + + Abort + mui.quit: + +!macroend + +!macro MUI_UNABORTWARNING + + !ifdef MUI_UNABORTWARNING_CANCEL_DEFAULT + MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_UNABORTWARNING_TEXT}" IDYES mui.quit + !else + MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_UNABORTWARNING_TEXT}" IDYES mui.quit + !endif + + Abort + mui.quit: + +!macroend + +!macro MUI_GUIINIT + + !insertmacro MUI_WELCOMEFINISHPAGE_INIT "" + !insertmacro MUI_HEADERIMAGE_INIT "" + + !insertmacro MUI_GUIINIT_BASIC + +!macroend + +!macro MUI_UNGUIINIT + + !insertmacro MUI_WELCOMEFINISHPAGE_INIT "UN" + !insertmacro MUI_HEADERIMAGE_INIT "UN" + + !insertmacro MUI_GUIINIT_BASIC + + !ifdef MUI_UNFINISHPAGE + !ifndef MUI_UNFINISHPAGE_NOAUTOCLOSE + SetAutoClose true + !endif + !endif + +!macroend + +!macro MUI_GUIINIT_BASIC + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1037 + CreateFont $MUI_TEMP2 "$(^Font)" "$(^FontSize)" "700" + SendMessage $MUI_TEMP1 ${WM_SETFONT} $MUI_TEMP2 0 + + !ifndef MUI_HEADER_TRANSPARENT_TEXT + + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + !else + + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "transparent" + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "transparent" + + !endif + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1034 ; Header background + SetCtlColors $MUI_TEMP1 "" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1039 ; Header image + SetCtlColors $MUI_TEMP1 "" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1028 + SetCtlColors $MUI_TEMP1 /BRANDING + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1256 + SetCtlColors $MUI_TEMP1 /BRANDING + SendMessage $MUI_TEMP1 ${WM_SETTEXT} 0 "STR:$(^Branding) " + +!macroend + +!macro MUI_WELCOMEFINISHPAGE_INIT UNINSTALLER + + !ifdef MUI_${UNINSTALLER}WELCOMEPAGE | MUI_${UNINSTALLER}FINISHPAGE + + !insertmacro INSTALLOPTIONS_EXTRACT_AS "${MUI_${UNINSTALLER}WELCOMEFINISHPAGE_INI}" "ioSpecial.ini" + File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${UNINSTALLER}WELCOMEFINISHPAGE_BITMAP}" + !pragma verifyloadimage "${MUI_${UNINSTALLER}WELCOMEFINISHPAGE_BITMAP}" + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 1" "Text" "$PLUGINSDIR\modern-wizard.bmp" + + !ifdef MUI_${UNINSTALLER}WELCOMEFINISHPAGE_BITMAP_NOSTRETCH + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 1" "Flags" "" + !endif + + !endif + +!macroend + +!macro MUI_HEADERIMAGE_INIT UNINSTALLER + + !ifdef MUI_HEADERIMAGE + + InitPluginsDir + + !ifdef MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_RTL + + StrCmp $(^RTL) 0 mui.headerimageinit_nortl + + File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_RTL}" + !pragma verifyloadimage "${MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_RTL}" + + !ifndef MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_RTL_NOSTRETCH + SetBrandingImage /IMGID=1046 /RESIZETOFIT "$PLUGINSDIR\modern-header.bmp" + !else + SetBrandingImage /IMGID=1046 "$PLUGINSDIR\modern-header.bmp" + !endif + + Goto mui.headerimageinit_done + + mui.headerimageinit_nortl: + + !endif + + File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UNINSTALLER}BITMAP}" + !pragma verifyloadimage "${MUI_HEADERIMAGE_${UNINSTALLER}BITMAP}" + + !ifndef MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_NOSTRETCH + SetBrandingImage /IMGID=1046 /RESIZETOFIT "$PLUGINSDIR\modern-header.bmp" + !else + SetBrandingImage /IMGID=1046 "$PLUGINSDIR\modern-header.bmp" + !endif + + !ifdef MUI_HEADERIMAGE_${UNINSTALLER}BITMAP_RTL + + mui.headerimageinit_done: + + !endif + + !endif + +!macroend + +;-------------------------------- +;INTERFACE - FUNCTIONS + +!macro MUI_FUNCTION_GUIINIT + + Function .onGUIInit + + !insertmacro MUI_GUIINIT + + !ifdef MUI_CUSTOMFUNCTION_GUIINIT + Call "${MUI_CUSTOMFUNCTION_GUIINIT}" + !endif + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_BEGIN + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifndef MUI_VAR_TEXT + Var MUI_TEXT + !define MUI_VAR_TEXT + !endif + + Function .onMouseOverSection + !insertmacro MUI_DESCRIPTION_BEGIN + + !verbose pop + +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_DESCRIPTION_END + !ifdef MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION + Call "${MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION}" + !endif + FunctionEnd + + !verbose pop + +!macroend + +!macro MUI_UNFUNCTION_DESCRIPTION_BEGIN + + !verbose push + !verbose ${MUI_VERBOSE} + + Function un.onMouseOverSection + !insertmacro MUI_DESCRIPTION_BEGIN + + !verbose pop + +!macroend + +!macro MUI_UNFUNCTION_DESCRIPTION_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_DESCRIPTION_END + !ifdef MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION + Call "${MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION}" + !endif + FunctionEnd + + !verbose pop + +!macroend + +!macro MUI_FUNCTION_ABORTWARNING + + Function .onUserAbort + !ifdef MUI_ABORTWARNING + !insertmacro MUI_ABORTWARNING + !endif + !ifdef MUI_CUSTOMFUNCTION_ABORT + Call "${MUI_CUSTOMFUNCTION_ABORT}" + !endif + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_UNABORTWARNING + + Function un.onUserAbort + !ifdef MUI_UNABORTWARNING + !insertmacro MUI_UNABORTWARNING + !endif + !ifdef MUI_CUSTOMFUNCTION_UNABORT + Call "${MUI_CUSTOMFUNCTION_UNABORT}" + !endif + FunctionEnd + +!macroend + +!macro MUI_UNFUNCTION_GUIINIT + + Function un.onGUIInit + + !insertmacro MUI_UNGUIINIT + + !ifdef MUI_CUSTOMFUNCTION_UNGUIINIT + Call "${MUI_CUSTOMFUNCTION_UNGUIINIT}" + !endif + + FunctionEnd + +!macroend + +!macro MUI_FUNCTIONS_DESCRIPTION_BEGIN + + ;1.65 compatibility + + !warning "Modern UI macro name has changed. Please change MUI_FUNCTIONS_DESCRIPTION_BEGIN to MUI_FUNCTION_DESCRIPTION_BEGIN." + + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + +!macroend + +!macro MUI_FUNCTIONS_DESCRIPTION_END + + ;1.65 compatibility + + !warning "Modern UI macro name has changed. Please change MUI_FUNCTIONS_DESCRIPTION_END to MUI_FUNCTION_DESCRIPTION_END." + + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +!macroend + +;-------------------------------- +;START MENU FOLDER + +!macro MUI_STARTMENU_GETFOLDER ID VAR + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME + + ReadRegStr $MUI_TEMP1 "${MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}" + StrCmp $MUI_TEMP1 "" +3 + StrCpy "${VAR}" $MUI_TEMP1 + Goto +2 + + StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}" + + !else + + StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}" + + !endif + + !verbose pop + +!macroend + +!macro MUI_STARTMENU_WRITE_BEGIN ID + + !verbose push + !verbose ${MUI_VERBOSE} + + !define MUI_STARTMENUPAGE_CURRENT_ID "${ID}" + + StrCpy $MUI_TEMP1 "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1 + StrCmp $MUI_TEMP1 ">" mui.startmenu_write_${MUI_STARTMENUPAGE_CURRENT_ID}_done + + StrCmp "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" "" 0 mui.startmenu_writebegin_${MUI_STARTMENUPAGE_CURRENT_ID}_notempty + + !insertmacro MUI_STARTMENU_GETFOLDER "${MUI_STARTMENUPAGE_CURRENT_ID}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" + + mui.startmenu_writebegin_${MUI_STARTMENUPAGE_CURRENT_ID}_notempty: + + !verbose pop + +!macroend + +!macro MUI_STARTMENU_WRITE_END + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME + WriteRegStr "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" + !endif + + mui.startmenu_write_${MUI_STARTMENUPAGE_CURRENT_ID}_done: + + !undef MUI_STARTMENUPAGE_CURRENT_ID + + !verbose pop + +!macroend + +;-------------------------------- +;PAGES + +!macro MUI_PAGE_INIT + + !ifdef MUI_INSERT + !warning "MUI_[UN]PAGE_* inserted after MUI_LANGUAGE" + !endif + + !insertmacro MUI_INTERFACE + + !insertmacro MUI_DEFAULT MUI_PAGE_UNINSTALLER_PREFIX "" + !insertmacro MUI_DEFAULT MUI_PAGE_UNINSTALLER_FUNCPREFIX "" + + !insertmacro MUI_UNSET MUI_UNIQUEID + + !define MUI_UNIQUEID ${__LINE__} + +!macroend + +!macro MUI_UNPAGE_INIT + + !ifndef MUI_UNINSTALLER + !define MUI_UNINSTALLER + !endif + + !define MUI_PAGE_UNINSTALLER + + !insertmacro MUI_UNSET MUI_PAGE_UNINSTALLER_PREFIX + !insertmacro MUI_UNSET MUI_PAGE_UNINSTALLER_FUNCPREFIX + + !define MUI_PAGE_UNINSTALLER_PREFIX "UN" + !define MUI_PAGE_UNINSTALLER_FUNCPREFIX "un." + +!macroend + +!macro MUI_UNPAGE_END + + !undef MUI_PAGE_UNINSTALLER + !undef MUI_PAGE_UNINSTALLER_PREFIX + !undef MUI_PAGE_UNINSTALLER_FUNCPREFIX + +!macroend + +!macro MUI_PAGE_WELCOME + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEPAGE + + !insertmacro MUI_DEFAULT_IOCONVERT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)" + + !ifndef MUI_VAR_HWND + Var MUI_HWND + !define MUI_VAR_HWND + !endif + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} + + PageExEnd + + !insertmacro MUI_FUNCTION_WELCOMEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT + + !verbose pop + +!macroend + +!macro MUI_PAGE_LICENSE LICENSEDATA + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}LICENSEPAGE + + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_TEXT_TOP "$(MUI_INNERTEXT_LICENSE_TOP)" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_BUTTON "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_CHECKBOX_TEXT "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "" + !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "" + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}license + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicensePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseLeave_${MUI_UNIQUEID} + + Caption " " + + LicenseData "${LICENSEDATA}" + + !ifndef MUI_LICENSEPAGE_TEXT_BOTTOM + !ifndef MUI_LICENSEPAGE_CHECKBOX & MUI_LICENSEPAGE_RADIOBUTTONS + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM)" "${MUI_LICENSEPAGE_BUTTON}" + !else ifdef MUI_LICENSEPAGE_CHECKBOX + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM_CHECKBOX)" "${MUI_LICENSEPAGE_BUTTON}" + !else + LicenseText "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS)" "${MUI_LICENSEPAGE_BUTTON}" + !endif + !else + LicenseText "${MUI_LICENSEPAGE_TEXT_BOTTOM}" "${MUI_LICENSEPAGE_BUTTON}" + !endif + + !ifdef MUI_LICENSEPAGE_CHECKBOX + LicenseForceSelection checkbox "${MUI_LICENSEPAGE_CHECKBOX_TEXT}" + !else ifdef MUI_LICENSEPAGE_RADIOBUTTONS + LicenseForceSelection radiobuttons "${MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT}" "${MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE}" + !endif + + PageExEnd + + !insertmacro MUI_FUNCTION_LICENSEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicensePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.LicenseLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_LICENSEPAGE_TEXT_TOP + !insertmacro MUI_UNSET MUI_LICENSEPAGE_TEXT_BOTTOM + !insertmacro MUI_UNSET MUI_LICENSEPAGE_BUTTON + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT + !insertmacro MUI_UNSET MUI_LICENSEPAGE_RADIOBUTTONS + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT_ACCEPT + !insertmacro MUI_UNSET MUI_LICENSEPAGE_CHECKBOX_TEXT_DECLINE + + !verbose pop + +!macroend + +!macro MUI_PAGE_COMPONENTS + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}COMPONENTSPAGE + + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_COMPLIST "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_INSTTYPE "" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE)" + !insertmacro MUI_DEFAULT MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO)" + + !ifndef MUI_VAR_TEXT + Var MUI_TEXT + !define MUI_VAR_TEXT + !endif + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}components + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsLeave_${MUI_UNIQUEID} + + Caption " " + + ComponentText "${MUI_COMPONENTSPAGE_TEXT_TOP}" "${MUI_COMPONENTSPAGE_TEXT_INSTTYPE}" "${MUI_COMPONENTSPAGE_TEXT_COMPLIST}" + + PageExEnd + + !insertmacro MUI_FUNCTION_COMPONENTSPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ComponentsLeave_${MUI_UNIQUEID} + + !undef MUI_COMPONENTSPAGE_TEXT_TOP + !undef MUI_COMPONENTSPAGE_TEXT_COMPLIST + !undef MUI_COMPONENTSPAGE_TEXT_INSTTYPE + !insertmacro MUI_UNSET MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE + !insertmacro MUI_UNSET MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO + + !verbose pop + +!macroend + +!macro MUI_PAGE_DIRECTORY + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}DIRECTORYPAGE + + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_DESTINATION "" + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}directory + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryLeave_${MUI_UNIQUEID} + + Caption " " + + DirText "${MUI_DIRECTORYPAGE_TEXT_TOP}" "${MUI_DIRECTORYPAGE_TEXT_DESTINATION}" + + !ifdef MUI_DIRECTORYPAGE_VARIABLE + DirVar "${MUI_DIRECTORYPAGE_VARIABLE}" + !endif + + !ifdef MUI_DIRECTORYPAGE_VERIFYONLEAVE + DirVerify leave + !endif + + PageExEnd + + !insertmacro MUI_FUNCTION_DIRECTORYPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.DirectoryLeave_${MUI_UNIQUEID} + + !undef MUI_DIRECTORYPAGE_TEXT_TOP + !undef MUI_DIRECTORYPAGE_TEXT_DESTINATION + !insertmacro MUI_UNSET MUI_DIRECTORYPAGE_BGCOLOR + !insertmacro MUI_UNSET MUI_DIRECTORYPAGE_VARIABLE + !insertmacro MUI_UNSET MUI_DIRECTORYPAGE_VERIFYONLEAVE + + !verbose pop + +!macroend + +!macro MUI_PAGE_STARTMENU ID VAR + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}STARTMENUPAGE + + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)" + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_TOP "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_TOP)" + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_CHECKBOX "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_CHECKBOX)" + + !define MUI_STARTMENUPAGE_VARIABLE "${VAR}" + !define "MUI_STARTMENUPAGE_${ID}_VARIABLE" "${MUI_STARTMENUPAGE_VARIABLE}" + !define "MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" + !endif + !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" + !endif + !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME + !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}" + !endif + + !ifndef MUI_VAR_HWND + Var MUI_HWND + !define MUI_VAR_HWND + !endif + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_STARTMENUPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID} + + !undef MUI_STARTMENUPAGE_VARIABLE + !undef MUI_STARTMENUPAGE_TEXT_TOP + !undef MUI_STARTMENUPAGE_TEXT_CHECKBOX + !undef MUI_STARTMENUPAGE_DEFAULTFOLDER + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_NODISABLE + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_ROOT + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_KEY + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_VALUENAME + !insertmacro MUI_UNSET MUI_STARTMENUPAGE_BGCOLOR + + !verbose pop + +!macroend + +!macro MUI_PAGE_INSTFILES + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INSTFILESPAGE + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}instfiles + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesLeave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_INSTFILESPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesShow_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.InstFilesLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_FINISHHEADER_TEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_ABORTWARNING_TEXT + !insertmacro MUI_UNSET MUI_INSTFILESPAGE_ABORTWARNING_SUBTEXT + + !verbose pop + +!macroend + +!macro MUI_PAGE_FINISH + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}FINISHPAGE + + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_TITLE)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_TEXT)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_BUTTON "$(MUI_BUTTONTEXT_FINISH)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_TEXT_REBOOT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_FINISH_INFO_REBOOT)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_TEXT_REBOOTNOW "$(MUI_TEXT_FINISH_REBOOTNOW)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_TEXT_REBOOTLATER "$(MUI_TEXT_FINISH_REBOOTLATER)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_RUN_TEXT "$(MUI_TEXT_FINISH_RUN)" + !insertmacro MUI_DEFAULT_IOCONVERT MUI_FINISHPAGE_SHOWREADME_TEXT "$(MUI_TEXT_FINISH_SHOWREADME)" + !insertmacro MUI_DEFAULT MUI_FINISHPAGE_LINK_COLOR "000080" + + !ifndef MUI_VAR_HWND + Var MUI_HWND + !define MUI_VAR_HWND + !endif + + !ifndef MUI_PAGE_UNINSTALLER + !ifndef MUI_FINISHPAGE_NOAUTOCLOSE + AutoCloseWindow true + !endif + !endif + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + !ifndef MUI_VAR_NOABORTWARNING + !define MUI_VAR_NOABORTWARNING + Var MUI_NOABORTWARNING + !endif + !endif + + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom + + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishLeave_${MUI_UNIQUEID} + + Caption " " + + PageExEnd + + !insertmacro MUI_FUNCTION_FINISHPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.FinishLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_FINISHPAGE_TITLE + !insertmacro MUI_UNSET MUI_FINISHPAGE_TITLE_3LINES + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_LARGE + !insertmacro MUI_UNSET MUI_FINISHPAGE_BUTTON + !insertmacro MUI_UNSET MUI_FINISHPAGE_CANCEL_ENABLED + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOT + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOTNOW + !insertmacro MUI_UNSET MUI_FINISHPAGE_TEXT_REBOOTLATER + !insertmacro MUI_UNSET MUI_FINISHPAGE_REBOOTLATER_DEFAULT + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_PARAMETERS + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_NOTCHECKED + !insertmacro MUI_UNSET MUI_FINISHPAGE_RUN_FUNCTION + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_TEXT + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + !insertmacro MUI_UNSET MUI_FINISHPAGE_SHOWREADME_FUNCTION + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK_LOCATION + !insertmacro MUI_UNSET MUI_FINISHPAGE_LINK_COLOR + !insertmacro MUI_UNSET MUI_FINISHPAGE_NOREBOOTSUPPORT + + !insertmacro MUI_UNSET MUI_FINISHPAGE_CURFIELD_TOP + !insertmacro MUI_UNSET MUI_FINISHPAGE_CURFIELD_BOTTOM + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_WELCOME + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_WELCOME + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_CONFIRM + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifndef MUI_UNINSTALLER + !define MUI_UNINSTALLER + !endif + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_SET MUI_UNCONFIRMPAGE + + !insertmacro MUI_DEFAULT MUI_UNCONFIRMPAGE_TEXT_TOP "" + !insertmacro MUI_DEFAULT MUI_UNCONFIRMPAGE_TEXT_LOCATION "" + + PageEx un.uninstConfirm + + PageCallbacks un.mui.ConfirmPre_${MUI_UNIQUEID} un.mui.ConfirmShow_${MUI_UNIQUEID} un.mui.ConfirmLeave_${MUI_UNIQUEID} + + Caption " " + + UninstallText "${MUI_UNCONFIRMPAGE_TEXT_TOP}" "${MUI_UNCONFIRMPAGE_TEXT_LOCATION}" + + !ifdef MUI_UNCONFIRMPAGE_VARIABLE + DirVar "${MUI_UNCONFIRMPAGE_VARIABLE}" + !endif + + PageExEnd + + !insertmacro MUI_UNFUNCTION_CONFIRMPAGE un.mui.ConfirmPre_${MUI_UNIQUEID} un.mui.ConfirmShow_${MUI_UNIQUEID} un.mui.ConfirmLeave_${MUI_UNIQUEID} + + !insertmacro MUI_UNSET MUI_UNCONFIRMPAGE_TEXT_TOP + !insertmacro MUI_UNSET MUI_UNCONFIRMPAGE_TEXT_LOCATION + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_LICENSE LICENSEDATA + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_LICENSE "${LICENSEDATA}" + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_COMPONENTS + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_COMPONENTS + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_DIRECTORY + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_DIRECTORY + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_INSTFILES + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +!macro MUI_UNPAGE_FINISH + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro MUI_UNPAGE_INIT + + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_END + + !verbose pop + +!macroend + +;-------------------------------- +;PAGE FUNCTIONS + +!macro MUI_PAGE_FUNCTION_CUSTOM TYPE + + !ifdef MUI_PAGE_CUSTOMFUNCTION_${TYPE} + Call "${MUI_PAGE_CUSTOMFUNCTION_${TYPE}}" + !undef MUI_PAGE_CUSTOMFUNCTION_${TYPE} + !endif + +!macroend + +!macro MUI_WELCOMEFINISHPAGE_FUNCTION_CUSTOM + + !ifdef MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT + Call "${MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT}" + !undef MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT + !endif + +!macroend + +!macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_WELCOMEFINISHPAGE_FUNCTION_CUSTOM + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "NumFields" "3" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "NextButtonText" "" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "CancelEnabled" "" + + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 2" "Text" MUI_WELCOMEPAGE_TITLE + + !ifndef MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 2" "Bottom" "38" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Top" "45" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 2" "Bottom" "48" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Top" "55" + !endif + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "185" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 3" "Text" MUI_WELCOMEPAGE_TEXT + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + LockWindow on + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1028 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1256 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1035 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1037 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1039 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1045 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + LockWindow off + + !insertmacro INSTALLOPTIONS_INITDIALOG "ioSpecial.ini" + Pop $MUI_HWND + SetCtlColors $MUI_HWND "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1201 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + CreateFont $MUI_TEMP2 "$(^Font)" "12" "700" + SendMessage $MUI_TEMP1 ${WM_SETFONT} $MUI_TEMP2 0 + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1202 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + !insertmacro INSTALLOPTIONS_SHOW + + LockWindow on + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1028 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1256 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1035 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1037 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1039 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1045 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + LockWindow off + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_LICENSEPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_LICENSE_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_LICENSE_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + !insertmacro MUI_INNERDIALOG_TEXT 1040 "${MUI_LICENSEPAGE_TEXT_TOP}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_COMPONENTSPAGE PRE SHOW LEAVE + + Function "${PRE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_COMPONENTS_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_COMPONENTS_SUBTITLE) + FunctionEnd + + Function "${SHOW}" + + !insertmacro MUI_INNERDIALOG_TEXT 1042 "${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE}" + + FindWindow $MUI_TEMP1 "#32770" "" $HWNDPARENT + GetDlgItem $MUI_TEMP1 $MUI_TEMP1 1043 + EnableWindow $MUI_TEMP1 0 + + !insertmacro MUI_INNERDIALOG_TEXT 1043 "${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}" + StrCpy $MUI_TEXT "${MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_DIRECTORYPAGE PRE SHOW LEAVE + + Function "${PRE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_DIRECTORY_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_DIRECTORY_SUBTITLE) + FunctionEnd + + Function "${SHOW}" + !ifdef MUI_DIRECTORYPAGE_BGCOLOR + !insertmacro MUI_DEFAULT MUI_DIRECTORYPAGE_TEXTCOLOR "" + FindWindow $MUI_TEMP1 "#32770" "" $HWNDPARENT + GetDlgItem $MUI_TEMP1 $MUI_TEMP1 1019 + SetCtlColors $MUI_TEMP1 "${MUI_DIRECTORYPAGE_TEXTCOLOR}" "${MUI_DIRECTORYPAGE_BGCOLOR}" + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + FunctionEnd + + Function "${LEAVE}" + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_STARTMENUPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME + + StrCmp "${MUI_STARTMENUPAGE_VARIABLE}" "" 0 +4 + + ReadRegStr $MUI_TEMP1 "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}" + StrCmp $MUI_TEMP1 "" +2 + StrCpy "${MUI_STARTMENUPAGE_VARIABLE}" $MUI_TEMP1 + + !endif + + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(MUI_TEXT_STARTMENU_SUBTITLE) + + StrCmp $(^RTL) 0 mui.startmenu_nortl + !ifndef MUI_STARTMENUPAGE_NODISABLE + StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !else + StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !endif + Goto mui.startmenu_initdone + mui.startmenu_nortl: + !ifndef MUI_STARTMENUPAGE_NODISABLE + StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !else + StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}" + !endif + mui.startmenu_initdone: + + Pop $MUI_HWND + + !ifdef MUI_STARTMENUPAGE_BGCOLOR + !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXTCOLOR "" + GetDlgItem $MUI_TEMP1 $MUI_HWND 1002 + SetCtlColors $MUI_TEMP1 "${MUI_STARTMENUPAGE_TEXTCOLOR}" "${MUI_STARTMENUPAGE_BGCOLOR}" + GetDlgItem $MUI_TEMP1 $MUI_HWND 1004 + SetCtlColors $MUI_TEMP1 "${MUI_STARTMENUPAGE_TEXTCOLOR}" "${MUI_STARTMENUPAGE_BGCOLOR}" + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + StartMenu::Show + !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED + + Pop $MUI_TEMP1 + StrCmp $MUI_TEMP1 "success" 0 +2 + Pop "${MUI_STARTMENUPAGE_VARIABLE}" + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_INSTFILESPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLING_TITLE) $(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLING_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + !insertmacro MUI_ENDHEADER + !insertmacro MUI_LANGDLL_SAVELANGUAGE + + FunctionEnd + +!macroend + +!macro MUI_FUNCTION_FINISHPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_WELCOMEFINISHPAGE_FUNCTION_CUSTOM + + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Settings" "NextButtonText" MUI_FINISHPAGE_BUTTON + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "CancelEnabled" "1" + !endif + + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 2" "Bottom" "38" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Top" "45" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 2" "Bottom" "48" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Top" "55" + !endif + + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 2" "Text" MUI_FINISHPAGE_TITLE + + !ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "85" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "115" + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "95" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "125" + !endif + !endif + !else + !ifndef MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "185" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "175" + !endif + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + + IfRebootFlag 0 mui.finish_noreboot_init + + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "85" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "115" + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "95" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 3" "Bottom" "125" + !endif + !endif + + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 3" "Text" MUI_FINISHPAGE_TEXT_REBOOT + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "5" + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Type" "RadioButton" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 4" "Text" MUI_FINISHPAGE_TEXT_REBOOTNOW + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Left" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Right" "321" + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "90" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "100" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "130" + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "100" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "110" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "130" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "140" + !endif + !endif + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Type" "RadioButton" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 5" "Text" MUI_FINISHPAGE_TEXT_REBOOTLATER + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Left" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Right" "321" + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Top" "110" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Bottom" "120" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Top" "110" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "Bottom" "120" + !endif + !ifdef MUI_FINISHPAGE_REBOOTLATER_DEFAULT + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "State" "0" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "State" "1" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "State" "1" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 5" "State" "0" + !endif + + Goto mui.finish_load + + mui.finish_noreboot_init: + + !endif + + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 3" "Text" MUI_FINISHPAGE_TEXT + + !ifdef MUI_FINISHPAGE_RUN + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Type" "CheckBox" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field 4" "Text" MUI_FINISHPAGE_RUN_TEXT + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Left" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Right" "315" + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "90" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "100" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "130" + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "100" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "110" + !else + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Top" "130" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "Bottom" "140" + !endif + !endif + !ifndef MUI_FINISHPAGE_RUN_NOTCHECKED + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 4" "State" "1" + !endif + + !endif + + !ifdef MUI_FINISHPAGE_SHOWREADME + + !ifdef MUI_FINISHPAGE_CURFIELD_NO + !undef MUI_FINISHPAGE_CURFIELD_NO + !endif + + !ifndef MUI_FINISHPAGE_RUN + !define MUI_FINISHPAGE_CURFIELD_NO 4 + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !define MUI_FINISHPAGE_CURFIELD_TOP 90 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 100 + !else + !define MUI_FINISHPAGE_CURFIELD_TOP 120 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 130 + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !define MUI_FINISHPAGE_CURFIELD_TOP 100 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 110 + !else + !define MUI_FINISHPAGE_CURFIELD_TOP 130 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 140 + !endif + !endif + !else + !define MUI_FINISHPAGE_CURFIELD_NO 5 + !ifndef MUI_FINISHPAGE_TITLE_3LINES + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !define MUI_FINISHPAGE_CURFIELD_TOP 110 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 120 + !else + !define MUI_FINISHPAGE_CURFIELD_TOP 140 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 150 + !endif + !else + !ifndef MUI_FINISHPAGE_TEXT_LARGE + !define MUI_FINISHPAGE_CURFIELD_TOP 120 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 130 + !else + !define MUI_FINISHPAGE_CURFIELD_TOP 150 + !define MUI_FINISHPAGE_CURFIELD_BOTTOM 160 + !endif + !endif + !endif + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Type" "CheckBox" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Text" MUI_FINISHPAGE_SHOWREADME_TEXT + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Left" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Right" "315" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Top" ${MUI_FINISHPAGE_CURFIELD_TOP} + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Bottom" ${MUI_FINISHPAGE_CURFIELD_BOTTOM} + !ifndef MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "State" "1" + !endif + + !endif + + !ifdef MUI_FINISHPAGE_LINK + + !ifdef MUI_FINISHPAGE_CURFIELD_NO + !undef MUI_FINISHPAGE_CURFIELD_NO + !endif + + !ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + !define MUI_FINISHPAGE_CURFIELD_NO 6 + !else ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME + !define MUI_FINISHPAGE_CURFIELD_NO 5 + !else + !define MUI_FINISHPAGE_CURFIELD_NO 4 + !endif + + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Type" "Link" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Text" MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Left" "120" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Right" "315" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Top" "175" + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "Bottom" "185" + !insertmacro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT "ioSpecial.ini" "Field ${MUI_FINISHPAGE_CURFIELD_NO}" "State" MUI_FINISHPAGE_LINK_LOCATION + + !endif + + !ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME & MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "6" + !else ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "5" + !else ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "5" + !else ifdef MUI_FINISHPAGE_SHOWREADME & MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "5" + !else ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME | MUI_FINISHPAGE_LINK + !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "Numfields" "4" + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + mui.finish_load: + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + LockWindow on + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1028 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1256 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1035 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1037 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1039 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1045 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + LockWindow off + + !insertmacro INSTALLOPTIONS_INITDIALOG "ioSpecial.ini" + Pop $MUI_HWND + SetCtlColors $MUI_HWND "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1201 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + CreateFont $MUI_TEMP2 "$(^Font)" "12" "700" + SendMessage $MUI_TEMP1 ${WM_SETFONT} $MUI_TEMP2 0 + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1202 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + + IfRebootFlag 0 mui.finish_noreboot_show + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + GetDlgItem $MUI_TEMP1 $MUI_HWND 1204 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + + Goto mui.finish_show + + mui.finish_noreboot_show: + + !endif + + !ifdef MUI_FINISHPAGE_RUN + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !endif + + !ifdef MUI_FINISHPAGE_SHOWREADME + !ifndef MUI_FINISHPAGE_RUN + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + !else + GetDlgItem $MUI_TEMP1 $MUI_HWND 1204 + !endif + SetCtlColors $MUI_TEMP1 "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}" + !endif + + !ifdef MUI_FINISHPAGE_LINK + !ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + GetDlgItem $MUI_TEMP1 $MUI_HWND 1205 + !else ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME + GetDlgItem $MUI_TEMP1 $MUI_HWND 1204 + !else + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + !endif + SetCtlColors $MUI_TEMP1 "${MUI_FINISHPAGE_LINK_COLOR}" "${MUI_BGCOLOR}" + !endif + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + mui.finish_show: + !endif + + !ifndef MUI_FORCECLASSICCONTROLS + ${If} ${IsHighContrastModeActive} + !endif + ; SetCtlColors does not change the check/radio text color (bug #443) + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + System::Call 'UXTHEME::SetWindowTheme(p$MUI_TEMP1,w" ",w" ")' + GetDlgItem $MUI_TEMP1 $MUI_HWND 1204 + System::Call 'UXTHEME::SetWindowTheme(p$MUI_TEMP1,w" ",w" ")' + !else ifdef MUI_FINISHPAGE_RUN | MUI_FINISHPAGE_SHOWREADME + GetDlgItem $MUI_TEMP1 $MUI_HWND 1203 + System::Call 'UXTHEME::SetWindowTheme(p$MUI_TEMP1,w" ",w" ")' + !ifdef MUI_FINISHPAGE_RUN & MUI_FINISHPAGE_SHOWREADME + GetDlgItem $MUI_TEMP1 $MUI_HWND 1204 + System::Call 'UXTHEME::SetWindowTheme(p$MUI_TEMP1,w" ",w" ")' + !endif + !endif + !ifndef MUI_FORCECLASSICCONTROLS + ${EndIf} + !endif + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + StrCpy $MUI_NOABORTWARNING "1" + !endif + + !insertmacro INSTALLOPTIONS_SHOW + + !ifdef MUI_FINISHPAGE_CANCEL_ENABLED + StrCpy $MUI_NOABORTWARNING "" + !endif + + LockWindow on + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1028 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1256 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1035 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1037 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1038 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1039 + ShowWindow $MUI_TEMP1 ${SW_NORMAL} + + GetDlgItem $MUI_TEMP1 $HWNDPARENT 1045 + ShowWindow $MUI_TEMP1 ${SW_HIDE} + LockWindow off + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + !ifndef MUI_FINISHPAGE_NOREBOOTSUPPORT + + IfRebootFlag "" mui.finish_noreboot_end + + !insertmacro INSTALLOPTIONS_READ $MUI_TEMP1 "ioSpecial.ini" "Field 4" "State" + + StrCmp $MUI_TEMP1 "1" 0 +2 + Reboot + + Return + + mui.finish_noreboot_end: + + !endif + + !ifdef MUI_FINISHPAGE_RUN + + !insertmacro INSTALLOPTIONS_READ $MUI_TEMP1 "ioSpecial.ini" "Field 4" "State" + + StrCmp $MUI_TEMP1 "1" 0 mui.finish_norun + !ifndef MUI_FINISHPAGE_RUN_FUNCTION + !ifndef MUI_FINISHPAGE_RUN_PARAMETERS + StrCpy $MUI_TEMP1 "$\"${MUI_FINISHPAGE_RUN}$\"" + !else + StrCpy $MUI_TEMP1 "$\"${MUI_FINISHPAGE_RUN}$\" ${MUI_FINISHPAGE_RUN_PARAMETERS}" + !endif + Exec "$MUI_TEMP1" + !else + Call "${MUI_FINISHPAGE_RUN_FUNCTION}" + !endif + + mui.finish_norun: + + !endif + + !ifdef MUI_FINISHPAGE_SHOWREADME + + !ifndef MUI_FINISHPAGE_RUN + !insertmacro INSTALLOPTIONS_READ $MUI_TEMP1 "ioSpecial.ini" "Field 4" "State" + !else + !insertmacro INSTALLOPTIONS_READ $MUI_TEMP1 "ioSpecial.ini" "Field 5" "State" + !endif + + StrCmp $MUI_TEMP1 "1" 0 mui.finish_noshowreadme + !ifndef MUI_FINISHPAGE_SHOWREADME_FUNCTION + ExecShell "open" "${MUI_FINISHPAGE_SHOWREADME}" + !else + Call "${MUI_FINISHPAGE_SHOWREADME_FUNCTION}" + !endif + + mui.finish_noshowreadme: + + !endif + + FunctionEnd + +!macroend + +!macro MUI_UNFUNCTION_CONFIRMPAGE PRE SHOW LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_UNTEXT_CONFIRM_TITLE) $(MUI_UNTEXT_CONFIRM_SUBTITLE) + + FunctionEnd + + Function "${SHOW}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + FunctionEnd + +!macroend + +;-------------------------------- +;INSTALL OPTIONS (CUSTOM PAGES) + +!macro MUI_INSTALLOPTIONS_EXTRACT FILE + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_EXTRACT "${FILE}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_EXTRACT_AS FILE FILENAME + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_EXTRACT_AS "${FILE}" "${FILENAME}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_DISPLAY FILE + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_DISPLAY "${FILE}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_DISPLAY_RETURN FILE + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_DISPLAY_RETURN "${FILE}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_INITDIALOG FILE + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_INITDIALOG "${FILE}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_SHOW + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_SHOW + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_SHOW_RETURN + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_SHOW_RETURN + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_READ VAR FILE SECTION KEY + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_READ "${VAR}" "${FILE}" "${SECTION}" "${KEY}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE + + !verbose push + !verbose ${MUI_VERBOSE} + + !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "${SECTION}" "${KEY}" "${VALUE}" + + !verbose pop + +!macroend + +!macro MUI_INSTALLOPTIONS_WRITE_DEFAULTCONVERT FILE SECTION KEY SYMBOL + + ;Converts default strings from language files to InstallOptions format + ;Only for use inside MUI + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifndef "${SYMBOL}_DEFAULTSET" + !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "${SECTION}" "${KEY}" "${${SYMBOL}}" + !else + Push "${${SYMBOL}}" + Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}Nsis2Io + Pop $MUI_TEMP1 + !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "${SECTION}" "${KEY}" $MUI_TEMP1 + !endif + + !verbose pop + +!macroend + +;-------------------------------- +;RESERVE FILES + +!macro MUI_RESERVEFILE_INSTALLOPTIONS + + !verbose push + !verbose ${MUI_VERBOSE} + + ReserveFile /plugin InstallOptions.dll + + !verbose pop + +!macroend + +!macro MUI_RESERVEFILE_LANGDLL + + !verbose push + !verbose ${MUI_VERBOSE} + + ReserveFile /plugin LangDLL.dll + + !verbose pop + +!macroend + +;-------------------------------- +;LANGUAGES + +!macro MUI_LANGUAGE NLFID + + ;Include a language + + !verbose push + !verbose ${MUI_VERBOSE} + + ; MUI_PAGE_UNINSTALLER_PREFIX is undefined by uninstaller pages so we check MUI_UNINSTALLER as well + !ifndef MUI_PAGE_UNINSTALLER_PREFIX && MUI_UNINSTALLER + !ifndef MUI_DISABLE_INSERT_LANGUAGE_AFTER_PAGES_WARNING ; Define this to avoid the warning if you only have custom pages + !warning "MUI_LANGUAGE should be inserted after the MUI_[UN]PAGE_* macros" + !endif + !endif + + !insertmacro MUI_INSERT + + LoadLanguageFile "${NSISDIR}\Contrib\Language files\${NLFID}.nlf" + + ;Include language file + !insertmacro LANGFILE_INCLUDE_WITHDEFAULT \ + "${NSISDIR}\Contrib\Language files\${NLFID}.nsh" "${NSISDIR}\Contrib\Language files\English.nsh" + + ;Add language to list of languages for selection dialog + !define /ifndef MUI_LANGDLL_LANGUAGES "" + !define /redef MUI_LANGDLL_LANGUAGES \ + `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" ${MUI_LANGDLL_LANGUAGES}` + !define /ifndef MUI_LANGDLL_LANGUAGES_CP "" + !define /redef MUI_LANGDLL_LANGUAGES_CP \ + `"${LANGFILE_${NLFID}_LANGDLL}" "${LANG_${NLFID}}" "${LANG_${NLFID}_CP}" ${MUI_LANGDLL_LANGUAGES_CP}` + + !verbose pop + +!macroend + +;-------------------------------- +;LANGUAGE SELECTION DIALOG + +!macro MUI_LANGDLL_DISPLAY + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifndef MUI_LANGDLL_LANGUAGES + !warning "MUI_LANGDLL_DISPLAY should only be used after inserting the MUI_LANGUAGE macro(s)" + !endif + + !insertmacro MUI_DEFAULT MUI_LANGDLL_WINDOWTITLE "Installer Language" + !insertmacro MUI_DEFAULT MUI_LANGDLL_INFO "Please select a language." + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + + ReadRegStr $MUI_TEMP1 "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" + StrCmp $MUI_TEMP1 "" mui.langdll_show + StrCpy $LANGUAGE $MUI_TEMP1 + !ifndef MUI_LANGDLL_ALWAYSSHOW + Goto mui.langdll_done + !endif + mui.langdll_show: + + !endif + + !ifdef NSIS_CONFIG_SILENT_SUPPORT + IfSilent mui.langdll_done + !endif + + !ifdef MUI_LANGDLL_ALLLANGUAGES + LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" A ${MUI_LANGDLL_LANGUAGES} "" + !else + LangDLL::LangDialog "${MUI_LANGDLL_WINDOWTITLE}" "${MUI_LANGDLL_INFO}" AC ${MUI_LANGDLL_LANGUAGES_CP} "" + !endif + + Pop $LANGUAGE + StrCmp $LANGUAGE "cancel" 0 +2 + Abort + + !ifdef NSIS_CONFIG_SILENT_SUPPORT + mui.langdll_done: + !else ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + mui.langdll_done: + !endif + + !verbose pop + +!macroend + +!macro MUI_LANGDLL_SAVELANGUAGE + + !ifndef MUI_PAGE_UNINSTALLER + + IfAbort mui.langdllsavelanguage_abort + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + WriteRegStr "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" $LANGUAGE + !endif + + mui.langdllsavelanguage_abort: + + !endif + +!macroend + +!macro MUI_UNGETLANGUAGE + + !verbose push + !verbose ${MUI_VERBOSE} + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + + ReadRegStr $MUI_TEMP1 "${MUI_LANGDLL_REGISTRY_ROOT}" "${MUI_LANGDLL_REGISTRY_KEY}" "${MUI_LANGDLL_REGISTRY_VALUENAME}" + StrCmp $MUI_TEMP1 "" 0 mui.ungetlanguage_setlang + + !endif + + !insertmacro MUI_LANGDLL_DISPLAY + + !ifdef MUI_LANGDLL_REGISTRY_ROOT & MUI_LANGDLL_REGISTRY_KEY & MUI_LANGDLL_REGISTRY_VALUENAME + + Goto mui.ungetlanguage_done + + mui.ungetlanguage_setlang: + StrCpy $LANGUAGE $MUI_TEMP1 + + mui.ungetlanguage_done: + + !endif + + !verbose pop + +!macroend + +;-------------------------------- +;END + +!verbose pop +!endif diff --git a/tools/Contrib/Modern UI/ioSpecial.ini b/tools/Contrib/Modern UI/ioSpecial.ini new file mode 100644 index 0000000..c8dfe6e --- /dev/null +++ b/tools/Contrib/Modern UI/ioSpecial.ini @@ -0,0 +1,19 @@ +[Settings] +Rect=1044 +NumFields=3 +[Field 1] +Type=bitmap +Left=0 +Right=109 +Top=0 +Bottom=193 +Flags=RESIZETOFIT +[Field 2] +Type=label +Left=120 +Right=315 +Top=10 +[Field 3] +Type=label +Left=120 +Right=315 \ No newline at end of file diff --git a/tools/Contrib/UIs/default.exe b/tools/Contrib/UIs/default.exe new file mode 100644 index 0000000..947c21b Binary files /dev/null and b/tools/Contrib/UIs/default.exe differ diff --git a/tools/Contrib/UIs/modern.exe b/tools/Contrib/UIs/modern.exe new file mode 100644 index 0000000..45db1de Binary files /dev/null and b/tools/Contrib/UIs/modern.exe differ diff --git a/tools/Contrib/UIs/modern_headerbmp.exe b/tools/Contrib/UIs/modern_headerbmp.exe new file mode 100644 index 0000000..7ccc53b Binary files /dev/null and b/tools/Contrib/UIs/modern_headerbmp.exe differ diff --git a/tools/Contrib/UIs/modern_headerbmpr.exe b/tools/Contrib/UIs/modern_headerbmpr.exe new file mode 100644 index 0000000..fbf85a6 Binary files /dev/null and b/tools/Contrib/UIs/modern_headerbmpr.exe differ diff --git a/tools/Contrib/UIs/modern_nodesc.exe b/tools/Contrib/UIs/modern_nodesc.exe new file mode 100644 index 0000000..f460983 Binary files /dev/null and b/tools/Contrib/UIs/modern_nodesc.exe differ diff --git a/tools/Contrib/UIs/modern_smalldesc.exe b/tools/Contrib/UIs/modern_smalldesc.exe new file mode 100644 index 0000000..43d8479 Binary files /dev/null and b/tools/Contrib/UIs/modern_smalldesc.exe differ diff --git a/tools/Contrib/UIs/sdbarker_tiny.exe b/tools/Contrib/UIs/sdbarker_tiny.exe new file mode 100644 index 0000000..4acb780 Binary files /dev/null and b/tools/Contrib/UIs/sdbarker_tiny.exe differ diff --git a/tools/Contrib/zip2exe/Base.nsh b/tools/Contrib/zip2exe/Base.nsh new file mode 100644 index 0000000..7739d20 --- /dev/null +++ b/tools/Contrib/zip2exe/Base.nsh @@ -0,0 +1,87 @@ +;Change this file to customize zip2exe generated installers + +Name "${ZIP2EXE_NAME}" +OutFile "${ZIP2EXE_OUTFILE}" + +AllowRootDirInstall true + + +!ifdef ZIP2EXE_COMPRESSOR_SOLID + !define SETCOMPRESSOR_SWITCH /SOLID +!else + !define SETCOMPRESSOR_SWITCH +!endif + +!ifdef ZIP2EXE_COMPRESSOR_ZLIB + SetCompressor ${SETCOMPRESSOR_SWITCH} zlib +!else ifdef ZIP2EXE_COMPRESSOR_BZIP2 + SetCompressor ${SETCOMPRESSOR_SWITCH} bzip2 +!else ifdef ZIP2EXE_COMPRESSOR_LZMA + SetCompressor ${SETCOMPRESSOR_SWITCH} lzma +!endif + +!ifdef ZIP2EXE_INSTALLDIR + + InstallDir "${ZIP2EXE_INSTALLDIR}" + + Function zip2exe.SetOutPath + SetOutPath "$INSTDIR" + FunctionEnd + +!else ifdef ZIP2EXE_INSTALLDIR_WINAMP + + InstallDir "$PROGRAMFILES\Winamp" + InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" "UninstallString" + + Function .onVerifyInstDir + IfFileExists $INSTDIR\winamp.exe WinampInstalled + Abort + WinampInstalled: + FunctionEnd + + !ifdef ZIP2EXE_INSTALLDIR_WINAMPMODE + + Var ZIP2EXE_TEMP1 + Var ZIP2EXE_TEMP2 + + Function zip2exe.SetOutPath + !ifdef ZIP2EXE_INSTALLDIR_SKINS + StrCpy $ZIP2EXE_TEMP1 "$INSTDIR\Skins" + !else + StrCpy $ZIP2EXE_TEMP1 "$INSTDIR\Plugins" + !endif + ReadINIStr $ZIP2EXE_TEMP2 "$INSTDIR\winamp.ini" "Winamp" "${ZIP2EXE_INSTALLDIR_WINAMPMODE}" + StrCmp $ZIP2EXE_TEMP2 "" End + IfFileExists $ZIP2EXE_TEMP2 0 End + StrCpy $ZIP2EXE_TEMP1 $ZIP2EXE_TEMP2 + End: + SetOutPath $ZIP2EXE_TEMP1 + FunctionEnd + + !else + + Function zip2exe.SetOutPath + !ifdef ZIP2EXE_INSTALLDIR_PLUGINS + SetOutPath "$INSTDIR\Plugins" + !else + SetOutPath "$INSTDIR" + !endif + FunctionEnd + + !endif + +!endif + +!macro SECTION_BEGIN + + Section "" + + Call zip2exe.SetOutPath + +!macroend + +!macro SECTION_END + + SectionEnd + +!macroend \ No newline at end of file diff --git a/tools/Contrib/zip2exe/Classic.nsh b/tools/Contrib/zip2exe/Classic.nsh new file mode 100644 index 0000000..de86c49 --- /dev/null +++ b/tools/Contrib/zip2exe/Classic.nsh @@ -0,0 +1,4 @@ +;Change this file to customize zip2exe generated installers with a classic interface + +Page directory +Page instfiles \ No newline at end of file diff --git a/tools/Contrib/zip2exe/Modern.nsh b/tools/Contrib/zip2exe/Modern.nsh new file mode 100644 index 0000000..7fcfa71 --- /dev/null +++ b/tools/Contrib/zip2exe/Modern.nsh @@ -0,0 +1,8 @@ +;Change this file to customize zip2exe generated installers with a modern interface + +!include "MUI2.nsh" + +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_LANGUAGE "English" \ No newline at end of file diff --git a/tools/Docs/AdvSplash/advsplash.txt b/tools/Docs/AdvSplash/advsplash.txt new file mode 100644 index 0000000..91a6fdf --- /dev/null +++ b/tools/Docs/AdvSplash/advsplash.txt @@ -0,0 +1,51 @@ +AdvSplash.dll - small (5.5k), simple plugin that lets you throw +up a splash screen in NSIS installers with cool +fading effects (Win2000+) and transparency. + +To use: + +Create a .BMP file of your splash screen. +Create a .WAV file to play while your splash screen shows. (optional) + +Add the following lines to your .NSI file: + +Function .onInit + InitPluginsDir + File "/oname=$PluginsDir\spltmp.bmp" "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp" + +; optional +; File /oname=$PluginsDir\spltmp.wav "my_splashsound.wav" + + advsplash::show 1000 600 400 -1 $PluginsDir\spltmp + + Pop $0 ; $0 has '1' if the user closed the splash screen early, + ; '0' if everything closed normally, and '-1' if some error occurred. + +FunctionEnd + +Calling format + advsplash::show Delay FadeIn FadeOut KeyColor FileName + +Delay - length to show the screen for (in milliseconds) +FadeIn - length to show the fadein scene (in ms) (not included in Delay) +FadeOut - length to show the fadeout scene (in ms) (not included in Delay) +KeyColor - color used for transparency, could be any RGB value + (for ex. R=255 G=100 B=16 -> KeyColor=0xFF6410), + use KeyColor=-1 if there is no transparent color in your image. +FileName - splash bitmap filename (without the .bmp). The BMP file used will be + this parameter.bmp, and the wave file used (if present) will be this + parameter.wav. + +(If you already have an .onInit function, put that in it) + +Note 1: fadein/fadeout supported only on win2k/winxp systems, all other systems +will show simple splash screen with Delay = Delay + FadeIn + FadeOut. Also, I've +noted my winXP uses no transparent color at 16 bpp, so at bpps lower than 32 +for images with transparent color no fading effect will occur. + +Note 2: the return value of splash is 1 if the user closed the splash +screen early (pop it from the stack) + +-Justin +Converted to a plugin DLL by Amir Szekely (kichik) +Fading and transparency by Nik Medved (brainsucker) \ No newline at end of file diff --git a/tools/Docs/Banner/Readme.txt b/tools/Docs/Banner/Readme.txt new file mode 100644 index 0000000..b114e5e --- /dev/null +++ b/tools/Docs/Banner/Readme.txt @@ -0,0 +1,47 @@ +BANNER PLUG-IN +-------------- + +The Banner plug-in shows a banner with customizable text. It uses the IDD_VERIFY dialog of the UI. + +There are three functions - show, getWindow and destroy. + +Usage +----- + +Banner::show "Text to show" + +[optional] Banner::getWindow + +Banner::destroy + +See Example.nsi for an example. + +Modern UI +--------- + +The Modern UI has two labels on the IDD_VERIFY dialog. To change all the texts, use: + +Banner::show /set 76 "Text 1 (replaces Please wait while Setup is loading...)" "Normal text" + +Custom UI +--------- + +If you have more labels on your IDD_VERIFY dialog, you can use multiple /set parameters to change the texts. + +Example: + +Banner::show /set 76 "bah #1" /set 54 "bah #2" "Normal text" + +The second parameter for /set is the ID of the control. + +Some More Tricks +---------------- + +If you use /set to set the main string (IDC_STR, 1030) you can specify a different string for the window's caption and for the main string. + +If you use an empty string as the main string (Banner::show "") the banner window will not show on the taskbar. + +Credits +------- + +A joint effort of brainsucker and kichik in honor of the messages dropped during the battle \ No newline at end of file diff --git a/tools/Docs/BgImage/BgImage.txt b/tools/Docs/BgImage/BgImage.txt new file mode 100644 index 0000000..7018570 --- /dev/null +++ b/tools/Docs/BgImage/BgImage.txt @@ -0,0 +1,92 @@ +BgImage.DLL - NSIS extension DLL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Displays an image or a gradient with user defined texts and/or images behind the NSIS window. +Can also play WAVs. + +See Example.nsi for a usage example. + +Usage +~~~~~ + +1) Call SetBg to set the background +2) Call AddText, or AddImage to add texts and images +3) Call Redraw to update the background window +4) Optional - repeat steps 2-3 to add more images + -or- + call Clear and repeat steps 1-3 for a completely new background. +5) Call Destroy when the background is no longer required (.onGUIEnd for example) + +Notes +~~~~~ + +* This plugin requires NSIS 2.42 and above. + +* Do not call SetBg (which creates the window) from a section or a function called by a section. + BgImge must be run from the GUI thread as the installation thread is not built to handle GUI. + +Available functions +~~~~~~~~~~~~~~ + +SetBg [/FILLSCREEN|/TILED] path_to_bitmap +SetBg /GRADIENT R G B R G B + Sets the background and creates the window if necessary + Use /FILLSCREEN to make the image fill the screen + Use /TILED to set a tiled background + Use /GRADIENT to set a gradient background + + If SetReturn on was called returns "success" on the stack + or an error string if there was an error + + Do not use in .onInit! + +AddImage [/TRANSPARENT R G B] path_to_bitmap X Y + Adds an image to the background window at (X,Y) + X and Y can be negative to specify distance from right/bottom + Use /TRANSPARENT to make BgImage draw the image transparently + Define the transparent color using R G B + + If SetReturn on was called returns "success" on the stack + or an error string if there was an error + +AddText text font_handle R G B X Y X Y + Adds text to the background window + Use NSIS's CreateFont to create a font and pass it as font_handle + Use R G B to set the text color + The first X Y is for the top left corner of the text box + The second X Y is for the bottom right corner of the text box + X and Y can be negative to specify distance from right/bottoms + + If SetReturn on was called returns "success" on the stack + or an error string if there was an error + +Clear + Clears all of the current background, images and texts + +Destroy + Destroys the current background window + Destroy calls Clear automatically + +Sound [/WAIT|/LOOP] path_to_wav +Sound /STOP + Plays a wave file + Use /WAIT to wait for the sound to finish playing + Use /LOOP to loop the sound + Use Sound /STOP to stop the loop + +SetReturn on|off + Enable return values from SetBg, AddImage and AddText + Default value is off because all of the possible errors + are either things you should handle when debugging your script + such as "can't load bitmap" or errors you can do nothing about + such as "memory allocation error" + +Credits +~~~~~~~ + +Coded by Amir Szekely, aka KiCHiK + +Ximon Eighteen, aka Sunjammer - Fixed window title bar issues +iceman_k - Text idea and original implementation +Lajos Molnar, aka orfanik - Tile idea and original implementation +Jason Reis - Coding help \ No newline at end of file diff --git a/tools/Docs/Dialer/Dialer.txt b/tools/Docs/Dialer/Dialer.txt new file mode 100644 index 0000000..7e067d7 --- /dev/null +++ b/tools/Docs/Dialer/Dialer.txt @@ -0,0 +1,121 @@ +DIALER PLUGIN +------------- + +Written by Amir Szekely aka KiCHiK +Readme by Joost Verburg + +The Dialer plugin for NSIS provides five functions related to internet connections. + +To download files from the internet, use the NSISdl plugin. + +USAGE +----- + +Example of usage: + +ClearErrors ;Clear the error flag +Dialer::FunctionName ;Call Dialer function +IfErrors "" +3 ;Check for errors + MessageBox MB_OK "Function not available" + Quit +Pop $R0 ;Get the return value from the stack +MessageBox MB_OK $R0 ;Display the return value + +EXAMPLE FUNCTION +---------------- + +; ConnectInternet (uses Dialer plugin) +; Written by Joost Verburg +; +; This function attempts to make a connection to the internet if there is no +; connection available. If you are not sure that a system using the installer +; has an active internet connection, call this function before downloading +; files with NSISdl. +; +; The function requires Internet Explorer 3, but asks to connect manually if +; IE3 is not installed. + +Function ConnectInternet + + Push $R0 + + ClearErrors + Dialer::AttemptConnect + IfErrors noie3 + + Pop $R0 + StrCmp $R0 "online" connected + MessageBox MB_OK|MB_ICONSTOP "Cannot connect to the internet." + Quit ;Remove to make error not fatal + + noie3: + + ; IE3 not installed + MessageBox MB_OK|MB_ICONINFORMATION "Please connect to the internet now." + + connected: + + Pop $R0 + +FunctionEnd + +FUNCTIONS +--------- + +If a function is not available on the system, the error flag will be set. + +* AttemptConnect + + Attempts to make a connection to the Internet if the system is not connected. + + online - already connected / connection successful + offline - connection failed + + Requires Internet Explorer 3 or later + +* AutodialOnline + + Causes the modem to automatically dial the default Internet connection if the system + is not connected to the internet. If the system is not set up to automatically + connect, it will prompt the user. + + Return values: + + online - already connected / connection successful + offline - connection failed + + Requires Internet Explorer 4 or later + +* AutodialUnattended + + Causes the modem to automatically dial the default Internet connection if the system + is not connected to the internet. The user will not be prompted. + + Return values: + + online - already connected / connection successful + offline - connection failed + + Requires Internet Explorer 4 or later + +* AutodialHangup + + Disconnects an automatic dial-up connection. + + Return values: + + success - disconnection successful + failure - disconnection failed + + Requires Internet Explorer 4 or later + +* GetConnectedState + + Checks whether the system is connected to the internet. + + Return values: + + online - system is online + offline - system is offline + + Requires Internet Explorer 4 or later \ No newline at end of file diff --git a/tools/Docs/InstallOptions/Changelog.txt b/tools/Docs/InstallOptions/Changelog.txt new file mode 100644 index 0000000..27e6952 --- /dev/null +++ b/tools/Docs/InstallOptions/Changelog.txt @@ -0,0 +1,144 @@ +DLL version 2.47 (4/27/2007) +* Line breaks support in Link control +* Added HLine and VLine controls + +DLL version 2.46 (3/31/2007) +* Use installer's name for message boxes + +DLL version 2.45 (1/23/2007) +* Added FOCUS flag for setting focus to a control other than the first + +DLL version 2.44 (10/11/2005) +* Added HWND and HWND2 entries to the INI file to avoid messy calculations of the correct control id + +DLL version 2.43 (10/4/2005) +* Fixed alteration of the working directory by FileRequest +* Added WS_EX_LEFTSCROLLBAR in RTL mode + +DLL version 2.42 (1/21/2005) +* Added TRANSPARENT flag for BITMAP fields (funded by Chris Morgan) + +DLL version 2.41 (8/5/2004) +* Bitmaps are now automatically centered +* Fixed a bug which prevented enabling the next button from the leave function of InstallOptions pages +* Fixed a rare freeze + +DLL version 2.4 (1/4/2004) +* Initial focus is set in "initDialog" making it possible to override it from NSIS prior to calling "show" +* When initial focus is to a Text field InstallOptions now follows standard Windows behaviour by having the text selected +* Label and other static fields no longer have State= written to the INI file when leaving the dialog +* NOTIFY flag can now be used with Link fields (State should be omitted in this case) +* Likewise, State can now be used with Button fields (behaves the same as with Link fields) +* NOTIFY flag can also now be used with ListBox and DropList fields to have NSIS notified when the selection changes +* Meaning of RIGHT flag is now reversed in right-to-left language mode +* HSCROLL and VSCROLL flags are no longer restricted to Text fields +* Various Link field fixes + +DLL version 2.3 (12/4/2003) +* Added new control type "Button" +* Added new flag "NOTIFY" +* Added new flag "NOWORDWRAP" for multi-line text boxes +* Reduced size down to 12K +* Better RTL support + +DLL version 2.2 (6/10/2003) +* Added New control type LINK +* \r\n converts to newline in Multiline edit box +* Support for multiline edit box +* Better tab order in DirRequest and FileRequest +* Added READONLY option to text box +* Minor fixes + +DLL version 2.1 (3/15/2003) +* \r\n converts to newline in both label Text and ValidateText +* New browse dialog style (modern) +* Word wrapping for check boxes and radio buttons +* No ugly border for edit fields under XP +* Scroll bar for list boxes +* Works with SetStaticBkColor +* DISABLED dir and file request fields now disable the browse button too +* No more STATE value for labels +* Minor fixes + +DLL version 2.0 (1/4/2003) +* Supports custom font and DPI settings (by Joost Verburg) +* INI files should contain dialog units now, no pixels (by Joost Verburg) +* RESIZETOFIT flag for Bitmap control (by Amir Szekely) +* New documentation (by Joost Verburg) +* New GROUP/NOTABSTOP/DISABLED flags + +DLL version 1.7 beta (11/2/2002) +* Added initDialog and show DLL functions + +DLL version 1.6 beta (9/30/2002) +* CancelConfirmIcon becomes CancelConfirmFlags and can now take the other common MessageBox flags + +DLL version 1.5 beta (9/26/2002) +* Made close [x] button behave like Cancel (thanks brainsucker) + +DLL version 1.4 beta (9/4/2002) +* Added Icon and Bitmap controls (by Amir Szekely) + +DLL version 1.3 beta (8/15/2002) +* Added CancelShow (by ORTIM) +* Added pixel transformation for widgets (by ORTIM) + +DLL version 1.2 beta (7/31/2002) +* Added CancelEnabled (by ORTIM) +* Added CancelConfirmCaption and CancelConfirmIcon (by Amir Szekely) + +DLL version 1.1 beta (7/22/2002) +* Font is now taken from the main NSIS window (by Amir Szekely) + +DLL version 1.0 beta (12/16/2001) +* Moved to DLL, no longer need parentwnd ini writing +* Tons of changes - no longer fully compatible (see source for a big list) +* removed support for silent installers (it seems the old version would bring up it's own dialog) + +version 1.4 (11/18/2001) +* Added Listbox controls. +* Added MULTISELECT flag. +* Made the HWND list for the parent window controls dynamically allocated. This prevents a crash if NSIS ever gets more than 150 controls on it's main window. +* The TEXT property of DirRequest control can be used to specify an initial directory. The current directory is automatically selected when clicking the browse button of the DirRequest control. +* Added ROOT property to DirRequest which can be used to set the root directory (mostly due to felfert) +* Edit controls will now auto scroll (thanks felfert) +* Fixed a problem where the window wouldn't draw properly on some systems (thanks felfert) + +version 1.3 (11/03/2001) +* Got rid of the call to RedrawWindow() because it's no longer needed with the WS_CLIPCHILDREN flag for NSIS. +* Removed a few hardcoded limits of buffer sizes +* Added Checkbox and RadioButton controls +* Added RIGHT and CHECKED flags + +version 1.2.2 (10/30/2001) +* Additional size reductions. Further reduced the size down to 8k. +* The text parameter to a combobox can now be used to specify the initial value +* Changed from InvalidateRect() to RedrawWindow() to force a redraw after a browse dialog +* On startup, set the flags of the NSIS window to include WS_CLIPCHILDREN. Otherwise, our controls don't get drawn right. + +version 1.2.1 (10/28/2001) +* Bug fix. ControlID for the caption and the OK button were reused by the first two controls. (Thanks Schultz) + +version 1.2j (10/28/2001) +* 8.5kb from 44kb. heh. (by Justin Frankel) + +version 1.2 (10/28/2001) +* Still 44k +* Added the "FileRequest" and "DirRequest" control types (thanks Schultz) +* Added "MinLen", "MaxLen", and "ValidateText" properties to fields +* Added "Flags" as a way to specify additional parameters for controls +* Few more changes to the documentation +* Cleaned the code in a few places...still trying to make it smaller + +version 1.1 (10/27/2001) +* Added the "Title" option (thanks Alex) +* Moved the OK button so it is in the same location as the buttons on the main NSIS window (thanks Alex) +* Pressing "ENTER" will now automatically select the OK button (thanks Alex) +* Slightly improved the documentation + +version 1.01 (10/25/2001) +* Fixed the SetFocus loop so it exits after the first control like it was supposed to +* Added the license to the documentation + +version 1.0 (10/25/2001) +* Barely qualifies as a distribution diff --git a/tools/Docs/InstallOptions/Readme.html b/tools/Docs/InstallOptions/Readme.html new file mode 100644 index 0000000..bfd0432 --- /dev/null +++ b/tools/Docs/InstallOptions/Readme.html @@ -0,0 +1,909 @@ + + + + InstallOptions 2 + + + + + + + +
+

+ InstallOptions 2

+
+

+ The InstallOptions plug-in is deprecated. For new scripts, it is recommended to + use the new nsDialogs plug-in instead.

+
+
+

+ Introduction

+
+

+ InstallOptions is an NSIS plugin which allows you to create custom pages for NSIS + installers, to prompt the user for extra information.

+

+ The dialogs created by InstallOptions are based on INI files which define the controls + on the dialog and their properties. These INI files can be modified from the script + to adjust the dialogs at runtime.

+

+ The format of INI files is described in a + Wikipedia article.

+
+

+ INI file structure

+
+

+ The INI file has one required section. This section includes the number of controls + to be created as well as general window attributes. The INI file also includes a + variable number of Field sections which are used to create the controls to be displayed.

+

+ The required section is named "Settings". It can contain the + following values:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ NumFields + (required) + The number of control elements to be displayed on the dialog window.
+ Title + (optional) + If specified, gives the text to set the titlebar to. Otherwise, the titlebar text + is not changed.
+ CancelEnabled + (optional) + If specified, overrides NSIS settings and enables or disables the cancel button. + If set to 1, the cancel button will be enabled. If set to 0, the cancel button will + be disabled.
+ CancelShow + (optional) + If specified, overrides NSIS settings and shows or hides the cancel button If set + to 1, the cancel button will be shown. If set to 0, the cancel button will be hidden.
+ BackEnabled + (optional) + If specified, overrides NSIS settings and enables or disables the back button. If + set to 1, the back button will be enabled. If set to 0, the back button will be + disabled.
+ CancelButtonText + (optional) + Overrides the text for the cancel button. If not specified, the cancel button text + will not be changed.
+ NextButtonText + (optional) + Overrides the text for the next button. If not specified, the next button text will + not be changed.
+ BackButtonText + (optional) + Overrides the text for the back button. If not specified, the back button text will + not be changed.
+ Rect + (optional) + Overrides the default rect ID to run over. This will make IO resize itself according + to a different rect than NSIS's dialogs rect.
+ RTL + (optional) + If 1 is specified the dialog will be mirrored and all texts will be aligned to the + right. The INSTALLOPTIONS_EXTRACT macros automatically set this field to the right + value for the current installer language as given by the NSIS string $(^RTL).
+ State + (output) + This is not something you have to supply yourself but is set by InstallOptions, + before calling your custom page validation function, to the field number of the + custom Button control (or other control having the Notify flag) the user pressed, + if any.
+

+ Each field section has the heading "Field #" where # must be sequential + numbers from 1 to NumFields. Each Field section can contain the following values:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Type + (required) + Type of control to be created. Valid values are "Label", "Text", + "Password", "Combobox", "DropList", + "Listbox", "CheckBox", "RadioButton", + "FileRequest", "DirRequest" "Icon", + "Bitmap", "GroupBox", "HLine", + "VLine", "Link" or "Button".
+
+ A "Label" is used to display static text. (i.e. a caption for + a textbox)
+ A "Text" and "Password" accept text input + from the user. "Password" masks the input with * characters.
+ A "Combobox" allows the user to type text not in the popup list, + a "Droplist" only allows selection of items in the list.
+ A "Listbox" shows multiple items and can optionally allow the + user to select more than one item.
+ A "CheckBox" control displays a check box with label.
+ A "RadioButton" control displays a radio button with label.
+ A "FileRequest" control displays a textbox and a browse button. + Clicking the browse button will display a file requester where the user can browse + for a file.
+ A "DirRequest" control displays a textbox and a browse button. + Clicking the browse button will display a directory requester where the user can + browse for a directory.
+ An "Icon" control displays an icon. Use no Text to use the installer + icon.
+ A "Bitmap" control displays a bitmap.
+ A "GroupBox" control displays a frame to group controls.
+ A "HLine" control displays a horizontal line to separate controls.
+ A "VLine" control displays a vertical line to separate controls.
+ A "Link" control displays a static hot text. When the user clicks + the control the contents of State (e.g. http://...) will be executed + using ShellExecute. Alternatively State can be omitted and the + NOTIFY flag used to have your NSIS script called. See the "NOTIFY" + flag below for more information.
+ A "Button" control displays a push button that can be used in + the same way as the "Link" control above.
+ Text + (optional) + Specifies the caption of a label, checkbox, or radio button control. For DirRequest + control this specifies the title of the browse dialog. For icon and bitmaps control + this specifies the path to the image.
+
+ Note: For labels, \r\n will be converted to a newline. To use a + back-slash in your text you have to escape it using another back-slash - \\. Described + below are NSIS functions for converting text to/from this + format.
+ State + (optional) + Specifies the state of the control. This is updated when the user closes the window, + so you can read from it from NSIS. For edit texts and dir and file request boxes, + this is the string that is specified. For radio button and check boxes, this can + be '0' or '1' (for unchecked or checked). For list boxes, combo boxes and drop lists + this is the selected items separated by pipes ('|'). For Links and Buttons this + can specify something to be executed or opened (using ShellExecute).
+
+ Note: For Text fields with the MULTILINE flag, \r\n will be converted + to a newline. To use a back-slash in your text you have to escape it using another + back-slash - \\. Described below are NSIS functions for + converting text to/from this format.
+ ListItems + (optional) + A list of items to display in a combobox, droplist, or listbox.
+ This is a single line of text with each item separated by a pipe character '|'
+ MaxLen + (optional) + Causes validation on the selected control to limit the maximum length of text.
+ If the user specifies more text than this, a message box will appear when they click + "OK" and the dialog will not be dismissed.
+ You should not use this on a "combobox" since the user can not + control what is selected.
+ This should be set to a maximum of 260 for "FileRequest" and + "DirRequest" controls.
+ Ignored on "Label" controls.
+ MinLen + (optional) + Causes validation on the selected control to force the user to enter a minimum amount + of text.
+ If the user specifies less text than this, a message box will appear when they click + "OK" and the dialog will not be dismissed.
+ Unlike MaxLen, this is useful for "Combobox" controls. By setting + this to a value of "1" the program will force the user to select an item.
+ Ignored on "Label" controls.
+ ValidateText + (optional) + If the field fails the test for "MinLen" or "MaxLen", + a messagebox will be displayed with this text.
+
+ Note: \r\n will be converted to a newline, two back-slashes will + be converted to one - \\. Described below are NSIS functions + for converting text to/from this format.
+ Left
+ Right
+ Top
+ Bottom
+ (required) + The position on the dialog where this control appears. All sizes should be set in + dialog units. To get the right dimensions for your controls, design your dialog + using a resource editor and copy the dimensions to the INI file.
+
+ Note: You can specify negative coordinates to specify the distance + from the right or bottom edge.
+
+ Note (2): For combobox or droplist, the "bottom" + value is not used in the same way.
+ In this case, the bottom value is the maximum size of the window when the pop-up + list is being displayed. All other times, the combobox is automatically sized to + be one element tall. If you have trouble where you can not see the combobox drop-down, + then check the bottom value and ensure it is large enough. A rough guide for the + height required is the number of items in the list multiplied by 8, plus 20.
+
+ Note (3): FileRequest and DirRequest controls will allocate 15 + dialog units to the browse button. Make this control wide enough the contents of + the textbox can be seen.
+ Filter + (optional) + Specifies the filter to be used in the "FileRequest" control.
+ This is constructed by putting pairs of entries together, each item separated by + a | character.
+ The first value in each pair is the text to display for the filter.
+ The second value is the pattern to use to match files.
+ For example, you might specify:
+ Filter=Text Files|*.txt|Programs|*.exe;*.com|All Files|*.*
+ If not specified, then the filter defaults to All Files|*.*
+
+ Note: you should not put any extra spaces around the | characters.
+ Root + (optional) + Used by DirRequest controls to specify the root directory of the + search. By default, this allows the user to browse any directory on the computer. + This will limit the search to a particular directory on the system.
+ Flags + (optional) + This specifies additional flags for the display of different controls. Each value + should be separated by a | character, and you should be careful not to put any spaces + around the | character.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Value + Meaning
+ REQ_SAVE + This causes "FileRequest" controls to display a Save As dialog. + If not specified, an Open dialog is used.
+ FILE_MUST_EXIST + Used by "FileRequest" to determine if the selected file must + exist.
+ This only applies if an "Open" dialog is being displayed.
+ This currently does not force the file to exist other than through the browse button.
+ FILE_EXPLORER + Used by "FileRequest", enables new file request look (recommended)
+ FILE_HIDEREADONLY + Used by "FileRequest", hides "open read only" checkbox + in open dialog.
+ WARN_IF_EXIST + Used by "FileRequest" to display a warning message if the selected + file already exists.
+ The warning message is only displayed for files selected with the browse button.
+ PATH_MUST_EXIST + Used by "FileRequest" to force the path to exist. Prevents the + user from typing a non-existent path into the browse dialog window.
+ This only validates path's selected with the browse button.
+ PROMPT_CREATE + Used by "FileRequest" to display a warning if the selected file + does not exist. However, it still allows the user to select the file.
+ This only displays the warning for files selected with the browse button.
+ Doesn't work along with REQ_SAVE.
+ RIGHT + Used by "Checkbox" and "Radiobutton" controls + to specify you want the checkbox to the right of the text instead of the left as + is the default.
+ MULTISELECT + Used by "Listbox" controls. Turns string selection on or off + each time the user clicks or double-clicks a string in the list box. The user can + select any number of strings. If this flag and EXTENDEDSELCT are not specified, + only one item can be selected from the list.
+ EXTENDEDSELCT + Used by "Listbox" controls. Allows multiple items to be selected + by using the SHIFT key and the mouse or special key combinations. If this flag and + MULTISELECT are not specified, only one item can be selected from the list.
+ RESIZETOFIT + This causes "Bitmap" controls to resize the image to the size + of the control. Also useful to support custom DPI settings. Without this, the image + will be centered within the specified area.
+ TRANSPARENT + Used by "Bitmap" controls. Hides every pixel with the same color + as of the top left pixel. This allows to see-through to controls behind it. This + flag doesn't work well with a combination of the RESIZETOFIT flag and bitmaps with + more than 256 colors.
+ GROUP + Add this flag to the first control of a group of controls to group them. Grouping + controls allows you to create multiple groups of radio button and makes keyboard + navigation using arrow keys easier.
+ FOCUS + Sets focus on the specified control, instead of the first focusable control. If + more than one field is specified with this flag, only the first one will receive + focus.
+ NOTABSTOP + Do not stop on the control when the user pressed the Tab key. Add NOTABSTOP to all + controls of a group except the first one to allow navigation between groups with + the Tab key.
+ DISABLED + Causes a control to be disabled.
+ ONLY_NUMBERS + Used by "Text" controls. Forces the user to enter only numbers + into the edit box.
+ MULTILINE + Used by "Text" controls. Causes the control to accept multiple-lines.
+ WANTRETURN + Used by "Text" controls with multiple-line. Specifies that a + carriage return be inserted when the user presses the ENTER key while entering text + into the text box.
+ NOWORDWRAP + Used by "Text" controls with multiple-line. Disables the word-wrap + that occurs when long lines are entered. Long lines instead scroll off to the side. + Specifying the HSCROLL flag also has this effect.
+ HSCROLL + Show a horizontal scrollbar. When used by "Text" controls with + multiple-lines this also disables word-wrap.
+ VSCROLL + Show a vertical scrollbar.
+ READONLY + Used by "Text" controls. Prevents the user from entering or editing + text in the edit control, but allow the user to select and copy the text.
+ NOTIFY + Used by "Button", "Link", "CheckBox", + "RadioButton", "ListBox" and "DropList" + controls. Causes InstallOptions to call your NSIS custom page validation/leave function + whenever the control's selection changes. Your validation/leave function can read + the "State" value from the "Settings" section + to determine which control caused the notification, if any, and perform some appropriate + action followed by an Abort instruction (to tell NSIS to return to the page). The + Examples\InstallOptions folder contains an example script showing how this might + be used.
+
+ TxtColor + (optional) + Used by Link controls to specify the foreground color of the text. + Format: 0xBBGGRR (hexadecimal).
+ HWND
+ HWND2
+ (output) + After initDialog returns, this will contain the HWND of the control created by this + field. It can be used instead of FindWindow and GetDlgItem. HWND2 contains the HWND + of an additional control, such as the browse button.
+
+

+ Header file

+
+

+ The InstallOptions header files provides macros and functions to easily create custom + dialogs. You can include it on the top of your script as follows: +

+!include InstallOptions.nsh
+
+
+

+ Creating dialogs

+
+

+ Extracting the INI file

+
+

+ First, you have to extract your InstallOptions INI files in the .onInit function + (or un.onInit for the uninstaller) using the INSTALLOPTIONS_EXTRACT macro. The files + will be extracted to a temporary folder (the NSIS plug-ins folder) that is automatically + created.

+
+Function .onInit
+  !insertmacro INSTALLOPTIONS_EXTRACT "ioFile.ini"
+FunctionEnd
+
+

+ If the INI file is located in another directory, use INSTALLOPTIONS_EXTRACT_AS. + The second parameter is the filename in the temporary folder, which is the filename + that should be used as input for the other macros.

+
+Function .onInit
+  !insertmacro INSTALLOPTIONS_EXTRACT_AS "..\ioFile.ini" "ioFile.ini"
+FunctionEnd
+
+
+

+ Displaying the dialog

+
+

+ You can call InstallOptions in a page function defined with the Page or UninstPage + command. Check the NSIS documentation (Scripting Reference -> Pages) for information + about the page system.

+
+Page custom CustomPageFunction
+

+ To display the dialog, use the INSTALLOPTIONS_DISPLAY macro:

+Function CustomPageFunction ;Function name defined with Page command
+  !insertmacro INSTALLOPTIONS_DISPLAY "ioFile.ini"
+FunctionEnd
+
+
+
+

+ User input

+
+

+ To get the input of the user, read the State value of a Field using the INSTALLOPTIONS_READ + macro:

+
+!insertmacro INSTALLOPTIONS_READ $VAR "ioFile.ini" "Field #" "Name"
+
+
+

+ Writing to INI files

+
+

+ The INSTALLOPTIONS_WRITE macro allows you to write values to the INI file to change + texts or control settings at runtime: +

+!insertmacro INSTALLOPTIONS_WRITE "ioFile.ini" "Field #" "Name" "Value"
+
+
+

+ Escaped values

+
+

+ Some InstallOptions values are escaped (in a similar manner to "C" strings) + to allow characters to be used that are not normally valid in INI file values. The + affected values are:

+
    +
  • The ValidateText field
  • +
  • The Text value of Label fields
  • +
  • The State value of Text fields that have the MULTILINE flag
  • +
+

+ The escape character is the back-slash character ("\") and the available + escape sequences are:

+ + + + + + + + + + + + + + + + + +
+ "\\" + Back-slash
+ "\r" + Carriage return (ASCII 13)
+ "\n" + Line feed (ASCII 10)
+ "\t" + Tab (ASCII 9)
+

+ The INSTALLOPTIONS_READ_CONVERT and INSTALLOPTIONS_WRITE_CONVERT macros automatically + convert these characters in installer code. In uninstaller code, use INSTALLOPTIONS_READ_UNCONVERT + and INSTALLOPTIONS_WRITE_UNCONVERT.

+

+ To use these macros in your script, the conversion functions need to be included:

+
+;For INSTALLOPTIONS_READ_CONVERT
+  !insertmacro INSTALLOPTIONS_FUNCTION_READ_CONVERT
+;For INSTALLOPTIONS_WRITE_CONVERT
+  !insertmacro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
+;For INSTALLOPTIONS_READ_UNCONVERT
+  !insertmacro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
+;For INSTALLOPTIONS_WRITE_UNCONVERT
+  !insertmacro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT
+
+
+

+ Input validation

+
+

+ To validate the user input (for example, to check whether the user has filled in + a textbox) use the leave function of the Page command and Abort when the validation + has failed:

+
+Function ValidateCustom
+
+  !insertmacro INSTALLOPTIONS_READ $R0 "test.ini" "Field 1" "State"
+  StrCmp $R0 "" 0 +3
+    MessageBox MB_ICONEXCLAMATION|MB_OK "Please enter your name."
+    Abort
+
+FunctionEnd
+
+
+

+ Return value

+
+ After a dialog is created (using display or show), a return value is available:

+
    +
  • success - The user has pressed the Next button
  • +
  • back - The user has pressed the Back button
  • +
  • cancel - The user has pressed the Cancel button
  • +
  • error - An error has occurred, the dialog cannot be displayed.
  • +
+

+ You only have to check this value if you need something really special, such as + doing something when the user pressed the Back button.

+

+ If you need the return value, use the INSTALLOPTIONS_DISPLAY_RETURN or INSTALLOPTIONS_SHOW_RETURN + macro. The return value will be added to the stack, so you can use the Pop command + to get it.

+
+

+ Reserve files

+
+

+ When using solid compression, it's important that files which are being extracted + in user interface functions are located before other files in the data block. Otherwise + there may be a delay before a page can be displayed.

+

+ To ensure that this is the case, add ReserveFile commands for InstallOptions and + the INI files before all sections and functions:

+
+ReserveFile "test.ini"
+ReserveFile /plugin InstallOptions.dll
+
+
+

+ Fonts and colors

+
+

+ To customize fonts or colors on InstallOptions dialogs, the INSTALLOPTIONS_INITDIALOG + and INSTALLOPTIONS_SHOW macro can be used.

+

+ INSTALLOPTIONS_INITDIALOG creates the dialog in memory, but does not show it. After + inserting this macro, you can set the fonts and colors, and then insert INSTALLOPTIONS_SHOW + to show the dialog.

+

+ The INSTALLOPTIONS_INITDIALOG macro also pushes the HWND of the custom dialog to + the stack. Control HWND's are available for each control in the HWND entry of the + corresponding field in the INI file.

+

+ Example of using a custom font:

+
+Var HWND
+Var DLGITEM
+Var FONT
+
+Function FunctionName ;FunctionName defined with Page command
+
+  !insertmacro INSTALLOPTIONS_INITDIALOG "ioFile.ini"
+  Pop $HWND ;HWND of dialog
+    
+  !insertmacro INSTALLOPTIONS_READ $DLGITEM "ioFile.ini" "Field 1" "HWND"
+    
+  ;$DLGITEM contains the HWND of the first field
+  CreateFont $FONT "Tahoma" 10 700 
+  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0
+        
+  !insertmacro INSTALLOPTIONS_SHOW
+
+FunctionEnd
+
+
+

+ Credits

+
+

+ Original version by Michael Bishop
+ DLL version by Nullsoft, Inc.
+ DLL version 2 by Amir Szekely, ORTIM, Joost Verburg
+ New documentation by Joost Verburg

+
+

+ License

+
+
+Original version Copyright © 2001 Michael Bishop
+DLL version 1 Copyright © 2001-2002 Nullsoft, Inc., ORTIM
+DLL version 2 Copyright © 2003-2023 Amir Szekely, Joost Verburg, Dave Laundon
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute
+it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+   you must not claim that you wrote the original software.
+   If you use this software in a product, an acknowledgment in the
+   product documentation would be appreciated but is not required.
+2. Altered versions must be plainly marked as such,
+   and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any distribution.
+
+
+
+ + diff --git a/tools/Docs/Math/Math.txt b/tools/Docs/Math/Math.txt new file mode 100644 index 0000000..f351f75 --- /dev/null +++ b/tools/Docs/Math/Math.txt @@ -0,0 +1,197 @@ +Math::Script NSIS plugin. + +C-like style scripting (operators at least). +Tip1: plugin watches the case of the letters. +Tip2: plugin makes almost no error checks. So YOU should check your script +twice before run :) + +New HOW TO USE: run the MathTest.Exe, and try yourself. After spending +some minutes your should be able to write your script by yourself. +To include it to your NSIS script just insert that: + Math::Script "YourScript1" + Math::Script "YourScript2" + Math::Script "YourScriptFinal" + +How to use it? Simple: + Strcpy $0 "Brainsucker" + Math::Script "a = 'Math'; B = 'Script'; r0 += ' wants to use ' + a + '::' + b +'!'" + DetailPrint "$0" +That string will fill r0 with some stuff. + +Here are some other samples: + 10! (factorial, r0 will contain '10! = 362880'): + r0 = '10! = ' + (1*2*3*4*5*6*7*8*9) + the same: + a = b = 1; #{++a <= 10, b = b*a}; r0 = (a-1) + '! = ' + b + Some floating point: + Strcpy $R0 "1e1" + Math::Script "pi = 3.14159; R1 = 2*pi*R0; r0 = 'Length of circle with radius ' + R0 + ' is equal to ' + R1 + '.'" + Detailprint "$0" + +Ok. Variables. +NSIS: r0-r9 -> $0-$9. R0-R9 -> $R0-$R9. +Also CL ($CMDLINE), ID ($INSTDIR), OD ($OUTDIR), LG ($LANG), ED ($EXEDIR). +User definable: name starting from character, up to 28 letters long. + +Stacks. Two stacks are supported: NSIS stack and plugin's own stack. I see no +reasons for using plugin stack, but if you will, remember - the plugin stores +variables used at function to that stack before function execution, and restores +after execution. Even less I recommend you to use NSIS stack. You should use it +only for input/output. +How to use? It's variable styled. Plugins stack is associated with S variable, +and NSIS stack associated with NS variable. To push to stack just do "S=0" or +"NS=0", to pop from stack "a=S" or "b=NS". Combined operations supported too: +"S += 1.5" will increment value at the top of stack by 1.5. + +Supported types: int (in fact that is __int64), float (double in fact), +string. +Int: just numbers, may include sign. +Float: -123.456, 123.456e-78, 123e-45 +String: something in quotes ("", '', ``). + +There is also an array type. It is actually a reference type, so if b is array +and you will perform "a=b", the a and b will reference a single array. +To create a copy of array, use ca func: dest = ca(source). Btw - you couldn't +control dimensions of arrays - they are autosized. +To declare array: +a = {}; +To declare array and initialize some items with values: +{"Hello!", "Use", "mixed types", 1.01e23, "like that" ,1234}; +To access array: +a[index] = "Cool"; + +Also [] operation could be used to strings. str[x] gives you a single char with +index x (zero-based) as new string. str[-x] - the same, but x counts from the +string end (so the last char is -1). str[x,y] gives you characters in range x-y +(inclusive), both x and y could be <0 - in this case they counted from the end +of the string. + +The function could be useful - is conversion of arrays to strings and back. +Example: +a = a("Hello"); str = s(a); +After running such script array a will contain 6 integers (chars and last zero +- end of string), and str will contain your string back. + +Operators (some binary, some unary): +>>= <<= -= += /= *= |= &= ^= %= -- ++ >> << && || <= =< >= => != == += + - * / % < > & | ^ ~ ! +Only some are applicable to float (logic & arithmetic) and string (+ and logic) +of course. +Additional case: reference/de-reference operators (& and *). & will +give you the reference to argument which should be a variable (NSIS, user, array +item, stack), and * will convert it back to original variable. For example +(a=&b; *a=10) will set b to 10. Expression (*&a) is equal to simple (a). + +Script is set of expressions (mathematical in general) delimited with ';'. +Processing is mathematically right (2+2*2 will give 6), operations are performed +in a C like order (precedence). + +Flow control: + if-then-else like: #[if-expression, then-expr, else-expr] + example: + #[a==0, b=1; c=2, b *= (--c); c/=10] + C eq: + if (a==0) { b=1; c=2;} else { b*=(c++);c-=10; } + while (expr) do; like #{expr, do} + example: + #{(c<1.1e25)&&(b < 10), b++; c*=1.23} + C eq: + while ((c<1.1e25)&&(b<10)) { b++; c*=1.23; } + +WATCH OUT! Comma (,) separates if-expr, then-expr, and else-expr from each +other. All sub-expressions separated by (;) are the part of one expression, +and the result of the last one of these sub-exprs gives you the result of +expression. + +All the stuff (like variables and functions) will be saved between calls. + +Functions: + type conversions: + l(string) returns the length of string or array argument + s(source) converts source to string type + i(source) converts source to int type + f(source) converts source to float type + c(source) if source is string, returns int value of first + char, if source is int, returns string which consists + of a single char (source) (+0 terminator). + a(source) converts source to array (only string supported) + ff(float, format) converts float to string, with format + options. + options = precision + flags. + Precision shows how many digits after decimal point + will be shown. Flags: + 16 (or 0x10) - No Exponential View + (number will be shown as 123.123) + 32 (or 0x20) - Only exponential view + (number will be shown as 123.12e123) + 64 (or 0x40) - use 'E' character instead of 'e' + By default the plugin decides itself how to show your + number. + + math (description of all these functions is available at MSDN, use the + second given name for search): + sin(x), sin Sine of argument + cos(x), cos Cosine of argument + cel(x), ceil Ceil of argument (no fract. part) + csh(x), cosh Hyperbolic Cosine of Argument + exp(x), exp Exponential + abs(x), abs Absolute value (warning: float) + flr(x), floor Floor of argument (no fract. part) + asn(x), asin ArcSine of argument + acs(x), acos ArcCosine of argument + atn(x), atan ArcTangent of argument + ln(x), log Exponential Logarithm + log(x), log10 Decimal logarithm + snh(x), sinh Hyperbolic Sine of Argument + sqt(x), sqrt Square root of argument + tan(x), tan Tangent of argument + tnh(x), tanh Hyperbolic tangent of argument + + functions taking two arguments + at2(x, y) atan2 Arctangent of the value (y/x) + pow(x, y) pow power, x^y + fmd(x, y) fmod floating point remainder + fex(x, o) frexp Gets the mantissa (result = r) + and exponent (o) of floating-point + number (x): x = r*(2^o) + mdf(x, o) modf Splits a floating-point value into + fractional and integer parts. + +User-defined functions. +It's very simple. Example: + test(a,b) (a+b); +After that test(1,2) will give you 3. + test2(a,b) (a=a+b; b *= a); +The result of function is always the result of last expression. +As said before it better not to use stack (S) in between function calls. +It will be better to develop variable-safe functions, i.e. functions which will +not corrupt variables. For this you should either push/pop them to stack, or +declare as additional arguments, which will never be used. Example: + test3(a,b,c) (c=10; #{--c > 0, a=sqrt(a*b)}; a) +No matter how many arguments will be passed to function, the values of all three +vars (a,b,c) will be saved. +Such variable-safe functions could be recursive: + Math::Script 'rec(a) (#[a > 0, rec(a-1), 0]+a);' + Math::Script 'R1 = rec(10)' +will set R1 to right result 55. +Sometimes functions will need to return more than one value, in this case you +could declare argument as referent (b at example): + test4(a, &b) (*b = a*a; a*a*a) +In this case test4 will return a^3, and if we will call it like that test4(a,c), +it will place a^2 to c. BUT! Note: you should use de-referencer (*) with variable, +at example *b. CAUTION: never use the same variable as function internal reference +variable and external argument variable (for example test4(a,b)). It will surely +fail. Also: if you declared argument as reference - you should never supply +a constant expression to it. It could be either array item (array[1]), NSIS +register R0, any of the user variables (beside the variable with the same name:), +but never the constant. + +Another may-be-useful possibility is to redeclare the function (the usual +declaration at the time when function already defined will simply call that +function). For such task you could use "#name", like "func()(1); #func()(2);". +But beware, function declaration occurs at time of parsing, so it's not possible +to perform flow controlled declaration. +SUCH IS NOT POSSIBLE: "#[a<0, #func()(1), #func()(2)]" +IT WILL SIMPLY DEFINE #func as (2), as the latest variant. + +(c) Nik Medved (brainsucker) \ No newline at end of file diff --git a/tools/Docs/Modern UI 2/License.txt b/tools/Docs/Modern UI 2/License.txt new file mode 100644 index 0000000..3d66aa1 --- /dev/null +++ b/tools/Docs/Modern UI 2/License.txt @@ -0,0 +1,10 @@ +Copyright 2002-2023 Joost Verburg + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. + If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any distribution. \ No newline at end of file diff --git a/tools/Docs/Modern UI 2/Readme.html b/tools/Docs/Modern UI 2/Readme.html new file mode 100644 index 0000000..020148f --- /dev/null +++ b/tools/Docs/Modern UI 2/Readme.html @@ -0,0 +1,1162 @@ + + + + NSIS Modern User Interface - Documentation + + + + + + + + + + + + +
+ +

+ [Expand all]   [Collapse + all]

+
+

+ Introduction

+
+

+ The Modern UI provides a user interface for NSIS installers with a modern wizard + style, similar to the wizards of recent Windows versions. It is based on the basic + user interface that is provided by the NSIS compiler itself and extends it with + more interface features and pages.

+

+ All standard NSIS pages (such as the pages to select components and the installation + folder) are supported as well as a number of additional pages. The welcome page + allows you to provide an introduction to the installation process, while the finish + page provides a way to let the user decide what steps should be performed after + the setup wizard is closed (for example, whether the application should be started + immediately). A finish page can also be used to ask for a system restart is necessary.

+

+ Open/Close section + Screenshots

+
+

+

+
+
+

+ Modern UI 2.1

+
+

+ This new version makes it easier to customize pages, because the same method can + be used to  change standard NSIS pages as well as additional pages provided + by the Modern UI. It is now also possible for other NSIS plug-ins to add new pages + to the Modern UI. You can expect to see examples of this soon.

+

+ The welcome and finish page are no longer implemented using InstallOptions. Instead, + the new nsDialogs plug-in is used. nsDialogs allows you to create custom pages or + customize existing pages directly from the script.

+

+ To upgrade a Modern UI 1.8 script, you should:

+
    +
  • Insert the MUI2.nsh header file instead of MUI.nsh.
  • +
  • The macros for InstallOptions have been moved to a separate header file unrelated + to the Modern UI. If you are still using InstallOptions for custom pages, insert + InstallOptions.nsh and use the INSTALLOPTIONS_* macros instead of the MUI_INSTALLOPTIONS_* + macros. The macros themselves have remained the same.
  • +
  • Rewrite customization code for the Modern UI 1.8 welcome and finish pages in which + the InstallOptions INI file is used. nsDialogs commands should be used instead.
  • +
  • Use the standard NSIS method to escape special characters in all texts. For example, + $\r$\n creates newline.
  • +
+
+

+ Script header

+
+

+ The settings for the Modern UI should be inserted in the header of the script file. + It's important to follow the same order as the items below. For example, + interface settings should be defined before you insert pages, because the pages + depend on the interface configuration. It may be useful to look at the + example scripts too see how this is done in actual script files.

+

+ Parameters are given in this format: required (option1 | option2) + [optional]

+
+

+ 1. Header file

+
+

+ First of all, add this line to the top of script to include the Modern UI:

+
+!include MUI2.nsh
+
+
+

+ 2. Interface configuration

+
+

+ Then, you may want to use interface settings to change the look and feel of the + installer. These settings apply to all pages.

+ The interface settings provided by the NSIS compiler itself (such as LicenseText, + Icon, CheckBitmap, InstallColors) should not be used in Modern UI scripts. The Modern + UI provides equalivent or extended versions of these settings.

+ Examples:

+
+!define MUI_COMPONENTSPAGE_SMALLDESC ;No value
+!define MUI_UI "myUI.exe" ;Value
+!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;Two colors
+
+

+ Open/Close section + Interface settings

+
+

+ Open/Close section + Page header

+
+

+ MUI_ICON icon_file
+ The icon for the installer.
+ Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico

+

+ MUI_UNICON icon_file
+ The icon for the uninstaller.
+ Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico

+

+ MUI_HEADERIMAGE
+ Display an image on the header of the page.

+
+

+ MUI_HEADERIMAGE_BITMAP bmp_file
+ Bitmap image to display on the header of installers pages (recommended size: 150x57 + pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

+
+

+ MUI_HEADERIMAGE_BITMAP_STRETCH mode
+

    +
  • FitControl (Default)
    + Stretch the image to fit the image control.

    +
  • NoStretchNoCropNoAlign
    + Do not stretch the image to fit the size of the image control. + You should not use this option if you have a full size bitmap that fits exactly because + the size of the field will be different if the user has a custom DPI setting or + if the installer is using a CJK language.

    +
  • NoStretchNoCrop
    + This is similar to NoStretchNoCropNoAlign but will align the image to the right edge when + using a RTL language or if MUI_HEADERIMAGE_RIGHT is defined.

    +
  • AspectFitHeight
    + Scale the image up or down until it is the same height as the image control while + maintaining the image aspect ratio.

    +
+

+

+ MUI_HEADERIMAGE_BITMAP_RTL bmp_file
+ Bitmap image to display on the header of installers pages when using a RTL language + (recommended size: 150x57 pixels).
+ Default: Non-RTL bitmap

+
+

+ MUI_HEADERIMAGE_BITMAP_RTL_STRETCH mode
+ See MUI_HEADERIMAGE_BITMAP_STRETCH for a list of the available stretch modes.

+
+
+

+ MUI_HEADERIMAGE_UNBITMAP bmp_file
+ Bitmap image to display on the header of uninstaller pages (recommended size: 150x57 + pixels).
+ Default: Installer header bitmap

+
+

+ MUI_HEADERIMAGE_UNBITMAP_STRETCH mode
+ See MUI_HEADERIMAGE_BITMAP_STRETCH for a list of the available stretch modes.

+

+ MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
+ Bitmap image to display on the header of uninstallers pages when using a RTL language + (recommended size: 150x57 pixels).
+ Default: Installer RTL header bitmap

+
+

+ MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH mode
+ See MUI_HEADERIMAGE_BITMAP_STRETCH for a list of the available stretch modes.

+
+
+

+ MUI_HEADERIMAGE_RIGHT
+ Display the header image on the right side instead of the left side (when using + a RTL language it will be displayed on the left side instead of the right side).

+
+

+ MUI_BGCOLOR (color: RRGGBBR hexadecimal)
+ Background color for the header, the Welcome page and the Finish page.
+ Default: FFFFFF

+

+ MUI_HEADER_TRANSPARENT_TEXT
+ Set a transparent background for the header's label controls. Useful for custom + user interfaces that set a bigger header image.

+

+ MUI_TEXTCOLOR (color: RRGGBBR hexadecimal)
+ Text color for the header, the Welcome page and the Finish page.
+ Default: 000000

+
+

+ Open/Close section + Interface resources

+
+

+ MUI_UI ui_file
+ The interface file with the dialog resources. Change this if you have made your + own customized UI.
+ Default: ${NSISDIR}\Contrib\UIs\modern.exe

+

+ MUI_UI_HEADERIMAGE ui_file
+ The interface files with the dialog resource IDD_INST that contains a bitmap control + and space for the header bitmap.
+ Default: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

+

+ MUI_UI_HEADERIMAGE_RIGHT ui_file
+ The interface files with the dialog resource IDD_INST that contains a bitmap control + and space for the header bitmap on the right side.
+ Default: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

+

+ MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
+ The interface files with a customized dialog resource IDD_SELCOM with a small description + area.
+ Default: ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe

+

+ MUI_UI_COMPONENTSPAGE_NODESC ui_file
+ The interface files with a customized dialog resource IDD_SELCOM without a description + area.
+ Default: ${NSISDIR}\Contrib\UIs\modern_nodesc.exe

+
+

+ Open/Close section + Installer welcome/finish page

+
+

+ MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
+ Bitmap for the Welcome page and the Finish page (recommended size: 164x314 pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

+
+

+ MUI_WELCOMEFINISHPAGE_BITMAP_STRETCH mode
+ See MUI_HEADERIMAGE_BITMAP_STRETCH for a list of the available stretch modes.

+
+
+

+ Open/Close section + Uninstaller welcome/finish page

+
+

+ MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
+ Bitmap for the Welcome page and the Finish page (recommended size: 164x314 pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

+
+

+ MUI_UNWELCOMEFINISHPAGE_BITMAP_STRETCH mode
+ See MUI_HEADERIMAGE_BITMAP_STRETCH for a list of the available stretch modes.

+
+
+

+ Open/Close section + License page

+
+

+ MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | + (color: RRGGBB hexadecimal))
+ The background color for the license textbox. Use /windows for the Windows text + background color (usually white). Use the /grey for the window background color + (usually grey).
+ Default: /windows

+
+

+ Open/Close section + Components page

+
+

+ MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
+ The bitmap with images for the checks of the component select treeview.
+ Default: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

+

+ MUI_COMPONENTSPAGE_SMALLDESC
+ A small description area on the bottom of the page. Use this layout if you have + a lot of sections and don't need large descriptions.

+

+ MUI_COMPONENTSPAGE_NODESC
+ No description area.

+
+

+ Open/Close section + Directory page

+
+

+ MUI_DIRECTORYPAGE_BGCOLOR (color: RRGGBB hexadecimal)
+ The background color for the directory textbox.

+
+

+ Open/Close section + Start Menu folder page

+
+

+ MUI_STARTMENUPAGE_BGCOLOR (color: RRGGBB hexadecimal)
+ The background color for the startmenu directory list and textbox.

+
+

+ Open/Close section + Installation page

+
+

+ MUI_INSTFILESPAGE_COLORS (/windows | "(foreground + color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal)")
+ The colors of the details screen. Use /windows for the default Windows colors.
+ Default: /windows

+

+ MUI_INSTFILESPAGE_PROGRESSBAR ("" + | colored | smooth)
+ The style of the progress bar. Colored makes it use the MUI_INSTALLCOLORS.
+ Default: smooth

+
+

+ Open/Close section + Installer finish page

+
+

+ MUI_FINISHPAGE_NOAUTOCLOSE
+ Do not automatically jump to the finish page, to allow the user to check the install + log.

+
+

+ Open/Close section + Uninstaller finish page

+
+

+ MUI_UNFINISHPAGE_NOAUTOCLOSE
+ Do not automatically jump to the finish page, to allow the user to check the uninstall + log.

+
+

+ Open/Close section + Abort warning

+
+

+ MUI_ABORTWARNING
+ Show a message box with a warning when the user wants to close the installer.

+
+

+ MUI_ABORTWARNING_TEXT text
+ Text to display on the abort warning message box.

+

+ MUI_ABORTWARNING_CANCEL_DEFAULT
+ Set the Cancel button as the default button on the message box.

+
+
+

+ Open/Close section + Uninstaller abort warning

+
+

+ MUI_UNABORTWARNING
+ Show a message box with a warning when the user wants to close the uninstaller.

+
+

+ MUI_UNABORTWARNING_TEXT text
+ Text to display on the abort warning message box.

+

+ MUI_UNABORTWARNING_CANCEL_DEFAULT
+ Set the Cancel button as the default button on the message box.

+
+
+
+
+

+ 3. Pages

+
+

+ Insert the following macros to set the pages you want to use. The pages will appear + in the order in which you insert them in the script. You can also insert custom + Page commands between the macros to add custom pages.

+

+ You can add multiple pages of certain types (for example, if you want the user to + specify multiple folders).

+

+ Examples:

+
+!insertmacro MUI_PAGE_LICENSE "License.rtf"
+!insertmacro MUI_PAGE_COMPONENTS
+
+Var StartMenuFolder
+!insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder
+
+

+ You will need the page ID for the Start Menu folder page when using the Start Menu + folder macros. The folder will be stored in the specified variable.

+

+ Installer pages
+ MUI_PAGE_WELCOME
+ MUI_PAGE_LICENSE textfile
+ MUI_PAGE_COMPONENTS
+ MUI_PAGE_DIRECTORY
+ MUI_PAGE_STARTMENU pageid variable
+ MUI_PAGE_INSTFILES
+ MUI_PAGE_FINISH

+

+ Uninstaller pages
+ MUI_UNPAGE_WELCOME
+ MUI_UNPAGE_CONFIRM
+ MUI_UNPAGE_LICENSE textfile
+ MUI_UNPAGE_COMPONENTS
+ MUI_UNPAGE_DIRECTORY
+ MUI_UNPAGE_INSTFILES
+ MUI_UNPAGE_FINISH

+

+ Open/Close section + Page settings

+
+

+ Page settings apply to a single page and should be set before inserting a page macro. + The same settings can be used for installer and uninstaller pages. You have to repeat + the setting if you want it to apply to multiple pages. Example:

+
+;Add a directory page to let the user specify a plug-ins folder
+;Store the folder in $PluginsFolder
+
+Var PLUGINS_FOLDER
+!define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
+!insertmacro MUI_PAGE_DIRECTORY
+
+

+

+ All standard texts in the user interface are loaded from language files, which are + available for all languages supported by NSIS. So you only need to define these + texts if you want to change the default.

+

+ If the parameter is a text that should be different for each language, define a + language string using LangString and use $(LangStringName) as value. For a license + text in multiple languages, LicenseLangString can be used. Refer the NSIS Users + Manual for more information about installers with multiple languages.

+

+ In all text settings, the doublequote character (") should be escaped in the + following form: $\"

+

+ Open/Close section + General page settings

+
+

+ MUI_PAGE_HEADER_TEXT text
+ Text to display on the header of the page.

+

+ MUI_PAGE_HEADER_SUBTEXT text
+ Subtext to display on the header of the page.

+
+

+ Open/Close section + Welcome page settings

+
+

+ MUI_WELCOMEPAGE_TITLE title
+ Title to display on the top of the page.

+

+ MUI_WELCOMEPAGE_TITLE_3LINES
+ Extra space for the title area.

+

+ MUI_WELCOMEPAGE_TEXT text
+ Text to display on the page.

+
+

+ Open/Close section + License page settings

+
+

+ MUI_LICENSEPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_LICENSEPAGE_TEXT_BOTTOM text
+ Text to display on the bottom of the page.

+

+ MUI_LICENSEPAGE_BUTTON button_text
+ Text to display on the 'I Agree' button.

+

+ MUI_LICENSEPAGE_CHECKBOX
+ Display a checkbox the user has to check to agree with the license terms.

+
+

+ MUI_LICENSEPAGE_CHECKBOX_TEXT text
+ Text to display next to the checkbox to agree with the license terms.

+
+

+ MUI_LICENSEPAGE_RADIOBUTTONS
+ Display two radio buttons to allow the user to choose between accepting the license + terms or not.

+
+

+ MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
+ Text to display next to the checkbox to accept the license terms.

+

+ MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text
+ Text to display next to the checkbox to decline the license terms.

+
+
+

+ Open/Close section + Components page settings

+
+

+ MUI_COMPONENTSPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_COMPONENTSPAGE_TEXT_COMPLIST text
+ Text to display on next to the components list.

+

+ MUI_COMPONENTSPAGE_TEXT_INSTTYPE text
+ Text to display on next to the installation type combo box.

+

+ MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text
+ Text to display on the of the top of the description box.

+

+ MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text
+ Text to display inside the description box when no section is selected.

+
+

+ Open/Close section + Directory page settings

+
+

+ MUI_DIRECTORYPAGE_TEXT_TOP text
+ Text to display on top of the page.

+

+ MUI_DIRECTORYPAGE_TEXT_DESTINATION text
+ Text to display on the destination folder frame.

+

+ MUI_DIRECTORYPAGE_VARIABLE variable
+ Variable in which to store the selected folder.
+ Default: $INSTDIR

+

+ MUI_DIRECTORYPAGE_VERIFYONLEAVE
+ Does not disable the Next button when a folder is invalid but allows you to use + GetInstDirError in the leave function to handle an invalid folder.

+
+

+ Open/Close section + Start Menu folder page settings

+
+

+ MUI_STARTMENUPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_STARTMENUPAGE_TEXT_CHECKBOX text
+ Text to display next to the checkbox to disable the Start Menu folder creation.

+

+ MUI_STARTMENUPAGE_DEFAULTFOLDER folder
+ The default Start Menu Folder.

+

+ MUI_STARTMENUPAGE_NODISABLE
+ Do not display the checkbox to disable the creation of Start Menu shortcuts.

+

+ MUI_STARTMENUPAGE_REGISTRY_ROOT root
+ MUI_STARTMENUPAGE_REGISTRY_KEY key
+ MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
+ The registry key to store the Start Menu folder. The page will use it to remember + the users preference. You should also use for the uninstaller to remove the Start + Menu folders. Don't forget to remove this key during uninstallation.

+

+ For the uninstaller, use the MUI_STARTMENU_GETFOLDER macro to get the Start Menu + folder:

+
+!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
+  Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"
+
+
+

+ Open/Close section + Installation page settings

+
+

+ MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
+ Text to display on the header of the installation page when the installation has + been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

+

+ MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
+ Subtext to display on the header of the installation page when the installation + has been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

+

+ MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
+ Text to display on the header of the installation page when the installation has + been aborted.

+

+ MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text
+ Subext to display on the header of the installation page when the installation has + been aborted.

+
+

+ Open/Close section + Finish page settings

+
+

+ MUI_FINISHPAGE_TITLE title
+ Title to display on the top of the page.

+

+ MUI_FINISHPAGE_TITLE_3LINES
+ Extra space for the title area.

+

+ MUI_FINISHPAGE_TEXT text
+ Text to display on the page.

+

+ MUI_FINISHPAGE_TEXT_LARGE
+ Extra space for the text area (if using checkboxes).

+

+ MUI_FINISHPAGE_BUTTON text
+ Text to display on the Finish button.

+

+ MUI_FINISHPAGE_CANCEL_ENABLED
+ Enable the Cancel button so the user can skip any options displayed on the finish + page.

+

+ MUI_FINISHPAGE_TEXT_REBOOT text
+ Text to display on the finish page when asking for a system reboot.

+

+ MUI_FINISHPAGE_TEXT_REBOOTNOW text
+ Text to display next to the 'Reboot now' option button.

+

+ MUI_FINISHPAGE_TEXT_REBOOTLATER text
+ Text to display next to the 'Reboot later' option button.

+

+ MUI_FINISHPAGE_REBOOTLATER_DEFAULT
+ Sets the 'Reboot later' option as the default option.

+

+ MUI_FINISHPAGE_RUN exe_file
+ Application which the user can select to run using a checkbox. You don't need to + put quotes around the filename when it contains spaces.

+
+

+ MUI_FINISHPAGE_RUN_TEXT text
+ Texts to display next to the 'Run program' checkbox.

+

+ MUI_FINISHPAGE_RUN_PARAMETERS parameters
+ Parameters for the application to run. Don't forget to escape double quotes in the + value (use $\").

+

+ MUI_FINISHPAGE_RUN_NOTCHECKED
+ Do not check the 'Run program' checkbox by default

+

+ MUI_FINISHPAGE_RUN_FUNCTION function
+ Call a function instead of executing an application (define MUI_FINISHPAGE_RUN without + parameters). You can use the function to execute multiple applications or you can + change the checkbox name and use it for other things.

+
+

+ MUI_FINISHPAGE_SHOWREADME file/url
+ File or website which the user can select to view using a checkbox. You don't need + to put quotes around the filename when it contains spaces.

+
+

+ MUI_FINISHPAGE_SHOWREADME_TEXT text
+ Texts to display next to the 'Show Readme' checkbox.

+

+ MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+ Do not check the 'Show Readme' checkbox by default

+

+ MUI_FINISHPAGE_SHOWREADME_FUNCTION function
+ Call a function instead of showing a file (define MUI_FINISHPAGE_SHOWREADME without + parameters). You can use the function to show multiple files or you can change the + checkbox name and use it for other things.

+
+

+ MUI_FINISHPAGE_LINK link_text
+ Text for a link on the which the user can click to view a website or file.

+
+

+ MUI_FINISHPAGE_LINK_LOCATION file/url
+ Website or file which the user can select to view using the link. You don't need + to put quotes around the filename when it contains spaces.

+

+ MUI_FINISHPAGE_LINK_COLOR (color: RRGGBB hexadecimal)
+ Text color for the link on the Finish page.
+ Default: 000080

+
+

+ MUI_FINISHPAGE_NOREBOOTSUPPORT
+ Disables support for the page that allows the user to reboot the system. Define + this option to save some space if you are not using the /REBOOTOK flag or SetRebootFlag.

+
+

+ Open/Close section + Uninstall confirm page settings

+
+

+ MUI_UNCONFIRMPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_UNCONFIRMPAGE_TEXT_LOCATION text
+ Text to display next to the uninstall location text box.

+

+ MUI_UNCONFIRMPAGE_VARIABLE variable
+ Variable in which to store the uninstall source folder.
+ Default: $INSTDIR

+
+
+
+

+ 4. Language files

+
+

+ Insert the Modern UI language files for the languages to want to include.

+
+!insertmacro MUI_LANGUAGE "English"
+
+

+ The standard NSIS language files are loaded automatically, there is no need to use + LoadLanguageFile.

+
+

+ 5. Reserve files

+
+

+ If you are using solid compression, files that are required before the actual installation + should be stored first in the data block, because this will make your installer + start faster. Include reserve file commands for such files before your sections + and functions:

+
+ReserveFile /plugin MyPlugin.dll
+!insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
+...
+
+
+

+ Script code for pages

+
+

+ Some pages allow you to show additional information or can be used to get user input. + Here you can find the script code to use these features.

+

+ Components page descriptions

+
+

+ The Modern UI components page has a text box in which a description can be shown + when the user hovers the mouse over a component. If you don't want to use these + descriptions, insert the MUI_COMPONENTSPAGE_NODESC interface setting.

+

+ To set a description for a section, an additional parameter needs to be added to + Section command with a unique identifier for the section. This name can later be + used to set the description for this section.

+
+Section "Section Name 1" Section1
+   ...
+SectionEnd
+
+

+ After the sections, use these macros to set the descriptions:

+
+LangString DESC_Section1 ${LANG_ENGLISH} "Description of section 1."
+LangString DESC_Section2 ${LANG_ENGLISH} "Description of section 2."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
+  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+

+ For the uninstaller, use the MUI_UNFUNCTION_DESCRIPTION_BEGIN and MUI_UNFUNCTION_DESCRIPTION_END + macros.

+
+

+ Start Menu folder

+
+

+ Put the code to write the shortcuts (using CreateShortcut) between the MUI_STARTMENU_WRITE_BEGIN + and MUI_STARTMENU_WRITE_END macros:

+
+!insertmacro MUI_STARTMENU_WRITE_BEGIN pageid
+  ...create shortcuts...
+!insertmacro MUI_STARTMENU_WRITE_END
+
+

+ The page ID should be the ID of the page on which the user has selected the folder + for the shortcuts you want to write.

+

+ The variable which contains the folder and the page ID are set as parameters of + the page macro.

+
+
+

+ Language selection dialog

+
+

+ If you want the installer to display a language selection dialog (see the the MultiLanguage.nsi example), + insert the MUI_LANGDLL_DISPLAY macro in the .onInit function:

+
+Function .onInit
+
+  !insertmacro MUI_LANGDLL_DISPLAY
+
+FunctionEnd
+
+

+ This macro can also be used in the un.onInit function.

+

+ Open/Close section + Settings for registry storage of selected language

+
+

+ To remember the user's preference, you can define a registry key. These defines + should be set before inserting the installation page macro.

+

+ MUI_LANGDLL_REGISTRY_ROOT root
+ MUI_LANGDLL_REGISTRY_KEY key
+ MUI_LANGDLL_REGISTRY_VALUENAME value_name
+ The registry key to store the language. The users preference will be remembered. + You can also use it for the uninstaller to display the right language. Don't forget + to remove this key in the uninstaller.

+

+ For the uninstaller, insert the MUI_UNGETLANGUAGE macro in un.onInit to get the + stored language preference:

+
+Function un.onInit
+
+  !insertmacro MUI_UNGETLANGUAGE
+
+FunctionEnd
+
+
+

+ Open/Close section + Interface settings for selection dialog

+
+

+ To customize the language selection dialog interface, use these defines before inserting + the MUI_LANGDLL_DISPLAY macro.

+

+ MUI_LANGDLL_WINDOWTITLE text
+ The window title of the language selection dialog.

+

+ MUI_LANGDLL_INFO text
+ The text to display on the language selection dialog.

+

+ MUI_LANGDLL_ALWAYSSHOW
+ Always show the language selection dialog, even if a language has been stored in + the registry. The language stored in the registry will be selected by default.

+

+ MUI_LANGDLL_ALLLANGUAGES
+ Always show all available languages and don't filter according to their codepage.

+
+
+

+ Custom pages

+
+

+ If you want add your custom pages to your installer, you can insert your own page + commands between the page macros.

+
+!insertmacro MUI_PAGE_WELCOME
+Page custom FunctionName ;Custom page
+!insertmacro MUI_PAGE_COMPONENTS
+ 
+;Uninstaller
+!insertmacro MUI_UNPAGE_CONFIRM
+UninstPage custom un.FunctionName ;Custom page
+!insertmacro MUI_UNPAGE_INSTFILES
+
+

+ Use the MUI_HEADER_TEXT macro to set the text on the page header in a page function:

+
+LangString PAGE_TITLE ${LANG_ENGLISH} "Title"
+LangString PAGE_SUBTITLE ${LANG_ENGLISH} "Subtitle"
+
+Function CustomPageFunction
+  !insertmacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
+  nsDialogs::...
+  ...
+FunctionEnd
+
+
+

+ Custom functions

+
+

+ Interface functions provided by NSIS, like the .onGUIInit function and the page + functions are automatically included by the Modern UI and filled with code to support + new interface features. If you want to add additional code to these function, create + a function with the custom script code in the script use the Modern UI functions + call them.

+

+ Example:

+
+!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
+
+Function myGUIInit
+  ...
+FunctionEnd
+

+ Modern UI pages can also customized using custom functions.

+

+ Open/Close section + General Custom Functions

+
+

+ These defines should be set before inserting the language macros.

+

+ MUI_CUSTOMFUNCTION_GUIINIT function
+ MUI_CUSTOMFUNCTION_UNGUIINIT function
+ MUI_CUSTOMFUNCTION_ABORT function
+ MUI_CUSTOMFUNCTION_UNABORT function
+ MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION function
+ MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION function

+

+ Mouse over functions are only available when the description macros + (MUI_FUNCTION_DESCRIPTION_BEGIN) are used. When component page descriptions are not + used, regular .onMouseOverSection and un.onMouseOverSection must be used.

+
+

+ Open/Close section + Page Custom Functions

+
+

+ These defines should be set before inserting a page macro.

+

+ MUI_PAGE_CUSTOMFUNCTION_PRE function
+ MUI_PAGE_CUSTOMFUNCTION_SHOW function
+ MUI_PAGE_CUSTOMFUNCTION_LEAVE function
+ MUI_PAGE_CUSTOMFUNCTION_DESTROYED function
+

+

+ The pre function is called first and allows you to initialize variables or decide + whether the page should be skipped. Then, the show function is called, which can + be used to customize the interface. Finally, the user input can be validated in the + leave function. The NSIS Users Manual provides more information about these functions.

+

+ In the show function, the window handles of all controls on the page can be retrieved + from a Modern UI variable. A list of the variables names is not yet available. For + now, refer to the source files of the Modern UI 2. The variable declarations can + be found in the first lines of the header file for a certain page.

+

+ The destroyed function is called after a external/plug-in page has been destroyed. +

+
+

+ Example scripts

+
+

+ Basic: Basic.nsi
+ Welcome/Finish page: WelcomeFinish.nsi
+ Multiple languages: MultiLanguage.nsi
+ Header image: HeaderBitmap.nsi
+ Start Menu Folder page: StartMenu.nsi

+
+

+ Credits

+
+

+ Written by Joost Verburg.
+ Icons designed by Nikos Adamamas, aka adni18.
+ Thanks to Amir Szekely, aka KiCHiK, for his work on NSIS to make this possible.

+
+

+ License

+
+

+ The zlib/libpng license applies to the Modern UI.

+

+ Open/Close section + License Terms

+
+
+Copyright © 2002-2023 Joost Verburg
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute
+it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; 
+   you must not claim that you wrote the original software.
+   If you use this software in a product, an acknowledgment in the
+   product documentation would be appreciated but is not required.
+2. Altered versions must be plainly marked as such,
+   and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any distribution.
+
+
+
+
+
+ + diff --git a/tools/Docs/Modern UI 2/images/closed.gif b/tools/Docs/Modern UI 2/images/closed.gif new file mode 100644 index 0000000..b45054e Binary files /dev/null and b/tools/Docs/Modern UI 2/images/closed.gif differ diff --git a/tools/Docs/Modern UI 2/images/header.gif b/tools/Docs/Modern UI 2/images/header.gif new file mode 100644 index 0000000..f8810d3 Binary files /dev/null and b/tools/Docs/Modern UI 2/images/header.gif differ diff --git a/tools/Docs/Modern UI 2/images/open.gif b/tools/Docs/Modern UI 2/images/open.gif new file mode 100644 index 0000000..9fff60e Binary files /dev/null and b/tools/Docs/Modern UI 2/images/open.gif differ diff --git a/tools/Docs/Modern UI 2/images/screen1.png b/tools/Docs/Modern UI 2/images/screen1.png new file mode 100644 index 0000000..0e25c0d Binary files /dev/null and b/tools/Docs/Modern UI 2/images/screen1.png differ diff --git a/tools/Docs/Modern UI 2/images/screen2.png b/tools/Docs/Modern UI 2/images/screen2.png new file mode 100644 index 0000000..4fccd41 Binary files /dev/null and b/tools/Docs/Modern UI 2/images/screen2.png differ diff --git a/tools/Docs/Modern UI/Changelog.txt b/tools/Docs/Modern UI/Changelog.txt new file mode 100644 index 0000000..d827d77 --- /dev/null +++ b/tools/Docs/Modern UI/Changelog.txt @@ -0,0 +1,268 @@ +NSIS Modern User Interface +Version History + +1.81 +* Added MUI_TEXTCOLOR (2018-09-09) +* Added MUI_PAGE_CUSTOMFUNCTION_DESTROYED (2017-04-03) +* Added support for MUI_UNCONFIRMPAGE_VARIABLE (RFE #511) (2016-12-30) + +1.8 - August 9, 2007 +* Uses the new language files +* Updated documentation +* Although MUI_DIRECTORYPAGE_BGCOLOR and MUI_STARTMENUPAGE_BGCOLOR are documented as interface + settings that apply to every directory page or Start Menu folder page, they were actually + implemented as page specific settings. They have been changed to interface settings. +* MUI_LANGDLL_DISPLAY now also reads a previously saved language from the registry if the + installation is silent. +* InstallOptions macros have been moved to a separate header file (InstallOptions.nsh). + The MUI_INSTALLOPTIONS_* macros are still provided for backwards compatibility and insert the + equalivent INSTALLOPTIONS_* macros. +* Added MUI_CUSTOMFUNCTION_MOUSEOVERSECTION + +1.78 - June 8, 2007 +* Added MUI_STARTMENUPAGE_BGCOLOR +* Added MUI_DIRECTORYPAGE_BGCOLOR +* Added MUI_LANGDLL_ALLLANGUAGES + +1.77 - April 27, 2007 +* Added MUI_FINISHPAGE_CANCEL_ENABLED +* Added MUI_FINISHPAGE_REBOOTLATER_DEFAULT +* Block unsupported languages in the language selection dialog +* Cancel button no longer enabled by default on the finish page +* Reduced flicker caused by MUI_HEADER_TRANSPARENT_TEXT + +1.76 - September 23, 2006 +* Added MUI_ABORTWARNING_CANCEL_DEFAULT + +1.75 - April 1, 2006 +* Added show function for the start menu page +* Added MUI_HEADER_TRANSPARENT_TEXT for transparent header texts + +1.74 - September 4, 2005 +* Fixed compile error when checkboxes are used on multiple finish page pages + +1.73 - August 6, 2005 +* The checkboxes to run an application or show a Readme file can now also be used on an uninstaller + finish pages or multiple finish pages + +1.72 - November 27, 2004 +* Fixed state of Finish page Cancel button when both an installer and uninstaller page is included + +1.71 - October 14, 2004 +* The selected language is only stored in the registry when installation was successful + +1.70 - February 6, 2004 +* Improved documentation +* New Init custom function for Welcome and Finish page + +1.69 - January 7, 2004 +* All uninstaller pages work without installer pages +* Fixed top text on uninstaller license page + +1.68 - November 24, 2003 +* New settings for extra space for title and text on Welcome and Finish page. +* Improved handling of verbose settings. Define MUI_VERBOSE the set the Modern UI verbose level (1-4). +* Language file string for uninstaller reboot information +* Setting for folder validation in leave function +* Fixed finish page text settings for multiple pages + +1.67 - November 18, 2003 +* Support for uninstaller Welcome pages and Finish pages +* Improved and changed text settings +* ID for Start Menu Folder pages, easier to use multiple pages +* Renamed a few settings +* Default header image +* Support for uninstaller abort warning +* Setting for 3 line text on Welcome and Finish page + (NOTE: New settings have been introduced in version 1.68) +* Language file backwards compatibility: English for missing strings +* Support for different uninstaller header image +* Language selection dialog not displayed if installer is silent +* Cancel button on Finish page when there are options +* Full RTL support + +1.66 - October 7, 2003 +* New system for page settings and custom pages +* Support for uninstaller components page +* Support for multiple pages of the same type +* New position for interface settings +* Changed macro and setting names +* Updated language system, new language files and settings +* Removed MUI_BRANDINGTEXT. You can use the standard BrandingText instruction. +* Removed MUI_PRODUCT and MUI VERSION. You can use the standard Name instruction. + +1.65 - July 16, 2003 +* New page configuration system, no different system for installers with custom pages +* Default windows color for the license text background +* Example script updates (new format, user variables) +* Improved registry storage for Start Menu folder +* ReserveFile macro for StartMenu plug-in +* Option to always show the language selection dialog (even if a language has been stored in the registry) +* Checkboxes on Finish page can be used to call a function +* Support for custom leave functions for Start Menu Folder, Welcome and Finish pages +* Support for a link on the Finish page +* New macro to get Start Menu folder in uninstaller +* Options to disable bitmap stretching +* Components page description box info text: always displayed + when mouse is outside box, disabled style + +1.64 - April 27, 2003 +* Support for license page with checkbox or radiobuttons to let the user accept the agreement or not +* Macros for finish headers don't have to be inserted anymore +* Language preference stored when installation has completed, no problems anymore when the users selects the wrong language +* Header text for aborted installation +* New macros: get language for uninstaller, delete shortcuts +* Language specific fonts +* Welcome/Finish page INI files can be modified in pre functions +* More texts can be customized + +1.63 - March 9, 2003 +* Support for a bitmap in the wizard header +* New defines to change the components page interface +* MUI_SYSTEM inserted automatically +* Single macro for language selection dialog +* Removed page description in window title +* Easier to customize resource files +* New system for custom functions +* Start Menu folder registry key automatically written +* New InstallOptions macros that do not remove the return value from the stack +* Support for custom pages before the finish page +* Renamed Start Menu page defines +* 'Do not create shortcuts' checkbox can be removed +* 'MS Shell Dlg' font for header title +* RTL support +* Documentation updates +* Minor fixes + +1.62 - February 2, 2003 +* New language strings for Finish page +* Possibility to let a Modern UI Function call your own function +* No problems anymore when using both 'Run program' and 'Show Readme' on the Finish page +* Default state of checkboxes on the finish page can be changed +* Welcome / Finish page compatible with custom DPI settings +* Converted Install Options INI files to use dialog units +* More ReserveFile macros + (NOTE: Some of these macros have been removed in later versions) +* Background color can be changed with a define +* Support for multilingual branding texts +* Start Menu / Finish page window titles also work when using custom page commands +* Language files should be inserted after inserting the MUI_SYSTEM macro + (NOTE: The MUI_SYSTEM macro has been removed in version 1.63) +* Define MUI_MANUALVERBOSE if you don't want the Modern UI to change the verbose settings during compilation + (NOTE: This setting has been changed in version 1.68) + +1.61 - December 5, 2002 +* modern3.exe UI without description area + (NOTE: This setting has been changed in version 1.63) +* Added define to show uninstall confirm page +* Added language string for finish page title and continue to uninstall +* Define for parameters for the application to run on the finish page +* Minor fixes + +1.6 - November 18, 2002 +* Welcome / Finish page +* Automatic ask for reboot on finish page +* Create no shortcut option on the Start Menu Folder selection page +* Customizing GUIInit functions easier +* Minor font / UI changes + +1.5 - November 11, 2002 +* New language file format +* Language strings can be changed in the script without editing languagefiles +* Start Menu Folder selection page +* 'Click Next to continue' and 'Click Install to start the installation' texts automatically change to the page order +* Install Options macros updated. MUI_INSTALLOPTIONS_DISPLAY is the standard macro now. + Use MUI_INSTALLOPTIONS_INITDIALOG and MUI_INSTALLOPTIONS_SHOW if you want to customize dialog controls. +* No more writing window titles & abort warnings to Install Options INI Files +* Compatible with updated paging system +* Renamed macros and defines +* Minor fixes + +1.4 - November 4, 2002 +* Uses new NSIS Page command +* Macro System updates (smaller) +* Macro System a lot easier +* Modern UI Language Files load NLF language files +* Renamed macros and defines + +1.3 - October 27, 2002 +* Easier macro system for basic scripts +* New MultiLanguage system using Modern UI Language Files +* New directory structure (header/language files in Contrib\Modern UI) +* Small bugfixes & typo corrections +* SetPage function should be set using defines +* Different NextPage/PrevPage/FinishHeader macros for install/uninstall + (NOTE: These macros have been removed in version 1.4) +* Interface settings can be defined (for example, MUI_ICON), no parameters for MUI_INTERFACE anymore +* New Install Options macros to read/write IO INI file value + +1.21 - September 30, 2002 +* Temp vars set in Modern UI header +* Currentpage & Install Options vars should be set using + parameters of the MUI_INTERFACE and * MUI_INSTALLOPTIONS macros + (NOTE: The MUI_INTERFACE macro has been removed in version 1.3) +* MultiLanguage.nsi uses the new language strings + +1.2 - September 22, 2002 + (NOTE: All macros mentioned here have been removed in version 1.4) + +* Lots of macro system updates & fixes +* InstallOptions support in macro system +* Added Modern UI + InstallOptions example (InstallOptions.nsi) +* MUI_NEXTPAGE_OUTER integrated in MUI_NEXTPAGE +* No hard-coded function names anymore (you should give + MUI_PREVPAGE a parameter with the set page function name + (for example, MUI_PREVPAGE SetPage) +* Examples use ReserveFile for faster startup + +1.19 - Semtember 19, 2002 +* Renamed some macros +* Custom code can be used between page start/stop macros + (NOTE: These macros have been removed in version 1.4) + +1.18 - Semtember 13, 2002 +* Uses the new Sendmessage string option + +1.17 - Semtember 10, 2002 +* Win9x font weight bug fixed (font of title in white rect) + +1.16 - Semtember 6, 2002 +* Change text 'Scroll down' on license page to 'Press Page Down', + because the RichEdit control has focus by default now + +1.15 - Semtember 4, 2002 +* Multilanguage example: changed LangDialog to LangDLL::LangDialog (using the DLL name is now required) + (NOTE: A new macro for the language selection dialog has been introduced in version 1.63) + +1.14 - Semtember 3, 2002 +* Small grammar fix (thanks eccles) +* UI files updated by Justin for better RichEdit usage + +1.13 - Semtember 2, 2002 +* Added 16 color icons + +1.12 - August 30, 2002 +* Verifying installer & Unpacking data dialog has no titlebar anymore + +1.11 - August 29, 2002 +* Finish header for uninstaller can also be set using MUI_FINISHHEADER + (NOTE: The MUI_FINISHHEADER macro has been removed in version 1.64) + +1.1 - August 29, 2002 + (NOTE: All settings mentioned here do not exist anymore) + +* Header file with macros, it's now very easy to use the UI in your scripts +* Added the modern2.exe UI, with an other location of the Description frame, for installers with a lot of subsections (thanks rainwater) +* Updated example scripts +* Added Multilanguage.nsi example (Multilanguage & LangDLL) +* Fixed background color issue with some custom XP themes +* Removed WS_VISIBLE from black rect for inner dialog (fixes display issues) +* Changed size of description area +* Example script: Added instructions for the user on the Description frame +* Auto sizing branding text +* Used modern.bmp for the checks (thanks rainwater) +* Using the new NSIS version, descriptions work using the keyboard and you can give descriptions to subsections +* Correct font size using High-DPI fonts + +1.0 - August 26, 2002 +* Initial release \ No newline at end of file diff --git a/tools/Docs/Modern UI/License.txt b/tools/Docs/Modern UI/License.txt new file mode 100644 index 0000000..04eea9b --- /dev/null +++ b/tools/Docs/Modern UI/License.txt @@ -0,0 +1,10 @@ +Copyright 2002-2023 Joost Verburg + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. + If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any distribution. diff --git a/tools/Docs/Modern UI/Readme.html b/tools/Docs/Modern UI/Readme.html new file mode 100644 index 0000000..461fe7c --- /dev/null +++ b/tools/Docs/Modern UI/Readme.html @@ -0,0 +1,1160 @@ + + + + NSIS Modern User Interface - Documentation + + + + + + + + + + + + +
+ +

+ [Expand all]   [Collapse + all]

+
+

+ Introduction

+
+

+ The Modern UI provides a user interface for NSIS installers with a modern wizard + style, similar to the wizards of recent Windows versions. It is based on the basic + user interface that is provided by the NSIS compiler itself and extends it with + more interface features and pages.

+

+ All standard NSIS pages (such as the pages to select components and the installation + folder) are supported as well as a number of additional pages. The welcome page + allows you to provide an introduction to the installation process, while the finish + page provides a way to let the user decide what steps should be performed after + the setup wizard is closed (for example, whether the application should be started + immediately). A finish page can also be used to ask for a system restart is necessary.

+

+ Open/Close section + Screenshots

+
+

+

+
+
+

+ Script header

+
+

+ The settings for the Modern UI should be inserted in the header of the script file. + It's important to follow the same order as the items below. For example, + interface settings should be defined before you insert pages, because the pages + depend on the interface configuration. It may be useful to look at the + example scripts too see how this is done in actual script files.

+

+ Parameters are given in this format: required (option1 | option2) + [optional]

+

+ 1. Header file

+
+

+ First of all, add this line to the top of script to include the Modern UI:

+
+!include "MUI.nsh"
+
+
+

+ 2. Interface configuration

+
+

+ Then, you may want to use interface settings to change the look and feel of the + installer. These settings apply to all pages.

+ The interface settings provided by the NSIS compiler itself (such as LicenseText, + Icon, CheckBitmap, InstallColors) should not be used in Modern UI scripts. The Modern + UI provides equalivent or extended versions of these settings.

+ Examples:

+
+!define MUI_COMPONENTSPAGE_SMALLDESC ;No value
+!define MUI_UI "myUI.exe" ;Value
+!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;Two colors
+
+

+ Open/Close section + Interface settings

+
+

+ Open/Close section + Page header

+
+

+ MUI_ICON icon_file
+ The icon for the installer.
+ Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico

+

+ MUI_UNICON icon_file
+ The icon for the uninstaller.
+ Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico

+

+ MUI_HEADERIMAGE
+ Display an image on the header of the page.

+
+

+ MUI_HEADERIMAGE_BITMAP bmp_file
+ Bitmap image to display on the header of installers pages (recommended size: 150x57 + pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

+
+

+ MUI_HEADERIMAGE_BITMAP_NOSTRETCH
+ Do not stretch the installer header bitmap to fit the size of the field. Use this + option only if you have an image that does not use the whole space. If you have + a full size bitmap that fits exactly, you should not use this option because the + size of the field will be different if the user has a custom DPI setting.

+

+ MUI_HEADERIMAGE_BITMAP_RTL bmp_file
+ Bitmap image to display on the header of installers pages when using a RTL language + (recommended size: 150x57 pixels).
+ Default: Non-RTL bitmap

+
+

+ MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
+ Do not stretch the installer header bitmap when using a RTL language to fit the + size of the field. Use this option only if you have an image that does not use the + whole space. If you have a full size bitmap that fits exactly, you should not use + this option because the size of the field will be different if the user has a custom + DPI setting.

+
+
+

+ MUI_HEADERIMAGE_UNBITMAP bmp_file
+ Bitmap image to display on the header of uninstaller pages (recommended size: 150x57 + pixels).
+ Default: Installer header bitmap

+
+

+ MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
+ Do not stretch the uninstaller header bitmap to fit the size of the field. Use this + option only if you have an image that does not use the whole space. If you have + a full size bitmap that fits exactly, you should not use this option because the + size of the field will be different if the user has a custom DPI setting.

+

+ MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
+ Bitmap image to display on the header of uninstallers pages when using a RTL language + (recommended size: 150x57 pixels).
+ Default: Installer RTL header bitmap

+
+

+ MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
+ Do not stretch the uninstaller header bitmap when using a RTL language to fit the + size of the field. Use this option only if you have an image that does not use the + whole space. If you have a full size bitmap that fits exactly, you should not use + this option because the size of the field will be different if the user has a custom + DPI setting.

+
+
+

+ MUI_HEADERIMAGE_RIGHT
+ Display the header image on the right side instead of the left side (when using + a RTL language it will be displayed on the left side instead of the right side).

+
+

+ MUI_BGCOLOR (color: RRGGBBR hexadecimal)
+ Background color for the header, the Welcome page and the Finish page.
+ Default: FFFFFF

+

+ MUI_HEADER_TRANSPARENT_TEXT
+ Set a transparent background for the header's label controls. Useful for custom + user interfaces that set a bigger header image.

+

+ MUI_TEXTCOLOR (color: RRGGBBR hexadecimal)
+ Text color for the header, the Welcome page and the Finish page.
+ Default: 000000

+
+

+ Open/Close section + Interface resources

+
+

+ MUI_UI ui_file
+ The interface file with the dialog resources. Change this if you have made your + own customized UI.
+ Default: ${NSISDIR}\Contrib\UIs\modern.exe

+

+ MUI_UI_HEADERIMAGE ui_file
+ The interface files with the dialog resource IDD_INST that contains a bitmap control + and space for the header bitmap.
+ Default: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

+

+ MUI_UI_HEADERIMAGE_RIGHT ui_file
+ The interface files with the dialog resource IDD_INST that contains a bitmap control + and space for the header bitmap on the right side.
+ Default: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

+

+ MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
+ The interface files with a customized dialog resource IDD_SELCOM with a small description + area.
+ Default: ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe

+

+ MUI_UI_COMPONENTSPAGE_NODESC ui_file
+ The interface files with a customized dialog resource IDD_SELCOM without a description + area.
+ Default: ${NSISDIR}\Contrib\UIs\modern_nodesc.exe

+
+

+ Open/Close section + Installer welcome/finish page

+
+

+ MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
+ Bitmap for the Welcome page and the Finish page (recommended size: 164x314 pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

+
+

+ MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
+ Do not stretch the bitmap for the Welcome and Finish page to fit the size of the + field. Use this option only if you have an image that does not use the whole space. + If you have a full size bitmap that fits exactly, you should not use this option + because the size of the field will be different if the user has a custom DPI setting.

+
+

+ MUI_WELCOMEFINISHPAGE_INI ini_file
+ InstallOptions INI file for the Welcome page and the Finish page.
+ Default: ${NSISDIR}\Contrib\Modern UI\ioSpecial.ini

+
+

+ Open/Close section + Uninstaller welcome/finish page

+
+

+ MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
+ Bitmap for the Welcome page and the Finish page (recommended size: 164x314 pixels).
+ Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

+
+

+ MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
+ Do not stretch the bitmap for the Welcome and Finish page to fit the size of the + field. Use this option only if you have an image that does not use the whole space. + If you have a full size bitmap that fits exactly, you should not use this option + because the size of the field will be different if the user has a custom DPI setting.

+
+

+ MUI_UNWELCOMEFINISHPAGE_INI ini_file
+ InstallOptions INI file for the uninstaller Welcome page and the Finish page.
+ Default: ${NSISDIR}\Contrib\Modern UI\ioSpecial.ini

+
+

+ Open/Close section + License page

+
+

+ MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | + (color: RRGGBB hexadecimal))
+ The background color for the license textbox. Use /windows for the Windows text + background color (usually white). Use the /grey for the window background color + (usually grey).
+ Default: /windows

+
+

+ Open/Close section + Components page

+
+

+ MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
+ The bitmap with images for the checks of the component select treeview.
+ Default: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

+

+ MUI_COMPONENTSPAGE_SMALLDESC
+ A small description area on the bottom of the page. Use this layout if you have + a lot of sections and don't need large descriptions.

+

+ MUI_COMPONENTSPAGE_NODESC
+ No description area.

+
+

+ Open/Close section + Directory page

+
+

+ MUI_DIRECTORYPAGE_BGCOLOR (color: RRGGBB hexadecimal)
+ The background color for the directory textbox.

+
+

+ Open/Close section + Start Menu folder page

+
+

+ MUI_STARTMENUPAGE_BGCOLOR (color: RRGGBB hexadecimal)
+ The background color for the startmenu directory list and textbox.

+
+

+ Open/Close section + Installation page

+
+

+ MUI_INSTFILESPAGE_COLORS (/windows | "(foreground + color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal)")
+ The colors of the details screen. Use /windows for the default Windows colors.
+ Default: /windows

+

+ MUI_INSTFILESPAGE_PROGRESSBAR ("" + | colored | smooth)
+ The style of the progress bar. Colored makes it use the MUI_INSTALLCOLORS.
+ Default: smooth

+
+

+ Open/Close section + Installer finish page

+
+

+ MUI_FINISHPAGE_NOAUTOCLOSE
+ Do not automatically jump to the finish page, to allow the user to check the install + log.

+
+

+ Open/Close section + Uninstaller finish page

+
+

+ MUI_UNFINISHPAGE_NOAUTOCLOSE
+ Do not automatically jump to the finish page, to allow the user to check the uninstall + log.

+
+

+ Open/Close section + Abort warning

+
+

+ MUI_ABORTWARNING
+ Show a message box with a warning when the user wants to close the installer.

+
+

+ MUI_ABORTWARNING_TEXT text
+ Text to display on the abort warning message box.

+

+ MUI_ABORTWARNING_CANCEL_DEFAULT
+ Set the Cancel button as the default button on the message box.

+
+
+

+ Open/Close section + Uninstaller abort warning

+
+

+ MUI_UNABORTWARNING
+ Show a message box with a warning when the user wants to close the uninstaller.

+
+

+ MUI_UNABORTWARNING_TEXT text
+ Text to display on the abort warning message box.

+

+ MUI_UNABORTWARNING_CANCEL_DEFAULT
+ Set the Cancel button as the default button on the message box.

+
+
+
+
+

+ 3. Pages

+
+

+ Insert the following macros to set the pages you want to use. The pages will appear + in the order in which you insert them in the script. You can also insert custom + Page commands between the macros to add custom pages.

+

+ You can add multiple pages of certain types (for example, if you want the user to + specify multiple folders).

+

+ Examples:

+
+!insertmacro MUI_PAGE_LICENSE "License.rtf"
+!insertmacro MUI_PAGE_COMPONENTS
+
+Var StartMenuFolder
+!insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder
+
+

+ You will need the page ID for the Start Menu folder page when using the Start Menu + folder macros. The folder will be stored in the specified variable.

+

+ Installer pages
+ MUI_PAGE_WELCOME
+ MUI_PAGE_LICENSE textfile
+ MUI_PAGE_COMPONENTS
+ MUI_PAGE_DIRECTORY
+ MUI_PAGE_STARTMENU pageid variable
+ MUI_PAGE_INSTFILES
+ MUI_PAGE_FINISH

+

+ Uninstaller pages
+ MUI_UNPAGE_WELCOME
+ MUI_UNPAGE_CONFIRM
+ MUI_UNPAGE_LICENSE textfile
+ MUI_UNPAGE_COMPONENTS
+ MUI_UNPAGE_DIRECTORY
+ MUI_UNPAGE_INSTFILES
+ MUI_UNPAGE_FINISH

+

+ Open/Close section + Page settings

+
+

+ Page settings apply to a single page and should be set before inserting a page macro. + The same settings can be used for installer and uninstaller pages. You have to repeat + the setting if you want it to apply to multiple pages. Example:

+
+;Add a directory page to let the user specify a plug-ins folder
+;Store the folder in $PluginsFolder
+
+Var PLUGINS_FOLDER
+!define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
+!insertmacro MUI_PAGE_DIRECTORY
+
+

+

+ All standard texts in the user interface are loaded from language files, which are + available for all languages supported by NSIS. So you only need to define these + texts if you want to change the default.

+

+ If the parameter is a text that should be different for each language, define a + language string using LangString and use $(LangStringName) as value. For a license + text in multiple languages, LicenseLangString can be used. Refer the NSIS Users + Manual for more information about installers with multiple languages.

+

+ In all text settings, the doublequote character (") should be escaped in the + following form: $\"

+

+ Open/Close section + General page settings

+
+

+ MUI_PAGE_HEADER_TEXT text
+ Text to display on the header of the page.

+

+ MUI_PAGE_HEADER_SUBTEXT text
+ Subtext to display on the header of the page.

+
+

+ Open/Close section + Welcome page settings

+
+

+ To add a newline to any of these texts, use \r\n instead of $\r$\n.

+

+ MUI_WELCOMEPAGE_TITLE title
+ Title to display on the top of the page.

+

+ MUI_WELCOMEPAGE_TITLE_3LINES
+ Extra space for the title area.

+

+ MUI_WELCOMEPAGE_TEXT text
+ Text to display on the page.

+
+

+ Open/Close section + License page settings

+
+

+ MUI_LICENSEPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_LICENSEPAGE_TEXT_BOTTOM text
+ Text to display on the bottom of the page.

+

+ MUI_LICENSEPAGE_BUTTON button_text
+ Text to display on the 'I Agree' button.

+

+ MUI_LICENSEPAGE_CHECKBOX
+ Display a checkbox the user has to check to agree with the license terms.

+
+

+ MUI_LICENSEPAGE_CHECKBOX_TEXT text
+ Text to display next to the checkbox to agree with the license terms.

+
+

+ MUI_LICENSEPAGE_RADIOBUTTONS
+ Display two radio buttons to allow the user to choose between accepting the license + terms or not.

+
+

+ MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
+ Text to display next to the checkbox to accept the license terms.

+

+ MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text
+ Text to display next to the checkbox to decline the license terms.

+
+
+

+ Open/Close section + Components page settings

+
+

+ MUI_COMPONENTSPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_COMPONENTSPAGE_TEXT_COMPLIST text
+ Text to display on next to the components list.

+

+ MUI_COMPONENTSPAGE_TEXT_INSTTYPE text
+ Text to display on next to the installation type combo box.

+

+ MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text
+ Text to display on the of the top of the description box.

+

+ MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text
+ Text to display inside the description box when no section is selected.

+
+

+ Open/Close section + Directory page settings

+
+

+ MUI_DIRECTORYPAGE_TEXT_TOP text
+ Text to display on top of the page.

+

+ MUI_DIRECTORYPAGE_TEXT_DESTINATION text
+ Text to display on the destination folder frame.

+

+ MUI_DIRECTORYPAGE_VARIABLE variable
+ Variable in which to store the selected folder.
+ Default: $INSTDIR

+

+ MUI_DIRECTORYPAGE_VERIFYONLEAVE
+ Does not disable the Next button when a folder is invalid but allows you to use + GetInstDirError in the leave function to handle an invalid folder.

+
+

+ Open/Close section + Start Menu folder page settings

+
+

+ MUI_STARTMENUPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_STARTMENUPAGE_TEXT_CHECKBOX text
+ Text to display next to the checkbox to disable the Start Menu folder creation.

+

+ MUI_STARTMENUPAGE_DEFAULTFOLDER folder
+ The default Start Menu Folder.

+

+ MUI_STARTMENUPAGE_NODISABLE
+ Do not display the checkbox to disable the creation of Start Menu shortcuts.

+

+ MUI_STARTMENUPAGE_REGISTRY_ROOT root
+ MUI_STARTMENUPAGE_REGISTRY_KEY key
+ MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
+ The registry key to store the Start Menu folder. The page will use it to remember + the users preference. You should also use for the uninstaller to remove the Start + Menu folders. Don't forget to remove this key during uninstallation.

+

+ For the uninstaller, use the MUI_STARTMENU_GETFOLDER macro to get the Start Menu + folder:

+
+!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
+  Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"
+
+
+

+ Open/Close section + Installation page settings

+
+

+ MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
+ Text to display on the header of the installation page when the installation has + been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

+

+ MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
+ Subtext to display on the header of the installation page when the installation + has been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

+

+ MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
+ Text to display on the header of the installation page when the installation has + been aborted.

+

+ MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text
+ Subext to display on the header of the installation page when the installation has + been aborted.

+
+

+ Open/Close section + Finish page settings

+
+

+ To add a newline to any of these texts, use \r\n instead of $\r$\n.

+

+ MUI_FINISHPAGE_TITLE title
+ Title to display on the top of the page.

+

+ MUI_FINISHPAGE_TITLE_3LINES
+ Extra space for the title area.

+

+ MUI_FINISHPAGE_TEXT text
+ Text to display on the page.

+

+ MUI_FINISHPAGE_TEXT_LARGE
+ Extra space for the text area (if using checkboxes).

+

+ MUI_FINISHPAGE_BUTTON text
+ Text to display on the Finish button.

+

+ MUI_FINISHPAGE_CANCEL_ENABLED
+ Enable the Cancel button so the user can skip any options displayed on the finish + page.

+

+ MUI_FINISHPAGE_TEXT_REBOOT text
+ Text to display on the finish page when asking for a system reboot.

+

+ MUI_FINISHPAGE_TEXT_REBOOTNOW text
+ Text to display next to the 'Reboot now' option button.

+

+ MUI_FINISHPAGE_TEXT_REBOOTLATER text
+ Text to display next to the 'Reboot later' option button.

+

+ MUI_FINISHPAGE_REBOOTLATER_DEFAULT
+ Sets the 'Reboot later' option as the default option.

+

+ MUI_FINISHPAGE_RUN exe_file
+ Application which the user can select to run using a checkbox. You don't need to + put quotes around the filename when it contains spaces.

+
+

+ MUI_FINISHPAGE_RUN_TEXT text
+ Texts to display next to the 'Run program' checkbox.

+

+ MUI_FINISHPAGE_RUN_PARAMETERS parameters
+ Parameters for the application to run. Don't forget to escape double quotes in the + value (use $\").

+

+ MUI_FINISHPAGE_RUN_NOTCHECKED
+ Do not check the 'Run program' checkbox by default

+

+ MUI_FINISHPAGE_RUN_FUNCTION function
+ Call a function instead of executing an application (define MUI_FINISHPAGE_RUN without + parameters). You can use the function to execute multiple applications or you can + change the checkbox name and use it for other things.

+
+

+ MUI_FINISHPAGE_SHOWREADME file/url
+ File or website which the user can select to view using a checkbox. You don't need + to put quotes around the filename when it contains spaces.

+
+

+ MUI_FINISHPAGE_SHOWREADME_TEXT text
+ Texts to display next to the 'Show Readme' checkbox.

+

+ MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+ Do not check the 'Show Readme' checkbox by default

+

+ MUI_FINISHPAGE_SHOWREADME_FUNCTION function
+ Call a function instead of showing a file (define MUI_FINISHPAGE_SHOWREADME without + parameters). You can use the function to show multiple files or you can change the + checkbox name and use it for other things.

+
+

+ MUI_FINISHPAGE_LINK link_text
+ Text for a link on the which the user can click to view a website or file.

+
+

+ MUI_FINISHPAGE_LINK_LOCATION file/url
+ Website or file which the user can select to view using the link. You don't need + to put quotes around the filename when it contains spaces.

+

+ MUI_FINISHPAGE_LINK_COLOR (color: RRGGBB hexadecimal)
+ Text color for the link on the Finish page.
+ Default: 000080

+
+

+ MUI_FINISHPAGE_NOREBOOTSUPPORT
+ Disables support for the page that allows the user to reboot the system. Define + this option to save some space if you are not using the /REBOOTOK flag or SetRebootFlag.

+
+

+ Open/Close section + Uninstall confirm page settings

+
+

+ MUI_UNCONFIRMPAGE_TEXT_TOP text
+ Text to display on the top of the page.

+

+ MUI_UNCONFIRMPAGE_TEXT_LOCATION text
+ Text to display next to the uninstall location text box.

+

+ MUI_UNCONFIRMPAGE_VARIABLE variable
+ Variable in which to store the uninstall source folder.
+ Default: $INSTDIR

+
+
+
+

+ 4. Language files

+
+

+ Insert the Modern UI language files for the languages to want to include.

+
+!insertmacro MUI_LANGUAGE "English"
+
+

+ The standard NSIS language files are loaded automatically, there is no need to use + LoadLanguageFile.

+
+

+ 5. Reserve files

+
+

+ If you are using solid compression, files that are required before the actual installation + should be stored first in the data block, because this will make your installer + start faster. Include reserve file commands for such files before your sections + and functions:

+
+ReserveFile "ioFile.ini" ;Your own InstallOptions INI files
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions plug-in
+!insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog
+
+
+
+

+ Script code for pages

+
+

+ Some pages allow you to show additional information or can be used to get user input. + Here you can find the script code to use these features.

+

+ Components page descriptions

+
+

+ The Modern UI components page has a text box in which a description can be shown + when the user hovers the mouse over a component. If you don't want to use these + descriptions, insert the MUI_COMPONENTSPAGE_NODESC interface setting.

+

+ To set a description for a section, an additional parameter needs to be added to + Section command with a unique identifier for the section. This name can later be + used to set the description for this section.

+
+Section "Section Name 1" Section1
+   ...
+SectionEnd
+
+

+ After the sections, use these macros to set the descriptions:

+
+LangString DESC_Section1 ${LANG_ENGLISH} "Description of section 1."
+LangString DESC_Section2 ${LANG_ENGLISH} "Description of section 2."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
+  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+

+ For the uninstaller, use the MUI_UNFUNCTION_DESCRIPTION_BEGIN and MUI_UNFUNCTION_DESCRIPTION_END + macros.

+
+

+ Start Menu folder

+
+

+ Put the code to write the shortcuts (using CreateShortcut) between the MUI_STARTMENU_WRITE_BEGIN + and MUI_STARTMENU_WRITE_END macros:

+
+!insertmacro MUI_STARTMENU_WRITE_BEGIN pageid
+  ...create shortcuts...
+!insertmacro MUI_STARTMENU_WRITE_END
+
+

+ The page ID should be the ID of the page on which the user has selected the folder + for the shortcuts you want to write.

+

+ The variable which contains the folder and the page ID are set as parameters of + the page macro.

+
+
+

+ Language selection dialog

+
+

+ If you want the installer to display a language selection dialog (see the the MultiLanguage.nsi example), + insert the MUI_LANGDLL_DISPLAY macro in the .onInit function:

+
+Function .onInit
+
+  !insertmacro MUI_LANGDLL_DISPLAY
+
+FunctionEnd
+
+

+ This macro can also be used in the un.onInit function.

+

+ Open/Close section + Settings for registry storage of selected language

+
+

+ To remember the user's preference, you can define a registry key. These defines + should be set before inserting the installation page macro.

+

+ MUI_LANGDLL_REGISTRY_ROOT root
+ MUI_LANGDLL_REGISTRY_KEY key
+ MUI_LANGDLL_REGISTRY_VALUENAME value_name
+ The registry key to store the language. The users preference will be remembered. + You can also use it for the uninstaller to display the right language. Don't forget + to remove this key in the uninstaller.

+

+ For the uninstaller, insert the MUI_UNGETLANGUAGE macro in un.onInit to get the + stored language preference:

+
+Function un.onInit
+
+  !insertmacro MUI_UNGETLANGUAGE
+
+FunctionEnd
+
+
+

+ Open/Close section + Interface settings for selection dialog

+
+

+ To customize the language selection dialog interface, use these defines before inserting + the MUI_LANGDLL_DISPLAY macro.

+

+ MUI_LANGDLL_WINDOWTITLE text
+ The window title of the language selection dialog.

+

+ MUI_LANGDLL_INFO text
+ The text to display on the language selection dialog.

+

+ MUI_LANGDLL_ALWAYSSHOW
+ Always show the language selection dialog, even if a language has been stored in + the registry. The language stored in the registry will be selected by default.

+

+ MUI_LANGDLL_ALLLANGUAGES
+ Always show all available languages and don't filter according to their codepage.

+
+
+

+ Custom pages

+
+

+ If you want add your custom pages to your installer, you can insert your own page + commands between the page macros. The InstallOptions + documentation provides information about creating custom pages using InstallOptions.

+
+!insertmacro MUI_PAGE_WELCOME
+Page custom FunctionName ;Custom page
+!insertmacro MUI_PAGE_COMPONENTS
+ 
+;Uninstaller
+!insertmacro MUI_UNPAGE_CONFIRM
+UninstPage custom un.FunctionName ;Custom page
+!insertmacro MUI_UNPAGE_INSTFILES
+
+

+ Use the MUI_HEADER_TEXT macro to set the text on the page header in a page function:

+
+LangString PAGE_TITLE ${LANG_ENGLISH} "Title"
+LangString PAGE_SUBTITLE ${LANG_ENGLISH} "Subtitle"
+
+Function CustomPageFunction
+  !insertmacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
+  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioFile.ini"
+FunctionEnd
+
+
+

+ Custom functions

+
+

+ Interface functions provided by NSIS, like the .onGUIInit function and the page + functions are automatically included by the Modern UI and filled with code to support + new interface features. If you want to add additional code to these function, create + a function with the custom script code in the script use the Modern UI functions + call them.

+

+ Example:

+
+!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
+
+Function myGUIInit
+  ...your own code...
+FunctionEnd
+
+

+ Open/Close section + General Custom Functions

+
+

+ These defines should be set before inserting the language macros.

+

+ MUI_CUSTOMFUNCTION_GUIINIT function
+ MUI_CUSTOMFUNCTION_UNGUIINIT function
+ MUI_CUSTOMFUNCTION_ABORT function
+ MUI_CUSTOMFUNCTION_UNABORT function
+ MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION function
+ MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION function

+

+ Mouse over functions are only available when the description macros + (MUI_FUNCTION_DESCRIPTION_BEGIN) are used. When component page descriptions are not + used, regular .onMouseOverSection and un.onMouseOverSection must be used.

+
+

+ Open/Close section + Page Custom Functions

+
+

+ These defines should be set before inserting a page macro.

+

+ MUI_PAGE_CUSTOMFUNCTION_PRE function
+ MUI_PAGE_CUSTOMFUNCTION_SHOW function
+ MUI_PAGE_CUSTOMFUNCTION_LEAVE function

+

+ Notes:

+
    +
  • In the Pre function of the Welcome page and the Finish page, you can write to the + InstallOptions INI file of the page (ioSpecial.ini)
  • +
  • In the Show function of the Welcome, Finish and StartMenu pages, $MUI_HWND contains + the HWND of the inner dialog
  • +
+
+

+ Open/Close section + Welcome/Finish Page Custom Functions

+
+

+ This define should be inserted before a single Welcome or Finish page.

+

+ MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT function

+

+ This Init function is called before the InstallOptions INI file for the page is + written, so you can use it to initialize any variables used in the page settings.

+
+
+

+ Example scripts

+
+

+ Basic: Basic.nsi
+ Welcome/Finish page: WelcomeFinish.nsi
+ Multiple languages: MultiLanguage.nsi
+ Header image: HeaderBitmap.nsi
+ Custom pages: InstallOptions.nsi
+ Start Menu Folder page: StartMenu.nsi

+
+

+ Credits

+
+

+ Written by Joost Verburg.
+ Icons designed by Nikos Adamamas, aka adni18.
+ Thanks to Amir Szekely, aka KiCHiK, for his work on NSIS to make this possible.

+
+

+ License

+
+

+ The zlib/libpng license applies to the Modern UI.

+

+ Open/Close section + License Terms

+
+
+Copyright © 2002-2023 Joost Verburg
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute
+it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; 
+   you must not claim that you wrote the original software.
+   If you use this software in a product, an acknowledgment in the
+   product documentation would be appreciated but is not required.
+2. Altered versions must be plainly marked as such,
+   and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any distribution.
+
+
+
+
+
+ + diff --git a/tools/Docs/Modern UI/images/closed.gif b/tools/Docs/Modern UI/images/closed.gif new file mode 100644 index 0000000..b45054e Binary files /dev/null and b/tools/Docs/Modern UI/images/closed.gif differ diff --git a/tools/Docs/Modern UI/images/header.gif b/tools/Docs/Modern UI/images/header.gif new file mode 100644 index 0000000..f8810d3 Binary files /dev/null and b/tools/Docs/Modern UI/images/header.gif differ diff --git a/tools/Docs/Modern UI/images/open.gif b/tools/Docs/Modern UI/images/open.gif new file mode 100644 index 0000000..9fff60e Binary files /dev/null and b/tools/Docs/Modern UI/images/open.gif differ diff --git a/tools/Docs/Modern UI/images/screen1.png b/tools/Docs/Modern UI/images/screen1.png new file mode 100644 index 0000000..0e25c0d Binary files /dev/null and b/tools/Docs/Modern UI/images/screen1.png differ diff --git a/tools/Docs/Modern UI/images/screen2.png b/tools/Docs/Modern UI/images/screen2.png new file mode 100644 index 0000000..4fccd41 Binary files /dev/null and b/tools/Docs/Modern UI/images/screen2.png differ diff --git a/tools/Docs/MultiUser/Readme.html b/tools/Docs/MultiUser/Readme.html new file mode 100644 index 0000000..7e50d97 --- /dev/null +++ b/tools/Docs/MultiUser/Readme.html @@ -0,0 +1,391 @@ + + + + + + + Multi-User Header File (MultiUser.nsh) + + + +

Multi-User Header File (MultiUser.nsh)

+

Installer configuration for multi-user Windows environments

+

Table of Contents

+ +

Introduction

+

+ Modern Windows versions support multiple users accounts on a single computer, each + with different privileges. For security reasons, the privileges of applications + can also be limited. For an installer, the execution level and installation + mode are important. The execution level determines the privileges of the + installer application. For example, to install hardware drivers, administrator privileges + are required. Applications can also be installed for a single user or for all users + on a computer, which is determined by the installation mode. Installation for all + users requires a higher execution level as compared with a single user setup. The + MultiUser.nsh header files provides the features to automatically handle all these + aspects related to user accounts and installer privileges.

+

+ Note that all settings need to be set before including the MultiUser.nsh header + file.

+

Initialization and Execution Level 

+

+ Before the MultiUser.nsh file is included, the MULTIUSER_EXECUTIONLEVEL define should + be set to one of the following values depending on the execution level that is required:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Value + + Description + + Typical application +
+ Admin + + Administrator privileges are required + + Access data of all users accounts +
+ Power + + Power User privileges are required
+ (Power Users no longer exist in Windows Vista. For Vista this is equivalent to Admin) +
+ Installation for all users (writing to "Program Files" or HKLM registry + keys), driver installation +
+ Highest + + Request the highest possible execution level for the current user + + Mixed-mode installer that can both be installed per-machine or per-user +
+ Standard + + No special rights required + + Installation for current user only +
+

+ Insert the MULTIUSER_INIT and MULTIUSER_UNINT macros in the .onInit and un.onInit + function to verify these privileges. If no uninstaller is created in the script, + define MULTIUSER_NOUNINSTALL.

+
!define MULTIUSER_EXECUTIONLEVEL Highest
+;!define MULTIUSER_NOUNINSTALL ;Uncomment if no uninstaller is created
+!include MultiUser.nsh
+
+...
+
+Function .onInit
+  !insertmacro MULTIUSER_INIT
+FunctionEnd
+
+Function un.onInit
+  !insertmacro MULTIUSER_UNINIT
+FunctionEnd
+

+ Whether the required privileges can be obtained depends on the user that starts + the installer:

+
    +
  • Windows NT 4/2000/XP/2003 give the installer the same privileges as the user itself. + If the privileges of the user are not sufficient (e.g. Admin level is required is + set but the user has no administrator rights), the macros will display an error + message and quit the installer. If is however possible to manually run the installer + with an administrator account.
  • +
  • Windows Vista restricts the privileges of all applications by default. Depending + on requested execution level, MultiUser.nsh will set the RequestExecutionLevel flag + to request privileges. The user will be asked for confirmation and (if necessary) + for an administrator password.
  • +
  • Windows 95/98/98 do not set any restrictions on users or applications. Administrator + rights are always available.
  • +
+

+ It is recommended to insert these initialization macros before macros that require + user intervention. For example, it does not make sense to ask a user for an installer + language if the installer will quit afterwards because the user account does not + have the required privileges. After the macros are inserted, the variable $MultiUser.Privileges + will contain the current execution level (Admin, Power, User or Guest).

+

+ The following additional settings are available to customize the initialization:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
SettingDescription
+ MULTIUSER_INIT_TEXT_ADMINREQUIRED + + Error message to be displayed when administrator rights are required but not available. +
+ MULTIUSER_INIT_TEXT_POWERREQUIRED + + Error message to be displayed when Power User rights are required but not available. +
+ MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE + + Error message to be displayed when administrator or Power User rights are required + because of an installation mode setting on the command line (see below) but are + not available. +
+ MULTIUSER_USE_PROGRAMFILES64 + + Use $PROGRAMFILES64 instead of $PROGRAMFILES as the default all users directory. +
+ MULTIUSER_INIT_FUNCTIONQUIT
+ MULTIUSER_INIT_UNFUNCTIONQUIT +
+ A custom function to be called when the installer is closed due to insufficient + privileges. +
+

Installation Mode

+

+ As mentioned before, applications can both be installed for a single users or for + all users on a computer. Applications for all users are typically installed in the + Program Files folder and appear in the Start Menu of every user. On the contrary, + applications for a single user are usually installed in the local Application Data + folder and only a appear in the Start Menu of the user who installed the application.

+

+ By default, MultiUser.nsh will set the installation mode for a per-machine installation + if Administrator or Power User rights are available (this is always the case if + the execution level is set to Admin or Power, if Highest is set it depends on the + user account). For the Standard execution level the installation will always be + for a single user. On Windows 95/98/Me installation for a single user is not possible, a per-machine installation will be performed.

+

+ The following settings are available to change the default installation mode: + + + + + + + + + + + + + +
SettingDescription
+ MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER + + Set default to a per-user installation, even if the rights for a per-machine installation + are available. +
+ MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME + + Non-empty registry key that is created during the installation in either HKCU or + HKLM. The default installation mode will automatically be set to the previously + selected mode depending on the location of the key. +
+

+ After initialization, the variable $MultiUser.InstallMode will contain the current + installation mode (AllUsers or CurrentUser). +

+

Mixed-Mode Installation

+

+ For the Admin and Power levels, both a per-machine as well as a per-user installation + is possible. If the Highest level is set and the user is an Administrator or Power + User, both options are also available.

+

+ Usually it's a good thing to give the user to choice between these options. For + users of the Modern UI version 2, a page is provided that asks the user for the + installation mode. To use this page, define MULTIUSER_MUI before including MultiUser.nsh. + Then, the MULTIUSER_PAGE_INSTALLMODE macro can be used just like a normal Modern + UI page (this page will automatically be skipped when running Windows 95/98/Me):

+
!define MULTIUSER_EXECUTIONLEVEL Highest
+!define MULTIUSER_MUI
+!define MULTIUSER_INSTALLMODE_COMMANDLINE
+!include MultiUser.nsh
+!include MUI2.nsh
+
+!insertmacro MULTIUSER_PAGE_INSTALLMODE
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES 
+
+!insertmacro MUI_LANGUAGE English
+
+...
+
+Function .onInit
+  !insertmacro MULTIUSER_INIT
+FunctionEnd
+
+Function un.onInit
+  !insertmacro MULTIUSER_UNINIT
+FunctionEnd
+

+ The MULTIUSER_INSTALLMODE_COMMANDLINE setting that also appears in this example + enables the installation mode to be set using the /AllUsers or /CurrentUser command + line parameters. This is especially useful for silent setup.

+

+ The following settings can be used to customize the texts on the page (in addition + to the general Modern UI page settings):

+ + + + + + + + + + + + + + + + + + + + + +
SettingDescription
MULTIUSER_INSTALLMODEPAGE_TEXT_TOPText to display on the top of the page.
MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERSText to display on the radio button for a per-machine installation.
MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSERText to display on the radio button for a per-user installation.
MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAMEAppend the username to the per-user radio button.
+

Installation Mode Initialization

+

+ The SetShellVarContext flag (which determines the folders for e.g. shortcuts, like + $DESKTOP) is automatically set depending on the installation mode. In addition, + the following settings can be used to perform additional actions when the installation + mode is initialized:

+ + + + + + + + + + + + + + + + +
SettingDescription
MULTIUSER_INSTALLMODE_INSTDIR + Name of the folder in which to install the application, without a path. This folder + will be located in Program Files for a per-machine installation and in the local + Application Data folder for a per-user installation (if supported). +
MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME + Registry key from which to obtain a previously stored installation folder. It will + be retrieved from HKCU for per-user and HKLM for per-machine. +
+ MULTIUSER_INSTALLMODE_FUNCTION
+ MULTIUSER_INSTALLMODE_UNFUNCTION +
+ A custom function to be called during the initialization of the installation mode + to set additional installer settings that depend on the mode +
+

+ To set the installation mode manually, call one of these four functions:

+ + + + + + + + + + + + + + + + + + +
+ Function name + + Installation mode +
+ MultiUser.InstallMode.AllUsers + + Installer: Per-machine installation +
+ MultiUser.InstallMode.CurrentUser + + Installer: Per-user installation +
+ un.MultiUser.InstallMode.AllUsers + Uninstaller: Per-machine installation +
+ un.MultiUser.InstallMode.CurrentUser + Uninstaller: Per-user installation +
+ +

Example

+ Basic: MultiUser.nsi
+ + diff --git a/tools/Docs/NSISdl/License.txt b/tools/Docs/NSISdl/License.txt new file mode 100644 index 0000000..642304f --- /dev/null +++ b/tools/Docs/NSISdl/License.txt @@ -0,0 +1,18 @@ +NSISdl 1.1 - HTTP downloading plugin for NSIS +Copyright (C) 2001-2002 Yaroslav Faybishenko & Justin Frankel + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/tools/Docs/NSISdl/ReadMe.txt b/tools/Docs/NSISdl/ReadMe.txt new file mode 100644 index 0000000..4e1a706 --- /dev/null +++ b/tools/Docs/NSISdl/ReadMe.txt @@ -0,0 +1,92 @@ +NSISdl 1.3 - HTTP downloading plugin for NSIS +--------------------------------------------- + +Copyright (C) 2001-2002 Yaroslav Faybishenko & Justin Frankel + +This plugin can be used from NSIS to download files via HTTP. +Note: HTTPS is not supported, only plain HTTP! + +To connect to the internet, use the Dialer plugin. + +USAGE +----- + +NSISdl::download http://www.domain.com/file localfile.exe + +You can also pass /TIMEOUT to set the timeout in milliseconds: + +NSISdl::download /TIMEOUT=30000 http://www.domain.com/file localfile.exe + +The return value is pushed to the stack: + + "cancel" if cancelled + "success" if success + otherwise, an error string describing the error + +If you don't want the progress window to appear, use NSISdl::download_quiet. + +Example of usage: + +NSISdl::download http://www.domain.com/file localfile.exe +Pop $R0 ;Get the return value + StrCmp $R0 "success" +3 + MessageBox MB_OK "Download failed: $R0" + Quit + +For another example, see waplugin.nsi in the examples directory. + +PROXIES +------- + +NSISdl supports only basic configurations of proxies. It doesn't support +proxies which require authentication, automatic configuration script, etc. +NSISdl reads the proxy configuration from Internet Explorer's registry key +under HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings. It +reads and parses ProxyEnable and ProxyServer. + +If you don't want NSISdl to use Internet Explorer's settings, use the +/NOIEPROXY flag. /NOIEPROXY should be used after /TRANSLATE and +/TIMEOUT. For example: + +If you want to specify a proxy on your own, use the /PROXY flag. + +NSISdl::download /NOIEPROXY http://www.domain.com/file localfile.exe +NSISdl::download /TIMEOUT=30000 /NOIEPROXY http://www.domain.com/file localfile.exe +NSISdl::download /PROXY proxy.whatever.com http://www.domain.com/file localfile.exe +NSISdl::download /PROXY proxy.whatever.com:8080 http://www.domain.com/file localfile.exe + +TRANSLATE +--------- + +To translate NSISdl add the following values to the call line: + +/TRANSLATE2 downloading connecting second minute hour seconds minutes hours progress + +Default values are: + + downloading - "Downloading %s" + connecting - "Connecting ..." + second - " (1 second remaining)" + minute - " (1 minute remaining)" + hour - " (1 hour remaining)" + seconds - " (%u seconds remaining)" + minutes - " (%u minutes remaining)" + hours - " (%u hours remaining)" + progress - "%skB (%d%%) of %skB @ %u.%01ukB/s" + +The old /TRANSLATE method still works for backward compatibility. + +/TRANSLATE downloading connecting second minute hour plural progress remaining + +Default values are: + + downloading - "Downloading %s" + connecting - "Connecting ..." + second - "second" + minute - "minute" + hour - "hour" + plural - "s" + progress - "%dkB (%d%%) of %ukB @ %d.%01dkB/s" + remaining - " (%d %s%s remaining)" + +/TRANSLATE and /TRANSLATE2 must come before /TIMEOUT. diff --git a/tools/Docs/Splash/splash.txt b/tools/Docs/Splash/splash.txt new file mode 100644 index 0000000..44fc0e9 --- /dev/null +++ b/tools/Docs/Splash/splash.txt @@ -0,0 +1,41 @@ +Splash.dll - small (4k), simple plugin that lets you throw +up a splash screen in NSIS installers. + +--- UPDATED in 2.0b0 - will break old scripts --- + +To use: + +Create a .BMP file of your splash screen. +(optional) Create a .WAV file to play while your splash screen shows. + +Add the following lines to your .NSI file: + +Function .onInit + SetOutPath $TEMP + File /oname=spltmp.bmp "my_splash.bmp" + +; optional +; File /oname=spltmp.wav "my_splashsound.wav" + + splash::show 1000 $TEMP\spltmp + + Pop $0 ; $0 has '1' if the user closed the splash screen early, + ; '0' if everything closed normally, and '-1' if some error occurred. + + Delete $TEMP\spltmp.bmp +; Delete $TEMP\spltmp.wav +FunctionEnd + +Note that the first parameter to splash.exe is the length to show the +screen for (in milliseconds), and the second is the splash bitmap filename (without +the .bmp). The BMP file used will be this parameter.bmp, and the wave file used +(if present) will be this parameter.wav. + +(If you already have an .onInit function, put that in it) + +Note: the return value of splash is 1 if the user closed the splash +screen early (pop it from the stack) + +-Justin + +Converted to a plugin DLL by Amir Szekely (kichik) diff --git a/tools/Docs/StartMenu/Readme.txt b/tools/Docs/StartMenu/Readme.txt new file mode 100644 index 0000000..7432998 --- /dev/null +++ b/tools/Docs/StartMenu/Readme.txt @@ -0,0 +1,47 @@ +StartMenu.dll shows a custom page that lets the user select a start menu program +folder to put shortcuts in. + +To show the dialog use the Select function. This function has one required parameter +which is the program group default name, and some more optional switches: + /autoadd - automatically adds the program name to the selected folder + /noicon - doesn't show the icon in the top left corner + /text [please select...] - sets the top text to something else than + "Select the Start Menu folder in which..." + /lastused [folder] - sets the edit box to a specific value folder. + Use this to make this plug-in remember the last + folder selected by the user + /checknoshortcuts text - Shows a check box with the text "text". If + the user checks this box, the return value + will have > as its first character and you + should not create the program group. + /rtl - sets the direction of every control on the selection dialog + to RTL. This means every text shown on the page will be + justified to the right. + +The order of the switches doesn't matter but the required parameter must come after +all of them. Every switch after the required parameter will be ignored and left +on the stack. + +The function pushes "success", "cancel" or an error to the stack. If there was no +error and the user didn't press on cancel it will push the selected folder name +after "success". If the user checked the no shortcuts checkbox the result will be +prefixed with '>'. The function does not push the full path but only the selected +sub-folder. It's up to you to decide if to put it in the current user or all +users start menu. + +To set properties of the controls on the page, such as colors and fonts use Init +and Show instead of Select. Init will push the HWND of the page on the stack, +or an error string. For example: + +StartMenu::Init "Test" +Pop $0 +IntCmp $0 0 failed +GetDlgItem $0 $0 1003 +SetCtlColors $0 "" FF0000 +StartMenu::Show +# continue as with Select here +failed: + +Look at Example.nsi for a full example (without Init and Select). + +Created by Amir Szekely (aka KiCHiK) \ No newline at end of file diff --git a/tools/Docs/StrFunc/StrFunc.txt b/tools/Docs/StrFunc/StrFunc.txt new file mode 100644 index 0000000..f479b7f --- /dev/null +++ b/tools/Docs/StrFunc/StrFunc.txt @@ -0,0 +1,705 @@ +String Functions Header File Readme +----------------------------------- + +String Functions Header File contains a set of good string manipulation +functions in a much simpler way to include and call in NSIS scripts. + +How to use +---------- + + Basic Syntax + ------------ + + Parameters are specified in this format: + required (required) (option1 | option2) [optional or add. options] + [option1 | option2] + + The stars in command titles (*****) are the function usefulness in my + opinion. The more starts, the more useful it is. 5 stars (*****) is the + most useful. + + Any time when is mentioned "Default is" means that you can use the value + mentioned or keep it blank, the result is the same. + + If you want a certain value (e.g. a text) to be language-specific, set a + language string (using LangString) and define $(STRINGNAME) as value. + + If you want to add ` to a string, you should always escape it using $\` + because the header file macro functions use ` to separate parameters. + + 1. Include Header file + ---------------------- + + !include "StrFunc.nsh" + + StrFunc.nsh is inside the Include directory, so you don't have to + specify a path. + + You have to put this command before any command used in this header file. + + 2. Defines + ---------- + + This header file contains defines that automate the life of some who + fear a lot of changes sometimes imposed in this header file, or who have + applications that put it to work at maximum capacity. Before you try + these, take a look at the information below: + + - Every item on a define value is separated by a "|", and every subitem + (items in an item) is separated by " ". + + - Use ${StrTok} $var "${DefineName}" "|" "$counter" "0" to get every + item inside the define. For subitems, use ${StrTok} $var2 "$var" " " + "$counter2" "0" after getting the value for a desired item. + + - ${StrFunc_List} is automatically made by the header file. The rest + is manually added to the header. + + 2.1 Defines List: + ----------------- + + StrFunc_List - Lists all function names currently available on StrFunc + header file. + + *_List - Lists all parameter names currently available for "*" + function. (* = function name - i.e. StrTok_List). + + *_TypeList - Lists the types of all parameters on "*" function. + (* = function name - i.e. StrTok_List). Possible types + for each parameter: + + - Output - Needs a variable to output a function result. + + - Text - Needs text or number to be input. + + - Mixed - Needs text, number or option to be input. + Each subitem following the "Mixed" word is an + option. The first option is ever the default + one. Two following spaces " " means that + that subitem is empty. + + - Option - Needs an option to be input. Each subitem + following the "Option" word is an option. + The first option is ever the default one. Two + following spaces " " means that that subitem + is empty. + + 3. Commands + ----------- + + Some commands have special specifications to work. Consult command's + documentation on "3.3 Commands" section. + + 3.1 How To Use Commands In Install Sections and Functions + --------------------------------------------------------- + + Every command used in install sections and functions have to be declared + before (and outside of) any sections and functions, and without + parameters. + + Example: + -------- + + ${UsingStrFunc} StrStr + + 3.2 How To Use Commands In Uninstall Sections and Functions + ----------------------------------------------------------- + + Commands for uninstall sections and functions have "Un" before + the name. + + Example: + -------- + + ${UsingStrFunc} UnStrStr + + A complete example with both Install and Uninstall Commands: + ------------------------------------------------------------ + + + !include "StrFunc.nsh" + + ${UsingStrFunc} StrStr # Supportable for Install Sections and Functions + + ${UsingStrFunc} UnStrStr # Supportable for Uninstall Sections and Functions + + Section + + ${StrStr} $0 "OK! Now what?" "wh" + + SectionEnd + + Section Uninstall + + ${UnStrStr} $0 "OK! Now what?" "wh" + + SectionEnd + + 3.3 Commands + ------------ + + ========================================================================= + ** ${StrCase} + ------------------------------------------------------------------------- + ResultVar String Type(|L|U|T|S|<>) + ========================================================================= + Converts "String" to "Type" Case. Uses LogicLib. + + Parameters: + + ResultVar + Destination where result is returned. + + String + String to convert to "Type" case. + + Type + Type of string case to convert to: + + - "" = Original Case (same as "String") + - L = Lower Case (this is just an example. a very simple one.) + - U = Upper Case (THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE.) + - T = Title Case (This Is Just An Example. A Very Simple One.) + - S = Sentence Case (This is just an example. A very simple one.) + - <> = Switch Case (This is just an example. A very simple one.) + + Default value is "" (Original Case). + + Result Value -> ResultVar: + + "String" in "Type" case. + + Example: + + ${StrCase} $0 '"Você" is "You" in English.' "U" + [__(_)__()___()__()__(____)_] + + $0 = '"VOCÊ" IS "YOU" IN ENGLISH.' + + ========================================================================= + * ${StrClb} + ------------------------------------------------------------------------- + ResultVar String Action(|>|<|<>) + ========================================================================= + Makes an action with the clipboard depending on value of parameter + "Action". Uses LogicLib. + + Parameters: + + String + If "Action" = ">" or "<>" - String to put on the clipboard. + + Action + Can be one of the following values: + + - "" = Cleans the clipboard. + - ">" = Set string to clipboard. + - "<" = Get string from clipboard. + - "<>" = Swap string with clipboard's. + + Result Value -> ResultVar: + + If "Action" = "<" or "<>" - String found on the clipboard. + + ========================================================================= + *** ${StrIOToNSIS} + ------------------------------------------------------------------------- + ResultVar String + ========================================================================= + Convert "String" from Install Options plugin to be supported by NSIS. + Escape, back-slash, carriage return, line feed and tab characters are + converted. + + Parameters: + + ResultVar + Destination where result is returned. + + String + String to convert to be supportable for NSIS. + + Result Value -> ResultVar: + + "String" supportable for NSIS. + + Example: + + ${StrIOToNSIS} $0 "\r\n\t\\This is just an example\\" + [()()()()_______________________()] + + $0 = "$\r$\n$\t\This is just an example\" + + ========================================================================= + * ${StrLoc} + ------------------------------------------------------------------------- + ResultVar String StrToSearchFor CounterDirection(>|<) + ========================================================================= + Searches for "StrToSearchFor" in "String" and returns its location, + according to "CounterDirection". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search "StrToSearchFor". + + StrToSearchFor + String to search in "String". + + CounterDirection(>|<) + Direction where the counter increases to. Default is ">". + (> = increases from left to right, < = increases from right to left) + + Result Value -> ResultVar: + + Where "StrToSearchFor" is, according to "OffsetDirection". + + Example: + + ${StrLoc} $0 "This is just an example" "just" "<" + (__)<<<<<<<<<<< + + $0 = "11" + + ========================================================================= + *** ${StrNSISToIO} + ------------------------------------------------------------------------- + ResultVar String + ========================================================================= + Converts "String" from NSIS to be supported by Install Options plugin. + Escape, back-slash, carriage return, line feed and tab characters are + converted. + + Parameters: + + ResultVar + Destination where result is returned. + + String + String to convert to be supportable for Install Options plugin. + + Result Value -> ResultVar: + + "String" supportable for Install Options plugin. + + Example: + + ${StrNSISToIO} $0 "$\r$\n$\t\This is just an example\" + [(_)(_)(_)^_______________________^] + + $0 = "\r\n\t\\This is just an example\\" + + ========================================================================= + ***** ${StrRep} + ------------------------------------------------------------------------- + ResultVar String StrToReplace ReplacementString + ========================================================================= + Searches for all "StrToReplace" in "String" replacing those with + "ReplacementString". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search "StrToReplace". + + StrToReplaceFor + String to search in "String". + + StringToBeReplacedWith + String to replace "StringToReplace" when it is found in "String". + + Result Value -> ResultVar: + + "String" with all occurrences of "StringToReplace" replaced with + "ReplacementString". + + Example: + + ${StrRep} $0 "This is just an example" "an" "one" + [____________()_______] + + $0 = "This is just one example" + + ========================================================================= + *** ${StrSort} + ------------------------------------------------------------------------- + ResultVar String CenterStr LeftStr RightStr IncludeLeftStr(1|0) + IncludeCenterStr(1|0) IncludeRightStr(1|0) + ========================================================================= + Searches for "CenterStr" in "String", and returns only the value + between "LeftStr" and "RightStr", including or not the "CenterStr" using + "IncludeCenterStr" and/or the "LeftStr" using "IncludeLeftStr" and + "RightStr" using "IncludeRightStr". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search "CenterStr". + + CenterStr + String to search in "String". + + LeftStr + The first occurrence of "LeftStr" on the left of "CenterStr". + If it is an empty value, or was not found, will return + everything on the left of "CenterStr". + + RightStr + The first occurrence of "RightStr" on the right of "CenterStr". + If it is an empty value, or was not found, will return + everything on the right of "CenterStr". + + IncludeLeftStr(1|0) + Include or not the "LeftStr" in the result value. Default is 1 + (True). (1 = True, 0 = False) + + IncludeCenterStr(1|0) + Include or not the "CenterStr" in the result value. Default is 1 + (True). (1 = True, 0 = False) + + IncludeRightStr(1|0) + Include or not the "RightStr" in the result value. Default is 1 + (True). (1 = True, 0 = False) + + Result Value -> ResultVar: + + String between "LeftStr" and "RightStr" of a found "CenterStr" + including or not the "LeftStr" and "RightStr" if + "IncludeLeftRightStr" is 1 and/or the "CenterStr" if + "IncludeCenterStr" is 1. + + Example: + + ${StrSort} $0 "This is just an example" " just" "" "ple" "0" "0" "0" + [_______(___)_______]( ) + C R + + $0 = "This is an exam" + + ========================================================================= + ***** ${StrStr} + ------------------------------------------------------------------------- + ResultVar String StrToSearchFor + ========================================================================= + Searches for "StrToSearchFor" in "String". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search "StrToSearchFor". + + StrToSearchFor + String to search in "String". + + Result Value -> ResultVar: + + "StrToSearchFor" + the string after where "StrToSearchFor" was found in + "String". + + Example: + + ${StrStr} $0 "This is just an example" "just" + >>>>>>>>>{_)____________] + + $0 = "just an example" + + ========================================================================= + ***** ${StrStrAdv} + ------------------------------------------------------------------------- + ResultVar String StrToSearchFor SearchDirection(>|<) + ResultStrDirection(>|<) DisplayStrToSearch(1|0) Loops CaseSensitive(0|1) + ========================================================================= + Searches for "StrToSearchFor" in "String" in the direction specified by + "SearchDirection" and looping "Loops" times. + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search "StrToSearchFor". + + StrToSearchFor + String to search in "String". + + SearchDirection (>|<) + Where do you want to direct the search. Default is ">" (to right). + (< = To left, > = To right) + + ResultStrDirection (>|<) + Where the result string will be based on in relation of + "StrToSearchFor" + position. Default is ">" (to right). (< = To left, > = To right) + + DisplayStrToSearch (1|0) + Display "StrToSearchFor" in the result. Default is "1" (True). + (1 = True, 0 = False) + + Loops + Number of times the code will search "StrToSearchFor" in "String" not + including the original execution. Default is "0" (1 code execution). + + CaseSensitive(0|1) + If "1" the search will be case-sensitive (differentiates between cases). + If "0" it is case-insensitive (does not differentiate between cases). + Default is "0" (Case-Insensitive). + + + Result Value -> ResultVar: + + "StrToSearchFor" if "DisplayStrToSearch" is 1 + the result string after + or before "StrToSearchFor", depending on "ResultStrDirection". + + Result with Errors: + + When "StrToSearchFor" was not found, will return an empty string. + + When you put nothing in "StrToSearchFor", will return "String" and set + error flag. + + When you put nothing in "String", will return an empty string and set + error flag. + + Example: + + ${StrStrAdv} $0 "This IS really just an example" "IS " ">" ">" "0" "0" "1" + >>>>>( )[____________________] + + + $0 = "really just an example" + + ========================================================================= + **** ${StrTok} + ------------------------------------------------------------------------- + ResultVar String Separators ResultPart[L] SkipEmptyParts(1|0) + ========================================================================= + Returns the part "ResultPart" between two "Separators" inside + "String". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search for "Separators". + + Separators + Characters to find on "String". + + ResultPart[L] + The part want to be found on "StrToTokenize" between two "Separators". + Can be any number, starting at 0, and "L" that is the last part. + Default is L (Last part). + + SkipEmptyParts(1|0) + Skips empty string parts between two "Separators". Default is 1 (True). + (1 = True, 0 = False) + + Result Value -> ResultVar: + + "String" part number "Part" between two "Separators". + + Examples: + + 1) ${StrTok} $0 "This is, or is not, just an example" " ," "4" "1" + ( ) () () () [_] ( ) () ( ) + 0 1 2 3 4 5 6 7 + $0 = "not" + + 2) ${StrTok} $0 "This is, or is not, just an example" " ," "4" "0" + ( ) () ^() [] ( ) ^( ) () ( ) + 0 1 23 4 5 67 8 9 + $0 = "is" + + ========================================================================= + * ${StrTrimNewLines} + ------------------------------------------------------------------------- + ResultVar String + ========================================================================= + Deletes unnecessary new lines at end of "String". + + Parameters: + + ResultVar + Destination where result is returned. + + String + String where to search unnecessary new lines at end of "String". + + Result Value -> ResultVar: + + "String" with unnecessary end new lines removed. + + Example: + + ${StrTrimNewLines} $0 "$\r$\nThis is just an example$\r$\n$\r$\n" + [_____________________________(_)(_)(_)(_)] + + $0 = "$\r$\nThis is just an example" + +Functions included and not included +-------------------------------------------------- + +11 functions have been included + They are not available on Archive + They are on LogicLib format + +15 functions have not been included + 12 were not included because of better functions + 6 were not included because of AdvStrTok (called here as StrTok) + First String Part Function + Save on Variables Function + Sort Strings (1, 2 and 3) Functions + StrTok Function + 2 were not included because of StrCase + StrLower Function + StrUpper Function + 2 were not included because of StrClb + StrClbSet Function + StrClbGet Function + 1 was not included because of NSISToIO and IOToNSIS + Convert / to // in Paths Function + 1 was not included because of original String Replace Function (called + here as StrRep) + Another String Replace Function + 2 were not included because they aren't useful anymore + Slash <-> Backslash Converter Function + Trim Function + 1 was not included because of bugs + Number to String Converter Function + +Version History +--------------- + +1.09 - 10/22/2004 + +- Fixed stack problems involving: StrCase, StrRep, StrSort, StrTok. +- Fixed StrClb: When "Action" = "<>", handle was wrongly output as text. +- Fixed StrSort, StrStrAdv documentation examples. +- Fixed StrIOToNSIS, StrLoc, StrNSISToIO, StrRep, StrStr: sometimes + didn't find "StrToSearch" at all. + +1.08 - 10/12/2004 + +- Converted all the functions to LogicLib. +- StrSort: Totally remade and it can break old scripts. See + documentation for details. +- StrTok: "ResultPart" has to start from 0 and it can break old scripts. + See documentation for details. +- Added defines: StrFunc_List, *_List and *_TypeList. +- Fixed StrStrAdv: Variables $R0-$R3 couldn't be used in scripts before calling. +- StrRep: Cut down some variables. +- Arranged correctly the order of StrSort on the documentation. + +1.07 - 09/21/2004 + +- Removed ${UnStrFunc} command. Now you can just include uninstall + functions commands like ${UnStrStr} to be supported by uninstall functions + and sections. +- Added case-sensitive comparison option for StrStrAdv. +- StrCase now uses System.dll which makes case conversions effective with +all latin letters (i.e. ê). +- Added switch case and original case for StrCase. +- StrClbSet and StrClbGet removed, added StrClb. +- Made compact the most usual operations inside the header file. File size +reduced. + +1.06 - 03/26/2004 + +- StrNumToStr removed due to complex number handling on some languages. +- Fixed the bug where the old string was attached to string returned by + StrCase when $R5 variable was used. + +1.05 - 03/17/2004 + +- Fixed a bug with StrCase, Title Case wasn't working as should be. +- Fixed a bug with StrStrAdv, previous fix created another bug, string not + returned correctly when using backwards search with "DisplayStrToSearch" as + "0". + +1.04 - 03/07/2004 + +- Added new StrCase, removed StrLower and StrUpper. +- Organized by name commands inside header and readme files. + +1.03 - 02/12/2004 + +- Added commands support for uninstall sections and functions. +- Fixed variables switch in "StrLoc" and "StrTok" after using these. + +1.02 - 02/07/2004 + +- Fixed StrLoc. +- Fixed Documentation about StrLoc. "Direction" is really "OffsetDirection". +- Added my new AdvStrSort, and removed the old one. + +1.01 - 02/05/2004 + +- Fixed Documentation about StrSort and StrTok. +- Fixed StrTok default value for the string part. Now it's "L". +- Fixed StrStrAdv fixed wrong search when had a combination of same + substrings one after another in a string. +- Fixed StrLoc: when a string isn't found, don't return any value at all. + +1.00 - 02/01/2004 + +- Added documentation. +- Renamed header file to "StrFunc.nsh". +- Added 1 function, StrLoc. +- Modified StrStrAdv, removed some lines. +- Fixed StrTok, 2 simple numbers made it loop every time. +- Fixed some small issues on the header file. + +0.02 - 01/24/2004 + +- Completed StrFunc.nsh file. Need some tests and the readme. + +0.01 - 01/22/2004 + +- First version to test ideas... + +Credits +------- + + Made by Diego Pedroso (aka deguix). + +Functions Credits +----------------- + +- All functions are made by Diego Pedroso on LogicLib format. They + are based on functions by Amir Szekely, Dave Laundon, Hendri + Adriaens, Nik Medved, Joost Verburg, Stuart Welch, Ximon Eighteen, + "bigmac666" and "bluenet". "bluenet"'s version of StrIOToNSIS and + StrNSISToIO on LogicLib format were included. + +License +------- + +This header file is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any damages +arising from the use of this header file. + +Permission is granted to anyone to use this header file for any purpose, +including commercial applications, and to alter it and redistribute +it freely, subject to the following restrictions: + +1. The origin of this header file must not be misrepresented; + you must not claim that you wrote the original header file. + If you use this header file in a product, an acknowledgment in the + product documentation would be appreciated but is not required. +2. Altered versions must be plainly marked as such, + and must not be misrepresented as being the original header file. +3. This notice may not be removed or altered from any distribution. \ No newline at end of file diff --git a/tools/Docs/System/System.html b/tools/Docs/System/System.html new file mode 100644 index 0000000..4d0fd34 --- /dev/null +++ b/tools/Docs/System/System.html @@ -0,0 +1,898 @@ + + + + + + +System Plug-in (NSIS) + + + +

NSIS System Plug-in

+

+Copyright © 2002 brainsucker (Nik Medved)
Copyright © 2002-2023 NSIS Contributors +

+ +

Table of Contents

+ + + +

Introduction

+ +

The System plug-in gives developers the ability to call any exported function from any DLL. For example, you can use it to call GetLogicalDriveStrings to get a list of available drives on the user's computer.

+ +

The System plug-in also allows the developer to allocate, free and copy memory; interact with COM objects and perform mathematical operations on 64-bit integers.

+ +

Programming knowledge is highly recommended for good understanding of the System plug-in.

+ +

Usage Examples From The Wiki

+ + + +

Available Functions

+ +

Memory Related Functions

+ +
+
    + +
  • +Alloc SIZE +
    +

    Allocates SIZE bytes and returns a memory address on the stack.

    +

    Usage Example

    +
    +System::Alloc 64
    +Pop $0
    +DetailPrint "64 bytes allocated at $0"
    +System::Free $0
    +
    +
    +
  • +
  • +StrAlloc SIZE +
    +

    Allocates a string buffer for SIZE TCHARs and returns a memory address on the stack. This is extremely useful if you want to write an NSI script that will work for both ANSI and Unicode NSIS.

    +

    Usage Example

    +
    +System::StrAlloc 64 ; String buffer for 63 characters and \0 termination.
    +Pop $0
    +DetailPrint "A string buffer for 64 characters allocated at $0"
    +System::Free $0
    +
    +
    +
  • +
  • +Copy [/SIZE] DESTINATION SOURCE +
    +

    Copies SIZE bytes from SOURCE to DESTINATION. If SIZE is not specified, SOURCE's size will queried using GlobalSize. This means that if you don't allocate SOURCE using System::Alloc, System::Call or GlobalAlloc, you must specify SIZE. If DESTINATION is zero it will be allocated and its address will be pushed on the stack.

    +

    Usage example

    +
    +# allocate a buffer and put 'test string' and an int in it
    +System::Call "*(&t1024 'test string', i 5) p .s"
    +Pop $0
    +# copy to an automatically created buffer
    +System::Copy 0 $0
    +Pop $1
    +# get string and int in $1 buffer
    +System::Call "*$1(&t1024 .r2, i .r3)"
    +# free buffer
    +System::Free $1
    +# print result
    +DetailPrint $2
    +DetailPrint $3
    +# copy to our own buffer
    +System::Alloc 1028
    +Pop $1
    +System::Copy $1 $0
    +# get string and int in $1 buffer
    +System::Call "*$1(&t1024 .r2, i .r3)"
    +# free
    +System::Free $0
    +System::Free $1
    +# print result
    +DetailPrint $2
    +DetailPrint $3
    +
    +
    + +
  • + +
  • +Free ADDRESS +
    +

    Frees ADDRESS.

    +

    Usage Example

    +
    +System::Alloc 64
    +Pop $0
    +DetailPrint "64 bytes allocated at $0"
    +System::Free $0
    +
    +
    +
  • + +
  • +Store "OPERATION [OPERATION [OPERATION ...]]" +
    +

    Performs stack operations. An operation can be pushing or popping a single register from the NSIS stack or pushing or popping all of the registers ($0-$9 and $R0-$R9) from System's private stack. Operations can be separated by any character.

    +

    Available Operations

    +
      +
    • To push $#, use p#, where # is a digit from 0 to 9.
    • +
    • To pop $#, use r#, where # is a digit from 0 to 9.
    • +
    • To push $R#, use P#, where # is a digit from 0 to 9.
    • +
    • To pop $R#, use R#, where # is a digit from 0 to 9.
    • +
    • To push $0-$9 and $R0-$R9 to System's private stack, use s or S.
    • +
    • To pop $0-$9 and $R0-$R9 from System's private stack, use l or L.
    • +
    • To push the internal NSIS flags state (exec_flags_t in api.h) to the stack, use F.
    • +
    • To pop the internal NSIS flags state (exec_flags_t in api.h) from the stack, use f.
    • +
    +

    Usage Examples

    +
    +StrCpy $0 "test"
    +System::Store "p0"
    +Pop $1
    +DetailPrint "$0 = $1"
    +
    +
    +StrCpy $2 "test"
    +System::Store "p2 R2"
    +DetailPrint "$2 = $R2"
    +
    +
    +StrCpy $3 "test"
    +System::Store "s"
    +StrCpy $3 "another test"
    +System::Store "l"
    +DetailPrint $3
    +
    +
    +System::Store "r4" "test"
    +DetailPrint $4
    +
    +
    +
  • +
+ +
+ +

Calling Functions

+ +
+ +
    +
  • Call PROC [( PARAMS ) [RETURN [? OPTIONS]]]
  • +
  • Get PROC [( PARAMS ) [RETURN [? OPTIONS]]] +
    +

    Call and get both share a common syntax. As the names suggest, Call calls and Get gets. What does it call or get? It depends on PROC's value.

    + +

    PARAMS is a list of parameters and what do to with them. You can pass data in the parameters and you can also get data from them. The parameters list is separated by commas. Each parameter is combined of three values: type, source and destination. Type can be an integer, a string, etc. Source, which is the source of the parameter value, can be a NSIS register ($0, $1, $INSTDIR), the NSIS stack, a concrete value (5, "test", etc.) or nothing (null). Destination, which is the destination of the parameter value after the call returns, can be a NSIS register, the NSIS stack or nothing which means no output is required. Either one of source or destination can also be a dot (`.') if it is not needed.

    + +

    RETURN is like a single parameter definition, but source is only used when creating callback functions. Normally source is a dot.

    + +

    OPTIONS is a list of options which control the way System plug-in behaves. Each option can be turned off by prefixing with an exclamation mark. For example: ?!e.

    + +

    PARAMS, RETURN and OPTIONS can be repeated many times in one Get/Call line. When repeating, a lot can be omitted, and only what you wish to change can be used. Type, source and/or destination can be omitted for each parameter, even the return value. Options can be added or removed. This allows you to define function prototypes and save on some typing. The last two examples show this.

    + +

    PROC can also be repeated but it must be prefixed with a hash sign (`#') except if the hash sign is preceded by a double colon (shell32::#18) in which case it is interpreted as a function ordinal.

    + +

    Possible PROC Values and Meanings

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningExample
    DLL::FUNCFUNC exported from DLLuser32::MessageBox
    ::ADDRFunction located at ADDRsee below
    *ADDRStructure located at ADDRsee below
    *New structuresee below
    IPTR->IDXMember indexed IDX from
    interface pointed by IPTR
    see below
    <nothing>New callback functionsee below
    PROCPROC returned by Getsee below
    +
    + +

    Available Parameter Types

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeMeaning
    vvoid (generally for return)
    ppointer (and other pointer sized types like handles and HWNDs)
    bint8, byte
    hint16, short
    iint32 (includes char, byte, short and so on when used as a pointer)
    lint64, large integer
    mANSI text, string. (FYI: 'm' for multibyte string or 'w' flipped over.)
    ttext, string (pointer to first character). Like TCHAR*, it is a Unicode string in Unicode NSIS.
    wWCHAR text, Unicode string
    gGUID
    kcallback
    @Direct register memory access (Buffer is limited to (NSIS_MAX_STRLEN - 24) * NSIS_CHAR_SIZE bytes)
    &vNN bytes padding (structures only)
    &iNinteger of N bytes (structures only)
    &lstructure size (structures only)
    &tNarray of N TCHAR text characters (structures only)
    &mNarray of N CHAR ANSI characters (structures only)
    &wNarray of N WCHAR Unicode characters (structures only)
    &g1616 bytes of GUID (structures only)
    +

    Additionally, each type (except b, h, k and @) can be prefixed with an asterisk to denote a pointer. When using an asterisk, the System plug-in still expects the value of the parameter, rather than the pointer's address. To pass a direct address, use `p' with no asterisk. A usage example is available. Alloc returns addresses and its return value should therefore be used with `p', without an asterisk.

    +
    + +

    Available Sources and Destinations

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeMeaning
    .ignored
    numberconcrete hex, decimal or octal integer value. several integers can be or'ed using the pipe symbol (`|')
    'string'
    "string"
    `string`
    concrete string value
    r0 through r9$0 through $9 respectively
    r10 through r19
    R0 through R9
    $R0 through $R9 respectively
    c$CMDLINE
    d$INSTDIR
    o$OUTDIR
    e$EXEDIR
    a$LANGUAGE
    sNSIS stack
    nnull for source, no output required for destination
    +

    Source is required when using the @ type and must be a register. When the call returns the source register already contains the memory address in string form so using destination is usually not necessary. +

    + +

    Callbacks

    + +
    +

    Callback functions are simply functions which are passed to a function and called back by it. They are frequently used to pass a possibly large set of data item by item. For example, EnumChildWindows uses a callback function. As NSIS functions are not quite regular functions, the System plug-in provides its own mechanism to support callback functions. It allows you to create callback functions and notifies you each time a callback function was called.

    + +

    Creation of callback functions is done using Get and the callback creation syntax. As you will not call the callbacks yourself, the source of the parameters should be omitted using a dot. When the callback is called, the destination of the parameters will be filled with the values passed on to the callback. The value the callback will return is set by the source of the return "parameter". The destination of the return "parameter" should always be set as that's where System will notify you the callback was called.

    + +
    System::Get "(i .r0, i .r1) iss"
    + +

    To pass a callback to a function, use the k type.

    + +
    System::Get "(i .r0, i .r1) isR0"
    +Pop $0
    +System::Call "dll::UseCallback(k r0)"
    + +

    Each time the callback is called, the string callback#, where # is the number of the callback, will be placed in the destination of the return "parameter". The number of the first callback created is 1, the second's is 2, the third's is 3 and so on. As System is single threaded, a callback can only be called while calling another function. For example, EnumChildWindows's callback can only be called when EnumChildWindows is being called. You should therefore check for callback# after each function call that might call your callback.

    + +
    System::Get "(i .r0, i .r1) isR0"
    +Pop $0
    +System::Call "dll::UseCallback(k r0)"
    +StrCmp $R0 "callback1" 0 +2
    +DetailPrint "UseCallback passed ($0, $1) to the callback"
    +
    + +

    After you've processed the callback call, you should use Call, passing it the value returned by Get - the callback. This tells System to return from the callback. Destination of the return "parameter" must be cleared prior to calling a function, to avoid false detection of a callback call. If you've specified a source for the return "parameter" when the callback was created, you should fill that source with the appropriate return value. Callbacks are not automatically freed, don't forget to free it after you've finished using it.

    + +
    System::Get "(i .r0, i .r1) isR0"
    +Pop $0
    +System::Call "dll::UseCallback(k r0)"
    +loop:
    +	StrCmp $R0 "callback1" 0 done
    +	DetailPrint "UseCallback passed ($0, $1) to the callback"
    +	Push 1 # return value of the callback
    +	StrCpy $R0 "" # clear $R0 in case there are no more callback calls
    +	System::Call $0 # tell system to return from the callback
    +	Goto loop
    +done:
    +System::Free $0
    +
    + +

    A complete working example is available in the usage examples section.

    + +
    + +

    Notes

    + +
    +
      +
    • To find out the index of a member in a COM interface, you need to search for the definition of this COM interface in the header files that come with Visual C/C++ or the Platform SDK. The index is zero based.
    • +
    • If a function can't be found or the t parameter type was used, an `A' or `W' will be appended to its name and it will be looked up again. This is done because a lot of Windows API functions have two versions, one for ANSI strings and one for Unicode strings. The ANSI version of the function is marked with `A' and the Unicode version is marked with `W'. For example: lstrcpyA and lstrcpyW.
    • +
    • Libraries in the system32 directory can be loaded without a path. All other libraries should be loaded with a quoted full path.
    • +
    +
    + +

    Available Options

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OptionMeaning
    ccdecl calling convention (the stack restored by caller). By default stdcall calling convention is used on x86 (the stack restored by callee).
    rAlways return (for GET means you should pop result and proc, for CALL means you should pop result (at least)). By default result is returned for errors only (for GET you will pop either error result or right proc, and for CALL you will get either your return or result at defined return place).
    nNo redefine. Whenever this proc will be used it will never be redefined either by GET or CALL. This options is never inherited to children.
    sUse general Stack. Whenever the first callback defined the system starts using the temporary stacks for function calls.
    eCall GetLastError() after procedure end and push result on stack.
    uUnload DLL after call (using FreeLibrary, so you'll be able to delete it for example).
    2Experimental v2 syntax
    +
    + +

    Experimental v2 syntax

    + +
      +
    • Struct types in uppercase are aligned to their natural alignment. Lowercased types are packed without alignment. +
    • Callback id based on the allocated callback +
    + +

    Usage Examples

    + +
    +System::Call 'user32::MessageBox(p $HWNDPARENT, t "NSIS System Plug-in", t "Test", i 0)'
    +System::Call '"$SysDir\MyLibrary.dll"::MyFunction(i 42)'
    +
    +
    +System::Call "kernel32::GetModuleHandle(t 'user32.dll') p .s"
    +System::Call "kernel32::GetProcAddress(p s, m 'MessageBoxA') p .r0"
    +System::Call "::$0(p $HWNDPARENT, m 'GetProcAddress test', m 'NSIS System Plug-in', i 0)"
    +
    +
    +System::Get "user32::MessageBox(p $HWNDPARENT, t 'This is a default text', t 'Default', i 0)"
    +Pop $0
    +System::Call "$0"
    +
    +
    +System::Get "user32::MessageBox(p $HWNDPARENT, t 'This is a default text', \
    +	t 'Default', i 0x1|0x10)"
    +Pop $0
    +System::Call "$0(, 'This is a System::Get test', 'NSIS System Plug-in',)"
    +
    +
    +System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"
    +DetailPrint "User name - $0"
    +DetailPrint "String length - $1"
    +DetailPrint "Return value - $2"
    +
    +
    +System::Alloc 4
    +Pop $0
    +System::Call "*$0(i 5)" ; Write
    +System::Call "*$0(i .r1)" ; Read
    +System::Free $0
    +DetailPrint $1
    +
    +
    +System::Call "*(i 5) p .r0"
    +System::Call "*$0(i .r1)"
    +System::Free $0
    +DetailPrint $1
    +
    +
    +System::Call '*0(p, &l.r2, &t2)' ; &l. is not part of the struct
    +DetailPrint "Struct size=$2" 
    +
    +
    +System::Call '*(&l4,i,i,i,i,&t128)p.r1' ; Fills dwOSVersionInfoSize with the struct size as a int32
    +${If} $1 Z<> 0
    +	System::Call 'kernel32::GetVersionEx(pr1)i.r0'
    +	System::Call '*$1(i,i.R1,i.R2,i.R3)'
    +	System::Free $1
    +	${IfThen} $0 <> 0 ${|} DetailPrint "v$R1.$R2.$R3" ${|}
    +${EndIf}
    +
    +
    +System::Call "user32::GetClientRect(p $hwndparent, @ r0)"
    +System::Call "*$0(i,i,i.r1,i.r2)"
    +DetailPrint ClientRect=$1x$2
    +
    +
    +# defines
    +!define CLSCTX_INPROC_SERVER 1
    +!define CLSID_ActiveDesktop {75048700-EF1F-11D0-9888-006097DEACF9}
    +!define IID_IActiveDesktop {F490EB00-1240-11D1-9888-006097DEACF9}
    +# create IActiveDesktop interface
    +System::Call "ole32::CoCreateInstance( \
    +	g '${CLSID_ActiveDesktop}', p 0, \
    +	i ${CLSCTX_INPROC_SERVER}, \
    +	g '${IID_IActiveDesktop}', *p .r0) i.r1"
    +StrCmp $1 0 0 end
    +# call IActiveDesktop->GetWallpaper
    +System::Call "$0->4(w .r2, i ${NSIS_MAX_STRLEN}, i 0)"
    +# call IActiveDesktop->Release
    +System::Call "$0->2()"
    +# print result
    +DetailPrint $2
    +end:
    +
    +
    +InitPluginsDir
    +File "/oname=$PLUGINSDIR\MyDLL.dll" MyDLL.dll
    +System::Call 'KERNEL32::AddDllDirectory(w "$PLUGINSDIR")'
    +System::Call 'KERNEL32::LoadLibrary(t "$PLUGINSDIR\MyDLL.dll")p.r1'
    +System::Call 'MyDLL::MyFunc(i 5) ? u'
    +System::Call 'KERNEL32::FreeLibrary(pr1)'
    +Delete $PLUGINSDIR\MyDLL.dll
    +
    +
    +System::Get "(p.r1, p) iss"
    +Pop $R0
    +System::Call "user32::EnumChildWindows(p $HWNDPARENT, k R0, p) i.s"
    +loop:
    +	Pop $0
    +	StrCmp $0 "callback1" 0 done
    +	System::Call "user32::GetWindowText(pr1,t.r2,i${NSIS_MAX_STRLEN})"
    +	System::Call "user32::GetClassName(pr1,t.r3,i${NSIS_MAX_STRLEN})"
    +	IntFmt $1 "0x%X" $1
    +	DetailPrint "$1 - [$3] $2"
    +	Push 1 # callback's return value
    +	System::Call "$R0"
    +	Goto loop
    +done:
    +System::Free $R0
    +DetailPrint "EnumChildWindows returned $0"
    +
    +
    +System::Get '(m.r1)ir2r0 ?2' ; v2 syntax
    +Pop $9
    +System::Call 'kernel32::EnumSystemLocalesA(k r9, i 0)'
    +loop:
    +	StrCmp $0 "callback$9" 0 done
    +	DetailPrint "Locale: $1"
    +	StrCpy $2 1 ; EnumLocalesProc return value
    +	System::Call $9 ; return from EnumLocalesProc
    +	Goto loop
    +done:
    +System::Free $9
    +
    +
    +System::Call '*(&t50 "!")p.r2' ; DecimalSep
    +System::Call '*(&t50 "`")p.r3' ; ThousandSep
    +System::Call '*(i 2, i 0, i 3, P r2, P r3, i 1)p.r1 ?2'
    +System::Call 'kernel32::GetNumberFormat(i 0, i 0, t "1337.666" r4, p r1, t.r5, i ${NSIS_MAX_STRLEN})'
    +DetailPrint "Custom formatted $4: $5"
    +System::Free $3
    +System::Free $2
    +System::Free $1
    +
    +
    +!define MB "user32::MessageBox(p$HWNDPARENT,t,t'NSIS System Plug-in',i0)"
    +System::Call "${MB}(,'my message',,)"
    +System::Call "${MB}(,'another message',,) i.r0"
    +MessageBox MB_OK "last call returned $0"
    +
    +
    +System::Call "user32::SendMessage(p $HWNDPARENT, t 'test', t 'test', p 0) p.s ? \
    +	e (,t'test replacement',,) i.r0 ? !e #user32::MessageBox"
    +DetailPrint $0
    +ClearErrors
    +Pop $0
    +IfErrors good
    +MessageBox MB_OK "this message box will never be reached"
    +good:
    +
    +
    +
  • +
+ +
+ +

64-bit Functions

+ +
+ +
    + +
  • +Int64Op ARG1 OP [ARG2] +
    +

    Performs OP on ARG1 and optionally ARG2 and returns the result on the stack. Both ARG1 and ARG2 are 64-bit integers. This means they can range between -2^63 and 2^63 - 1.

    +

    Available Operations

    +
      +
    • Addition -- +
    • +
    • Subtraction -- -
    • +
    • Multiplication -- *
    • +
    • Division -- /
    • +
    • Modulo -- %
    • +
    • Shift left -- <<
    • +
    • Arithmetic shift right -- >>
    • +
    • Logical shift right -- >>>
    • +
    • Bitwise or -- |
    • +
    • Bitwise and -- &
    • +
    • Bitwise xor -- ^
    • +
    • Bitwise not (one argument) -- ~
    • +
    • Logical not (one argument) -- !
    • +
    • Logical or -- ||
    • +
    • Logical and -- &&
    • +
    • Less than -- <
    • +
    • Equals -- =
    • +
    • Greater than -- >
    • +
    + +

    Usage Examples

    + +
    +System::Int64Op 5 + 5
    +Pop $0
    +DetailPrint "5 + 5 = $0" # 10
    +
    +
    +System::Int64Op 526355 * 1565487
    +Pop $0
    +DetailPrint "526355 * 1565487 = $0" # 824001909885
    +
    +
    +System::Int64Op 5498449498849818 / 3
    +Pop $0
    +DetailPrint "5498449498849818 / 3 = $0" # 1832816499616606
    +
    +
    +System::Int64Op 0x89498A198E4566C % 157
    +Pop $0
    +DetailPrint "0x89498A198E4566C % 157 = $0" # 118
    +
    +
    +System::Int64Op 1 << 62
    +Pop $0
    +DetailPrint "1 << 62 = $0" # 4611686018427387904
    +
    +
    +System::Int64Op 0x4000000000000000 >> 62
    +Pop $0
    +DetailPrint "0x4000000000000000 >> 62 = $0" # 1
    +
    +System::Int64Op 0x8000000000000000 >> 1
    +Pop $0
    +DetailPrint "0x8000000000000000 >> 1 = $0" # -4611686018427387904 (0xC000000000000000)
    +
    +System::Int64Op 0x8000000000000000 >>> 1
    +Pop $0
    +DetailPrint "0x8000000000000000 >>> 1 = $0" # 4611686018427387904 (0x4000000000000000)
    +
    +
    +System::Int64Op 0x12345678 & 0xF0F0F0F0
    +Pop $0
    +# IntFmt is 32-bit, this is just for the example
    +IntFmt $0 "0x%X" $0
    +DetailPrint "0x12345678 & 0xF0F0F0F0 = $0" # 0x10305070
    +
    +
    +System::Int64Op 1 ^ 0
    +Pop $0
    +DetailPrint "1 ^ 0 = $0" # 1
    +
    +
    +System::Int64Op 1 || 0
    +Pop $0
    +DetailPrint "1 || 0 = $0" # 1
    +
    +
    +System::Int64Op 1 && 0
    +Pop $0
    +DetailPrint "1 && 0 = $0" # 0
    +
    +
    +System::Int64Op 9302157012375 < 570197509190760
    +Pop $0
    +DetailPrint "9302157012375 < 570197509190760 = $0" # 1
    +
    +
    +System::Int64Op 5168 > 89873
    +Pop $0
    +DetailPrint "5168 > 89873 = $0" # 0
    +
    +
    +System::Int64Op 189189 = 189189
    +Pop $0
    +DetailPrint "189189 = 189189 = $0" # 1
    +
    +
    +System::Int64Op 156545668489 ~
    +Pop $0
    +DetailPrint "156545668489 ~ = $0" # -156545668490
    +
    +
    +System::Int64Op 1 !
    +Pop $0
    +DetailPrint "1 ! = $0" # 0
    +
    +
    +
  • + +
+ +
+ +

FAQ

+ +
+ +
    + +
  • +Q: How can I pass structs to functions? +
    +

    A: First of all, you must allocate the struct. This can be done in two ways. You can either use Alloc or Call with the special struct allocation syntax. Next, if you need to pass data in the struct, you must fill it with data. Then you call the function with a pointer to the struct. Finally, if you want to read data from the struct which might have been written by the called function, you must use Call with the struct handling syntax. After all is done, it's important to remember to free the struct.

    + +

    Allocation

    + +

    To allocate the struct using Alloc, you must know the size of the struct in bytes. Therefore, it would normally be easier to use Call. In this case it's easy to see the required size is 16 bytes, but other cases might not be that trivial. In both cases, the struct address will be located on the top of the stack and should be retrieved using Pop.

    + +
    +System::Alloc 16
    +
    + +
    +System::Call "*(i, i, i, t)p.s"
    +
    + +
    + +

    Setting Data

    + +

    Setting data can be done using Call. It can be done in the allocation stage, or in another stage using the struct handling syntax.

    + +
    +System::Call "*(i 5, i 2, i 513, t 'test')p.s"
    +
    + +
    +# assuming the struct's memory address is kept in $0
    +System::Call "*$0(i 5, i 2, i 513, t 'test')"
    +
    + +
    + +

    Passing to the Function

    + +

    As all allocation methods return an address, the type of the passed data should be an integer, an address in memory.

    + +
    +# assuming the struct's memory address is kept in $0
    +System::Call "dll::func(p r0)"
    +
    + +
    + +

    Reading Data

    + +

    Reading data from the struct can be done using the same syntax as setting it. The only difference is that the destination part of the parameter will be set and the source part will be omitted using a dot.

    + +
    +# assuming the struct's memory address is kept in $0
    +System::Call "*$0(i .r0, i .r1, i .r2, t .r3)"
    +DetailPrint "first int = $0"
    +DetailPrint "second int = $1"
    +DetailPrint "third int = $2"
    +DetailPrint "string = $3"
    +
    + +
    + +

    Freeing Memory

    + +

    Memory is freed using Free.

    + +
    +# assuming the struct's memory address is kept in $0
    +System::Free $0
    +
    + +
    + +

    A Complete Example

    + +
    +# allocate
    +System::Call "*(i,i,p,p,p,p,p,p)p.r1"
    +# call
    +System::Call "Kernel32::GlobalMemoryStatus(p r1)"
    +# get
    +System::Call "*$1(i.r2, i.r3, p.r4, p.r5, p.r6, p.r7, p.r8, p.r9)"
    +# free
    +System::Free $1
    +# print
    +DetailPrint "Structure size: $2 bytes"
    +DetailPrint "Memory load: $3%"
    +DetailPrint "Total physical memory: $4 bytes"
    +DetailPrint "Free physical memory: $5 bytes"
    +DetailPrint "Total page file: $6 bytes"
    +DetailPrint "Free page file: $7 bytes"
    +DetailPrint "Total virtual: $8 bytes"
    +DetailPrint "Free virtual: $9 bytes"
    +
    + +
    +
  • + +
+ +
+ + + diff --git a/tools/Docs/System/WhatsNew.txt b/tools/Docs/System/WhatsNew.txt new file mode 100644 index 0000000..959c734 --- /dev/null +++ b/tools/Docs/System/WhatsNew.txt @@ -0,0 +1,46 @@ +release 2. +1. Syntax, with inline input +2. Int64 full support (conversion/operations/comparison) +3. Structures support +4. Callbacks support, including multilevel callbacks +5. Some useful routines (Alloc, Free, Copy) +6. CDecl and StdCall calling conventions + +release 3, 22 march 2003. +1. Custom Message Boxes (with icons etc) -> bug in case of GetModuleHandle and +call to FreeLibrary (sysfunc.nsh) +2. GetFileSysTime -> No SystemTimeToTzSpecificLocalTime at win9x bug, +changed to use FileTimeToLocalFileTime (sysfunc.nsh) +3. Incorrect automatic structure size (&l) bug, value actually never filled +into the structure (strange -> winxp takes no care of the structure size +members, such as cbSize, and win98 does...) (system.c) +4. Changed Secondary Stack Allocation behavior - now we just leave 65kb of the +stack NSIS give to us to the NSIS itself, and use the other part as the stack +for our calls. (system.c) +5. Secondary Stack Optimization - in case of no more pending callback procs - +"free" the secondary stack pointer. (system.c) +6. PlaySound("", 0, 0) plays the default windows sound at win9x, so changed to +PlaySound(NULL, 0, 0) for effective sound stopping after splash (sysfunc.nsh). + +release 4, 3 september 2003. +1. Division by zero fatal error at Int64Op killed. +2. bool type removed (use int instead). +3. GUID (g) and LPWSTR (w) types added. +4. Memory cleanup after using t (string), g (guid) and w (unicode string) added. +5. Automatic A-letter at proc name discovery. +6. COM optimized: new proc specification "x->y", where x is interface ptr, and +y is vtable member index. For such procs Interface pointer passed as first arg +automatically. + +release 5, 11 september 2003. +1. u flag - unload dll after procedure call. +2. some changes to asm to turn on Whole Program Optimization. +3. Dll shrunk by 1 kb. + +bug-fix-release, 4.06.2004 +1. System::Copy /SIZE fixed (Kichik). +2. System::Copy with destination auto-allocation now pushes destination +address on stack. +3. Callbacks fixed (Kichik's kick is awesome). +4. Bug with proc call parts redefinition, # for example (pointed by Kichik). +5. Bug with memory protection during callback processing (Kichik). \ No newline at end of file diff --git a/tools/Docs/VPatch/Readme.html b/tools/Docs/VPatch/Readme.html new file mode 100644 index 0000000..5746379 --- /dev/null +++ b/tools/Docs/VPatch/Readme.html @@ -0,0 +1,310 @@ + + + + + + +VPatch 3 + + + +

VPatch 3.1

+
+

Introduction

+
+

VPatch allows to create a patch file to update previous versions + of your software. The GenPat utility generates the patch file. + The plug-in can use the patch to update a file. Using a patch, you can + reduce the download size of your updates because only the differences + between the files are included in the patch file.

+
+

How to use

+
+

Generate the patch file

+
+

Make sure you have the source file (original version) and the target + file (version to update to). For example, DATA.DTA (currently on user + system) and DATA_20.DTA (version 2.0 of this data file). Now call + the command line tool GenPat.exe:

+
GENPAT oldfile.txt newfile.txt patch.pat
+

Now, the patch will be generated, this will take some time.

+

Using the /B=(BlockSize) parameter of the GenPat utility (put it + after the filenames), you can use a different block size. A smaller + block size may result in a smaller patch, but the generation will + take more time (the default blocksize is 64).

+

If you have trouble using this command-line utility, you can download + a GUI (graphical user interface) for VPatch from its own website: + http://www.tibed.net/vpatch.

+
+

Update the file during installation

+
+

Use the VPatch plug-in to update a file using a patch file:

+
vpatch::vpatchfile "patch.pat" "oldfile.txt" "temporary_newfile.txt"
+

The result of the patch operating will be added to the stack and + can be one of the following texts:

+
    +
  • OK
  • +
  • OK, new version already installed
  • +
  • An error occurred while patching
  • +
  • Patch data is invalid or corrupt
  • +
  • No suitable patches were found
  • +
+

Check example.nsi for an example. + You +should check whether the stack string starts with "OK" + because then the patch has succeeded and you can rename "temporary_newfile.txt" + to "oldfile.txt" to replace the original, if you want.

+
+

Multiple patches in one file

+
+

GenPat appends a patch to the file you specified. If there is already + a patch for the same original file, with the same CRC/MD5, in the patch file, + + the patch will be replaced. For example, if you want to be able to upgrade + version 1 and 2 to version 3, + you can put a 1 > 3 and 2 > 3 patch in +one file.

+

You can also put patches for different files in one patch file, for + example, a patch from file A version 1 to file A version 2 and a patch + from file B version 1 to file B version 2. Just call the plug-in multiple + times with the same patch file. It will automatically select the right + patch (based on the file CRC).

+
+

Patch generator (GenPat) exit codes

+
+

In version 3 the following exit codes (known as error levels in + the DOS period) can be returned by GenPat. GenPat will return an + exit code based on success of the patch generation. Here is a list + of the possible exit codes:

+ + + + + + + + + + + + + + + + + + + + + +
Exit codeDescription
0Success
1Arguments missing
2Other error
3Source file already has a patch in specified patch file (ERROR), + use /R switch to override
+

These exit codes can be useful when you generate patch files through + a NSIS script.

+
+
+
+
+

Source code

+
+

Source code is available in the original package and in the SVN repository of NSIS.

+ +

NSIS plug-in (C++)

+
+

The source of the NSIS plug-in that applies patches can be found + in the Source\Plugin folder.

+
+

Patch Generator (C++)

+
+

The most interesting part of VPatch, the actual patch generation + algorithm, can be found in Source\GenPat\PatchGenerator.cpp. + The +header of that file contains a brief explanation of the algorithm as well. +

+
+

User interface (Delphi)

+
+

A user interface is included as well, which you will have to build + yourself because the GUI executable was too large to include. Besides + Borland Delphi 6 or higher (you can use the freely available Personal + edition), you will also need to install the VirtualTreeView component by Mike Lischke.

+
+
+

Version history

+
+
    +
  • 3.1 +
      +
    • GenPat now compiles on POSIX platforms (MinGW/GCC), Visual + C++ 6 and Borland C++.
    • +
    • More test cases to verify functionality of GenPat.
    • +
    +
  • +
  • 3.0 +
      +
    • Final: Updates to the GUI, installer
    • +
    • RC8: GenPat will now flag replacement of a patch (e.g. + the source file has the same contents as a previous patch inside + a patch file) as an error. You can specifically allow it using + the /R switch. Added license to source files.
    • +
    • RC7: Fixed critical bug in GenPat with multiple patches + in a single file. Fixed serious bug in stand-alone EXE runtime: + process kept on running forever. Included case testing through + a Python script to test common usage (and prevent bugs like + the one in GenPat in the future).
    • +
    • RC6: Upgraded to non-beta compiler. Added /A switch + to change block match limit and /O to deactivate the limit. + Updated GUI to support the /O switch.
    • +
    • RC4a to RC5a: input block size is now checked for power + of 2 and fixed if incorrect. When patch file does not yet exist, + no longer forgets to create the header. No longer tries to allocate + memory when there are no chunks. Fixed memory leaks.
    • +
    • Target file date is now preserved inside a patch and restored + on the user system.
    • +
    • MD5 checksums are now used instead of CRC32 checksums, unless + existing patches in a file already are in CRC32 mode.
    • +
    • The patch generator, GenPat, has been completely rewritten + in C++. It no longer needs to keep the entire files in memory, + instead memory usage is a certain percentage of the source file + size. The percentage is based on the block size, larger block + sizes will reduce memory usage.
    • +
    • All runtimes now share a common codebase, perform proper error + checking and don't leave behind files if the input file was + already up to date.
    • +
    • Bug Fix: The patch generator algorithm no longer reduces to + a quadratic runtime if there are many blocks with the same content + in the files to patch.
    • +
    • Bug Fix: The documentation of the command-line utilities was + incorrect and no warnings would be given by the runtimes, causing + the patch not to work (this does not apply to NSIS patches).
    • +
    +
  • +
  • 2.1 +
      +
    • Added argument checking and error handling to GenPat. Now + returns exit codes as well to indicate success/failure (and + the reason for failure). Only GenPat has changed in this version + compared to 2.0 final.
    • +
    • Bug Fix: GenPat no longer gives an Access Violation when attempting + to patch a file smaller than 64 bytes into a file larger than + 64 bytes.
    • +
    +
  • +
  • 2.0 final +
      +
    • Cleaned up source code for the patch generator, which is now + included (this code is written in Borland Delphi 6 and compiles + with the freely available Personal edition).
    • +
    +
  • +
  • 2.0 beta 2 +
      +
    • All new algorithm used in the patch generator: much faster + (up to 90%) while using smaller block sizes (higher compression)
    • +
    • Created a NSIS 2 plugin
    • +
    • Works with small files
    • +
    • Replaces existing patch in file if original file CRC is identical
    • +
    +
  • +
+
+

Credits

+
+

Written by Koen van de Sande.
+ C plug-in initially by Edgewize, updated by Koen van de Sande.
+ New documentation and example by Joost Verburg and Koen van de Sande.

+
+

License

+
+Copyright (C) 2001-2005 Koen van de Sande / Van de Sande Productions
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute
+it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; 
+   you must not claim that you wrote the original software.
+   If you use this software in a product, an acknowledgment in the
+   product documentation would be appreciated but is not required.
+2. Altered versions must be plainly marked as such,
+   and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any distribution.
+
+
+ + + diff --git a/tools/Docs/makensisw/License.txt b/tools/Docs/makensisw/License.txt new file mode 100644 index 0000000..ccb71be --- /dev/null +++ b/tools/Docs/makensisw/License.txt @@ -0,0 +1,17 @@ +Copyright (c) 2002 Robert Rainwater + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. diff --git a/tools/Docs/makensisw/Readme.txt b/tools/Docs/makensisw/Readme.txt new file mode 100644 index 0000000..192b252 --- /dev/null +++ b/tools/Docs/makensisw/Readme.txt @@ -0,0 +1,245 @@ +---------------------------------------------------- +MakeNSISW - MakeNSIS Windows Wrapper +---------------------------------------------------- + + +About MakeNSISW +--------------- +MakeNSISW is a wrapper for the NSIS compiler (MakeNSIS). +MakeNSISW allows you to compile NSIS scripts using a Windows GUI interface. + + +Requirements +------------ +MakeNSISW requires NSIS be installed on your system. The default +directory for this installation is $PROGRAMFILES\NSIS\Contrib\MakeNSISW. + + +Usage: +------ +If you installed the Shell Extensions option during the installation, then +all that is required is that you choose 'Compile NSI' from the right- +click menu on a NSIS script. This will invoke MakeNSISW. + +The format of the parameters when calling MakeNSISW from the commandline is: + makensisw [options] [script.nsi | - [...]] + +For the options, please see the MakeNSIS documentation. + + +Shortcut Keys +------------- +Ctrl+A: Select all text +Ctrl+B: Open Script Folder +Ctrl+C: Copy selected text +Ctrl+D: Open the Define Symbols dialog +Ctrl+E: Edit the script +Ctrl+F: Find text +Ctrl+K: Abort compiler +Ctrl+L: Load a script +Ctrl+R, F7: Recompile the script +Ctrl+T, Ctrl+F5: Test the installer +Ctrl+W: Clear log window +Ctrl+<+|-|0>: Zoom log window +Alt+X: Exit the application +F1: View Documentation +F5: Recompile and Test + + +Version History +--------------- +0.1 + - Initial Release + +0.2 + - Added ability to save output and copy output + +0.3 + - Added option to recompile script (F2 or File|Recompile) + - Added Help Menu + - Return code is now always set + - Added Accelerator key support for Exit and Recompile + - No longer uses NSIS's version string + - Made clearer status message in title bar + - Disabled menu/accelerator functions during compile + +0.4 + - Fixed Copy Selected bug + +0.5 + - Minor Makefile changes (mingw) + - Moved strings into global strings to make editing easier + - Added Clear Log Command under Edit menu + - Recompile no longer clears the log window (use F5) + - Close is now the default button when you hit enter + - added VC++ project, updated resources to work with VC++ + - rearranged directory structure + - makefiles now target ../../makensisw.exe + - removed makensisw home link in help menu (hope this is ok, + doesn't really seem needed to me) + - made display use a fixed width font (Some people may not like + this, but I do) + - added 'test' button (peeks output for 'Output' line) + - made it so that the log shows the most recent 32k. + - made it so that the log always clears on a recompile. + - compiled with VC++ so no longer needs msvcrt.dll + - made the compiler name be a full path (for more flexibility) + +0.6 + - print correct usage if unable to execute compiler + - removed mingw warnings + - set title/branding before errors + - some docs changes + - Added Edit|Edit Script function + +0.7 + - Edit Script should now work for output>32k + - Added resize support (thanks to felfert) + - Added window position saving (thanks to felfert) + - Disable some items when exec of makensis failed + +0.8 + - Added window size constraints (thanks to bcheck) + - Cleaned up the resource file + +0.9 + - Removed global strings (moved into #defines) + - Some GUI changes + - No longer focused Close button (its default anyways) + - Fixed resize bug on minimize/restore (thanks to felfert) + - Made window placement stored in HKLM instead of HKCU, cause + I hate things that get littered in HKCU. + +1.0 + - Fixed bug with large output causing crash + +1.1 + - Crash may actually be fixed + +1.2 + - XP visual style support + +1.3 + - Added Documentation menu item + - Fix GUI problem with About dialog + +1.4 + - Edit Script command will now work with or without file associations + - Added default filename for save dialog + - Use standard fonts + - Documentation menuitem caused recompile + +1.5 + - Fixed Copy All function + +1.6 + - Reduced size from 44k to 12k (kichik) + - Editbox not limited to 32k (now using richedit control) + - Made the log window font-size smaller. + +1.7 + - Added check for warnings + - Added sound for successful compilations + - Update home page and documentation menu items to Sourceforge page + +1.8 + - Contents of log window are now streamed in + - Empty log window check (to prevent random crashes) + +1.9 + - Text always scrolls to bottom (kichik) + - Updated link to new docs + - Makensisw now takes the same parameters as makensis.exe + - Fixed some random crashes + - Drag and Drop Support into the Makensisw window + - Updated icon to more sexy one + - Added Load Script option on File menu + - Added Search Dialog (Ctrl+F) (kichik) + - Added Select All (Ctrl+A), Copy (Ctrl+C), Exit (Alt+X) keys + - Branding text now reflects NSIS version + - Added some simple tool tips + - Added Context Menu in log window + - Added resize gripper + - Ctrl+L loads a script + - Added Clear Log (Ctrl+W) + - Browse Script (Ctrl+B) launches explorer in script directory + - Check for Update command + - Added link to the NSIS Forum under Help menu + - Bunch of other stuff not worth mentioning + - Define Symbols menu (Ctrl+D) + +2.0 + - Improved user interface + - Define Symbols is available even if a script is not loaded + - Defined Symbols are saved on exit and reloaded on start + - Added NSIS Update menu + - Added toolbar for commonly used menus + - Made the Toolbar style flat + - Added option for compile & run + - Added compressor setting option + - Added support for lzma compression + - Added named Symbols sets. + +2.1 + - Added "Cancel compilation" menu item + +2.2 +- Settings saved in HKCU instead of HKLM +- Added menu accelerators to MRU list + +2.3 +- Escape button closes MakeNSISw + +2.3.1 +- Fixed broken command line parameter handling + +2.3.2 +- The size gripper can be used to resize the window + +2.3.3 +- Update check switched from JNetLib to WinInet +- New file type icons + +2.3.4 +- Added Window Info/Spy feature +- System DPI aware +- New toolbar images + +2.3.5 +- Added log window colors +- Basic AppEvents custom sound support for BuildComplete, BuildWarning and BuildError + +2.3.6 +- Added GUID generator tool + +2.4 +- Added Lookup tool +- Use Consolas font if it exists + +2.4.1 +- Close button transforms to Abort when appropriate +- Prevent user from modifying the log +- Log zoom + + +Copyright Information +--------------------- +Copyright (c) 2002 Robert Rainwater +Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, + Sunil Kamath, Joost Verburg, Anders Kjersem. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. diff --git a/tools/Docs/nsDialogs/Readme.html b/tools/Docs/nsDialogs/Readme.html new file mode 100644 index 0000000..a366dd5 --- /dev/null +++ b/tools/Docs/nsDialogs/Readme.html @@ -0,0 +1,878 @@ + + + + + + +nsDialogs + + + + +

NSIS nsDialogs Plug-in

+

Next generation of user interface design

+ +

Table of Contents

+ + + +

Introduction

+ +

nsDialogs allows creation of custom pages in the installer. On top of the built-in pages, nsDialogs can create pages with any type of controls in any order and arrangement. It can create everything from a simple page with one label to form which reacts to user's actions. Modern UI 2, for example, uses nsDialogs to create the welcome and finish pages.

+ +

nsDialogs is a NSIS plug-in, introduced in version 2.29 as a replacement for InstallOptions. nsDialogs doesn't use INI files, so it's way faster than InstallOptions. Integration with the script is tighter and more natural - creating controls is done using plug-in functions and notification is done by directly calling a function in the script. Unlike InstallOptions, there isn't a predefined set of available control type and by providing a lower level access to Windows API, every type of control can be created and pages can be more customizable.

+ +

The same thing that makes nsDialogs more flexible can also make it more complicated for users with no knowledge of Win32 API. This is solved by creating a library of predefined functions, defined in script, that allow creation and handling of controls. This way, novices get easy access to the flexibility, while advanced users still get access to the core functionality by modifying the library or simply avoid using it.

+ +

Step-by-Step Tutorial

+ +

Custom Page

+ +

Before you can start adding controls you need to create a nsDialogs custom page. nsDialogs pages can only be created in a custom page's creator function, not in sections nor regular functions. Lets create a basic script with a empty nsDialogs page as our skeleton:

+ +
!include LogicLib.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+XPStyle on
+
+
+Var Dialog
+
+Page custom nsDialogsPage
+Page instfiles
+
+Function nsDialogsPage
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	nsDialogs::Show
+FunctionEnd
+
+Section
+SectionEnd
+ +

The first call must always be to nsDialogs::Create. It will create a new dialog in the page and return its HWND on the stack. The result must be popped from the stack to prevent stack corruption. If the result is error, the dialog couldn't be created and the page must be aborted!

+

nsDialogs::Create accepts one parameter. It has a very specific function, but to keep things simple for this tutorial, it must always be 1018.

+

HWND is a number that uniquely identifies the dialog and can be used with SendMessage, SetCtlColors and Win32 API functions.

+

The dialog is not fully constructed at this point and you can make modifications to it before it is displayed. To finalize and display the dialog you must call nsDialogs::Show. This function will not return until the user clicks Next, Back or Cancel.

+
+ + +

Adding Controls

+ + +

Compiling the last script and running it results in an empty page which is not very useful. So now we'll add some controls to it to. To do so, we'll use ${NSD_Create*} macros from nsDialogs.nsh. Each of those macros takes 5 parameters - x, y, width, height and text. Each macro also returns one value on the stack, which is the new control's HWND. Like the dialogs HWND, it must be popped from the stack and saved.

+ +

Each of the measurements that the macros take can use one of three unit types - pixels, dialog units or percentage of the dialog's size. It can also be negative to indicate it should be measured from the end. To use dialog units, the measurement must be suffixed with the letter u. To use percentage, the measurement must be suffixed with the percentage sign - %. Any other suffix, or no suffix, means pixels.

+ +

Dialog units allow creation of dialogs that scale well when different fonts or DPI is used. Its size in pixels is determined at runtime based on the font and the DPI. For example, standard pages in the classic NSIS user interface are 266 dialog units wide and 130 dialog units high. Pages in Modern UI are 300 dialogs units wide and 140 dialog units high. In different resolutions, using different fonts or DPI settings, the dialogs will always have the same size in dialog units, but different size in pixels.

+
+
!include nsDialogs.nsh
+!include LogicLib.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+XPStyle on
+
+Var Dialog
+Var Label
+Var Text
+
+Page custom nsDialogsPage
+Page instfiles
+
+Function nsDialogsPage
+
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	${NSD_CreateLabel} 0 0 100% 12u "Hello, welcome to nsDialogs!"
+	Pop $Label
+
+	${NSD_CreateText} 0 13u 100% -13u "Type something here..."
+	Pop $Text
+
+	nsDialogs::Show
+
+FunctionEnd
+
+Section
+SectionEnd
+ +

Available control types that can be created with ${NSD_Create*} are: +HLine, +VLine, +Label, +Icon, +Bitmap, +BrowseButton, +Link, +Button, +GroupBox, +CheckBox, +RadioButton (FirstRadioButton and AdditionalRadioButton), +Text, +MLText, +Password, +Number, +FileRequest, +DirRequest, +RichEdit, +ComboBox, +DropList, +ListBox, +SortedListBox, +ProgressBar, +Animation, +HTrackBar, +VTrackBar, +UpDown, +HotKey, +DatePicker, +IPAddress, +NetAddress. +

+ +

Control State

+ + +

Now that we have some controls that the user can interact with, it's time to see what the user actually does with them. For that, we'll first add a "leave callback function" to our page. In that function, we'll query the state of the text control we've created and display it to the user. To do so, we'll use the ${NSD_GetText} macro. Use the ${NSD_GetState} macro for RadioButton and CheckBox controls.

+ +

Note that not all controls support ${NSD_GetText} and some require special handling with specific messages defined in WinMessages.nsh. For example, the ListBox control requires usage of LB_GETCURSEL and LB_GETTEXT. With time, the library of macros in nsDialogs.nsh will fill with more and more macros that'll handle more cases like this.

+
+
!include nsDialogs.nsh
+!include LogicLib.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+XPStyle on
+
+Var Dialog
+Var Label
+Var Text
+
+Page custom nsDialogsPage nsDialogsPageLeave
+Page instfiles
+
+Function nsDialogsPage
+
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	${NSD_CreateLabel} 0 0 100% 12u "Hello, welcome to nsDialogs!"
+	Pop $Label
+
+	${NSD_CreateText} 0 13u 100% -13u "Type something here..."
+	Pop $Text
+
+	nsDialogs::Show
+
+FunctionEnd
+
+Function nsDialogsPageLeave
+
+	${NSD_GetText} $Text $0
+	MessageBox MB_OK "You typed:$\n$\n$0"
+
+FunctionEnd
+
+Section
+SectionEnd
+ +

Real-time Notification

+ + +

One of the more exciting new features of nsDialogs is callback function notification of changes to the dialog. nsDialogs can call a function defined in a script in response to a user action such as changing of a text field or click of a button. To make nsDialogs notify us of events, we'll use ${NSD_OnClick} and ${NSD_OnChange}. Not every control supports both of the events. For example, there is nothing to notify about label changes, only clicks.

+ +

When the callback function is called, the control's HWND will be waiting on the stack and must be popped to prevent stack corruption. In this simple example, this is not so useful. But in case of a bigger script where several controls are associated with the same callback function, the HWND can shed some light on which control originated the event.

+ +

The new example will respond to the user typing "hello" in the text box.

+
+
!include nsDialogs.nsh
+!include LogicLib.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+XPStyle on
+
+Var Dialog
+Var Label
+Var Text
+
+Page custom nsDialogsPage nsDialogsPageLeave
+Page instfiles
+
+Function nsDialogsPage
+
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	${NSD_CreateLabel} 0 0 100% 12u "Hello, welcome to nsDialogs!"
+	Pop $Label
+
+	${NSD_CreateText} 0 13u 100% -13u "Type something here..."
+	Pop $Text
+	${NSD_OnChange} $Text nsDialogsPageTextChange
+
+	nsDialogs::Show
+
+FunctionEnd
+
+Function nsDialogsPageLeave
+
+	${NSD_GetText} $Text $0
+	MessageBox MB_OK "You typed:$\n$\n$0"
+
+FunctionEnd
+
+Function nsDialogsPageTextChange
+
+	Pop $1 # $1 == $ Text
+
+	${NSD_GetText} $Text $0
+
+	${If} $0 == "hello"
+
+		MessageBox MB_OK "right back at ya!"
+
+	${EndIf}
+
+FunctionEnd
+
+Section
+SectionEnd
+ +

Memory

+ +

So far we have a page that has some basic input controls. But what happens when the user goes to the next page and comes back? With the current code, the user's input will not be remembered. To remember, we'll use the already present leave callback function to store the user's choice in variables and pass these values when creating the controls the next time. For a better example, we'll also add a checkbox to the page and use ${NSD_GetState} and ${NSD_SetState} to get and set its state.

+ +

For clarity, we'll remove some of the notifications from the previous step.

+ +
!include nsDialogs.nsh
+!include LogicLib.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+XPStyle on
+
+Var Dialog
+Var Label
+Var Text
+Var Text_State
+Var Checkbox
+Var Checkbox_State
+
+Page custom nsDialogsPage nsDialogsPageLeave
+Page license
+Page instfiles
+
+Function .onInit
+
+	StrCpy $Text_State "Type something here..."
+
+FunctionEnd
+
+Function nsDialogsPage
+
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	${NSD_CreateLabel} 0 0 100% 12u "Hello, welcome to nsDialogs!"
+	Pop $Label
+
+	${NSD_CreateText} 0 13u 100% 12u $Text_State
+	Pop $Text
+
+	${NSD_CreateCheckbox} 0 30u 100% 10u "&Something"
+	Pop $Checkbox
+
+	${If} $Checkbox_State == ${BST_CHECKED}
+		${NSD_Check} $Checkbox
+	${EndIf}
+
+	# alternative for the above ${If}:
+	#${NSD_SetState} $Checkbox_State
+
+	nsDialogs::Show
+
+FunctionEnd
+
+Function nsDialogsPageLeave
+
+	${NSD_GetText} $Text $Text_State
+	${NSD_GetState} $Checkbox $Checkbox_State
+
+FunctionEnd
+
+Section
+SectionEnd
+ +

Function Reference

+ +

Create

+

nsDialogs::Create rect

+

Creates a new dialog. rect specific the identifier of the control whose location will be mimiced. This should usually be 1018, which is control mimiced for creation of built-in pages. The Modern UI also has control 1044 for the welcome and the finish page.

+

Returns the new dialog's HWND on the stack or error.

+ +

CreateControl

+

nsDialogs::CreateControl class style extended_style x y width height text

+

Create a new control in the current dialog. A dialog must exist for this to work, so nsDialogs::Create must be called prior to this function.

+

Returns the new control's HWND on the stack or error.

+ +

Show

+

nsDialogs::Show

+

Displays the page. Call this once finished with nsDialogs::Create, nsDialogs::CreateControl and the rest.

+

Returns nothing.

+ +

SelectFileDialog

+

nsDialogs::SelectFileDialog mode initial_selection filter

+

Displays a file selection dialog to the user. If mode is set to save, displays a file save dialog. If mode is set to open, displays a file open dialog. +

initial_selection can be used to provide the user with a default file to look for and/or a default folder to look in. If initial_selection is empty no default filename will be provided for the user and the dialog will start in the current working directory. If initial_selection specifies just a filename, for example "test.exe", the dialog will be set up to look for a file called test.exe in the current working directory. If initial_selection specifies just a directory, for example "C:\Program Files", the dialog starts in the provided directory with no file name provided. If initial_selection specifies a directory and a filename, for example "C:\Windows\System32\calc.exe", the dialog will be set up to look for a file called calc.exe in the directory C:\Windows\System32.

+

filter is a list of available file filter pairs separated by pipes. A filter pair consists of a display string and a DOS-style wildcard pattern. If an empty string is passed, the default is used ("All Files|*.*").

+

Returns the selected file on the stack or an empty string if the user canceled the operation.

+
+nsDialogs::SelectFileDialog open "$DOCUMENTS\Config.ini" ".ini files|*.ini|All Files|*.*"
+Pop $0
+StrCmp $0 "" ...
+
+ +

SelectFolderDialog

+

nsDialogs::SelectFolderDialog title initial_selection

+

Displays a directory selection dialog to the user.

+

Returns the selected directory on the stack or "error" in case the user canceled the operation or an error occurred.

+ +

SetRTL

+

nsDialogs::SetRTL rtl_setting

+

Sets right-to-left mode on or off. If rtl_setting is 0, it's set to off. If rtl_setting is 1, it's set to on. This function must be called before any calls to nsDialogs::CreateControl.

+

Returns nothing.

+ +

GetUserData

+

nsDialogs::GetUserData control_HWND

+

Returns user data associated with the control on the stack. Use nsDialogs::SetUserData to set this data.

+ +

SetUserData

+

nsDialogs::SetUserData control_HWND data

+

Associates data with the control. Use nsDialogs::GetUserData to get this data.

+

Returns nothing.

+ +

OnBack

+

nsDialogs::OnBack function_address

+

Sets the callback function for the Back button. This function will be called when the user clicks the back button. Call Abort in this function to prevent the user from going back to the last page.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

OnChange

+

nsDialogs::OnChange control_HWND function_address

+

Sets a change notification callback function for the given control. Whenever the control changes, the function will be called and the control's HWND will be waiting on its stack.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

OnClick

+

nsDialogs::OnClick control_HWND function_address

+

Sets a click notification callback function for the given control. Whenever the control is clicked, the function will be called and the control's HWND will be waiting on its stack.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

OnNotify

+

nsDialogs::OnNotify control_HWND function_address

+

Sets a notification callback function for the given control. Whenever the control receives the WM_NOTIFY message, the function will be called and the control's HWND, notification code and a pointer to the NMHDR structure will be waiting on its stack. Use ${NSD_Return} to return a value.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

CreateTimer

+

nsDialogs::CreateTimer function_address timer_interval

+

Sets a timer that'd call the callback function for the given control every in a constant interval. Interval times are specified in milliseconds.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

KillTimer

+

nsDialogs::KillTimer function_address

+

Kills a previously set timer.

+

Use GetFunctionAddress to get the address of the desired callback function.

+

Returns nothing.

+ +

Macro Reference

+

nsDialogs.nsh contains a lot of macros that can make nsDialogs usage a lot easier. Below is a description of each of those macros including purpose, syntax, input and output.

+ +

NSD_Create*

+

${NSD_Create*} x y width height text

+

Create a new control in the current dialog. A dialog must exist for this to work, so nsDialogs::Create must be called prior to this function.

+

Available variants:

+
    +
  • ${NSD_CreateHLine}
  • +
  • ${NSD_CreateVLine}
  • +
  • ${NSD_CreateLabel}
  • +
  • ${NSD_CreateIcon}
  • +
  • ${NSD_CreateBitmap}
  • +
  • ${NSD_CreateBrowseButton}
  • +
  • ${NSD_CreateLink}
  • +
  • ${NSD_CreateButton}
  • +
  • ${NSD_CreateGroupBox}
  • +
  • ${NSD_CreateCheckBox}
  • +
  • ${NSD_CreateRadioButton} (${NSD_CreateFirstRadioButton} and ${NSD_CreateAdditionalRadioButton})
  • +
  • ${NSD_CreateText}
  • +
  • ${NSD_CreateMLText}
  • +
  • ${NSD_CreatePassword}
  • +
  • ${NSD_CreateNumber}
  • +
  • ${NSD_CreateFileRequest}
  • +
  • ${NSD_CreateDirRequest}
  • +
  • ${NSD_CreateRichEdit}
  • +
  • ${NSD_CreateComboBox}
  • +
  • ${NSD_CreateDropList}
  • +
  • ${NSD_CreateListBox}
  • +
  • ${NSD_CreateSortedListBox}
  • +
  • ${NSD_CreateProgressBar}
  • +
  • ${NSD_CreateAnimation}
  • +
  • ${NSD_CreateHTrackBar}
  • +
  • ${NSD_CreateVTrackBar}
  • +
  • ${NSD_CreateUpDown}
  • +
  • ${NSD_CreateHotKey}
  • +
  • ${NSD_CreateDatePicker} (Requires IE 3.1 and ${NSD_InitCommonControlsEx})
  • +
  • ${NSD_CreateIPAddress} (Requires IE 4 and ${NSD_InitCommonControl_IPAddress})
  • +
  • ${NSD_CreateNetAddress} (Requires Vista and ${NSD_InitCommonControl_NetAddress})
  • +
+

Returns the new control's HWND on the stack or error

+ +

NSD_OnBack

+

${NSD_OnBack} function_name

+

See OnBack for more details.

+ +

NSD_OnChange

+

${NSD_OnChange} control_HWND function_name

+

See OnChange for more details.

+

See Real-time Notification for usage example.

+ +

NSD_OnClick

+

${NSD_OnClick} control_HWND function_name

+

See OnClick for more details.

+ +

NSD_OnNotify

+

${NSD_OnNotify} control_HWND function_name

+

See OnNotify for more details.

+ +

NSD_Return

+

${NSD_Return} value

+

Used to return a value back to Windows from a OnNotify callback.

+ +

NSD_SetFocus

+

${NSD_SetFocus} control_HWND

+

Sets focus to a control.

+ +

NSD_CreateTimer

+

${NSD_CreateTimer} function_name timer_interval

+

See CreateTimer for more details.

+ +

NSD_KillTimer

+

${NSD_KillTimer} function_name

+

See KillTimer for more details.

+ +

NSD_AddStyle

+

${NSD_AddStyle} control_HWND style

+

Adds one or more window styles to a control. Multiple styles should be separated with pipes `|'.

+

See MSDN for shared and per-control style descriptions.

+ +

NSD_AddExStyle

+

${NSD_AddExStyle} control_HWND style

+

Adds one or more extended window styles to a control. Multiple styles should be separated with pipes `|'.

+

See MSDN for style descriptions.

+ +

NSD_RemoveStyle

+

${NSD_RemoveStyle} control_HWND style

+

Removes one or more window styles from a control.

+ +

NSD_RemoveExStyle

+

${NSD_RemoveExStyle} control_HWND style

+

Removes one or more extended window styles from a control.

+ +

NSD_GetText

+

${NSD_GetText} control_HWND $output_variable

+

Retrieves the text of a control and stores it into output_variable. Especially useful for textual controls.

+

See Control State for usage example.

+ +

NSD_SetText

+

${NSD_SetText} control_HWND text

+

Sets the text of a control.

+ +

NSD_Edit_SetTextLimit

+

${NSD_Edit_SetTextLimit} control_HWND limit

+

Sets the input length limit for a text control.

+ +

NSD_Edit_SetReadOnly

+

${NSD_Edit_SetReadOnly} control_HWND readonly

+

1 to make the text control read-only or 0 to allow the user to input data.

+ +

NSD_Edit_SetCueBannerText

+

${NSD_Edit_SetCueBannerText} control_HWND displaywhenfocused text

+

Set a text hint displayed when the control is empty. The text is only visible on WinXP and later. Requires XPStyle on.

+ +

NSD_RichEd_SetTextLimit

+

${NSD_RichEd_SetTextLimit} control_HWND limit

+

Sets the input length limit.

+ +

NSD_RichEd_SetEventMask

+

${NSD_RichEd_SetEventMask} control_HWND eventmask

+ +

NSD_RichEd_SetCustomBackgroundColor

+

${NSD_RichEd_SetCustomBackgroundColor} control_HWND COLORREF

+ +

NSD_GetState

+

${NSD_GetState} control_HWND $output_variable

+

Retrieves the state of a check box or a radio button control. Possible outputs are ${BST_CHECKED} and ${BST_UNCHECKED}.

+

See Memory for usage example.

+ +

NSD_SetState

+

${NSD_SetState} control_HWND state

+

Sets the state of a check box or a radio button control. Possible values for state are ${BST_CHECKED} and ${BST_UNCHECKED}.

+

See Memory for usage example.

+ +

NSD_Check

+

${NSD_Check} control_HWND

+

Checks a check box or a radio button control. Same as calling ${NSD_SetState} with ${BST_CHECKED}.

+ +

NSD_Uncheck

+

${NSD_Uncheck} control_HWND

+

Unchecks a check box or a radio button control. Same as calling ${NSD_SetState} with ${BST_UNCHECKED}.

+

See Memory for usage example.

+ +

NSD_CB_AddString

+

${NSD_CB_AddString} combo_HWND string

+

Adds a string to a combo box.

+ +

NSD_CB_InsertString

+

${NSD_CB_InsertString} combo_HWND index string

+

${NSD_CB_PrependString} combo_HWND string

+

${NSD_CB_AppendString} combo_HWND string

+

Insert a string in a specified position in a combo box.

+ +

NSD_CB_SelectString

+

${NSD_CB_SelectString} combo_HWND string

+

Selects a string in a combo box.

+ +

NSD_CB_GetCount

+

${NSD_CB_GetCount} combo_HWND $output_variable

+ +

NSD_LB_AddString

+

${NSD_LB_AddString} listbox_HWND string

+

Adds a string to a list box.

+ +

NSD_LB_InsertString

+

${NSD_LB_InsertString} listbox_HWND index string

+

${NSD_LB_PrependString} listbox_HWND string

+

${NSD_LB_AppendString} listbox_HWND string

+

Insert a string in a specified position in a list box.

+ +

NSD_LB_DelString

+

${NSD_LB_DelString} listbox_HWND string

+

Deletes a string from a list box.

+ +

NSD_LB_DelItem

+

${NSD_LB_DelItem} listbox_HWND itemindex

+

Deletes a string from a list box.

+ +

NSD_LB_Clear

+

${NSD_LB_Clear} listbox_HWND

+

Deletes all strings from a list box.

+ +

NSD_LB_GetCount

+

${NSD_LB_GetCount} listbox_HWND $output_variable

+

Retrieves the number of strings from a list box.

+ +

NSD_LB_SelectString

+

${NSD_LB_SelectString} listbox_HWND string

+

Selects a string in a list box.

+ +

NSD_LB_GetSelection

+

${NSD_LB_GetSelection} listbox_HWND $output_variable

+

Retrieves the selected string from a list box. Returns an empty string if no string is selected.

+ +

NSD_Anim_OpenFile

+

${NSD_Anim_OpenFile} anim_HWND avi_path

+

Opens the specified (silent) .AVI movie clip.

+ +

NSD_Anim_Play

+

${NSD_Anim_Play} anim_HWND

+

Plays the movie clip repeatedly.

+ +

NSD_Anim_Stop

+

${NSD_Anim_Stop} anim_HWND

+

Stops playback.

+ +

NSD_TrackBar_GetPos

+

${NSD_TrackBar_GetPos} track_HWND $output

+ +

NSD_TrackBar_SetPos

+

${NSD_TrackBar_SetPos} track_HWND pos

+ +

NSD_TrackBar_SetRangeMin

+

${NSD_TrackBar_SetRangeMin} track_HWND minpos

+ +

NSD_TrackBar_SetRangeMax

+

${NSD_TrackBar_SetRangeMax} track_HWND maxpos

+ +

NSD_TrackBar_SetTicFreq

+

${NSD_TrackBar_SetTicFreq} track_HWND frequency

+

Sets the interval frequency for tick marks.

+ +

NSD_UD_SetBuddy

+

${NSD_UD_SetBuddy} ud_HWND buddy_HWND

+ +

NSD_UD_GetPos

+

${NSD_UD_GetPos} ud_HWND $output

+ +

NSD_UD_SetPos

+

${NSD_UD_SetPos} ud_HWND pos

+ +

NSD_UD_SetPackedRange

+

${NSD_UD_SetPackedRange} ud_HWND packedrange

+

Sets the min-max range. Two signed 16-bit numbers packed into 32-bits.

+ +

NSD_HK_GetHotKey

+

${NSD_HK_GetHotKey} hk_HWND $output

+

Bits 0..7 specify the virtual key code and bits 8..15 specify the HOTKEYF modifier flags.

+ +

NSD_HK_SetHotKey

+

${NSD_HK_SetHotKey} hk_HWND packedhotkey

+ +

NSD_Date_GetDateFields

+

${NSD_Date_GetDateFields} HWND

+

Returns the month, day and year on the stack.

+ +

NSD_SetBitmap

+

${NSD_SetBitmap} control_HWND image_path $output_variable

+

Loads a bitmap from image_path and displays it on control_HWND created by ${NSD_CreateBitmap}. The image handle is stored in output_variable and should be freed using ${NSD_FreeBitmap} once no longer necessary.

+

The image must be extracted to the user's computer prior to calling this macro. A good place to extract images is $PLUGINSDIR.

+
!include nsDialogs.nsh
+
+Name nsDialogs
+OutFile nsDialogs.exe
+
+Page custom nsDialogsImage
+Page instfiles
+
+Var Dialog
+Var ImageCtrl
+Var BmpHandle
+
+Function .onInit
+	InitPluginsDir
+	File /oname=$PLUGINSDIR\image.bmp "${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp"
+FunctionEnd
+
+Function nsDialogsImage
+	nsDialogs::Create 1018
+	Pop $Dialog
+
+	${If} $Dialog == error
+		Abort
+	${EndIf}
+
+	${NSD_CreateBitmap} 0 0 100% 100% ""
+	Pop $ImageCtrl
+	${NSD_SetBitmap} $ImageCtrl $PLUGINSDIR\image.bmp $BmpHandle
+
+	nsDialogs::Show
+
+	${NSD_FreeBitmap} $BmpHandle
+FunctionEnd
+
+Section
+SectionEnd
+ +

NSD_SetStretchedBitmap

+

${NSD_SetStretchedBitmap} control_HWND image_path $output_variable

+

Loads and displays a bitmap just like ${NSD_SetImage} but stretches the image to fit the control.

+ +

NSD_ClearBitmap

+

${NSD_ClearBitmap} control_HWND

+

Clears a bitmap from a image control.

+ +

NSD_FreeBitmap

+

${NSD_FreeImage} image_handle

+

Frees an image handle previously loaded with ${NSD_SetImage} or ${NSD_SetStretchedBitmap}.

+ +

NSD_SetIcon

+

${NSD_SetIcon} control_HWND image_path $output_variable

+

Same as ${NSD_SetImage}, but used for loading and setting an icon in a control created by ${NSD_CreateIcon}. The image handle is stored in output_variable and should be freed using ${NSD_FreeIcon} once no longer necessary.

+ +

NSD_SetIconFromInstaller

+

${NSD_SetIconFromInstaller} control_HWND $output_variable

+

Loads the icon used in the installer and displays it on control_HWND created by ${NSD_CreateIcon}. The image handle is stored in output_variable and should be freed using ${NSD_FreeIcon} once no longer necessary.

+ +

NSD_ClearIcon

+

${NSD_ClearIcon} control_HWND

+

Clears an icon from a control.

+ +

NSD_FreeIcon

+

${NSD_FreeIcon} icon_handle

+

Frees an icon handle previously loaded with ${NSD_SetIcon} or ${NSD_SetIconFromInstaller}.

+ + +

FAQ

+
+
    +
  • +Q: Can nsDialogs handle InstallOptions INI files? +
    +

    A: nsDialogs.nsh contains a function called CreateDialogFromINI that can create nsDialogs' dialog from an INI file. It can handle every type of control InstallOptions supports, but doesn't handle the flags or notifications. Examples\nsDialogs\InstallOptions.nsi shows a usage example of this function.

    +
    +
  • +
+
+ + + diff --git a/tools/Docs/nsExec/nsExec.txt b/tools/Docs/nsExec/nsExec.txt new file mode 100644 index 0000000..c87923d --- /dev/null +++ b/tools/Docs/nsExec/nsExec.txt @@ -0,0 +1,55 @@ +nsExec +------ +nsExec will execute command-line based programs and capture the output +without opening a dos box. + + +Usage +----- +nsExec::Exec [/MBCS] [/OEM] [/TIMEOUT=x] path +Pop $0 + +-or- + +nsExec::ExecToLog [/MBCS] [/OEM] [/TIMEOUT=x] path +Pop $0 + +-or- + +nsExec::ExecToStack [/MBCS] [/OEM] [/TIMEOUT=x] path +Pop $0 ; Return +Pop $1 ; Output + +All functions are the same except ExecToLog will print the output +to the log window and ExecToStack will push up to ${NSIS_MAX_STRLEN} +characters of output onto the stack after the return value. + +Use the /MBCS switch to disable Unicode detection and always treat the text as ANSI. + +Use the /OEM switch to convert the output text from OEM to ANSI. + +The timeout value is optional. The timeout is the time in +milliseconds nsExec will wait for output. If output from the +process is received, the timeout value is reset and it will +again wait for more output using the timeout value. See Return +Value for how to check if there was a timeout. + +To ensure that command are executed without problems on all windows versions, +is recommended to use the following syntax: + + nsExec::ExecToStack [OPTIONS] '"PATH" param1 param2 paramN' + +This way the application path may contain non 8.3 paths (with spaces) + +Return Value +------------ +If nsExec is unable to execute the process, it will return "error" +on the top of the stack, if the process timed out it will return +"timeout", else it will return the return code from the +executed process. + + +Copyright Info +-------------- +Copyright (c) 2002 Robert Rainwater +Thanks to Justin Frankel and Amir Szekely \ No newline at end of file diff --git a/tools/Examples/AdvSplash/Example.nsi b/tools/Examples/AdvSplash/Example.nsi new file mode 100644 index 0000000..751c836 --- /dev/null +++ b/tools/Examples/AdvSplash/Example.nsi @@ -0,0 +1,35 @@ +Name "AdvSplash.dll test" + +OutFile "AdvSplash Test.exe" + +XPStyle on + +Function .onInit + # the plugins dir is automatically deleted when the installer exits + InitPluginsDir + File /oname=$PLUGINSDIR\splash.bmp "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" + #optional + #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav" + + MessageBox MB_OK "Fading" + + advsplash::show 1000 600 400 -1 $PLUGINSDIR\splash + + Pop $0 ; $0 has '1' if the user closed the splash screen early, + ; '0' if everything closed normally, and '-1' if some error occurred. + + MessageBox MB_OK "Transparency" + File /oname=$PLUGINSDIR\splash.bmp "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp" + advsplash::show 2000 0 0 0x1856B1 $PLUGINSDIR\splash + Pop $0 + + MessageBox MB_OK "Transparency/Fading" + File /oname=$PLUGINSDIR\splash.bmp "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp" + advsplash::show 1000 600 400 0x04025C $PLUGINSDIR\splash + Pop $0 + + Delete $PLUGINSDIR\splash.bmp +FunctionEnd + +Section +SectionEnd \ No newline at end of file diff --git a/tools/Examples/AppGen.nsi b/tools/Examples/AppGen.nsi new file mode 100644 index 0000000..d0fd977 --- /dev/null +++ b/tools/Examples/AppGen.nsi @@ -0,0 +1,78 @@ +/* +Note: This is not a installer example script, it's a script for a simple application used by some of the other examples. +*/ + +!define /math ARCBITS ${NSIS_PTR_SIZE} * 8 +Name "${NAME}" +!define /IfNDef OUTFILE "" +OutFile "${OUTFILE}" +Unicode True +!define /IfNDef REL User +RequestExecutionLevel ${REL} +XPStyle On +ManifestDPIAware True +AutoCloseWindow True +BrandingText " " +Caption "$(^Name) (${ARCBITS}-bit)" +MiscButtonText " " " " "E&xit" " " +LicenseBkColor /windows + +!ifdef COMPANY +!ifndef NOPEVI +!define /IfNDef VER 1.2.3.4 +VIProductVersion ${VER} +VIAddVersionKey /LANG=0 "FileVersion" "${VER}" +VIAddVersionKey /LANG=0 "CompanyName" "${COMPANY}" +VIAddVersionKey /LANG=0 "LegalCopyright" "${U+00A9} ${COMPANY}" +VIAddVersionKey /LANG=0 "FileDescription" "${NAME}" +!endif +!endif + +!include WinMessages.nsh +!include LogicLib.nsh + +PageEx License + Caption " " + LicenseText "$ExeFile$\n$ExePath" "E&xit" + PageCallbacks "" OnShow +PageExEnd +Page InstFiles + + +Function .onInit +!ifdef AUMI +System::Call 'SHELL32::SetCurrentProcessExplicitAppUserModelID(ws)' "${AUMI}" +!endif +FunctionEnd + + +Function OnShow +FindWindow $0 "#32770" "" $hWndParent +GetDlgItem $R9 $0 0x3E8 + +!ifdef MSG +SendMessage $R9 ${EM_REPLACESEL} "" "STR:${MSG}$\r$\n$\r$\n" +!endif + +!ifdef TMPLDATA +${IfNot} ${FileExists} "$AppData\${NAME}\*" + ; Copy template data from the shared source to this users profile + CreateDirectory "$AppData\${NAME}" + CopyFiles /Silent "${TMPLDATA}\*" "$AppData\${NAME}" +${EndIf} +ReadIniStr $2 "$AppData\${NAME}\Data.ini" Example Count +IntOp $2 $2 + 1 +WriteIniStr "$AppData\${NAME}\Data.ini" Example Count $2 +SendMessage $R9 ${EM_REPLACESEL} "" "STR:Launch Count=$2$\r$\n$\r$\n" +!endif + +SendMessage $R9 ${EM_REPLACESEL} "" "STR:CmdLine=$CmdLine$\r$\n" +ReadEnvStr $2 "USERNAME" +SendMessage $R9 ${EM_REPLACESEL} "" "STR:%USERNAME%=$2$\r$\n" +ReadEnvStr $2 "__COMPAT_LAYER" +StrCmp $2 "" +2 +SendMessage $R9 ${EM_REPLACESEL} "" "STR:Compatibility=$2$\r$\n" +FunctionEnd + +Section +SectionEnd diff --git a/tools/Examples/Banner/Example.nsi b/tools/Examples/Banner/Example.nsi new file mode 100644 index 0000000..2a98e87 --- /dev/null +++ b/tools/Examples/Banner/Example.nsi @@ -0,0 +1,38 @@ +# Look at Readme.txt for usage alongside with the Modern UI + +!include "WinMessages.nsh" + +Name "Banner.dll test" + +OutFile "Banner Test.exe" + +ShowInstDetails show + +Function .onInit + Banner::show "Calculating important stuff..." + + Banner::getWindow + Pop $1 + + again: + IntOp $0 $0 + 1 + Sleep 1 + StrCmp $0 100 0 again + + GetDlgItem $2 $1 1030 + SendMessage $2 ${WM_SETTEXT} 0 "STR:Calculating more important stuff..." + + again2: + IntOp $0 $0 + 1 + Sleep 1 + StrCmp $0 200 0 again2 + + Banner::destroy +FunctionEnd + +Section + DetailPrint "Using previous calculations to quickly calculate 1*2000..." + Sleep 1000 + DetailPrint "Eureka! It's $0!!!" + DetailPrint "" +SectionEnd \ No newline at end of file diff --git a/tools/Examples/BgImage/Example.nsi b/tools/Examples/BgImage/Example.nsi new file mode 100644 index 0000000..a0dc2ce --- /dev/null +++ b/tools/Examples/BgImage/Example.nsi @@ -0,0 +1,101 @@ +Name "BgImage.dll test" + +OutFile "BgImage Test.exe" + +XPStyle on +RequestExecutionLevel user + +!define DEBUG +!macro GetReturnValue +!ifdef DEBUG + Pop $R9 + StrCmp $R9 success +2 + DetailPrint "Error: $R9" +!endif +!macroend + +Function .onGUIInit + # the plugins dir is automatically deleted when the installer exits + InitPluginsDir + # lets extract some bitmaps... + File /oname=$PLUGINSDIR\1.bmp "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp" + File /oname=$PLUGINSDIR\2.bmp "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" + +!ifdef DEBUG + # turn return values on if in debug mode + BgImage::SetReturn on +!endif + + # set the initial background for images to be drawn on + # we will use a gradient from drak green to dark red + BgImage::SetBg /GRADIENT 0 0x80 0 0x80 0 0 + !insertmacro GetReturnValue + # add an image @ (150,0) + BgImage::AddImage $PLUGINSDIR\2.bmp 150 0 + !insertmacro GetReturnValue + # add the same image only transparent (magenta wiped) @ (150,16) + BgImage::AddImage /TRANSPARENT 255 0 255 $PLUGINSDIR\2.bmp 150 16 + !insertmacro GetReturnValue + # create the font for the following text + CreateFont $R0 "Comic Sans MS" 50 700 + # add a blue shadow for the text + BgImage::AddText "Testing 1... 2... 3..." $R0 0 0 255 48 48 798 198 + !insertmacro GetReturnValue + # add a green shadow for the text + BgImage::AddText "Testing 1... 2... 3..." $R0 0 255 0 52 52 802 202 + !insertmacro GetReturnValue + # add the text + BgImage::AddText "Testing 1... 2... 3..." $R0 255 0 0 50 50 800 200 + !insertmacro GetReturnValue + # show our creation to the world! + BgImage::Redraw + # Refresh doesn't return any value + +FunctionEnd + +ShowInstDetails show + +Section + # play some sounds + FindFirst $0 $1 $WINDIR\Media\*.wav + StrCmp $0 "" skipSound + moreSounds: + StrCmp $1 "" noMoreSounds + BgImage::Sound /WAIT $WINDIR\Media\$1 + # Sound doesn't return any value either + MessageBox MB_YESNO "Another sound?" IDNO noMoreSounds + FindNext $0 $1 + Goto moreSounds + + noMoreSounds: + FindClose $0 + skipSound: + + # change the background image to Mike, tiled + BgImage::SetBg /TILED $PLUGINSDIR\1.bmp + !insertmacro GetReturnValue + # we have to redraw to reflect the changes + BgImage::Redraw + + MessageBox MB_OK "Mike the llama" + + # clear everything + BgImage::Clear + # Clear doesn't return any value + # set another gradient + BgImage::SetBg /GRADIENT 0xFF 0xFA 0xBA 0xAA 0xA5 0x65 + !insertmacro GetReturnValue + # add some text + BgImage::AddText "A Desert for Mike" $R0 0 0 0 50 50 800 150 + !insertmacro GetReturnValue + # add mike as an image + BgImage::AddImage $PLUGINSDIR\1.bmp 50 150 + !insertmacro GetReturnValue + # again, we have to call redraw to reflect changes + BgImage::Redraw +SectionEnd + +Function .onGUIEnd + BgImage::Destroy + # Destroy doesn't return any value +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/FileFunc.ini b/tools/Examples/FileFunc.ini new file mode 100644 index 0000000..5b227f4 --- /dev/null +++ b/tools/Examples/FileFunc.ini @@ -0,0 +1,91 @@ +[Settings] +NumFields=11 +NextButtonText=&Enter + +[Field 1] +Type=Droplist +Flags=NOTIFY +State=" 1. Locate" +ListItems=| 1. Locate| 2. GetSize (file)| (directory)| (no size, no subdir)| 3. DriveSpace| 4. GetDrives (by type)| (all by letter)| 5. GetTime (local time)| (file time)| 6. GetFileAttributes| 7. GetFileVersion| 8. GetExeName| 9. GetExePath|10. GetParameters|11. GetOptions|12. GetRoot|13. GetParent|14. GetFileName|15. GetBaseName|16. GetFileExt|17. BannerTrimPath|18. DirState|19. RefreshShellIcons +Left=44 +Right=190 +Top=1 +Bottom=210 + +[Field 2] +Type=FileRequest +Left=44 +Right=-10 +Top=22 +Bottom=33 + +[Field 3] +Type=DirRequest +Left=44 +Right=-10 +Top=22 +Bottom=33 + +[Field 4] +Type=Text +Left=44 +Right=-10 +Top=36 +Bottom=49 + +[Field 5] +Type=Text +State=LocateCallback +Left=44 +Right=232 +Top=53 +Bottom=66 + +[Field 6] +Type=Button +Text=view +Flags=NOTIFY +Left=236 +Right=255 +Top=54 +Bottom=65 + +[Field 7] +Type=Text +Flags=MULTILINE|VSCROLL|HSCROLL|READONLY +Left=44 +Right=-10 +Top=73 +Bottom=128 + +[Field 8] +Type=Label +Text=Path +Left=10 +Right=43 +Top=24 +Bottom=36 + +[Field 9] +Type=Label +Text=Options +Left=10 +Right=43 +Top=40 +Bottom=52 + +[Field 10] +Type=Label +Text=Function +Left=10 +Right=44 +Top=56 +Bottom=67 + +[Field 11] +Type=Label +Text=Result: +Left=12 +Right=42 +Top=94 +Bottom=102 diff --git a/tools/Examples/FileFunc.nsi b/tools/Examples/FileFunc.nsi new file mode 100644 index 0000000..f109ec7 --- /dev/null +++ b/tools/Examples/FileFunc.nsi @@ -0,0 +1,732 @@ +;_____________________________________________________________________________ +; +; File Functions +;_____________________________________________________________________________ +; +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "File Functions" +OutFile "FileFunc.exe" +Caption "$(^Name)" +XPStyle on +RequestExecutionLevel user + +!include "WinMessages.nsh" +!include "FileFunc.nsh" + +Var INI +Var HWND +Var STATE +Var FUNCTION +Var LOCATE1 +Var LOCATE2 +Var GETSIZE1 +Var GETSIZE2 +Var GETSIZE3 +Var GETSIZE4 +Var GETSIZE5 +Var GETSIZE6 +Var DRIVESPACE1 +Var DRIVESPACE2 +Var GETDRIVES1 +Var GETTIME1 +Var GETTIME2 +Var GETFILEATTRIBUTES1 +Var GETFILEATTRIBUTES2 +Var GETFILEVERSION1 +Var GETOPTIONS1 +Var GETOPTIONS2 +Var GETROOT1 +Var GETPARENT1 +Var GETFILENAME1 +Var GETBASENAME1 +Var GETFILEEXT1 +Var BANNERTRIMPATH1 +Var BANNERTRIMPATH2 +Var DIRSTATE1 + +Page Custom ShowCustom LeaveCustom + +Function ShowCustom + InstallOptions::initDialog "$INI" + Pop $hwnd + GetDlgItem $1 $HWND 1201 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1202 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1206 + EnableWindow $1 0 + SendMessage $1 ${WM_ENABLE} 1 0 + StrCpy $LOCATE1 $DOCUMENTS + StrCpy $LOCATE2 '/L=FD /M=*.* /S=0B /G=1 /B=0' + StrCpy $GETSIZE1 '$WINDIR' + StrCpy $GETSIZE2 '/M=Explorer.exe /S=0K /G=0' + StrCpy $GETSIZE3 '$PROGRAMFILES\Common Files' + StrCpy $GETSIZE4 '/S=0M' + StrCpy $GETSIZE5 '$WINDIR' + StrCpy $GETSIZE6 '/G=0' + StrCpy $DRIVESPACE1 'C:\' + StrCpy $DRIVESPACE2 '/D=F /S=M' + StrCpy $GETDRIVES1 'FDD+CDROM' + StrCpy $GETTIME1 '$WINDIR\Explorer.exe' + StrCpy $GETTIME2 'C' + StrCpy $GETFILEATTRIBUTES1 'C:\IO.SYS' + StrCpy $GETFILEATTRIBUTES2 'ALL' + StrCpy $GETFILEVERSION1 '$WINDIR\Explorer.exe' + StrCpy $GETOPTIONS1 '/SILENT=yes /INSTDIR="$PROGRAMFILES\Common Files"' + StrCpy $GETOPTIONS2 '/INSTDIR=' + StrCpy $GETROOT1 'C:\path\file.dll' + StrCpy $GETPARENT1 'C:\path\file.dll' + StrCpy $GETFILENAME1 'C:\path\file.dll' + StrCpy $GETBASENAME1 'C:\path\file.dll' + StrCpy $GETFILEEXT1 'C:\path\file.dll' + StrCpy $BANNERTRIMPATH1 'C:\Server\Documents\Terminal\license.htm' + StrCpy $BANNERTRIMPATH2 '34A' + StrCpy $DIRSTATE1 '$TEMP' + + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1" + GetDlgItem $1 $HWND 1205 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2" + InstallOptions::show + Pop $0 +FunctionEnd + +Function LeaveCustom + ReadINIStr $STATE $INI "Field 1" "State" + ReadINIStr $R1 $INI "Field 2" "State" + ReadINIStr $R2 $INI "Field 3" "State" + ReadINIStr $R3 $INI "Field 4" "State" + ReadINIStr $R4 $INI "Field 5" "State" + ReadINIStr $0 $INI "Settings" "State" + StrCmp $0 6 view + StrCmp $0 0 Enter + goto main + + view: + StrCpy $0 '$$' + StrCpy $1 'n' + StrCpy $2 'r' + StrCmp $R4 "LocateCallback" 0 +3 + StrCpy $R0 `Function LocateCallback$\r$\n MessageBox MB_OKCANCEL '$0$$R9 "path\name"=[$$R9]$0\$1$0$$R8 "path" =[$$R8]$0\$1$0$$R7 "name" =[$$R7]$0\$1$0$$R6 "size" =[$$R6]' IDOK +2$\r$\n StrCpy $$R0 StopLocate$\r$\n$\r$\n Push $$R0$\r$\nFunctionEnd` + goto send + StrCmp $R4 "GetDrivesCallback" 0 error + StrCpy $R0 `Function GetDrivesCallback$\r$\n MessageBox MB_OKCANCEL '$0$$9 "drive letter"=[$$9]$0\$1$0$$8 "drive type" =[$$8]' IDOK +2$\r$\n StrCpy $$R0 StopGetDrives$\r$\n StrCpy $$R5 '$$R5$$9 [$$8 Drive]$$\$2$$\$1'$\r$\n$\r$\n Push $$R0$\r$\nFunctionEnd` + goto send + + main: + StrCmp $FUNCTION '' DefaultSend + StrCmp $FUNCTION Locate 0 +4 + StrCpy $LOCATE1 $R2 + StrCpy $LOCATE2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetSize1 0 +4 + StrCpy $GETSIZE1 $R2 + StrCpy $GETSIZE2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetSize2 0 +4 + StrCpy $GETSIZE3 $R2 + StrCpy $GETSIZE4 $R3 + goto DefaultSend + StrCmp $FUNCTION GetSize3 0 +4 + StrCpy $GETSIZE5 $R2 + StrCpy $GETSIZE6 $R3 + goto DefaultSend + StrCmp $FUNCTION DriveSpace 0 +4 + StrCpy $DRIVESPACE1 $R1 + StrCpy $DRIVESPACE2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetDrives 0 +3 + StrCpy $GETDRIVES1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetTime 0 +4 + StrCpy $GETTIME1 $R1 + StrCpy $GETTIME2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetFileAttributes 0 +4 + StrCpy $GETFILEATTRIBUTES1 $R1 + StrCpy $GETFILEATTRIBUTES2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetFileVersion 0 +3 + StrCpy $GETFILEVERSION1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetOptions 0 +4 + StrCpy $GETOPTIONS1 $R1 + StrCpy $GETOPTIONS2 $R3 + goto DefaultSend + StrCmp $FUNCTION GetRoot 0 +3 + StrCpy $GETROOT1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetParent 0 +3 + StrCpy $GETPARENT1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetFileName 0 +3 + StrCpy $GETFILENAME1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetBaseName 0 +3 + StrCpy $GETBASENAME1 $R1 + goto DefaultSend + StrCmp $FUNCTION GetFileExt 0 +3 + StrCpy $GETFILEEXT1 $R1 + goto DefaultSend + StrCmp $FUNCTION BannerTrimPath 0 +4 + StrCpy $BANNERTRIMPATH1 $R1 + StrCpy $BANNERTRIMPATH2 $R3 + goto DefaultSend + StrCmp $FUNCTION DirState 0 +2 + StrCpy $DIRSTATE1 $R2 + + DefaultSend: + GetDlgItem $1 $HWND 1201 + EnableWindow $1 1 + ShowWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1202 + EnableWindow $1 1 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1203 + EnableWindow $1 1 + ShowWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1204 + EnableWindow $1 1 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1205 + EnableWindow $1 1 + GetDlgItem $1 $HWND 1206 + ShowWindow $1 0 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1207 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + + ReadINIStr $0 $INI "Field 1" "State" + StrCmp $0 " 1. Locate" 0 GetSize1Send + StrCpy $FUNCTION Locate + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1" + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2" + GetDlgItem $1 $HWND 1206 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:LocateCallback" + GetDlgItem $1 $HWND 1207 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Path" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Options" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Function" + abort + + GetSize1Send: + StrCmp $0 " 2. GetSize (file)" 0 GetSize2Send + StrCpy $FUNCTION 'GetSize1' + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE1" + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:File" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Options" + Abort + + GetSize2Send: + StrCmp $0 " (directory)" 0 GetSize3Send + StrCpy $FUNCTION 'GetSize2' + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE3" + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE4" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Options" + Abort + + GetSize3Send: + StrCmp $0 " (no size, no subdir)" 0 DriveSpaceSend + StrCpy $FUNCTION 'GetSize3' + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE5" + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE6" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Options" + Abort + + DriveSpaceSend: + StrCmp $0 " 3. DriveSpace" 0 GetDrivesSend + StrCpy $FUNCTION DriveSpace + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE2" + GetDlgItem $1 $HWND 1206 + ShowWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1207 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Drive" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Options" + abort + + GetDrivesSend: + StrCmp $0 " 4. GetDrives (by type)" 0 GetDrives2Send + StrCpy $FUNCTION GetDrives + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETDRIVES1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1206 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback" + GetDlgItem $1 $HWND 1207 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Function" + abort + + GetDrives2Send: + StrCmp $0 " (all by letter)" 0 GetTime1Send + StrCpy $FUNCTION '' + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + EnableWindow $1 0 + SendMessage $1 ${WM_ENABLE} 1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:ALL" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1206 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback" + GetDlgItem $1 $HWND 1207 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Function" + abort + + GetTime1Send: + StrCmp $0 " 5. GetTime (local time)" 0 GetTime2Send + StrCpy $FUNCTION '' + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + EnableWindow $1 0 + SendMessage $1 ${WM_ENABLE} 1 0 + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + EnableWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:L" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + Abort + + GetTime2Send: + StrCmp $0 " (file time)" 0 GetFileAttributesSend + StrCpy $FUNCTION GetTime + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:File" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + Abort + + GetFileAttributesSend: + StrCmp $0 " 6. GetFileAttributes" 0 GetFileVersionSend + StrCpy $FUNCTION GetFileAttributes + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Path" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Attrib" + Abort + + GetFileVersionSend: + StrCmp $0 " 7. GetFileVersion" 0 GetCmdSend + StrCpy $FUNCTION GetFileVersion + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEVERSION1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:File" + Abort + + GetCmdSend: + StrCmp $0 " 8. GetExeName" +3 + StrCmp $0 " 9. GetExePath" +2 + StrCmp $0 "10. GetParameters" 0 GetOptionsSend + StrCpy $FUNCTION '' + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + Abort + + GetOptionsSend: + StrCmp $0 "11. GetOptions" 0 GetRootSend + StrCpy $FUNCTION GetOptions + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Parameters" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + Abort + + GetRootSend: + StrCmp $0 "12. GetRoot" 0 GetParentSend + StrCpy $FUNCTION GetRoot + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETROOT1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:FullPath" + Abort + + GetParentSend: + StrCmp $0 "13. GetParent" 0 GetFileNameSend + StrCpy $FUNCTION GetParent + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETPARENT1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString" + Abort + + GetFileNameSend: + StrCmp $0 "14. GetFileName" 0 GetBaseNameSend + StrCpy $FUNCTION GetFileName + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILENAME1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString" + Abort + + GetBaseNameSend: + StrCmp $0 "15. GetBaseName" 0 GetFileExtSend + StrCpy $FUNCTION GetBaseName + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETBASENAME1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString" + Abort + + GetFileExtSend: + StrCmp $0 "16. GetFileExt" 0 BannerTrimPathSend + StrCpy $FUNCTION GetFileExt + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEEXT1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString" + Abort + + BannerTrimPathSend: + StrCmp $0 "17. BannerTrimPath" 0 DirStateSend + StrCpy $FUNCTION BannerTrimPath + GetDlgItem $1 $HWND 1201 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH1" + GetDlgItem $1 $HWND 1202 + ShowWindow $1 1 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + Abort + + DirStateSend: + StrCmp $0 "18. DirState" 0 RefreshShellIconsSend + StrCpy $FUNCTION DirState + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$DIRSTATE1" + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory" + Abort + + RefreshShellIconsSend: + StrCmp $0 "19. RefreshShellIcons" 0 Abort + StrCpy $FUNCTION '' + GetDlgItem $1 $HWND 1205 + ShowWindow $1 0 + + Abort: + Abort + +;=Enter= + Enter: + StrCpy $R0 '' + StrCpy $R5 '' + + StrCmp $STATE " 1. Locate" Locate + StrCmp $STATE " 2. GetSize (file)" GetSize + StrCmp $STATE " (directory)" GetSize + StrCmp $STATE " (no size, no subdir)" GetSize + StrCmp $STATE " 3. DriveSpace" DriveSpace + StrCmp $STATE " 4. GetDrives (by type)" GetDrives + StrCmp $STATE " (all by letter)" GetDrives + StrCmp $STATE " 5. GetTime (local time)" GetTime + StrCmp $STATE " (file time)" GetTime + StrCmp $STATE " 6. GetFileAttributes" GetFileAttributes + StrCmp $STATE " 7. GetFileVersion" GetFileVersion + StrCmp $STATE " 8. GetExeName" GetExeName + StrCmp $STATE " 9. GetExePath" GetExePath + StrCmp $STATE "10. GetParameters" GetParameters + StrCmp $STATE "11. GetOptions" GetOptions + StrCmp $STATE "12. GetRoot" GetRoot + StrCmp $STATE "13. GetParent" GetParent + StrCmp $STATE "14. GetFileName" GetFileName + StrCmp $STATE "15. GetBaseName" GetBaseName + StrCmp $STATE "16. GetFileExt" GetFileExt + StrCmp $STATE "17. BannerTrimPath" BannerTrimPath + StrCmp $STATE "18. DirState" DirState + StrCmp $STATE "19. RefreshShellIcons" RefreshShellIcons + Abort + + Locate: + ${Locate} "$R2" "$R3" "LocateCallback" + IfErrors error + StrCmp $R0 StopLocate 0 +3 + StrCpy $R0 'stopped' + goto send + StrCpy $R0 'done' + goto send + + GetSize: + ${GetSize} "$R2" "$R3" $0 $1 $2 + IfErrors error + StrCpy $R0 "Size=$0$\r$\nFiles=$1$\r$\nFolders=$2" + goto send + + DriveSpace: + ${DriveSpace} "$R1" "$R3" $0 + IfErrors error + StrCpy $R0 "$0" + goto send + + GetDrives: + ${GetDrives} "$R1" "GetDrivesCallback" + StrCmp $R0 StopGetDrives 0 +3 + StrCpy $R0 '$R5stopped' + goto send + StrCpy $R0 '$R5done' + goto send + + GetTime: + ${GetTime} "$R1" "$R3" $0 $1 $2 $3 $4 $5 $6 + IfErrors error + StrCpy $R0 'Date=$0/$1/$2 ($3)$\r$\nTime=$4:$5:$6' + goto send + + GetFileAttributes: + ${GetFileAttributes} "$R1" "$R3" $0 + IfErrors error + StrCpy $R0 '$0' + goto send + + GetFileVersion: + ${GetFileVersion} "$R1" $0 + IfErrors error + StrCpy $R0 '$0' + goto send + + GetExeName: + ${GetExeName} $0 + StrCpy $R0 '$0' + goto send + + GetExePath: + ${GetExePath} $0 + StrCpy $R0 '$0' + goto send + + GetParameters: + ${GetParameters} $0 + StrCpy $R0 '$0' + StrCmp $R0 '' 0 send + StrCpy $R0 'no parameters' + goto send + + GetOptions: + ${GetOptions} "$R1" "$R3" $0 + IfErrors error + StrCpy $R0 '$0' + goto send + + GetRoot: + ${GetRoot} "$R1" $0 + StrCpy $R0 '$0' + goto send + + GetParent: + ${GetParent} "$R1" $0 + StrCpy $R0 '$0' + goto send + + GetFileName: + ${GetFileName} "$R1" $0 + StrCpy $R0 '$0' + goto send + + GetBaseName: + ${GetBaseName} "$R1" $0 + StrCpy $R0 '$0' + goto send + + GetFileExt: + ${GetFileExt} "$R1" $0 + StrCpy $R0 '$0' + goto send + + BannerTrimPath: + ${BannerTrimPath} "$R1" "$R3" $0 + StrCpy $R0 '$0' + goto send + + DirState: + ${DirState} "$R2" $0 + StrCpy $R0 '$0' + goto send + + RefreshShellIcons: + ${RefreshShellIcons} + StrCpy $R0 'done' + goto send + + error: + StrCpy $R0 'error' + + send: + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0" + + abort +FunctionEnd + +Function LocateCallback + MessageBox MB_OKCANCEL '$$R9 "path\name"=[$R9]$\n$$R8 "path" =[$R8]$\n$$R7 "name" =[$R7]$\n$$R6 "size" =[$R6]' IDOK +2 + StrCpy $R0 StopLocate + + Push $R0 +FunctionEnd + +Function GetDrivesCallback + MessageBox MB_OKCANCEL '$$9 "drive letter"=[$9]$\n$$8 "drive type" =[$8]' IDOK +2 + StrCpy $R0 StopGetDrives + StrCpy $R5 '$R5$9 [$8 Drive]$\r$\n' + + Push $R0 +FunctionEnd + +Function .onInit + InitPluginsDir + GetTempFileName $INI $PLUGINSDIR + File /oname=$INI "FileFunc.ini" +FunctionEnd + +Page instfiles + +Section "Empty" +SectionEnd diff --git a/tools/Examples/FileFuncTest.nsi b/tools/Examples/FileFuncTest.nsi new file mode 100644 index 0000000..0a2db35 --- /dev/null +++ b/tools/Examples/FileFuncTest.nsi @@ -0,0 +1,572 @@ +;_____________________________________________________________________________ +; +; File Functions Test +;_____________________________________________________________________________ +; +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "File Functions Test" +OutFile "FileFuncTest.exe" +Caption "$(^Name)" +ShowInstDetails show +XPStyle on +RequestExecutionLevel user + +Var FUNCTION +Var OUT1 +Var OUT2 +Var OUT3 +Var OUT4 +Var OUT5 +Var OUT6 +Var OUT7 + +!include "FileFunc.nsh" +!include "LogicLib.nsh" + +;############### INSTALL ############### + +!define StackVerificationStart `!insertmacro StackVerificationStart` +!macro StackVerificationStart _FUNCTION + StrCpy $FUNCTION ${_FUNCTION} + Call StackVerificationStart +!macroend + +!define StackVerificationEnd `!insertmacro StackVerificationEnd` +!macro StackVerificationEnd + Call StackVerificationEnd +!macroend + +Function StackVerificationStart + StrCpy $0 !0 + StrCpy $1 !1 + StrCpy $2 !2 + StrCpy $3 !3 + StrCpy $4 !4 + StrCpy $5 !5 + StrCpy $6 !6 + StrCpy $7 !7 + StrCpy $8 !8 + StrCpy $9 !9 + StrCpy $R0 !R0 + StrCpy $R1 !R1 + StrCpy $R2 !R2 + StrCpy $R3 !R3 + StrCpy $R4 !R4 + StrCpy $R5 !R5 + StrCpy $R6 !R6 + StrCpy $R7 !R7 + StrCpy $R8 !R8 + StrCpy $R9 !R9 +FunctionEnd + +Function StackVerificationEnd + IfErrors +3 + DetailPrint 'PASSED $FUNCTION no errors' + goto +2 + DetailPrint 'FAILED $FUNCTION error' + + StrCmp $0 '!0' 0 error + StrCmp $1 '!1' 0 error + StrCmp $2 '!2' 0 error + StrCmp $3 '!3' 0 error + StrCmp $4 '!4' 0 error + StrCmp $5 '!5' 0 error + StrCmp $6 '!6' 0 error + StrCmp $7 '!7' 0 error + StrCmp $8 '!8' 0 error + StrCmp $9 '!9' 0 error + StrCmp $R0 '!R0' 0 error + StrCmp $R1 '!R1' 0 error + StrCmp $R2 '!R2' 0 error + StrCmp $R3 '!R3' 0 error + StrCmp $R4 '!R4' 0 error + StrCmp $R5 '!R5' 0 error + StrCmp $R6 '!R6' 0 error + StrCmp $R7 '!R7' 0 error + StrCmp $R8 '!R8' 0 error + StrCmp $R9 '!R9' 0 error + DetailPrint 'PASSED $FUNCTION stack' + goto end + + error: + DetailPrint 'FAILED $FUNCTION stack' +; MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2 +; quit + + end: +FunctionEnd + + + +Section Locate + ${StackVerificationStart} Locate + + ${Locate} '$DOCUMENTS' '/L=FD /M=*.* /S=0B /G=0' 'LocateCallback' + + ${StackVerificationEnd} +SectionEnd + +Function LocateCallback +; MessageBox MB_YESNO '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}$\n$\nContinue?' IDYES +2 +; StrCpy $0 StopLocate + + Push $0 +FunctionEnd + + +Section GetSize + ${StackVerificationStart} GetSize + + ${GetSize} '$WINDIR' '/M=Explorer.exe /S=0K /G=0' $OUT1 $OUT2 $OUT3 + + ${StackVerificationEnd} +SectionEnd + + +Section DriveSpace + ${StackVerificationStart} DriveSpace + + ${DriveSpace} 'C:\' '/D=F /S=M' $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section GetDrives + ${StackVerificationStart} GetDrives + + ${GetDrives} 'FDD+CDROM' 'GetDrivesCallback' + + ${StackVerificationEnd} +SectionEnd + +Function GetDrivesCallback +; MessageBox MB_YESNO '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}$\n$\nContinue?' IDYES +2 +; StrCpy $0 StopGetDrives + + Push $0 +FunctionEnd + + +Section GetTime + ${StackVerificationStart} GetTime + + ${GetTime} '' 'L' $OUT1 $OUT2 $OUT3 $OUT4 $OUT5 $OUT6 $OUT7 + + ${StackVerificationEnd} +SectionEnd + + +Section GetFileAttributes + ${StackVerificationStart} GetFileAttributes + + ${GetFileAttributes} '$WINDIR\explorer.exe' 'ALL' $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section GetFileVersion + ${StackVerificationStart} GetFileVersion + + ${GetFileVersion} '$WINDIR\explorer.exe' $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section GetExeName + ${StackVerificationStart} GetExeName + + ${GetExeName} $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section GetExePath + ${StackVerificationStart} GetExePath + + ${GetExePath} $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section GetParameters + ${StackVerificationStart} GetParameters + + # basic stuff + + StrCpy $CMDLINE '"$PROGRAMFILES\Something\Hello.exe"' + ${GetParameters} $OUT1 + StrCpy $CMDLINE '"$PROGRAMFILES\Something\Hello.exe" test' + ${GetParameters} $OUT2 + StrCpy $CMDLINE '"$PROGRAMFILES\Something\Hello.exe" "test"' + ${GetParameters} $OUT3 + StrCpy $CMDLINE 'C:\Hello.exe' + ${GetParameters} $OUT4 + StrCpy $CMDLINE 'C:\Hello.exe test' + ${GetParameters} $OUT5 + StrCpy $CMDLINE 'C:\Hello.exe "test"' + ${GetParameters} $OUT6 + StrCpy $CMDLINE 'C:\Hello.exe test test ' + ${GetParameters} $OUT7 + + ${If} $OUT1 != "" + ${OrIf} $OUT2 != "test" + ${OrIf} $OUT3 != '"test"' + ${OrIf} $OUT4 != "" + ${OrIf} $OUT5 != "test" + ${OrIf} $OUT6 != '"test"' + ${OrIf} $OUT7 != 'test test' + SetErrors + ${EndIf} + + # some corner cases + + StrCpy $CMDLINE '' + ${GetParameters} $OUT1 + StrCpy $CMDLINE '"' + ${GetParameters} $OUT2 + StrCpy $CMDLINE '""' + ${GetParameters} $OUT3 + StrCpy $CMDLINE '"" test' + ${GetParameters} $OUT4 + StrCpy $CMDLINE ' test' + ${GetParameters} $OUT5 + StrCpy $CMDLINE ' test' # left over bug(?) from old GetParameters + # it starts looking for ' ' from the third char + ${GetParameters} $OUT6 + StrCpy $CMDLINE ' ' + ${GetParameters} $OUT7 + + ${If} $OUT1 != "" + ${OrIf} $OUT2 != "" + ${OrIf} $OUT3 != "" + ${OrIf} $OUT4 != "" + ${OrIf} $OUT5 != "" + ${OrIf} $OUT6 != "" + ${OrIf} $OUT7 != "" + SetErrors + ${EndIf} + + ${StackVerificationEnd} +SectionEnd + + +Section GetOptions + ${StackVerificationStart} GetOptions + + ${GetOptions} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + StrCmp $OUT1 'C:\Program Files\Common Files' 0 error + + ${GetOptions} '-TMP=temp.tmp -INSTDIR="C:/Program Files/Common Files" -SILENT=yes' '-INSTDIR=' $OUT1 + StrCmp $OUT1 'C:/Program Files/Common Files' 0 error + + ${GetOptions} "/INSTDIR='C:/Program Files/Common Files' /SILENT=yes" '/INSTDIR=' $OUT1 + StrCmp $OUT1 'C:/Program Files/Common Files' 0 error + + StrCpy $OUT1 '/INSTDIR=`C:/Program Files/Common Files` /SILENT=yes' + ${GetOptions} '$OUT1' '/INSTDIR=' $OUT1 + StrCmp $OUT1 'C:/Program Files/Common Files' 0 error + + ${GetOptions} '/SILENT=yes /INSTDIR=C:\Program Files\Common Files' '/INSTDIR=' $OUT1 + StrCmp $OUT1 'C:\Program Files\Common Files' 0 error + + ${GetOptions} "/INSTDIR=common directory: 'C:\Program Files\Common Files' /SILENT=yes" '/INSTDIR=' $OUT1 + StrCmp $OUT1 "common directory: 'C:\Program Files\Common Files'" 0 error + + ${GetOptions} '/INSTDIR=WxxxW /SILENT=yes' '/INSTDIR=' $OUT1 + StrCmp $OUT1 'WxxxW' 0 error + + ${GetOptions} "/Prm='/D=True' /D=1" '/D=' $OUT1 + StrCmp $OUT1 "1" 0 error + + ${GetOptions} "/D=1 /Prm='/D=True'" '/Prm=' $OUT1 + StrCmp $OUT1 "/D=True" 0 error + + ${GetOptions} `/D=1 /Prm='/D="True" /S="/Temp"'` '/Prm=' $OUT1 + StrCmp $OUT1 '/D="True" /S="/Temp"' 0 error + + ${GetOptions} `/INSTDIR='"C:/Program Files/Common Files"' /SILENT=yes` '/INSTDIR=' $OUT1 + StrCmp $OUT1 '"C:/Program Files/Common Files"' 0 error + + ${GetOptions} `/INSTDIR='"C:/Program Files/Common Files"' /SILENT=yes` '/INSTDIR*=' $OUT1 + IfErrors 0 error + StrCmp $OUT1 '' 0 error + + ${GetOptions} `/INSTDIR="C:/Program Files/Common Files" /SILENT=yes` '' $OUT1 + IfErrors 0 error + StrCmp $OUT1 '' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT' '/SILENT' $OUT1 + IfErrors error + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetOptionsS + ${StackVerificationStart} GetOptionsS + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + IfErrors error + StrCmp $OUT1 'C:\Program Files\Common Files' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/Instdir=' $OUT1 + IfErrors 0 error + StrCmp $OUT1 '' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT' '/SILENT' $OUT1 + IfErrors error + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetRoot + ${StackVerificationStart} GetRoot + + ${GetRoot} 'C:\Program Files\NSIS' $OUT1 + StrCmp $OUT1 'C:' 0 error + + ${GetRoot} '\\SuperPimp\NSIS\Source\exehead\Ui.c' $OUT1 + StrCmp $OUT1 '\\SuperPimp\NSIS' 0 error + + ${GetRoot} '\\Program Files\NSIS' $OUT1 + StrCmp $OUT1 '\\Program Files\NSIS' 0 error + + ${GetRoot} '\\Program Files\NSIS\' $OUT1 + StrCmp $OUT1 '\\Program Files\NSIS' 0 error + + ${GetRoot} '\\Program Files\NSIS\Source\exehead\Ui.c' $OUT1 + StrCmp $OUT1 '\\Program Files\NSIS' 0 error + + ${GetRoot} '\Program Files\NSIS' $OUT1 + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetParent + ${StackVerificationStart} GetParent + + ${GetParent} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + StrCmp $OUT1 'C:\Program Files\Winamp' 0 error + + ${GetParent} 'C:\Program Files\Winamp\plugins' $OUT1 + StrCmp $OUT1 'C:\Program Files\Winamp' 0 error + + ${GetParent} 'C:\Program Files\Winamp\plugins\' $OUT1 + StrCmp $OUT1 'C:\Program Files\Winamp' 0 error + + ${GetParent} 'C:\' $OUT1 + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetFileName + ${StackVerificationStart} GetFileName + + ${GetFileName} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + StrCmp $OUT1 'uninstwa.exe' 0 error + + ${GetFileName} 'uninstwa.exe' $OUT1 + StrCmp $OUT1 'uninstwa.exe' 0 error + + ${GetFileName} 'C:\Program Files\Winamp\plugins' $OUT1 + StrCmp $OUT1 'plugins' 0 error + + ${GetFileName} 'C:\Program Files\Winamp\plugins\' $OUT1 + StrCmp $OUT1 'plugins' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetBaseName + ${StackVerificationStart} GetBaseName + + ${GetBaseName} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + StrCmp $OUT1 'uninstwa' 0 error + + ${GetBaseName} 'uninstwa.exe' $OUT1 + StrCmp $OUT1 'uninstwa' 0 error + + ${GetBaseName} 'C:\Program Files\Winamp\plugins' $OUT1 + StrCmp $OUT1 'plugins' 0 error + + ${GetBaseName} 'C:\Program Files\Winamp\plugins\' $OUT1 + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetFileExt + ${StackVerificationStart} GetFileExt + + ${GetFileExt} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + StrCmp $OUT1 'exe' 0 error + + ${GetFileExt} 'uninstwa.exe' $OUT1 + StrCmp $OUT1 'exe' 0 error + + ${GetFileExt} 'C:\Program Files\Winamp\plugins' $OUT1 + StrCmp $OUT1 '' 0 error + + ${GetFileExt} 'C:\Program Files\Winamp\plugins\' $OUT1 + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section BannerTrimPath + ${StackVerificationStart} BannerTrimPath + + ${BannerTrimPath} 'C:\Server\Documents\Terminal\license.htm' '35A' $OUT1 + StrCmp $OUT1 'C:\Server\...\Terminal\license.htm' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '3A' $OUT1 + StrCmp $OUT1 '' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '4A' $OUT1 + StrCmp $OUT1 'C...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '11A' $OUT1 + StrCmp $OUT1 'C:\12\...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '13A' $OUT1 + StrCmp $OUT1 'C:\12\...\789' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '14A' $OUT1 + StrCmp $OUT1 'C:\12\3456\789' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '14A' $OUT1 + StrCmp $OUT1 'C:\12\3456\789' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '11B' $OUT1 + StrCmp $OUT1 'C:\12\...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '5B' $OUT1 + StrCmp $OUT1 'C:...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '5B' $OUT1 + StrCmp $OUT1 'C:...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '11C' $OUT1 + StrCmp $OUT1 'C:\12\34...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '9D' $OUT1 + StrCmp $OUT1 'C:\12\...' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '10D' $OUT1 + StrCmp $OUT1 'C:\...\789' 0 error + + ${BannerTrimPath} 'C:\12\3456\789' '11D' $OUT1 + StrCmp $OUT1 'C:\1...\789' 0 error + + ${BannerTrimPath} '123456789' '5D' $OUT1 + StrCmp $OUT1 '12...' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section DirState + ${StackVerificationStart} DirState + + ${DirState} '$TEMP' $OUT1 + + ${StackVerificationEnd} +SectionEnd + + +Section RefreshShellIcons + ${StackVerificationStart} RefreshShellIcons + + ${RefreshShellIcons} + + ${StackVerificationEnd} +SectionEnd + + +Section WriteUninstaller + goto +2 + WriteUninstaller '$EXEDIR\un.FileFuncTest.exe' +SectionEnd + + + +;############### UNINSTALL ############### + +Section un.Uninstall + ${Locate} '$DOCUMENTS' '/L=FD /M=*.* /S=0B /G=0' 'un.LocateCallback' + ${GetSize} '$WINDIR' '/M=Explorer.exe /S=0K /G=0' $OUT1 $OUT2 $OUT3 + ${DriveSpace} 'C:\' '/D=F /S=M' $OUT1 + ${GetDrives} 'FDD+CDROM' 'un.GetDrivesCallback' + ${GetTime} '' 'L' $OUT1 $OUT2 $OUT3 $OUT4 $OUT5 $OUT6 $OUT7 + ${GetFileAttributes} '$WINDIR\explorer.exe' 'ALL' $OUT1 + ${GetFileVersion} '$WINDIR\explorer.exe' $OUT1 + ${GetExeName} $OUT1 + ${GetExePath} $OUT1 + ${GetParameters} $OUT1 + ${GetOptions} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + ${GetRoot} 'C:\Program Files\NSIS' $OUT1 + ${GetParent} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + ${GetFileName} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + ${GetBaseName} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + ${GetFileExt} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 + ${BannerTrimPath} 'C:\Server\Documents\Terminal\license.htm' '35A' $OUT1 + ${DirState} '$TEMP' $OUT1 + ${RefreshShellIcons} +SectionEnd + +Function un.LocateCallback + Push $0 +FunctionEnd + +Function un.GetDrivesCallback + Push $0 +FunctionEnd diff --git a/tools/Examples/InstallOptions/test.ini b/tools/Examples/InstallOptions/test.ini new file mode 100644 index 0000000..da743e8 --- /dev/null +++ b/tools/Examples/InstallOptions/test.ini @@ -0,0 +1,76 @@ +[Settings] +NumFields=8 + +[Field 1] +Type=GroupBox +Left=0 +Right=-1 +Top=0 +Bottom=-5 +Text=" This is a group box... " + +[Field 2] +Type=checkbox +Text=Install support for X +Left=10 +Right=-10 +Top=17 +Bottom=25 +State=0 +Flags=GROUP + +[Field 3] +Type=checkbox +Text=Install support for Y +Left=10 +Right=-10 +Top=30 +Bottom=38 +State=1 +Flags=NOTABSTOP + +[Field 4] +Type=checkbox +Text=Install support for Z +Left=10 +Right=-10 +Top=43 +Bottom=51 +State=0 +Flags=NOTABSTOP + +[Field 5] +Type=FileRequest +State=C:\dummy.xyz +Left=10 +Right=-10 +Top=56 +Bottom=68 +Filter=XYZ Files|*.xyz|All files|*.* +Flags=GROUP|FILE_MUST_EXIST|FILE_EXPLORER|FILE_HIDEREADONLY + +[Field 6] +Type=DirRequest +Left=10 +Right=-10 +Top=73 +Bottom=85 +Text=Select a directory... +State=C:\Program Files\NSIS + +[Field 7] +Type=Label +Left=10 +Right=-10 +Top=90 +Bottom=98 +Text=This is a label... + +[Field 8] +Type=Text +Left=10 +Right=-10 +Top=98 +Bottom=120 +State="Multiline\r\nedit..." +Flags=MULTILINE|VSCROLL|WANTRETURN \ No newline at end of file diff --git a/tools/Examples/InstallOptions/test.nsi b/tools/Examples/InstallOptions/test.nsi new file mode 100644 index 0000000..30b15c4 --- /dev/null +++ b/tools/Examples/InstallOptions/test.nsi @@ -0,0 +1,84 @@ +;InstallOptions Test Script +;Written by Joost Verburg +;-------------------------- + +!define TEMP1 $R0 ;Temp variable + +;The name of the installer +Name "InstallOptions Test" + +;The file to write +OutFile "Test.exe" + +; Show install details +ShowInstDetails show + +;Things that need to be extracted on startup (keep these lines before any File command!) +;Only useful for BZIP2 compression +;Use ReserveFile for your own InstallOptions INI files too! + +ReserveFile /plugin InstallOptions.dll +ReserveFile "test.ini" + +;Order of pages +Page custom SetCustom ValidateCustom ": Testing InstallOptions" ;Custom page. InstallOptions gets called in SetCustom. +Page instfiles + +Section "Components" + + ;Get Install Options dialog user input + + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 2" "State" + DetailPrint "Install X=${TEMP1}" + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 3" "State" + DetailPrint "Install Y=${TEMP1}" + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 4" "State" + DetailPrint "Install Z=${TEMP1}" + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 5" "State" + DetailPrint "File=${TEMP1}" + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 6" "State" + DetailPrint "Dir=${TEMP1}" + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 8" "State" + DetailPrint "Info=${TEMP1}" + +SectionEnd + +Function .onInit + + ;Extract InstallOptions files + ;$PLUGINSDIR will automatically be removed when the installer closes + + InitPluginsDir + File /oname=$PLUGINSDIR\test.ini "test.ini" + +FunctionEnd + +Function SetCustom + + ;Display the InstallOptions dialog + + Push ${TEMP1} + + InstallOptions::dialog "$PLUGINSDIR\test.ini" + Pop ${TEMP1} + + Pop ${TEMP1} + +FunctionEnd + +Function ValidateCustom + + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 2" "State" + StrCmp ${TEMP1} 1 done + + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 3" "State" + StrCmp ${TEMP1} 1 done + + ReadINIStr ${TEMP1} "$PLUGINSDIR\test.ini" "Field 4" "State" + StrCmp ${TEMP1} 1 done + MessageBox MB_ICONEXCLAMATION|MB_OK "You must select at least one install option!" + Abort + + done: + +FunctionEnd diff --git a/tools/Examples/InstallOptions/testimgs.ini b/tools/Examples/InstallOptions/testimgs.ini new file mode 100644 index 0000000..381a986 --- /dev/null +++ b/tools/Examples/InstallOptions/testimgs.ini @@ -0,0 +1,65 @@ +[Settings] +NumFields=8 + +[Field 1] +Type=GroupBox +Left=0 +Right=-1 +Top=0 +Bottom=-5 +Text=" Images " + +[Field 2] +Type=Bitmap +Left=10 +Right=-10 +Top=10 +Bottom=30 +Flags=TRANSPARENT + +[Field 3] +Type=Bitmap +Left=10 +Right=-10 +Top=35 +Bottom=45 +Flags=TRANSPARENT + +[Field 4] +Type=Bitmap +Left=10 +Right=-10 +Top=50 +Bottom=70 +Flags=RESIZETOFIT|TRANSPARENT + +[Field 5] +Type=Bitmap +Left=10 +Right=-10 +Top=75 +Bottom=95 +Flags=RESIZETOFIT|TRANSPARENT + +[Field 6] +Type=Icon +Left=10 +Right=40 +Top=100 +Bottom=120 + +[Field 7] +Type=Icon +Left=50 +Right=80 +Top=100 +Bottom=120 + +[Field 8] +Type=Label +Left=10 +Right=-10 +Top=10 +Bottom=-10 +Text=ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ + diff --git a/tools/Examples/InstallOptions/testimgs.nsi b/tools/Examples/InstallOptions/testimgs.nsi new file mode 100644 index 0000000..3d0f4ec --- /dev/null +++ b/tools/Examples/InstallOptions/testimgs.nsi @@ -0,0 +1,59 @@ +;InstallOptions Test Script +;Written by Joost Verburg +;-------------------------- + +;The name of the installer +Name "InstallOptions Test" + +;The file to write +OutFile "Test.exe" + +; Show install details +ShowInstDetails show + +;Things that need to be extracted on startup (keep these lines before any File command!) +;Only useful for BZIP2 compression +;Use ReserveFile for your own InstallOptions INI files too! + +ReserveFile /plugin InstallOptions.dll +ReserveFile "testimgs.ini" +ReserveFile "${NSISDIR}\Contrib\Graphics\Checks\colorful.bmp" +ReserveFile "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" +ReserveFile "${NSISDIR}\Contrib\Graphics\Icons\pixel-install.ico" + +;Order of pages +Page custom SetCustom "" ": Testing InstallOptions" ;Custom page. InstallOptions gets called in SetCustom. +Page instfiles + +Section +SectionEnd + +Function .onInit + + ;Extract InstallOptions files + ;$PLUGINSDIR will automatically be removed when the installer closes + + InitPluginsDir + File /oname=$PLUGINSDIR\testimgs.ini "testimgs.ini" + File /oname=$PLUGINSDIR\image.bmp "${NSISDIR}\Contrib\Graphics\Checks\colorful.bmp" + File /oname=$PLUGINSDIR\image2.bmp "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" + File /oname=$PLUGINSDIR\icon.ico "${NSISDIR}\Contrib\Graphics\Icons\pixel-install.ico" + + ;Write image paths to the INI file + + WriteINIStr $PLUGINSDIR\testimgs.ini "Field 2" "Text" $PLUGINSDIR\image.bmp + WriteINIStr $PLUGINSDIR\testimgs.ini "Field 3" "Text" $PLUGINSDIR\image2.bmp + WriteINIStr $PLUGINSDIR\testimgs.ini "Field 4" "Text" $PLUGINSDIR\image.bmp + WriteINIStr $PLUGINSDIR\testimgs.ini "Field 5" "Text" $PLUGINSDIR\image2.bmp + WriteINIStr $PLUGINSDIR\testimgs.ini "Field 6" "Text" $PLUGINSDIR\icon.ico + ;No Text for Field 7 so it'll show the installer's icon + +FunctionEnd + +Function SetCustom + + ;Display the InstallOptions dialog + InstallOptions::dialog "$PLUGINSDIR\testimgs.ini" + Pop $0 + +FunctionEnd diff --git a/tools/Examples/InstallOptions/testlink.ini b/tools/Examples/InstallOptions/testlink.ini new file mode 100644 index 0000000..77078a4 --- /dev/null +++ b/tools/Examples/InstallOptions/testlink.ini @@ -0,0 +1,44 @@ +[Settings] +NumFields=5 + +[Field 1] +Type=Label +Left=10 +Right=-40 +Top=10 +Bottom=18 +Text=This custom page demonstrates the "Link" control + +[Field 2] +Type=Link +Left=20 +Right=-40 +Top=40 +Bottom=50 +Text=* Run notepad + +[Field 3] +Type=Link +Left=20 +Right=-40 +Top=55 +Bottom=65 +State=mailto:someone@anywhere.com +Text=* Send E-mail + +[Field 4] +Type=Link +Left=20 +Right=-40 +Top=70 +Bottom=80 +State=https://nsis.sourceforge.io/ +Text=* Homepage https://nsis.sourceforge.io/ + +[Field 5] +Type=Text +Left=20 +Right=-40 +Top=85 +Bottom=98 +State=Just to test proper interaction with the other fields diff --git a/tools/Examples/InstallOptions/testlink.nsi b/tools/Examples/InstallOptions/testlink.nsi new file mode 100644 index 0000000..9096590 --- /dev/null +++ b/tools/Examples/InstallOptions/testlink.nsi @@ -0,0 +1,58 @@ +;InstallOptions Test Script +;Written by Ramon +;This script demonstrates the power of the new control "LINK" +;that allows you to execute files, send mails, open wepsites, etc. +;-------------------------- + +!define TEMP1 $R0 ;Temp variable + +;The name of the installer +Name "InstallOptions Test Link" + +;The file to write +OutFile "TestLink.exe" + +; Show install details +ShowInstDetails show + +;Things that need to be extracted on startup (keep these lines before any File command!) +;Only useful for BZIP2 compression +;Use ReserveFile for your own InstallOptions INI files too! + +ReserveFile /plugin InstallOptions.dll +ReserveFile "testlink.ini" + +;Order of pages +Page custom SetCustom +Page instfiles + +Section "Components" + + ;Get Install Options dialog user input + +SectionEnd + +Function .onInit + + ;Extract InstallOptions files + ;$PLUGINSDIR will automatically be removed when the installer closes + + InitPluginsDir + File /oname=$PLUGINSDIR\test.ini "testlink.ini" + WriteIniStr $PLUGINSDIR\test.ini "Field 2" "State" "$WINDIR\Notepad.exe" + +FunctionEnd + +Function SetCustom + + ;Display the InstallOptions dialog + + Push ${TEMP1} + + InstallOptions::dialog "$PLUGINSDIR\test.ini" + Pop ${TEMP1} + + Pop ${TEMP1} + +FunctionEnd + diff --git a/tools/Examples/InstallOptions/testnotify.ini b/tools/Examples/InstallOptions/testnotify.ini new file mode 100644 index 0000000..956e8cd --- /dev/null +++ b/tools/Examples/InstallOptions/testnotify.ini @@ -0,0 +1,105 @@ +[Settings] +NumFields=11 + +[Field 1] +Type=Groupbox +Text="This is a group box..." +Left=0 +Right=-1 +Top=0 +Bottom=-4 + +[Field 2] +Type=Checkbox +Text=Install support for X +Flags=NOTIFY +State=1 +Left=10 +Right=100 +Top=17 +Bottom=25 + +[Field 3] +Type=Checkbox +Text=Install support for Y +State=0 +Left=10 +Right=100 +Top=30 +Bottom=38 + +[Field 4] +Type=Checkbox +Text=Install support for Z +Flags=RIGHT +State=0 +Left=10 +Right=100 +Top=43 +Bottom=51 + +[Field 5] +Type=FileRequest +Flags=GROUP|FILE_MUST_EXIST|FILE_EXPLORER|FILE_HIDEREADONLY +State=C:\dummy.xyz +Filter=XYZ Files|*.xyz|All files|*.* +Left=10 +Right=-10 +Top=56 +Bottom=69 + +[Field 6] +Type=DirRequest +Text=Select a directory... +State=C:\Program Files\NSIS +Left=10 +Right=-10 +Top=74 +Bottom=87 + +[Field 7] +Type=Label +Text=This is a label... +Left=10 +Right=-10 +Top=89 +Bottom=97 + +[Field 8] +Type=Text +Flags=MULTILINE|VSCROLL|WANTRETURN|NOWORDWRAP +State="Multiline\r\nedit..." +Left=10 +Right=-10 +Top=97 +Bottom=118 +MinLen=1 +ValidateText=Please enter some text before proceeding. + +[Field 9] +Type=Button +Flags=NOTIFY +Text=&Clear +Left=-60 +Right=-10 +Top=19 +Bottom=33 + +[Field 10] +Type=Button +Text=&Email +State=mailto:someone@anywhere.com +Left=-60 +Right=-10 +Top=35 +Bottom=49 + +[Field 11] +Type=DROPLIST +ListItems=Show|Hide +State=Show +Flags=NOTIFY +Left=120 +Right=-80 +Top=20 +Bottom=56 diff --git a/tools/Examples/InstallOptions/testnotify.nsi b/tools/Examples/InstallOptions/testnotify.nsi new file mode 100644 index 0000000..a8ab734 --- /dev/null +++ b/tools/Examples/InstallOptions/testnotify.nsi @@ -0,0 +1,133 @@ +; InstallOptions script demonstrating custom buttons +;---------------------------------------------------- + +!include WinMessages.nsh + +; The name of the installer +Name "InstallOptions Test" + +; The file to write +OutFile "TestNotify.exe" + +; Show install details +ShowInstDetails show + +; Called before anything else as installer initialises +Function .onInit + + ; Extract InstallOptions files + ; $PLUGINSDIR will automatically be removed when the installer closes + InitPluginsDir + File /oname=$PLUGINSDIR\test.ini "testnotify.ini" + +FunctionEnd + +; Our custom page +Page custom ShowCustom LeaveCustom ": Testing InstallOptions" + +Function ShowCustom + + ; Initialise the dialog but don't show it yet + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Test the right-to-left version?" IDNO +2 + WriteINIStr "$PLUGINSDIR\test.ini" "Settings" "RTL" "1" + InstallOptions::initDialog "$PLUGINSDIR\test.ini" + ; In this mode InstallOptions returns the window handle so we can use it + Pop $0 + ; Now show the dialog and wait for it to finish + InstallOptions::show + ; Finally fetch the InstallOptions status value (we don't care what it is though) + Pop $0 + +FunctionEnd + +Function LeaveCustom + + ; At this point the user has either pressed Next or one of our custom buttons + ; We find out which by reading from the INI file + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Settings" "State" + StrCmp $0 0 validate ; Next button? + StrCmp $0 2 supportx ; "Install support for X"? + StrCmp $0 9 clearbtn ; "Clear" button? + StrCmp $0 11 droplist ; "Show|Hide" drop-list? + Abort ; Return to the page + +supportx: + ; Make the FileRequest field depend on the first checkbox + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 2" "State" + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 5" "HWND" + EnableWindow $1 $0 + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 5" "HWND2" + EnableWindow $1 $0 + ; Add the disabled flag too so when we return to this page it's disabled again + StrCmp $0 0 0 +3 + + WriteINIStr "$PLUGINSDIR\test.ini" "Field 5" "Flags" "GROUP|FILE_MUST_EXIST|FILE_EXPLORER|FILE_HIDEREADONLY|DISABLED" + Goto +2 + + WriteINIStr "$PLUGINSDIR\test.ini" "Field 5" "Flags" "GROUP|FILE_MUST_EXIST|FILE_EXPLORER|FILE_HIDEREADONLY" + Abort ; Return to the page + +clearbtn: + ; Clear all text fields + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 5" "HWND" + SendMessage $1 ${WM_SETTEXT} 0 "STR:" + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 6" "HWND" + SendMessage $1 ${WM_SETTEXT} 0 "STR:" + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 8" "HWND" + SendMessage $1 ${WM_SETTEXT} 0 "STR:" + Abort ; Return to the page + +droplist: + ; Make the DirRequest field depend on the droplist + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 11" "State" + StrCmp $0 "Show" +3 + StrCpy $0 0 + Goto +2 + StrCpy $0 1 + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 6" "HWND" + EnableWindow $1 $0 + ReadINIStr $1 "$PLUGINSDIR\test.ini" "Field 6" "HWND2" + EnableWindow $1 $0 + ; Add the disabled flag too so when we return to this page it's disabled again + StrCmp $0 0 0 +3 + + WriteINIStr "$PLUGINSDIR\test.ini" "Field 6" "Flags" "DISABLED" + Goto +2 + + WriteINIStr "$PLUGINSDIR\test.ini" "Field 6" "Flags" "" + Abort ; Return to the page + +validate: + ; At this point we know the Next button was pressed, so perform any validation + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 2" "State" + StrCmp $0 1 done + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 3" "State" + StrCmp $0 1 done + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 4" "State" + StrCmp $0 1 done + MessageBox MB_ICONEXCLAMATION|MB_OK "You must select at least one install option!" + Abort +done: + +FunctionEnd + +; Installation page +Page instfiles + +Section + + ;Get Install Options dialog user input + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 2" "State" + DetailPrint "Install X=$0" + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 3" "State" + DetailPrint "Install Y=$0" + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 4" "State" + DetailPrint "Install Z=$0" + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 5" "State" + DetailPrint "File=$0" + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 6" "State" + DetailPrint "Dir=$0" + ReadINIStr $0 "$PLUGINSDIR\test.ini" "Field 8" "State" + DetailPrint "Info=$0" + +SectionEnd diff --git a/tools/Examples/Library.nsi b/tools/Examples/Library.nsi new file mode 100644 index 0000000..cffc973 --- /dev/null +++ b/tools/Examples/Library.nsi @@ -0,0 +1,130 @@ +# This example tests the compile time aspect of the Library macros +# more than the runtime aspect. It is more of a syntax example, +# rather than a usage example. + +!include "Library.nsh" + +Name "Library Test" +OutFile "Library Test.exe" + +InstallDir "$TEMP\Library Test" + +Page directory +Page instfiles + +XPStyle on + +RequestExecutionLevel user + + +!define TestDLL '"${NSISDIR}\Plugins\${NSIS_CPU}-unicode\LangDLL.dll"' +!define TestEXE '"${NSISDIR}\Contrib\UIs\default.exe"' + +Section + +!insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL NOTSHARED NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL NOTSHARED NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib TLB NOTSHARED REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB NOTSHARED NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB NOTSHARED REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB NOTSHARED NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib REGDLLTLB NOTSHARED REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB NOTSHARED NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB NOTSHARED REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB NOTSHARED NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib DLL $0 REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL $0 NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL $0 REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib DLL $0 NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib REGDLL $0 REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL $0 NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL $0 REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLL $0 NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib TLB $0 REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB $0 NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB $0 REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib TLB $0 NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib REGDLLTLB $0 REBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB $0 NOREBOOT_PROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB $0 REBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR +!insertmacro InstallLib REGDLLTLB $0 NOREBOOT_NOTPROTECTED ${TestDLL} $INSTDIR\test.dll $INSTDIR + +!insertmacro InstallLib REGEXE $0 REBOOT_PROTECTED ${TestEXE} $INSTDIR\test.exe $INSTDIR +!insertmacro InstallLib REGEXE $0 NOREBOOT_PROTECTED ${TestEXE} $INSTDIR\test.exe $INSTDIR +!insertmacro InstallLib REGEXE $0 REBOOT_NOTPROTECTED ${TestEXE} $INSTDIR\test.exe $INSTDIR +!insertmacro InstallLib REGEXE $0 NOREBOOT_NOTPROTECTED ${TestEXE} $INSTDIR\test.exe $INSTDIR + +WriteUninstaller $INSTDIR\uninstall.exe + +SectionEnd + +Section uninstall + +!insertmacro UninstallLib DLL NOTSHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL NOTSHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib REGDLL NOTSHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL NOTSHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL NOTSHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib TLB NOTSHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib TLB NOTSHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB NOTSHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB NOTSHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB NOTSHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib REGDLLTLB NOTSHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB NOTSHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB NOTSHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB NOTSHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB NOTSHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib DLL SHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib DLL SHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL SHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL SHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib DLL SHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib REGDLL SHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL SHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL SHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL SHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLL SHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib TLB SHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib TLB SHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB SHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB SHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib TLB SHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib REGDLLTLB SHARED NOREMOVE $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB SHARED REBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB SHARED NOREBOOT_PROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB SHARED REBOOT_NOTPROTECTED $INSTDIR\test.dll +!insertmacro UninstallLib REGDLLTLB SHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.dll + +!insertmacro UninstallLib REGEXE SHARED NOREMOVE $INSTDIR\test.exe +!insertmacro UninstallLib REGEXE SHARED REBOOT_PROTECTED $INSTDIR\test.exe +!insertmacro UninstallLib REGEXE SHARED NOREBOOT_PROTECTED $INSTDIR\test.exe +!insertmacro UninstallLib REGEXE SHARED REBOOT_NOTPROTECTED $INSTDIR\test.exe +!insertmacro UninstallLib REGEXE SHARED NOREBOOT_NOTPROTECTED $INSTDIR\test.exe + +SectionEnd diff --git a/tools/Examples/LogicLib.nsi b/tools/Examples/LogicLib.nsi new file mode 100644 index 0000000..ce7574b --- /dev/null +++ b/tools/Examples/LogicLib.nsi @@ -0,0 +1,619 @@ +!verbose 2 + +Name "NSIS LogicLib Example" +OutFile "LogicLib.exe" +ShowInstDetails show +RequestExecutionLevel user + +!include "LogicLib.nsh" + +;!undef LOGICLIB_VERBOSITY +;!define LOGICLIB_VERBOSITY 4 ; For debugging - watch what logiclib does with your code! + +Page components "" "" ComponentsLeave +Page instfiles + +Section /o "Run tests" TESTS + + ; kinds of if other than "value1 comparison value2" + ClearErrors + FindFirst $R1 $R2 "$PROGRAMFILES\*" + ${Unless} ${Errors} + ${Do} + ${Select} $R2 + ${Case2} "." ".." + ; Do nothing + ${CaseElse} + DetailPrint "Found $PROGRAMFILES\$R2" + ${EndSelect} + FindNext $R1 $R2 + ${LoopUntil} ${Errors} + FindClose $R1 + ${EndUnless} + + ${If} ${FileExists} "${__FILE__}" + DetailPrint 'Source file "${__FILE__}" still exists' + ${Else} + DetailPrint 'Source file "${__FILE__}" has gone' + ${EndIf} + + ; if..endif + StrCpy $R1 1 + StrCpy $R2 "" + ${If} $R1 = 1 + StrCpy $R2 $R2A + ${EndIf} + ${If} $R1 = 2 + StrCpy $R2 $R2B + ${EndIf} + ${If} $R1 < 2 + StrCpy $R2 $R2C + ${EndIf} + ${If} $R1 < -2 + StrCpy $R2 $R2D + ${EndIf} + ${If} $R1 > 2 + StrCpy $R2 $R2E + ${EndIf} + ${If} $R1 > -2 + StrCpy $R2 $R2F + ${EndIf} + ${If} $R1 <> 1 + StrCpy $R2 $R2G + ${EndIf} + ${If} $R1 <> 2 + StrCpy $R2 $R2H + ${EndIf} + ${If} $R1 >= 2 + StrCpy $R2 $R2I + ${EndIf} + ${If} $R1 >= -2 + StrCpy $R2 $R2J + ${EndIf} + ${If} $R1 <= 2 + StrCpy $R2 $R2K + ${EndIf} + ${If} $R1 <= -2 + StrCpy $R2 $R2L + ${EndIf} + ${If} $R2 == "ACFHJK" + DetailPrint "PASSED If..EndIf test" + ${Else} + DetailPrint "FAILED If..EndIf test" + ${EndIf} + + ; if..elseif..else..endif + StrCpy $R1 A + StrCpy $R2 "" + ${If} $R1 == A + StrCpy $R2 $R2A + ${ElseIf} $R1 == B + StrCpy $R2 $R2B + ${ElseUnless} $R1 != C + StrCpy $R2 $R2C + ${Else} + StrCpy $R2 $R2D + ${EndIf} + ${If} $R1 == D + StrCpy $R2 $R2D + ${ElseIf} $R1 == A + StrCpy $R2 $R2A + ${ElseUnless} $R1 != B + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2C + ${EndIf} + ${If} $R1 == C + StrCpy $R2 $R2C + ${ElseIf} $R1 == D + StrCpy $R2 $R2D + ${ElseUnless} $R1 != A + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} $R1 == B + StrCpy $R2 $R2B + ${ElseIf} $R1 == C + StrCpy $R2 $R2C + ${ElseUnless} $R1 != D + StrCpy $R2 $R2D + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} $R2 == "$R1$R1$R1$R1" + DetailPrint "PASSED If..ElseIf..Else..EndIf test" + ${Else} + DetailPrint "FAILED If..ElseIf..Else..EndIf test" + ${EndIf} + + ; if..andif..orif..endif + StrCpy $R2 "" + ${If} 1 = 1 + ${AndIf} 2 = 2 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${AndIf} 2 = 3 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 2 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 3 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + + ${If} 1 = 1 + ${OrIf} 2 = 2 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${OrIf} 2 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 2 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 3 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + + ${If} 1 = 1 + ${AndIf} 2 = 2 + ${OrIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${AndIf} 2 = 3 + ${OrIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 2 + ${OrIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 3 + ${OrIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${AndIf} 2 = 2 + ${OrIf} 3 = 4 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${AndIf} 2 = 3 + ${OrIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 2 + ${OrIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${AndIf} 2 = 3 + ${OrIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + + ${If} 1 = 1 + ${OrIf} 2 = 2 + ${AndIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 1 + ${OrIf} 2 = 3 + ${AndIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 2 + ${AndIf} 3 = 3 + StrCpy $R2 $R2A + ${Else} + StrCpy $R2 $R2B + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 3 + ${AndIf} 3 = 3 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 1 + ${OrIf} 2 = 2 + ${AndIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 1 + ${OrIf} 2 = 3 + ${AndIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 2 + ${AndIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + ${If} 1 = 2 + ${OrIf} 2 = 3 + ${AndIf} 3 = 4 + StrCpy $R2 $R2B + ${Else} + StrCpy $R2 $R2A + ${EndIf} + + ${If} $R2 == "AAAAAAAAAAAAAAAAAAAAAAAA" + DetailPrint "PASSED If..AndIf..OrIf..Else..EndIf test" + ${Else} + DetailPrint "FAILED If..AndIf..OrIf..Else..EndIf test" + ${EndIf} + + ; ifthen..|..| + StrCpy $R1 1 + StrCpy $R2 "" + ${IfThen} $R1 = 1 ${|} StrCpy $R2 $R2A ${|} + ${IfThen} $R1 = 2 ${|} StrCpy $R2 $R2B ${|} + ${IfNotThen} $R1 = 1 ${|} StrCpy $R2 $R2C ${|} + ${IfNotThen} $R1 = 2 ${|} StrCpy $R2 $R2D ${|} + ${If} $R2 == "AD" + DetailPrint "PASSED IfThen test" + ${Else} + DetailPrint "FAILED IfThen test" + ${EndIf} + + ; ifcmd..||..| and if/unless cmd + StrCpy $R2 "" + ${IfCmd} MessageBox MB_YESNO "Please click Yes" IDYES ${||} StrCpy $R2 $R2A ${|} + ${Unless} ${Cmd} `MessageBox MB_YESNO|MB_DEFBUTTON2 "Please click No" IDYES` + StrCpy $R2 $R2B + ${EndUnless} + ${If} $R2 == "AB" + DetailPrint "PASSED IfCmd/If Cmd test" + ${Else} + DetailPrint "FAILED IfCmd/If Cmd test" + ${EndIf} + + ; select..case..case2..case3..case4..case5..caseelse..endselect + StrCpy $R1 1 + StrCpy $R2 "" + ${Select} $R1 + ${Case} "1" + StrCpy $R2 $R2A + ${Case} "2" + StrCpy $R2 $R2B + ${Case2} "3" "4" + StrCpy $R2 $R2C + ${CaseElse} + StrCpy $R2 $R2D + ${EndSelect} + ${Select} $R1 + ${Case} "2" + StrCpy $R2 $R2A + ${Case} "3" + StrCpy $R2 $R2B + ${Case2} "4" "5" + StrCpy $R2 $R2C + ${CaseElse} + StrCpy $R2 $R2D + ${EndSelect} + ${Select} $R1 + ${Case} "3" + StrCpy $R2 $R2A + ${Case} "4" + StrCpy $R2 $R2B + ${Case2} "5" "1" + StrCpy $R2 $R2C + ${CaseElse} + StrCpy $R2 $R2D + ${EndSelect} + ${Select} $R1 + ${Case} "4" + StrCpy $R2 $R2A + ${Case} "5" + StrCpy $R2 $R2B + ${Case2} "1" "2" + StrCpy $R2 $R2C + ${CaseElse} + StrCpy $R2 $R2D + ${EndSelect} + ${If} $R2 == "ADCC" + DetailPrint "PASSED Select..Case*..EndSelect test" + ${Else} + DetailPrint "FAILED Select..Case*..EndSelect test" + ${EndIf} + + ; switch..case..caseelse..endswitch + StrCpy $R2 "" + ${For} $R1 1 10 + ${Switch} $R1 + ${Case} 3 + StrCpy $R2 $R2A + ${Case} 4 + StrCpy $R2 $R2B + ${Break} + ${Case} 5 + StrCpy $R2 $R2C + ${EndSwitch} + ${Switch} $R1 + ${Case} 1 + StrCpy $R2 $R2D + ${Default} + StrCpy $R2 $R2E + ${Break} + ${Case} 2 + StrCpy $R2 $R2F + ${EndSwitch} + ${Switch} $R1 + ${Case} 6 + ${Case} 7 + StrCpy $R2 $R2G + ${If} $R1 = 6 + ${Case} 8 + StrCpy $R2 $R2H + ${Switch} $R1 + ${Case} 6 + StrCpy $R2 $R2I + ${Break} + ${Case} 8 + StrCpy $R2 $R2J + ${EndSwitch} + ${EndIf} + StrCpy $R2 $R2K + ${Break} + ${Default} + StrCpy $R2 $R2L + ${Case} 9 + StrCpy $R2 $R2M + ${EndSwitch} + ${Next} + ${If} $R2 == "DELMFLMABELMBELMCELMEGHIKEGKEHJKEMELM" + DetailPrint "PASSED Switch..Case*..EndSwitch test" + ${Else} + DetailPrint "FAILED Switch..Case*..EndSwitch test" + ${EndIf} + + ; for[each]..exitfor..next + StrCpy $R2 "" + ${For} $R1 1 5 + StrCpy $R2 $R2$R1 + ${Next} + ${ForEach} $R1 10 1 - 1 + StrCpy $R2 $R2$R1 + ${Next} + ${For} $R1 1 0 + StrCpy $R2 $R2$R1 + ${Next} + ${If} $R2 == "1234510987654321" + DetailPrint "PASSED For[Each]..Next test" + ${Else} + DetailPrint "FAILED For[Each]..Next test" + ${EndIf} + + ; do..loop + StrCpy $R1 0 + Call DoLoop + ${If} $R1 == 5 + DetailPrint "PASSED Do..Loop test" + ${Else} + DetailPrint "FAILED Do..Loop test" + ${EndIf} + + ; do..exitdo..loop + StrCpy $R1 0 + StrCpy $R2 "" + ${Do} + StrCpy $R2 $R2$R1 + IntOp $R1 $R1 + 1 + ${If} $R1 > 10 + ${ExitDo} + ${EndIf} + ${Loop} + ${If} $R2 == "012345678910" + DetailPrint "PASSED Do..ExitDo..Loop test" + ${Else} + DetailPrint "FAILED Do..ExitDo..Loop test" + ${EndIf} + + ; do..exitdo..loopuntil + StrCpy $R1 0 + StrCpy $R2 "" + ${Do} + StrCpy $R2 $R2$R1 + IntOp $R1 $R1 + 1 + ${LoopUntil} $R1 >= 5 + ${If} $R2 == "01234" + DetailPrint "PASSED Do..ExitDo..LoopUntil test" + ${Else} + DetailPrint "FAILED Do..ExitDo..LoopUntil test" + ${EndIf} + + ; dountil..exitdo..loop + StrCpy $R1 0 + StrCpy $R2 "" + ${DoUntil} $R1 >= 5 + StrCpy $R2 $R2$R1 + IntOp $R1 $R1 + 1 + ${Loop} + ${If} $R2 == "01234" + DetailPrint "PASSED DoUntil..ExitDo..Loop test" + ${Else} + DetailPrint "FAILED DoUntil..ExitDo..Loop test" + ${EndIf} + + ; nested do test + StrCpy $R1 0 + StrCpy $R2 0 + StrCpy $R3 "" + ${Do} + StrCpy $R3 $R3$R1$R2 + IntOp $R1 $R1 + 1 + ${If} $R1 > 5 + ${ExitDo} + ${EndIf} + StrCpy $R2 0 + ${Do} + StrCpy $R3 $R3$R1$R2 + IntOp $R2 $R2 + 1 + ${If} $R2 >= 5 + ${ExitDo} + ${EndIf} + ${Loop} + ${Loop} + ${If} $R3 == "00101112131415202122232425303132333435404142434445505152535455" + DetailPrint "PASSED nested Do test" + ${Else} + DetailPrint "FAILED nested Do test" + ${EndIf} + + ; while..exitwhile..endwhile (exact replica of dowhile..enddo} + StrCpy $R1 0 + StrCpy $R2 "" + ${While} $R1 < 5 + StrCpy $R2 $R2$R1 + IntOp $R1 $R1 + 1 + ${EndWhile} + ${If} $R2 == "01234" + DetailPrint "PASSED While..ExitWhile..EndWhile test" + ${Else} + DetailPrint "FAILED While..ExitWhile..EndWhile test" + ${EndIf} + + ; Unsigned integer tests + StrCpy $R2 "" + ${If} -1 < 1 + StrCpy $R2 $R2A + ${EndIf} + ${If} -1 U< 1 + StrCpy $R2 $R2B + ${EndIf} + ${If} 0xFFFFFFFF > 1 + StrCpy $R2 $R2C + ${EndIf} + ${If} 0xFFFFFFFF U> 1 + StrCpy $R2 $R2D + ${EndIf} + ${If} $R2 == "AD" + DetailPrint "PASSED unsigned integer test" + ${Else} + DetailPrint "FAILED unsigned integer test" + ${EndIf} + + ; 64-bit integer tests (uses System.dll) + StrCpy $R2 "" + ${If} 0x100000000 L= 4294967296 + StrCpy $R2 $R2A + ${EndIf} + ${If} 0x100000000 L< 0x200000000 + StrCpy $R2 $R2B + ${EndIf} + ${If} 0x500000000 L>= 0x500000000 + StrCpy $R2 $R2C + ${EndIf} + ${If} $R2 == "ABC" + DetailPrint "PASSED 64-bit integer test" + ${Else} + DetailPrint "FAILED 64-bit integer test" + ${EndIf} + + ; Extra string tests (uses System.dll) + StrCpy $R2 "" + ${If} "A" S< "B" + StrCpy $R2 $R2A + ${EndIf} + ${If} "b" S> "A" + StrCpy $R2 $R2B + ${EndIf} + ${If} "a" S<= "B" + StrCpy $R2 $R2C + ${EndIf} + ${If} "B" S< "B" + StrCpy $R2 $R2D + ${EndIf} + ${If} "A" S== "A" + StrCpy $R2 $R2E + ${EndIf} + ${If} "A" S== "a" + StrCpy $R2 $R2F + ${EndIf} + ${If} "A" S!= "a" + StrCpy $R2 $R2G + ${EndIf} + ${If} $R2 == "ABCEG" + DetailPrint "PASSED extra string test" + ${Else} + DetailPrint "FAILED extra string test" + ${EndIf} + +SectionEnd + +Function ComponentsLeave + ; Section flags tests (requires sections.nsh be included) + ${Unless} ${SectionIsSelected} ${TESTS} + MessageBox MB_OK "Please select the component" + Abort + ${EndIf} +FunctionEnd + +Function DoLoop + + ${Do} + IntOp $R1 $R1 + 1 + ${If} $R1 == 5 + Return + ${EndIf} + ${Loop} + +FunctionEnd + +!verbose 3 diff --git a/tools/Examples/Math/math.nsi b/tools/Examples/Math/math.nsi new file mode 100644 index 0000000..a32ab3c --- /dev/null +++ b/tools/Examples/Math/math.nsi @@ -0,0 +1,33 @@ +; This is just an example of Math plugin +; +; (c) brainsucker, 2002 +; (r) BSForce + +Name "Math Plugin Example" +OutFile "math.exe" +ShowInstDetails show +XPStyle on + +Section "ThisNameIsIgnoredSoWhyBother?" + Math::Script 'SaR(s,fa,ra, i,f,r,e,p) (i=0;#{i=0, (NS=s[p+4,]; NS=#[p>0,s[,p-1],'']), (NS='';NS=s)])" + + Math::Script "a = 'Hello \r\n World \r\n!!!'; a = SaR(a,{'\r','\n'},{'$\r','$\n'}); R0 = a" + Math::Script "NS = '$\"In quotes$\"'; TQ(); R1=NS; R3=P(s(R1),'qu')" + Math::Script "NS = 'No quotes'; TQ(); R2=NS" + Math::Script "NS='123\r\n456\r\n789'; DL(); R4=NS; DL(); R5=NS; DL(); R6=NS; R7=NS" + + + DetailPrint "'$R0'" + DetailPrint "'$R1'" + DetailPrint "'$R2'" + DetailPrint "'$R3'" + DetailPrint "'$R4'" + DetailPrint "'$R5'" + DetailPrint "'$R6'" + DetailPrint "'$R7'" +SectionEnd + +; eof diff --git a/tools/Examples/Math/mathtest.ini b/tools/Examples/Math/mathtest.ini new file mode 100644 index 0000000..f18075b --- /dev/null +++ b/tools/Examples/Math/mathtest.ini @@ -0,0 +1,101 @@ +[Settings] +NumFields=10 +NextButtonText=Execute +CancelButtonText=Quit +BackButtonText=Readme + +[Field 1] +Type=label +Text=Enter your script here: +Left=0 +Right=-1 +Top=0 +Bottom=8 + +[Field 2] +Type=text +Left=0 +Right=-1 +Top=9 +Bottom=55 +flags=MULTILINE|WANTRETURN|HSCROLL +State="" + +[Field 3] +Type=text +Left=53 +Right=175 +Top=56 +Bottom=140 +flags=MULTILINE|READONLY +State="" + +[Field 4] +Type=text +Left=175 +Right=-1 +Top=56 +Bottom=140 +flags=MULTILINE|READONLY +State="" + +[Field 5] +Type=RadioButton +Left=0 +Right=-1 +Top=70 +Bottom=80 +flags=GROUP +Text="Your script" +State=1 + +[Field 6] +Type=RadioButton +Left=0 +Right=-1 +Top=80 +Bottom=90 +flags= +Text="Sample 1" +State=0 + +[Field 7] +Type=RadioButton +Left=0 +Right=-1 +Top=90 +Bottom=100 +flags= +Text="Sample 2" +State=0 + +[Field 8] +Type=RadioButton +Left=0 +Right=-1 +Top=100 +Bottom=110 +flags= +Text="Sample 3" +State=0 + +[Field 9] +Type=RadioButton +Left=0 +Right=-1 +Top=110 +Bottom=120 +flags= +Text="Sample 4" +State=0 + +[Field 10] +Type=RadioButton +Left=0 +Right=-1 +Top=120 +Bottom=130 +flags= +Text="Sample 5" +State=0 + diff --git a/tools/Examples/Math/mathtest.nsi b/tools/Examples/Math/mathtest.nsi new file mode 100644 index 0000000..191fa8b --- /dev/null +++ b/tools/Examples/Math/mathtest.nsi @@ -0,0 +1,171 @@ +;NSIS Modern User Interface version 1.65 +;InstallOptions Example Script +;Written by Joost Verburg + + !define MUI_BUTTONTEXT_NEXT "Execute" + +;--------------------- +;Include Modern UI + + !include "MUI.nsh" + +;-------------------------------- +;Product Info + +Name "Math::Script Test" + +;-------------------------------- +;Configuration + + ;General + OutFile "MathTest.exe" + +;-------------------------------- +;Variables + + Var TEMP1 + Var TEMP2 + Var TEMP3 + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "mathtest.txt" + Page custom ScriptPageEnter + Page instfiles + +;-------------------------------- +;Modern UI Configuration + +; !define MUI_ABORTWARNING + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Reserve Files + + ;Things that need to be extracted on first (keep these lines before any File command!) + ;Only for BZIP2 compression + + ReserveFile "MathTest.ini" + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +;-------------------------------- +;Installer Functions + +LangString SCRIPTSAMPLE0 ${LANG_ENGLISH} "r0 = 'Hello'; r1 = 'Math::Script'\r\nr0 += ' from the ' + r1 + '!'; r1=''" +LangString SCRIPTSAMPLE1 ${LANG_ENGLISH} "a =0; b=1.0\r\n#{a++ < 100, b *= a}\r\nr0 = a; R0 = b; R1 = ff(b, 15)\r\nr1 = (a-1) + '! = ' + b" +LangString SCRIPTSAMPLE2 ${LANG_ENGLISH} 'pi=3.14159; \r\nangle = pi/4;\r\ntext = "x = " + ff(angle,16+3) \r\nr0 = text += ", sin x = " + sin(angle)' +LangString SCRIPTSAMPLE3 ${LANG_ENGLISH} "v1 = 123.456; v2 = 123456789.1011\r\nr0 = v1; r1 = v2\r\nr2 = ff(v1, 3); r3 = ff(v2, 3); r4 = ff(v1, 3+16); r5 = ff(v2, 3+16)\r\nr6 = ff(v1, 3+32); r7 = ff(v2, 3+32); r8 = ff(v1, 3+32+64); r9 = ff(v2, 3+32+64)\r\n" +LangString SCRIPTSAMPLE4 ${LANG_ENGLISH} "a = 10000; b = 0; #{--a > 0, b+= a}; r0 = a; r1 = b\r\nz = 1.55; r2 = #[z > 1.5, 'Its greater', 'Its lower']\r\nz = 1.45; r3 = #[z > 1.5, 'Its greater', 'Its lower']" +LangString SCRIPTSAMPLE5 ${LANG_ENGLISH} 'r0 = "123a123"\r\nr1 = r0; \r\nr2 = s(r0); r3 = f(r0); r4 = i(r0); r5 = l(r0)' + +Function .onInit + + ;Extract InstallOptions INI files + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "MathTest.ini" + + Strcpy "$TEMP1" "$(SCRIPTSAMPLE0)" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 2" "State" $TEMP1 + +FunctionEnd + +LangString TEXT_IO_TITLE ${LANG_ENGLISH} "MathTest Script Page" +LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Try your scripting capapibilites or test one of sample scripts" + + +Function DumpVariables + Strcpy "$TEMP1" "$$0='$0'\r\n$$1='$1'\r\n$$2='$2'\r\n$$3='$3'\r\n$$4='$4'\r\n$$5='$5'\r\n$$6='$6'\r\n$$7='$7'\r\n$$8='$8'\r\n$$9='$9'" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 3" "State" $TEMP1 + Strcpy "$TEMP1" "$$R0='$R0'\r\n$$R1='$R1'\r\n$$R2='$R2'\r\n$$R3='$R3'\r\n$$R4='$R4'\r\n$$R5='$R5'\r\n$$R6='$R6'\r\n$$R7='$R7'\r\n$$R8='$R8'\r\n$$R9='$R9'" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 4" "State" $TEMP1 +FunctionEnd + +Function ClearVariables + Math::Script "r0=r1=r2=r3=r4=r5=r6=r7=r8=r9=R0=R1=R2=R3=R4=R5=R6=R7=R8=R9=''" +FunctionEnd + +Function GetLine + push $TEMP1 + Math::Script "mtsDL()" + pop $TEMP2 + pop $TEMP1 +FunctionEnd + +Function ExecuteScript + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 2" "State" + + Math::Script "mtsTQ(s) (s = s(NS); #[s[0]=='$\"',s=s[1,]]; #[s[-1]=='$\"',s=s[,-2]]; NS = s)" + Math::Script "mtsP(s,e, p,i) (p=-1;i=0; #{(i=0, (NS=s[p+4,]; NS=#[p>0,s[,p-1],'']), (NS='';NS=s)])" + + push $TEMP1 + ; remove "" + Math::Script "mtsTQ()" + pop $TEMP1 + + ; script at $TEMP1 +Go: + StrLen $TEMP3 $TEMP1 + IntCmp $TEMP3 0 End + ; get single line to $TEMP2 + Call GetLine +; MessageBox MB_OK "'$TEMP2' '$TEMP1'" + Math::Script "$TEMP2" + goto Go +End: + Math::Script "" +FunctionEnd + +Function ScriptPageEnter + + !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)" + +Again: + Call ClearVariables + Call ExecuteScript + Call DumpVariables + + !insertmacro MUI_INSTALLOPTIONS_DISPLAY_RETURN "mathtest.ini" + pop $TEMP3 + + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 5" "State" + IntCmp $TEMP1 1 Test + + Strcpy "$TEMP2" "$(SCRIPTSAMPLE1)" + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 6" "State" + IntCmp $TEMP1 1 Write + + Strcpy "$TEMP2" "$(SCRIPTSAMPLE2)" + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 7" "State" + IntCmp $TEMP1 1 Write + + Strcpy "$TEMP2" "$(SCRIPTSAMPLE3)" + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 8" "State" + IntCmp $TEMP1 1 Write + + Strcpy "$TEMP2" "$(SCRIPTSAMPLE4)" + !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 9" "State" + IntCmp $TEMP1 1 Write + + Strcpy "$TEMP2" "$(SCRIPTSAMPLE5)" + +Write: + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 2" "State" "$TEMP2" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 5" "State" "1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 6" "State" "0" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 7" "State" "0" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 8" "State" "0" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 9" "State" "0" + !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 10" "State" "0" + +Test: + Strcmp $TEMP3 "success" Again + +FunctionEnd + +Section "Dummy Section" SecDummy +SectionEnd diff --git a/tools/Examples/Math/mathtest.txt b/tools/Examples/Math/mathtest.txt new file mode 100644 index 0000000..f911e66 --- /dev/null +++ b/tools/Examples/Math/mathtest.txt @@ -0,0 +1,7 @@ +Math Tester. + +This demo allows you to test your Math::Script expressions without need to compile anything. Just enter your expressions into multiline editbox (every single line is a separate call to Math::Script) or select one of sample expressions and press Execute. + +Every call to Math::Script can accept up to 1kb of script, but this demo is limited to the summ of 1 kb at all lines. And... watch your scripts. No.... Watch your errors at scripts! + +(c) Brainsucker, 2003. diff --git a/tools/Examples/Memento.nsi b/tools/Examples/Memento.nsi new file mode 100644 index 0000000..531bc57 --- /dev/null +++ b/tools/Examples/Memento.nsi @@ -0,0 +1,79 @@ +!include LogicLib.nsh +!include Memento.nsh + +Name Memento +OutFile Memento.exe + +XPStyle on + +ShowInstDetails show + +Page components +Page instfiles + +RequestExecutionLevel user + +# settings + +!define MEMENTO_REGISTRY_ROOT HKCU +!define MEMENTO_REGISTRY_KEY "Software\NSIS\Memento Test" + +# restore + +Function .onInit + + ${If} ${Cmd} `MessageBox MB_YESNO "Would you like to load an example state?" IDYES` + + DeleteRegKey HKCU "Software\NSIS\Memento Test" + + WriteRegStr HKCU "Software\NSIS\Memento Test" MementoSectionUsed "" + WriteRegDWORD HKCU "Software\NSIS\Memento Test" MementoSection_sec_horse 1 + WriteRegDWORD HKCU "Software\NSIS\Memento Test" MementoSection_sec_chicken 1 + WriteRegDWORD HKCU "Software\NSIS\Memento Test" MementoSection_sec_donkey 0 + WriteRegDWORD HKCU "Software\NSIS\Memento Test" MementoSection_sec_croc 0 + + ${EndIf} + + ${MementoSectionRestore} + +FunctionEnd + +# sections + +${MementoSection} horse sec_horse +${MementoSectionEnd} + +${MementoSection} donkey sec_donkey +${MementoSectionEnd} + +${MementoSection} chicken sec_chicken +${MementoSectionEnd} + +SectionGroup /e group + + SectionGroup /e group + + ${MementoSection} croc sec_croc + ${MementoSectionEnd} + + ${MementoSection} cow sec_cow + ${MementoSectionEnd} + + SectionGroupEnd + +SectionGroupEnd + +${MementoUnselectedSection} dinosaur sec_dinosaur +${MementoSectionEnd} + +# done... + +${MementoSectionDone} + +# save + +Function .onInstSuccess + + ${MementoSectionSave} + +FunctionEnd diff --git a/tools/Examples/Modern UI/Basic.nsi b/tools/Examples/Modern UI/Basic.nsi new file mode 100644 index 0000000..eb76d2b --- /dev/null +++ b/tools/Examples/Modern UI/Basic.nsi @@ -0,0 +1,89 @@ +;NSIS Modern User Interface +;Basic Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "Modern UI Test" + OutFile "Basic.exe" + Unicode True + + ;Default installation folder + InstallDir "$LOCALAPPDATA\Modern UI Test" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Modern UI Test" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel user + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ;ADD YOUR OWN FILES HERE... + + ;Store installation folder + WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + DeleteRegKey /ifempty HKCU "Software\Modern UI Test" + +SectionEnd \ No newline at end of file diff --git a/tools/Examples/Modern UI/HeaderBitmap.nsi b/tools/Examples/Modern UI/HeaderBitmap.nsi new file mode 100644 index 0000000..0aa9ea1 --- /dev/null +++ b/tools/Examples/Modern UI/HeaderBitmap.nsi @@ -0,0 +1,91 @@ +;NSIS Modern User Interface +;Header Bitmap Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "Modern UI Test" + OutFile "HeaderBitmap.exe" + Unicode True + + ;Default installation folder + InstallDir "$LOCALAPPDATA\Modern UI Test" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Modern UI Test" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel user + +;-------------------------------- +;Interface Configuration + + !define MUI_HEADERIMAGE + !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" ; optional + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ;ADD YOUR OWN FILES HERE... + + ;Store installation folder + WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + DeleteRegKey /ifempty HKCU "Software\Modern UI Test" + +SectionEnd \ No newline at end of file diff --git a/tools/Examples/Modern UI/MultiLanguage.nsi b/tools/Examples/Modern UI/MultiLanguage.nsi new file mode 100644 index 0000000..0014a99 --- /dev/null +++ b/tools/Examples/Modern UI/MultiLanguage.nsi @@ -0,0 +1,204 @@ +;NSIS Modern User Interface +;Multilingual Example Script +;Written by Joost Verburg + +!pragma warning error all + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +;General + + ;Properly display all languages (Installer will not work on Windows 95, 98 or ME!) + Unicode true + + ;Name and file + Name "Modern UI Test" + OutFile "MultiLanguage.exe" + + ;Default installation folder + InstallDir "$LOCALAPPDATA\Modern UI Test" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Modern UI Test" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel user + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + + ;Show all languages, despite user's codepage + !define MUI_LANGDLL_ALLLANGUAGES + +;-------------------------------- +;Language Selection Dialog Settings + + ;Remember the installer language + !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" + !define MUI_LANGDLL_REGISTRY_KEY "Software\Modern UI Test" + !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_WELCOME + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_UNPAGE_COMPONENTS + !insertmacro MUI_UNPAGE_DIRECTORY + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" ; The first language is the default language + !insertmacro MUI_LANGUAGE "French" + !insertmacro MUI_LANGUAGE "German" + !insertmacro MUI_LANGUAGE "Spanish" + !insertmacro MUI_LANGUAGE "SpanishInternational" + !insertmacro MUI_LANGUAGE "SimpChinese" + !insertmacro MUI_LANGUAGE "TradChinese" + !insertmacro MUI_LANGUAGE "Japanese" + !insertmacro MUI_LANGUAGE "Korean" + !insertmacro MUI_LANGUAGE "Italian" + !insertmacro MUI_LANGUAGE "Dutch" + !insertmacro MUI_LANGUAGE "Danish" + !insertmacro MUI_LANGUAGE "Swedish" + !insertmacro MUI_LANGUAGE "Norwegian" + !insertmacro MUI_LANGUAGE "NorwegianNynorsk" + !insertmacro MUI_LANGUAGE "Finnish" + !insertmacro MUI_LANGUAGE "Greek" + !insertmacro MUI_LANGUAGE "Russian" + !insertmacro MUI_LANGUAGE "Portuguese" + !insertmacro MUI_LANGUAGE "PortugueseBR" + !insertmacro MUI_LANGUAGE "Polish" + !insertmacro MUI_LANGUAGE "Ukrainian" + !insertmacro MUI_LANGUAGE "Czech" + !insertmacro MUI_LANGUAGE "Slovak" + !insertmacro MUI_LANGUAGE "Croatian" + !insertmacro MUI_LANGUAGE "Bulgarian" + !insertmacro MUI_LANGUAGE "Hungarian" + !insertmacro MUI_LANGUAGE "Thai" + !insertmacro MUI_LANGUAGE "Romanian" + !insertmacro MUI_LANGUAGE "Latvian" + !insertmacro MUI_LANGUAGE "Macedonian" + !insertmacro MUI_LANGUAGE "Estonian" + !insertmacro MUI_LANGUAGE "Turkish" + !insertmacro MUI_LANGUAGE "Lithuanian" + !insertmacro MUI_LANGUAGE "Slovenian" + !insertmacro MUI_LANGUAGE "Serbian" + !insertmacro MUI_LANGUAGE "SerbianLatin" + !insertmacro MUI_LANGUAGE "Arabic" + !insertmacro MUI_LANGUAGE "Farsi" + !insertmacro MUI_LANGUAGE "Hebrew" + !insertmacro MUI_LANGUAGE "Indonesian" + !insertmacro MUI_LANGUAGE "Mongolian" + !insertmacro MUI_LANGUAGE "Luxembourgish" + !insertmacro MUI_LANGUAGE "Albanian" + !insertmacro MUI_LANGUAGE "Breton" + !insertmacro MUI_LANGUAGE "Belarusian" + !insertmacro MUI_LANGUAGE "Icelandic" + !insertmacro MUI_LANGUAGE "Malay" + !insertmacro MUI_LANGUAGE "Bosnian" + !insertmacro MUI_LANGUAGE "Kurdish" + !insertmacro MUI_LANGUAGE "Irish" + !insertmacro MUI_LANGUAGE "Uzbek" + !insertmacro MUI_LANGUAGE "Galician" + !insertmacro MUI_LANGUAGE "Afrikaans" + !insertmacro MUI_LANGUAGE "Catalan" + !insertmacro MUI_LANGUAGE "Esperanto" + !insertmacro MUI_LANGUAGE "Asturian" + !insertmacro MUI_LANGUAGE "Basque" + !insertmacro MUI_LANGUAGE "Pashto" + !insertmacro MUI_LANGUAGE "ScotsGaelic" + !insertmacro MUI_LANGUAGE "Georgian" + !insertmacro MUI_LANGUAGE "Vietnamese" + !insertmacro MUI_LANGUAGE "Welsh" + !insertmacro MUI_LANGUAGE "Armenian" + !insertmacro MUI_LANGUAGE "Corsican" + !insertmacro MUI_LANGUAGE "Tatar" + !insertmacro MUI_LANGUAGE "Hindi" + +;-------------------------------- +;Reserve Files + + ;If you are using solid compression, files that are required before + ;the actual installation should be stored first in the data block, + ;because this will make your installer start faster. + + !insertmacro MUI_RESERVEFILE_LANGDLL + +;-------------------------------- +;Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ;ADD YOUR OWN FILES HERE... + + ;Store installation folder + WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +;-------------------------------- +;Installer Functions + +Function .onInit + + !insertmacro MUI_LANGDLL_DISPLAY + +FunctionEnd + +;-------------------------------- +;Descriptions + + ;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGUAGE SPECIFIC + + ;Assign descriptions to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} "A test section." + !insertmacro MUI_FUNCTION_DESCRIPTION_END + + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + DeleteRegKey /ifempty HKCU "Software\Modern UI Test" + +SectionEnd + +;-------------------------------- +;Uninstaller Functions + +Function un.onInit + + !insertmacro MUI_UNGETLANGUAGE + +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/Modern UI/StartMenu.nsi b/tools/Examples/Modern UI/StartMenu.nsi new file mode 100644 index 0000000..fad6df5 --- /dev/null +++ b/tools/Examples/Modern UI/StartMenu.nsi @@ -0,0 +1,115 @@ +;NSIS Modern User Interface +;Start Menu Folder Selection Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "Modern UI Test" + OutFile "StartMenu.exe" + Unicode True + + ;Default installation folder + InstallDir "$LOCALAPPDATA\Modern UI Test" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Modern UI Test" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel user + +;-------------------------------- +;Variables + + Var StartMenuFolder + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Modern UI Test" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ;ADD YOUR OWN FILES HERE... + + ;Store installation folder + WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey /ifempty HKCU "Software\Modern UI Test" + +SectionEnd \ No newline at end of file diff --git a/tools/Examples/Modern UI/WelcomeFinish.nsi b/tools/Examples/Modern UI/WelcomeFinish.nsi new file mode 100644 index 0000000..7fa92e5 --- /dev/null +++ b/tools/Examples/Modern UI/WelcomeFinish.nsi @@ -0,0 +1,93 @@ +;NSIS Modern User Interface +;Welcome/Finish Page Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "Modern UI Test" + OutFile "WelcomeFinish.exe" + Unicode True + + ;Default installation folder + InstallDir "$LOCALAPPDATA\Modern UI Test" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Modern UI Test" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel user + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_WELCOME + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Installer Sections + +Section "Dummy Section" SecDummy + + SetOutPath "$INSTDIR" + + ;ADD YOUR OWN FILES HERE... + + ;Store installation folder + WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "A test section." + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + DeleteRegKey /ifempty HKCU "Software\Modern UI Test" + +SectionEnd diff --git a/tools/Examples/MultiUser.nsi b/tools/Examples/MultiUser.nsi new file mode 100644 index 0000000..80286a3 --- /dev/null +++ b/tools/Examples/MultiUser.nsi @@ -0,0 +1,58 @@ +Name "MultiUser example" +OutFile "MultiUser.exe" + +!define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" +!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${UNINSTKEY}" +!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "CurrentUser" +!define MULTIUSER_INSTALLMODE_INSTDIR "$(^Name)" +!define MULTIUSER_INSTALLMODE_COMMANDLINE +!define MULTIUSER_EXECUTIONLEVEL Highest +!define MULTIUSER_MUI + +!include "LogicLib.nsh" +!include "MultiUser.nsh" +!include "MUI2.nsh" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MULTIUSER_PAGE_INSTALLMODE +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_LANGUAGE "English" + +Function .onInit + !insertmacro MULTIUSER_INIT +FunctionEnd + +Function un.onInit + !insertmacro MULTIUSER_UNINIT +FunctionEnd + +Section + SetOutPath "$InstDir" + WriteUninstaller "$InstDir\Uninstall.exe" + WriteRegStr ShCtx "${UNINSTKEY}" DisplayName "$(^Name)" + WriteRegStr ShCtx "${UNINSTKEY}" UninstallString '"$InstDir\Uninstall.exe"' + WriteRegStr ShCtx "${UNINSTKEY}" $MultiUser.InstallMode 1 ; Write MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME so the correct context can be detected in the uninstaller. + + !tempfile APP + !makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NsisMultiUserExample" -DCOMPANY=Nullsoft "AppGen.nsi"' = 0 + File "/oname=$InstDir\MyApp.exe" "${APP}" ; Pretend that we have a real application to install + !delfile "${APP}" +SectionEnd + +Section "Start Menu shortcut" + CreateShortcut /NoWorkingDir "$SMPrograms\$(^Name).lnk" "$InstDir\MyApp.exe" +SectionEnd + +Section "-Uninstall" + Delete "$SMPrograms\$(^Name).lnk" + + Delete "$InstDir\MyApp.exe" + Delete "$InstDir\Uninstall.exe" + DeleteRegKey ShCtx "${UNINSTKEY}" + RMDir $InstDir +SectionEnd diff --git a/tools/Examples/NSISMenu.nsi b/tools/Examples/NSISMenu.nsi new file mode 100644 index 0000000..be94410 --- /dev/null +++ b/tools/Examples/NSISMenu.nsi @@ -0,0 +1,358 @@ +OutFile "NSIS.exe" +Name "NSIS Menu" +Unicode True +RequestExecutionLevel User +XPStyle On +ManifestDPIAware System +SetCompressor LZMA +ChangeUI IDD_INST "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe" +Icon "${NSISDIR}\Contrib\Graphics\Icons\nsis-menu.ico" +BrandingText " " +MiscButtonText " " " " " " " " +InstallButtonText " " +CompletedText " " +LangString ^ClickInstall 0 " " +Caption "$(^Name)" + +!macro UNPACKVERFIELD out in shr mask fmt +!define /redef /math ${out} ${in} >>> ${shr} +!define /redef /math ${out} ${${out}} & ${mask} +!define /redef /intfmt ${out} "${fmt}" ${${out}} +!macroend + +!ifndef VER_MAJOR & VER_MINOR +!ifdef NSIS_PACKEDVERSION +!insertmacro UNPACKVERFIELD VER_MAJOR ${NSIS_PACKEDVERSION} 24 0x0ff "%X" +!insertmacro UNPACKVERFIELD VER_MINOR ${NSIS_PACKEDVERSION} 12 0xfff "%X" +!insertmacro UNPACKVERFIELD VER_REVISION ${NSIS_PACKEDVERSION} 4 255 "%X" +!insertmacro UNPACKVERFIELD VER_BUILD ${NSIS_PACKEDVERSION} 00 0x00f "%X" +!endif +!endif +!ifdef VER_MAJOR & VER_MINOR +!define /ifndef VER_REVISION 0 +!define /ifndef VER_BUILD 0 +!searchreplace VERSTR "${NSIS_VERSION}" "v" "" +VIProductVersion ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} +VIAddVersionKey "ProductName" "NSIS" +VIAddVersionKey "ProductVersion" "${VERSTR}" +VIAddVersionKey "FileVersion" "${VERSTR}" +VIAddVersionKey "FileDescription" "NSIS Menu" +VIAddVersionKey "LegalCopyright" "http://nsis.sf.net/License" +!endif + +!include nsDialogs.nsh +!include WinMessages.nsh +!include LogicLib.nsh +!define /IfNDef IDC_CHILDRECT 1018 +!define QUIT_ON_EXECUTE +!define PR $ExeDir ; Local root path +!define PD "Docs" ; Local with WWW fallback (located at the same relative path) +!define WWW "http://nsis.sf.net" + +!define CB_HEADER '0x755585 0x222222' +!define UY_HEADER 28 +!define CT_PAGE '0x000000 0xaaaaaa' +!define CB_PAGE '0xffffff 0x111111' +!define CT_SECTION '0x666666 0xeeeeee' +!define CB_SECTION '${CB_PAGE}' +!define UY_SECTION 11 ; Height of a section +!define UY_SECTIONBPAD 2 ; Extra padding on the bottom of section headers +!define UY_TXT 9 ; Height of a normal item +!define UY_TXTBPAD 1 ; Extra padding on the bottom of normal items +!define UX_COLPAD 7 ; Spacing between columns +!define UY_ROW2 104 ; Absolute position of the 2nd row +!define CT_LINK '0x0c6e97 0x0c6e97' ; SYSCLR:HOTLIGHT +!define /Math UX_PAGE 00 + ${UX_COLPAD} +!define /Math UY_PAGE ${UY_HEADER} + 20 +!define UX ${UX_PAGE} +!define CB_FOOTERLINE '0xc4c4c4 0x333333' +!define CT_FOOTER '0xbbbbbb 0x444444' + +Var UseLightTheme + +Function .onGUIInit +ReadRegDWORD $UseLightTheme HKCU "Software\NSIS" "UseLightTheme" +StrCmp $UseLightTheme "" 0 +2 +ReadRegDWORD $UseLightTheme HKCU "Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" "AppsUseLightTheme" +StrCmp $UseLightTheme "" 0 +2 +StrCpy $UseLightTheme 1 ; Default + +StrCmp $UseLightTheme "0" 0 +5 +System::Call 'DWMAPI::DwmSetWindowAttribute(p$hWndParent,i20,*i1,i4)i.r0' ; 20H1 +IntCmp $0 0 +3 +3 +System::Call 'DWMAPI::DwmSetWindowAttribute(p$hWndParent,i19,*i1,i4)i.r0' ; ; 19H1 +System::Call 'USER32::SetProp(p$hWndParent,t"UseImmersiveDarkModeColors",i1)' ; 1809 +FunctionEnd + +!define SetCtlColors "!insertmacro SetCtlColors " +!macro SetCtlColors hWnd ctlig ctdar cblig cbdar +StrCmp $UseLightTheme "0" 0 +3 +SetCtlColors ${hWnd} "${ctdar}" ${cbdar} +Goto +2 +SetCtlColors ${hWnd} "${ctlig}" ${cblig} +!macroend + + +Function PageLeave +System::Call 'USER32::GetFocus()p.r0' +System::Call 'USER32::GetDlgCtrlID(pr0)i.r1' +System::Call 'USER32::GetParent(pr0)p.r2' +SendMessage $2 ${WM_COMMAND} $1 $0 ; Handle in dialog by pretending it was a click on the active control +Abort +FunctionEnd + +Function PageCreate +GetDlgItem $0 $hWndParent 1 +ShowWindow $0 0 +GetDlgItem $0 $hWndParent 2 +ShowWindow $0 0 + +System::Call 'USER32::GetClientRect(p$hWndParent,@r0)' +System::Call '*$0(i,i,i.r3,i.r4)' +GetDlgItem $0 $hWndParent ${IDC_CHILDRECT} +System::Call 'USER32::MoveWindow(pr0,i0,i0,ir3,ir4,i0)' + +nsDialogs::Create ${IDC_CHILDRECT} +Pop $R9 +${SetCtlColors} $R9 ${CT_PAGE} ${CB_PAGE} + +!macro StartColumn W +!define /ReDef UY ${UY_PAGE} +!define /ReDef UX_W ${W} +!ifdef UX_INTERNAL_PREV_W +!define /ReDef /Math UX ${UX} + ${UX_INTERNAL_PREV_W} +!define /ReDef /Math UX ${UX} + ${UX_COLPAD} +!define /ReDef UX_INTERNAL_PREV_W ${UX_W} +!else +!define /Math UX_INTERNAL_PREV_W 0 + ${UX_W} +!endif +!macroend +!macro CreateHeader Txt W +!define /ReDef /Math W ${W} + 4 ; Make it slightly wider +${NSD_CreateLabel} ${UX}u ${UY}u ${W}u ${UY_SECTION}u "${Txt}" +Pop $0 +${SetCtlColors} $0 ${CT_SECTION} transparent transparent +SendMessage $0 ${WM_SETFONT} ${HF_HEADER} 1 +!define /ReDef /Math UY ${UY} + ${UY_SECTION} +!define /ReDef /Math UY ${UY} + ${UY_SECTIONBPAD} +!macroend +!macro CreateControl Class Txt W H +${NSD_Create${Class}} ${UX}u ${UY}u ${W}u ${H}u "${Txt}" +!define /ReDef /Math UY ${UY} + ${H} +!define /ReDef /Math UY ${UY} + ${UY_TXTBPAD} +!macroend +!macro CreateSimpleLinkHelper Txt Url W +!insertmacro CreateControl Link "${Txt}|${Url}" ${W} ${UY_TXT} +!macroend +!macro CreateSimpleLink Txt Url W +!insertmacro CreateSimpleLinkHelper "${Txt}" "${Url}" ${W} +Call ConfigureLink +!macroend + + +; --- Header --- +!define HF_HEADER $R8 +CreateFont ${HF_HEADER} "Arial" ${UY_SECTION} 700 + +nsDialogs::CreateControl ${__NSD_Label_CLASS} ${__NSD_Label_STYLE} ${__NSD_Label_EXSTYLE} 33u 0 -33u ${UY_HEADER}u "" +Pop $0 +${SetCtlColors} $0 0xffffff 0xffffff ${CB_HEADER} + +; CCv5 does not paint the background outside of the icon correctly when SS_CENTERIMAGE is used so we have to overlay a small icon on top of the background +nsDialogs::CreateControl ${__NSD_Icon_CLASS} ${__NSD_Icon_STYLE} ${__NSD_Icon_EXSTYLE} 4u 4u 33u ${UY_HEADER}u "" +Pop $0 +${SetCtlColors} $0 "" "" ${CB_HEADER} +${NSD_SetIconFromInstaller} $0 $1 +nsDialogs::CreateControl ${__NSD_Icon_CLASS} ${__NSD_Icon_STYLE}|${SS_CENTERIMAGE}|${SS_CENTER} ${__NSD_Icon_EXSTYLE} 0 0 33u ${UY_HEADER}u "" +Pop $0 +${SetCtlColors} $0 "" "" ${CB_HEADER} + +CreateFont $1 "Trebuchet MS" 17 +!searchreplace VERSTR "${NSIS_VERSION}" "v" "" +nsDialogs::CreateControl ${__NSD_Label_CLASS} ${__NSD_Label_STYLE}|${SS_CENTERIMAGE}|${SS_ENDELLIPSIS} ${__NSD_Label_EXSTYLE} 34u 1u -34u ${UY_HEADER}u "nullsoft scriptable install system ${VERSTR}" +Pop $0 +SetCtlColors $0 0x3A2A42 transparent +SendMessage $0 ${WM_SETFONT} $1 1 +nsDialogs::CreateControl ${__NSD_Label_CLASS} ${__NSD_Label_STYLE}|${SS_CENTERIMAGE}|${SS_ENDELLIPSIS} ${__NSD_Label_EXSTYLE} 33u 0 -33u ${UY_HEADER}u "nullsoft scriptable install system ${VERSTR}" +Pop $0 +SetCtlColors $0 0xffffff transparent +SendMessage $0 ${WM_SETFONT} $1 1 + + +; --- Page --- +!insertmacro StartColumn 90 +!insertmacro CreateHeader "Compiler" ${UX_W} +!insertmacro CreateSimpleLink "Compile NSI scripts" "${PR}\MakeNSISW" ${UX_W} +!insertmacro CreateSimpleLink "Installer based on .ZIP file" "${PR}\bin\Zip2Exe" ${UX_W} + + +!define /ReDef UY ${UY_ROW2} +!insertmacro CreateHeader "Developer Center" ${UX_W} +!define /ReDef UY_MULTILINE 42 +!insertmacro CreateControl Label "Many more examples, tutorials, plug-ins and NSIS-related software are available at the online Developer Center." ${UX_W} ${UY_MULTILINE} +Pop $0 +${SetCtlColors} $0 ${CT_PAGE} ${CB_PAGE} + + +!insertmacro StartColumn 80 +!insertmacro CreateHeader "Documentation" ${UX_W} +!insertmacro CreateSimpleLink "NSIS Users Manual" "${PR}\NSIS.chm|${WWW}/Docs/" ${UX_W} +!insertmacro CreateSimpleLink "Example scripts" "${PR}\Examples|${WWW}/Examples" ${UX_W} +!insertmacro CreateSimpleLink "Modern UI 2" "${PD}\Modern UI 2\Readme.html" ${UX_W} + + +!define /ReDef UY ${UY_ROW2} +!insertmacro CreateHeader "Online Help" ${UX_W} +!insertmacro CreateSimpleLink "Developer Center" "${WWW}/Developer_Center" ${UX_W} +!insertmacro CreateSimpleLink "FAQ" "${WWW}/FAQ" ${UX_W} +!insertmacro CreateSimpleLink "Forum" "http://forums.winamp.com/forumdisplay.php?forumid=65" ${UX_W} +;"Project Tracker" "http://sourceforge.net/tracker/?group_id=22049" +!insertmacro CreateSimpleLink "Bug Tracker" "http://sourceforge.net/tracker/?group_id=22049&atid=373085" ${UX_W} +!insertmacro CreateSimpleLink "Stackoverflow" "http://stackoverflow.com/questions/tagged/nsis" ${UX_W} +!insertmacro CreateSimpleLink "Chat" "${WWW}/r/Chat" ${UX_W} +;insertmacro CreateSimpleLink "IRC channel" "irc://irc.landoleet.org/nsis" ${UX_W} +;"Pastebin" "http://nsis.pastebin.com/index/1FtyKP89" +;"Search" "http://www.google.com/cse/home?cx=005317984255499820329:c_glv1-6a6a" + + +!insertmacro StartColumn 130 +!insertmacro CreateHeader "Plug-ins" ${UX_W} +!macro CreatePluginLink Name Desc Url +!define /ReDef SAVE_UY ${UY} +!insertmacro CreateSimpleLinkHelper "${Name}" "${Url}" ${UX_W} ; AdjustLinkPair will configure this link +!define /ReDef UY ${SAVE_UY} +!insertmacro CreateControl Label "${Name} - ${Desc}" ${UX_W} ${UY_TXT} +Call AdjustLinkPair +!macroend +!insertmacro CreatePluginLink "AdvSplash" "splash with fade in/out" "${PD}\AdvSplash\advsplash.txt" +!insertmacro CreatePluginLink "Banner" "banner with custom text" "${PD}\Banner\Readme.txt" +!insertmacro CreatePluginLink "BgImage" "background image" "${PD}\BgImage\BgImage.txt" +!insertmacro CreatePluginLink "Dialer" "internet connection" "${PD}\Dialer\Dialer.txt" +!insertmacro CreatePluginLink "Math" "math operations" "${PD}\Math\Math.txt" +!insertmacro CreatePluginLink "nsDialogs" "custom wizard pages" "${PD}\nsDialogs\Readme.html" +!insertmacro CreatePluginLink "nsExec" "launch command line tools" "${PD}\nsExec\nsExec.txt" +!insertmacro CreatePluginLink "NSISdl" "download files" "${PD}\NSISdl\Readme.txt" +!insertmacro CreatePluginLink "Splash" "splash screen" "${PD}\Splash\splash.txt" +!insertmacro CreatePluginLink "StartMenu" "Start Menu folder selection" "${PD}\StartMenu\Readme.txt" +!insertmacro CreatePluginLink "System" "Windows API calls" "${PD}\System\System.html" +!insertmacro CreatePluginLink "VPatch" "update existing files" "${PD}\VPatch\Readme.html" + + +; --- Footer --- +${NSD_CreateLabel} 0 -22u 100% 1 "" +Pop $0 +${SetCtlColors} $0 000000 000000 ${CB_FOOTERLINE} + +nsDialogs::CreateControl ${__NSD_Label_CLASS} ${__NSD_Label_STYLE}|${SS_CENTERIMAGE}|${SS_NOTIFY} ${__NSD_Label_EXSTYLE} -110u -20u 100% 20u "nsis.sourceforge.net" +Pop $0 +${SetCtlColors} $0 ${CT_FOOTER} transparent transparent +SendMessage $0 ${WM_SETFONT} ${HF_HEADER} 1 +nsDialogs::SetUserData $0 "https://nsis.sourceforge.io" +${NSD_OnClick} $0 OnLinkClick + +nsDialogs::Show +FunctionEnd + +Function OnLinkClick +Pop $1 ; HWND +nsDialogs::GetUserData $1 +Call SplitPipe +Pop $0 ; First URL in UserData from SplitPipe +StrCpy $3 "" +StrCpy $1 $0 4 ; Copy length of ${PD} +${IfThen} $1 == "${PD}" ${|} StrCpy $3 "${PR}\" ${|} +!ifdef QUIT_ON_EXECUTE +System::Call 'USER32::GetKeyState(i0x11)i.r9' ; VK_CONTROL +!endif +ClearErrors +ExecShell "" "$3$0" +Pop $1 ; ... the rest of SplitPipe ... +${If} $1 != "" ; ... might contain a fallback location + StrCpy $0 $1 + StrCpy $3 "" +${ElseIf} $3 != "" ; Local docs path failed, use WWW fallback + StrCpy $3 0 + slashconvloop: + StrCpy $2 $0 1 $3 + ${If} $2 == "\" + StrCpy $2 $0 $3 + IntOp $3 $3 + 1 + StrCpy $0 $0 "" $3 + StrCpy $0 "$2/$0" + ${Else} + IntOp $3 $3 + 1 + ${EndIf} + StrCmp $2 "" 0 slashconvloop + StrCpy $3 "${WWW}/" +${EndIf} +${If} "$3$1" != "" +${AndIf} ${Errors} + ExecShell "" "$3$0" +${EndIf} +${If} ${Errors} + !ifdef QUIT_ON_EXECUTE + StrCpy $9 0 ; Don't allow close + !endif + MessageBox MB_IconStop 'Error: Unable to open "$0"!' +${EndIf} +!ifdef QUIT_ON_EXECUTE +${IfThen} $9 < 0 ${|} SendMessage $hWndParent ${WM_CLOSE} 0 0 ${|} +!endif +FunctionEnd + +Function ConfigureLink +Pop $1 ; HWND +${NSD_OnClick} $1 OnLinkClick +${SetCtlColors} $1 ${CT_LINK} ${CB_PAGE} +${NSD_GetText} $1 $4 +Push $4 +Call SplitPipe +Pop $4 +Pop $2 +${NSD_SetText} $1 $4 +nsDialogs::SetUserData $1 $2 +System::Call 'USER32::GetDC(pr1)p.r3' +SendMessage $1 ${WM_GETFONT} 0 0 $5 +System::Call 'GDI32::SelectObject(pr3,pr5)p.s' +StrLen $5 $4 +System::Call 'GDI32::GetTextExtentPoint32(pr3,tr4,ir5,@r5)' +System::Call '*$5(i.r6)' +System::Call 'GDI32::SelectObject(pr3,ps)' +System::Call 'USER32::ReleaseDC(pr1,pr3)' +System::Call 'USER32::GetWindowRect(pr1,@r3)' +System::Call '*$3(i,i.r5,i,i.r7)' +IntOp $7 $7 - $5 +IntOp $6 $6 + 4 ; Padding for focus rect +System::Call 'USER32::SetWindowPos(pr1,p,i,i,ir6,ir7,i0x16)' +FunctionEnd + +Function AdjustLinkPair +Pop $2 ; Label +${SetCtlColors} $2 ${CT_PAGE} ${CB_PAGE} +Call ConfigureLink +FunctionEnd + +Function SplitPipe +Exch $0 +Push $1 +Push $2 +StrCpy $2 0 +findSep: +StrCpy $1 $0 1 $2 +IntOp $2 $2 + 1 +StrCmp $1 "" +2 +StrCmp $1 "|" "" findSep +StrCpy $1 $0 "" $2 +IntOp $2 $2 - 1 +StrCpy $0 $0 $2 +Pop $2 +Exch $1 +Exch +Exch $0 +FunctionEnd + +Section +SectionEnd + +Page Custom PageCreate PageLeave +!pragma warning disable 8000 ; Page instfiles not used \ No newline at end of file diff --git a/tools/Examples/Plugin/exdll-vs2008.sln b/tools/Examples/Plugin/exdll-vs2008.sln new file mode 100644 index 0000000..7b03ddc --- /dev/null +++ b/tools/Examples/Plugin/exdll-vs2008.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exdll", "exdll-vs2008.vcproj", "{5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug|Win32.ActiveCfg = Debug|Win32 + {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Debug|Win32.Build.0 = Debug|Win32 + {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release|Win32.ActiveCfg = Release|Win32 + {5E3E2AFD-1D6B-4997-A9B5-8ECBC8F6C31A}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/Examples/Plugin/exdll-vs2008.vcproj b/tools/Examples/Plugin/exdll-vs2008.vcproj new file mode 100644 index 0000000..e4bb417 --- /dev/null +++ b/tools/Examples/Plugin/exdll-vs2008.vcproj @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/Examples/Plugin/exdll.c b/tools/Examples/Plugin/exdll.c new file mode 100644 index 0000000..e4e807e --- /dev/null +++ b/tools/Examples/Plugin/exdll.c @@ -0,0 +1,42 @@ +#include +#include // nsis plugin + +HINSTANCE g_hInstance; +HWND g_hwndParent; + +// To work with Unicode version of NSIS, please use TCHAR-type +// functions for accessing the variables and the stack. + +void __declspec(dllexport) myFunction(HWND hwndParent, int string_size, + LPTSTR variables, stack_t **stacktop, + extra_parameters *extra, ...) +{ + EXDLL_INIT(); + g_hwndParent = hwndParent; + + + // note if you want parameters from the stack, pop them off in order. + // i.e. if you are called via exdll::myFunction file.dat read.txt + // calling popstring() the first time would give you file.dat, + // and the second time would give you read.txt. + // you should empty the stack of your parameters, and ONLY your + // parameters. + + // do your stuff here + { + LPTSTR msgbuf = (LPTSTR) GlobalAlloc(GPTR, (3 + string_size + 1) * sizeof(*msgbuf)); + if (msgbuf) + { + wsprintf(msgbuf, TEXT("$0=%s"), getuservariable(INST_0)); + MessageBox(g_hwndParent, msgbuf, TEXT("Message from example plugin"), MB_OK); + GlobalFree(msgbuf); + } + } +} + + +BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) +{ + g_hInstance = hInst; + return TRUE; +} diff --git a/tools/Examples/Plugin/exdll.dpr b/tools/Examples/Plugin/exdll.dpr new file mode 100644 index 0000000..ec70b10 --- /dev/null +++ b/tools/Examples/Plugin/exdll.dpr @@ -0,0 +1,118 @@ +{ + NSIS ExDLL example + (C) 2001 - Peter Windridge + + Fixed and formatted by Brett Dever + http://editor.nfscheats.com/ + + Tested in Delphi 7.0 +} + +library exdll; + +uses Windows; + +type + VarConstants = ( + INST_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 + ); + TVariableList = INST_0..__INST_LAST; + pstack_t = ^stack_t; + stack_t = record + next: pstack_t; + text: PChar; + end; + +var + g_stringsize: integer; + g_stacktop: ^pstack_t; + g_variables: PChar; + g_hwndParent: HWND; + +function PopString(): string; +var + th: pstack_t; +begin + if integer(g_stacktop^) <> 0 then begin + th := g_stacktop^; + Result := PChar(@th.text); + g_stacktop^ := th.next; + GlobalFree(HGLOBAL(th)); + end; +end; + +procedure PushString(const str: string=''); +var + th: pstack_t; +begin + if integer(g_stacktop) <> 0 then begin + th := pstack_t(GlobalAlloc(GPTR, SizeOf(stack_t) + g_stringsize)); + lstrcpyn(@th.text, PChar(str), g_stringsize); + th.next := g_stacktop^; + g_stacktop^ := th; + end; +end; + +function GetUserVariable(const varnum: TVariableList): string; +begin + if (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then + Result := g_variables + integer(varnum) * g_stringsize + else + Result := ''; +end; + +procedure SetUserVariable(const varnum: TVariableList; const value: string); +begin + if (value <> '') and (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then + lstrcpy(g_variables + integer(varnum) * g_stringsize, PChar(value)) +end; + +procedure NSISDialog(const text, caption: string; const buttons: integer); +begin + MessageBox(g_hwndParent, PChar(text), PChar(caption), buttons); +end; + +procedure ex_dll(const hwndParent: HWND; const string_size: integer; const variables: PChar; const stacktop: pointer); cdecl; +begin + // setup global variables + g_stringsize := string_size; + g_hwndParent := hwndParent; + g_stacktop := stacktop; + g_variables := variables; + // end global variable setup + + NSISDialog(GetUserVariable(INST_0), 'The value of $0', MB_OK); + NSISDialog(PopString, 'pop', MB_OK); + PushString('Hello, this is a push'); + SetUserVariable(INST_0, 'This is user var $0'); +end; + +exports ex_dll; + +begin +end. diff --git a/tools/Examples/Plugin/exdll.dsp b/tools/Examples/Plugin/exdll.dsp new file mode 100644 index 0000000..81dc4a4 --- /dev/null +++ b/tools/Examples/Plugin/exdll.dsp @@ -0,0 +1,112 @@ +# Microsoft Developer Studio Project File - Name="exdll" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=exdll - 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 "exdll.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 "exdll.mak" CFG="exdll - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "exdll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "exdll - Win32 Debug" (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)" == "exdll - 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 "Release" +# PROP Intermediate_Dir "Release" +# 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 "EXDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O1 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXDLL_EXPORTS" /D NSISCALL=__stdcall /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 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib /nologo /dll /machine:I386 +# ADD LINK32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib nsis\pluginapi.lib /nologo /entry:"DllMain" /dll /machine:I386 /nodefaultlib /out:"../../Plugins/exdll.dll" /opt:nowin98 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "exdll - 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 "EXDLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXDLL_EXPORTS" /D NSISCALL=__stdcall /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 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib nsis\pluginapi.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "exdll - Win32 Release" +# Name "exdll - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\exdll.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\nsis\pluginapi.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/tools/Examples/Plugin/exdll.dsw b/tools/Examples/Plugin/exdll.dsw new file mode 100644 index 0000000..e8a07c1 --- /dev/null +++ b/tools/Examples/Plugin/exdll.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "exdll"=.\exdll.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/tools/Examples/Plugin/exdll_with_unit.dpr b/tools/Examples/Plugin/exdll_with_unit.dpr new file mode 100644 index 0000000..d9268d5 --- /dev/null +++ b/tools/Examples/Plugin/exdll_with_unit.dpr @@ -0,0 +1,100 @@ +{ + NSIS ExDLL2 example + Original is ExDLL + (C) 2001 - Peter Windridge + + Changed with delphi unit nsis.pas + by bernhard mayer + + Tested in Delphi 7.0 +} + +// Example NSIS code +{ +Section + exdll_with_unit::registerplugincallback + + StrCpy $3 "Hello" + Push "World" + exdll_with_unit::pop_dlg_push + Pop $1 + DetailPrint $$1=$1 + DetailPrint $$3=$3 + + GetFunctionAddress $0 nsistest + Push $0 + exdll_with_unit::callnsisfunc +SectionEnd + +Function nsistest + DetailPrint "Hello from NSIS function" +FunctionEnd +} + + +library exdll; + +uses + nsis, windows; + +{$IFDEF UNICODE} +type TString = System.WideString; // UnicodeString? +type PTChar = PWideChar; +{$ELSE} +type TString = AnsiString; +type PTChar = PAnsiChar; +{$ENDIF} + +procedure pop_dlg_push(const hwndParent: HWND; const string_size: integer; const variables: PTChar; const stacktop: pointer); cdecl; +begin + // set up global variables + Init(hwndParent, string_size, variables, stacktop); + + NSISDialog(GetUserVariable(INST_3), 'The value of $3', MB_OK); + NSISDialog(PopString, 'pop', MB_OK); + PushString('Hello, this is a push'); + SetUserVariable(INST_3, 'This is user var $3'); +end; + + +procedure callnsisfunc(const hwndParent: HWND; const string_size: integer; const variables: PTChar; const stacktop: pointer; const extraparameters: pointer); cdecl; +var + FuncAddr : TString; +begin + Init(hwndParent, string_size, variables, stacktop, extraparameters); + + FuncAddr := PopString(); + Call(FuncAddr); +end; + + +function mynsiscallback(const NSPIM: TNSPIM): Pointer; cdecl; +begin + Result := nil; + if NSPIM = NSPIM_UNLOAD then + begin + NSISDialog(PTChar('NSPIM_UNLOAD is the final callback, goodbye...'), PTChar('mynsiscallback'), MB_OK); + end; +end; + + +procedure registerplugincallback(const hwndParent: HWND; const string_size: integer; const variables: PTChar; const stacktop: pointer; const extraparameters: pointer); cdecl; +var + ThisDllInstance : HMODULE; +begin + Init(hwndParent, string_size, variables, stacktop, extraparameters); + + if g_extraparameters <> nil then + begin + ThisDllInstance := hInstance; + TRegisterPluginCallback(g_extraparameters.RegisterPluginCallback)(ThisDllInstance, @mynsiscallback); + end; +end; + + +exports pop_dlg_push; +exports callnsisfunc; +exports registerplugincallback; + +begin +end. diff --git a/tools/Examples/Plugin/extdll.inc b/tools/Examples/Plugin/extdll.inc new file mode 100644 index 0000000..e3b7476 --- /dev/null +++ b/tools/Examples/Plugin/extdll.inc @@ -0,0 +1,145 @@ +;################################################################ +; ExtDLL header for MASM32 +; +; Author: Ramon +; +; Obs: This header must be included after windows.inc and kernel32.inc +; because it need the prototypes for lstrcpy, lstrcpyn, +; GlobalAlloc and GlobalFree +; +;################################################################ +stack_t struct + next dd ? + text dd ? ; 1 DUP(?) ; this should be the length of string_size +stack_t ends + +.const +; For page showing plug-ins +WM_NOTIFY_OUTER_NEXT equ (WM_USER+0x8) +WM_NOTIFY_CUSTOM_READY equ (WM_USER+0xd) +NOTIFY_BYE_BYE equ 'x' + +INST_0 EQU 0 ; $0 +INST_1 EQU 1 ; $1 +INST_2 EQU 2 ; $2 +INST_3 EQU 3 ; $3 +INST_4 EQU 4 ; $4 +INST_5 EQU 5 ; $5 +INST_6 EQU 6 ; $6 +INST_7 EQU 7 ; $7 +INST_8 EQU 8 ; $8 +INST_9 EQU 9 ; $9 +INST_R0 EQU 10 ; $R0 +INST_R1 EQU 11 ; $R1 +INST_R2 EQU 12 ; $R2 +INST_R3 EQU 13 ; $R3 +INST_R4 EQU 14 ; $R4 +INST_R5 EQU 15 ; $R5 +INST_R6 EQU 16 ; $R6 +INST_R7 EQU 17 ; $R7 +INST_R8 EQU 18 ; $R8 +INST_R9 EQU 19 ; $R9 +INST_CMDLINE EQU 20 ; $CMDLINE +INST_INSTDIR EQU 21 ; $INSTDIR +INST_OUTDIR EQU 22 ; $OUTDIR +INST_EXEDIR EQU 23 ; $EXEDIR +INST_LANG EQU 24 ; $LANGUAGE +__INST_LAST EQU 25 + +.data? +g_stringsize dd ? +g_stacktop dd ? +g_variables dd ? + +m2m MACRO M1, M2 + push M2 + pop M1 +ENDM + +EXDLL_INIT MACRO + m2m g_stringsize, string_size + m2m g_stacktop, stacktop + m2m g_variables, variables +ENDM + +.code + +; utility functions (not required but often useful) +popstring proc uses edi pStr:DWORD + + LOCAL th:DWORD + + mov edi, g_stacktop + cmp edi, 0 + jz STACK_ERR + mov edi, [edi] + cmp edi, 0 + jz STACK_ERR + + ASSUME edi:PTR stack_t + invoke lstrcpy, pStr, ADDR [edi].text + mov th , edi + mov edi, [edi].next + mov eax, g_stacktop + mov [eax], edi + invoke GlobalFree, th + ASSUME edi:PTR NOTHING + mov eax, 0 + ret + +STACK_ERR: + mov eax, 1 + ret + +popstring endp + +pushstring proc uses edi pStr:DWORD + + cmp g_stacktop, 0 + jz STACK_ERR + + mov eax, sizeof stack_t + add eax, g_stringsize + invoke GlobalAlloc, GPTR, eax + + mov edi, eax + assume edi:PTR stack_t + + invoke lstrcpyn, ADDR [edi].text, pStr, g_stringsize + mov eax, g_stacktop + push DWORD PTR[eax] + mov [eax], edi + pop eax + ;lea edi, [edi].next ; Not needed [edi].next == edi + mov DWORD PTR[edi], eax + ASSUME edi:PTR NOTHING + +STACK_ERR: + ret + +pushstring endp + +getuservariable proc varnum:DWORD + + .if varnum < 0 || varnum >= __INST_LAST + xor eax, eax + .else + mov eax, varnum + imul eax, g_stringsize + add eax, g_variables + .endif + ret + +getuservariable endp + +setuservariable proc varnum:DWORD, var:DWORD + + .if (var != NULL && varnum >= 0 && varnum < __INST_LAST) + mov eax, varnum + imul eax, g_stringsize + add eax, g_variables + invoke lstrcpy, eax, var + .endif + ret + +setuservariable endp diff --git a/tools/Examples/Plugin/nsis.pas b/tools/Examples/Plugin/nsis.pas new file mode 100644 index 0000000..1648472 --- /dev/null +++ b/tools/Examples/Plugin/nsis.pas @@ -0,0 +1,236 @@ +{ + Original Code from + (C) 2001 - Peter Windridge + + Code in separate unit and some changes + 2003 by Bernhard Mayer + + Fixed and formatted by Brett Dever + http://editor.nfscheats.com/ + + simply include this unit in your plugin project and export + functions as needed +} + +unit nsis; + +interface + +uses + windows, SysUtils +{$IFNDEF FPC} + ,CommCtrl +{$ENDIF} +{$IF FPC_FULLVERSION < 30000} ; This is probably wrong + ,CommCtrl +{$ENDIF} + ; + +{$IFDEF UNICODE} +type NSISTString = System.WideString; // UnicodeString? +type NSISPTChar = PWideChar; +{$ELSE} +type NSISTString = AnsiString; +type NSISPTChar = PAnsiChar; +{$ENDIF} + +type + VarConstants = ( + 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 + ); + TVariableList = INST_0..__INST_LAST; + +type + PluginCallbackMessages = ( + NSPIM_UNLOAD, // This is the last message a plugin gets, do final cleanup + NSPIM_GUIUNLOAD // Called after .onGUIEnd + ); + TNSPIM = NSPIM_UNLOAD..NSPIM_GUIUNLOAD; + + //TPluginCallback = function (const NSPIM: Integer): Pointer; cdecl; + + TExecuteCodeSegment = function (const funct_id: Integer; const parent: HWND): Integer; stdcall; + Tvalidate_filename = procedure (const filename: NSISPTChar); stdcall; + TRegisterPluginCallback = function (const DllInstance: HMODULE; const CallbackFunction: Pointer): Integer; stdcall; + + pexec_flags_t = ^exec_flags_t; + exec_flags_t = record + autoclose: Integer; + all_user_var: Integer; + exec_error: Integer; + abort: Integer; + exec_reboot: Integer; + reboot_called: Integer; + XXX_cur_insttype: Integer; + plugin_api_version: Integer; + silent: Integer; + instdir_error: Integer; + rtl: Integer; + errlvl: Integer; + alter_reg_view: Integer; + status_update: Integer; + end; + + pextrap_t = ^extrap_t; + extrap_t = record + exec_flags: Pointer; // exec_flags_t; + exec_code_segment: TExecuteCodeSegment; // TFarProc; + validate_filename: Pointer; // Tvalidate_filename; + RegisterPluginCallback: Pointer; //TRegisterPluginCallback; + end; + + pstack_t = ^stack_t; + stack_t = record + next: pstack_t; + text: NSISPTChar; + end; + +var + g_stringsize: integer; + g_stacktop: ^pstack_t; + g_variables: NSISPTChar; + g_hwndParent: HWND; + g_hwndList: HWND; + g_hwndLogList: HWND; + g_extraparameters: pextrap_t; + +procedure Init(const hwndParent: HWND; const string_size: integer; const variables: NSISPTChar; const stacktop: pointer; const extraparameters: pointer = nil); +function LogMessage(Msg : String): BOOL; +function Call(NSIS_func : String) : Integer; +function PopString(): NSISTString; +procedure PushString(const str: NSISTString=''); +function GetUserVariable(const varnum: TVariableList): NSISTString; +procedure SetUserVariable(const varnum: TVariableList; const value: NSISTString); +procedure NSISDialog(const text, caption: NSISTString; const buttons: integer); + +implementation + +procedure Init(const hwndParent: HWND; const string_size: integer; const variables: NSISPTChar; const stacktop: pointer; const extraparameters: pointer = nil); +begin + g_stringsize := string_size; + g_hwndParent := hwndParent; + g_stacktop := stacktop; + g_variables := variables; + g_hwndList := FindWindowEx(FindWindowEx(g_hwndParent, 0, '#32770', nil), 0,'SysListView32', nil); + g_extraparameters := extraparameters; +end; + + +function Call(NSIS_func : String) : Integer; +var + codeoffset: Integer; //The ID of nsis function +begin + Result := 0; + codeoffset := StrToIntDef(NSIS_func, 0); + if (codeoffset <> 0) and (g_extraparameters <> nil) then + begin + codeoffset := codeoffset - 1; + Result := g_extraparameters.exec_code_segment(codeoffset, g_hwndParent); + end; +end; + +function LogMessage(Msg : String): BOOL; +var + ItemCount : Integer; + item: TLVItem; +begin + Result := FAlse; + if g_hwndList = 0 then exit; + FillChar( item, sizeof(item), 0 ); + ItemCount := SendMessage(g_hwndList, LVM_GETITEMCOUNT, 0, 0); + item.iItem := ItemCount; + item.mask := LVIF_TEXT; + item.pszText := PChar(Msg); // Unicode bug? + ListView_InsertItem(g_hwndList, item); + ListView_EnsureVisible(g_hwndList, ItemCount, not 0); +end; + +function PopString(): NSISTString; +var + th: pstack_t; +begin + if NativeUInt(g_stacktop^) <> 0 then begin + th := g_stacktop^; + Result := NSISPTChar(@th.text); + g_stacktop^ := th.next; + GlobalFree(HGLOBAL(th)); + end; +end; + +procedure PushString(const str: NSISTString=''); +var + th: pstack_t; +begin + if NativeUInt(g_stacktop) <> 0 then begin +{$IFDEF UNICODE} + th := pstack_t(GlobalAlloc(GPTR, SizeOf(stack_t) + (g_stringsize * 2))); + lstrcpynW(@th.text, PWideChar(str), g_stringsize); +{$ELSE} + th := pstack_t(GlobalAlloc(GPTR, SizeOf(stack_t) + (g_stringsize ))); + lstrcpynA(@th.text, PAnsiChar(str), g_stringsize); +{$ENDIF} + th.next := g_stacktop^; + g_stacktop^ := th; + end; +end; + +function GetUserVariable(const varnum: TVariableList): NSISTString; +begin + if (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then + Result := g_variables + integer(varnum) * g_stringsize + else + Result := ''; +end; + +procedure SetUserVariable(const varnum: TVariableList; const value: NSISTString); +begin + if (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then +{$IFDEF UNICODE} + lstrcpyW(g_variables + integer(varnum) * (g_stringsize), PWideChar(value)) +{$ELSE} + lstrcpyA(g_variables + integer(varnum) * (g_stringsize), PAnsiChar(value)) +{$ENDIF} +end; + +procedure NSISDialog(const text, caption: NSISTString; const buttons: integer); +var + hwndOwner: HWND; +begin + hwndOwner := g_hwndParent; + if not IsWindow(g_hwndParent) then hwndOwner := 0; // g_hwndParent is not valid in NSPIM_[GUI]UNLOAD +{$IFDEF UNICODE} + MessageBoxW(hwndOwner, PWideChar(text), PWideChar(caption), buttons); +{$ELSE} + MessageBoxA(hwndOwner, PAnsiChar(text), PAnsiChar(caption), buttons); +{$ENDIF} +end; + +begin + +end. + diff --git a/tools/Examples/Plugin/nsis/api.h b/tools/Examples/Plugin/nsis/api.h new file mode 100644 index 0000000..8157f34 --- /dev/null +++ b/tools/Examples/Plugin/nsis/api.h @@ -0,0 +1,85 @@ +/* + * apih + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2023 Nullsoft and Contributors + * + * Licensed under the zlib/libpng license (the "License"); + * you may not use this file except in compliance with the License. + * + * Licence details can be found in the file COPYING. + * + * This software is provided 'as-is', without any express or implied + * warranty. + */ + +#ifndef _NSIS_EXEHEAD_API_H_ +#define _NSIS_EXEHEAD_API_H_ + +// Starting with NSIS 2.42, you can check the version of the plugin API in exec_flags->plugin_api_version +// The format is 0xXXXXYYYY where X is the major version and Y is the minor version (MAKELONG(y,x)) +// When doing version checks, always remember to use >=, ex: if (pX->exec_flags->plugin_api_version >= NSISPIAPIVER_1_0) {} + +#define NSISPIAPIVER_1_0 0x00010000 +#define NSISPIAPIVER_CURR NSISPIAPIVER_1_0 + +// NSIS Plug-In Callback Messages +enum NSPIM +{ + NSPIM_UNLOAD, // This is the last message a plugin gets, do final cleanup + NSPIM_GUIUNLOAD, // Called after .onGUIEnd +}; + +// Prototype for callbacks registered with extra_parameters->RegisterPluginCallback() +// Return NULL for unknown messages +// Should always be __cdecl for future expansion possibilities +typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM); + +// extra_parameters data structure containing other interesting stuff +// besides the stack, variables and HWND passed on to plug-ins. +typedef struct +{ + int autoclose; // SetAutoClose + int all_user_var; // SetShellVarContext: User context = 0, Machine context = 1 + int exec_error; // IfErrors/ClearErrors/SetErrors + int abort; // IfAbort + int exec_reboot; // IfRebootFlag/SetRebootFlag (NSIS_SUPPORT_REBOOT) + int reboot_called; // NSIS_SUPPORT_REBOOT + int XXX_cur_insttype; // Deprecated + int plugin_api_version; // Plug-in ABI. See NSISPIAPIVER_CURR (Note: used to be XXX_insttype_changed) + int silent; // IfSilent/SetSilent (NSIS_CONFIG_SILENT_SUPPORT) + int instdir_error; // GetInstDirError + int rtl; // IfRtlLanguage: 1 if $LANGUAGE is a RTL language + int errlvl; // SetErrorLevel + int alter_reg_view; // SetRegView: Default View = 0, Alternative View = (sizeof(void*) > 4 ? KEY_WOW64_32KEY : KEY_WOW64_64KEY) + int status_update; // SetDetailsPrint +} exec_flags_t; + +#ifndef NSISCALL +# define NSISCALL __stdcall +#endif +#if !defined(_WIN32) && !defined(LPTSTR) +# define LPTSTR TCHAR* +#endif + +typedef struct { + exec_flags_t *exec_flags; + int (NSISCALL *ExecuteCodeSegment)(int, HWND); + void (NSISCALL *validate_filename)(LPTSTR); + int (NSISCALL *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK); // returns 0 on success, 1 if already registered and < 0 on errors +} extra_parameters; + +// Definitions for page showing plug-ins +// See Ui.c to understand better how they're used + +// sent to the outer window to tell it to go to the next inner window +#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8) + +// custom pages should send this message to let NSIS know they're ready +#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd) + +// sent as wParam with WM_NOTIFY_OUTER_NEXT when user cancels - heed its warning +#define NOTIFY_BYE_BYE 'x' + +#endif /* _NSIS_EXEHEAD_API_H_ */ diff --git a/tools/Examples/Plugin/nsis/nsis_tchar.h b/tools/Examples/Plugin/nsis/nsis_tchar.h new file mode 100644 index 0000000..ba39d2a --- /dev/null +++ b/tools/Examples/Plugin/nsis/nsis_tchar.h @@ -0,0 +1,229 @@ +/* + * nsis_tchar.h + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2023 Nullsoft and Contributors + * + * This software is provided 'as-is', without any express or implied + * warranty. + * + * For Unicode support by Jim Park -- 08/30/2007 + */ + +// Jim Park: Only those we use are listed here. + +#pragma once + +#ifdef _UNICODE + +#ifndef _T +#define __T(x) L ## x +#define _T(x) __T(x) +#define _TEXT(x) __T(x) +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +#if !defined(_NATIVE_WCHAR_T_DEFINED) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short TCHAR; +#else +typedef wchar_t TCHAR; +#endif +#endif + + +// program +#define _tenviron _wenviron +#define __targv __wargv + +// printfs +#define _ftprintf fwprintf +#define _sntprintf _snwprintf +#if (defined(_MSC_VER) && (_MSC_VER<=1310||_MSC_FULL_VER<=140040310)) || defined(__MINGW32__) +# define _stprintf swprintf +#else +# define _stprintf _swprintf +#endif +#define _tprintf wprintf +#define _vftprintf vfwprintf +#define _vsntprintf _vsnwprintf +#if defined(_MSC_VER) && (_MSC_VER<=1310) +# define _vstprintf vswprintf +#else +# define _vstprintf _vswprintf +#endif + +// scanfs +#define _tscanf wscanf +#define _stscanf swscanf + +// string manipulations +#define _tcscat wcscat +#define _tcschr wcschr +#define _tcsclen wcslen +#define _tcscpy wcscpy +#define _tcsdup _wcsdup +#define _tcslen wcslen +#define _tcsnccpy wcsncpy +#define _tcsncpy wcsncpy +#define _tcsrchr wcsrchr +#define _tcsstr wcsstr +#define _tcstok wcstok + +// string comparisons +#define _tcscmp wcscmp +#define _tcsicmp _wcsicmp +#define _tcsncicmp _wcsnicmp +#define _tcsncmp wcsncmp +#define _tcsnicmp _wcsnicmp + +// upper / lower +#define _tcslwr _wcslwr +#define _tcsupr _wcsupr +#define _totlower towlower +#define _totupper towupper + +// conversions to numbers +#define _tcstoi64 _wcstoi64 +#define _tcstol wcstol +#define _tcstoul wcstoul +#define _tstof _wtof +#define _tstoi _wtoi +#define _tstoi64 _wtoi64 +#define _ttoi _wtoi +#define _ttoi64 _wtoi64 +#define _ttol _wtol + +// conversion from numbers to strings +#define _itot _itow +#define _ltot _ltow +#define _i64tot _i64tow +#define _ui64tot _ui64tow + +// file manipulations +#define _tfopen _wfopen +#define _topen _wopen +#define _tremove _wremove +#define _tunlink _wunlink + +// reading and writing to i/o +#define _fgettc fgetwc +#define _fgetts fgetws +#define _fputts fputws +#define _gettchar getwchar + +// directory +#define _tchdir _wchdir + +// environment +#define _tgetenv _wgetenv +#define _tsystem _wsystem + +// time +#define _tcsftime wcsftime + +#else // ANSI + +#ifndef _T +#define _T(x) x +#define _TEXT(x) x +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +typedef char TCHAR; +#endif + +// program +#define _tenviron environ +#define __targv __argv + +// printfs +#define _ftprintf fprintf +#define _sntprintf _snprintf +#define _stprintf sprintf +#define _tprintf printf +#define _vftprintf vfprintf +#define _vsntprintf _vsnprintf +#define _vstprintf vsprintf + +// scanfs +#define _tscanf scanf +#define _stscanf sscanf + +// string manipulations +#define _tcscat strcat +#define _tcschr strchr +#define _tcsclen strlen +#define _tcscnlen strnlen +#define _tcscpy strcpy +#define _tcsdup _strdup +#define _tcslen strlen +#define _tcsnccpy strncpy +#define _tcsrchr strrchr +#define _tcsstr strstr +#define _tcstok strtok + +// string comparisons +#define _tcscmp strcmp +#define _tcsicmp _stricmp +#define _tcsncmp strncmp +#define _tcsncicmp _strnicmp +#define _tcsnicmp _strnicmp + +// upper / lower +#define _tcslwr _strlwr +#define _tcsupr _strupr + +#define _totupper toupper +#define _totlower tolower + +// conversions to numbers +#define _tcstol strtol +#define _tcstoul strtoul +#define _tstof atof +#define _tstoi atoi +#define _tstoi64 _atoi64 +#define _tstoi64 _atoi64 +#define _ttoi atoi +#define _ttoi64 _atoi64 +#define _ttol atol + +// conversion from numbers to strings +#define _i64tot _i64toa +#define _itot _itoa +#define _ltot _ltoa +#define _ui64tot _ui64toa + +// file manipulations +#define _tfopen fopen +#define _topen _open +#define _tremove remove +#define _tunlink _unlink + +// reading and writing to i/o +#define _fgettc fgetc +#define _fgetts fgets +#define _fputts fputs +#define _gettchar getchar + +// directory +#define _tchdir _chdir + +// environment +#define _tgetenv getenv +#define _tsystem system + +// time +#define _tcsftime strftime + +#endif + +// is functions (the same in Unicode / ANSI) +#define _istgraph isgraph +#define _istascii __isascii + +#define __TFILE__ _T(__FILE__) +#define __TDATE__ _T(__DATE__) +#define __TTIME__ _T(__TIME__) diff --git a/tools/Examples/Plugin/nsis/pluginapi-x86-ansi.lib b/tools/Examples/Plugin/nsis/pluginapi-x86-ansi.lib new file mode 100644 index 0000000..2607232 Binary files /dev/null and b/tools/Examples/Plugin/nsis/pluginapi-x86-ansi.lib differ diff --git a/tools/Examples/Plugin/nsis/pluginapi-x86-unicode.lib b/tools/Examples/Plugin/nsis/pluginapi-x86-unicode.lib new file mode 100644 index 0000000..7ba307f Binary files /dev/null and b/tools/Examples/Plugin/nsis/pluginapi-x86-unicode.lib differ diff --git a/tools/Examples/Plugin/nsis/pluginapi.h b/tools/Examples/Plugin/nsis/pluginapi.h new file mode 100644 index 0000000..63fe790 --- /dev/null +++ b/tools/Examples/Plugin/nsis/pluginapi.h @@ -0,0 +1,108 @@ +#ifndef ___NSIS_PLUGIN__H___ +#define ___NSIS_PLUGIN__H___ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "api.h" +#include "nsis_tchar.h" // BUGBUG: Why cannot our plugins use the compilers tchar.h? + +#ifndef NSISCALL +# define NSISCALL WINAPI +#endif + +#define EXDLL_INIT() { \ + g_stringsize=string_size; \ + g_stacktop=stacktop; \ + g_variables=variables; } + +typedef struct _stack_t { + struct _stack_t *next; +#ifdef UNICODE + WCHAR text[1]; // this should be the length of g_stringsize when allocating +#else + char text[1]; +#endif +} stack_t; + +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 +}; + +extern unsigned int g_stringsize; +extern stack_t **g_stacktop; +extern LPTSTR g_variables; + +void NSISCALL pushstring(LPCTSTR str); +void NSISCALL pushintptr(INT_PTR value); +#define pushint(v) pushintptr((INT_PTR)(v)) +int NSISCALL popstring(LPTSTR str); // 0 on success, 1 on empty stack +int NSISCALL popstringn(LPTSTR str, int maxlen); // with length limit, pass 0 for g_stringsize +INT_PTR NSISCALL popintptr(); +#define popint() ( (int) popintptr() ) +int NSISCALL popint_or(); // with support for or'ing (2|4|8) +INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s); +#define myatoi(s) ( (int) nsishelper_str_to_ptr(s) ) // converts a string to an integer +unsigned int NSISCALL myatou(LPCTSTR s); // converts a string to an unsigned integer, decimal only +int NSISCALL myatoi_or(LPCTSTR s); // with support for or'ing (2|4|8) +LPTSTR NSISCALL getuservariable(const int varnum); +void NSISCALL setuservariable(const int varnum, LPCTSTR var); + +#ifdef UNICODE +#define PopStringW(x) popstring(x) +#define PushStringW(x) pushstring(x) +#define SetUserVariableW(x,y) setuservariable(x,y) + +int NSISCALL PopStringA(LPSTR ansiStr); +void NSISCALL PushStringA(LPCSTR ansiStr); +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr); +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr); +void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr); + +#else +// ANSI defs + +#define PopStringA(x) popstring(x) +#define PushStringA(x) pushstring(x) +#define SetUserVariableA(x,y) setuservariable(x,y) + +int NSISCALL PopStringW(LPWSTR wideStr); +void NSISCALL PushStringW(LPWSTR wideStr); +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr); +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr); +void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif//!___NSIS_PLUGIN__H___ diff --git a/tools/Examples/Splash/Example.nsi b/tools/Examples/Splash/Example.nsi new file mode 100644 index 0000000..2cc62b5 --- /dev/null +++ b/tools/Examples/Splash/Example.nsi @@ -0,0 +1,21 @@ +Name "Splash.dll test" + +OutFile "Splash Test.exe" + +XPStyle on + +Function .onInit + # the plugins dir is automatically deleted when the installer exits + InitPluginsDir + File /oname=$PLUGINSDIR\splash.bmp "${NSISDIR}\Contrib\Graphics\Wizard\orange-nsis.bmp" + #optional + #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav" + + splash::show 1000 $PLUGINSDIR\splash + + Pop $0 ; $0 has '1' if the user closed the splash screen early, + ; '0' if everything closed normally, and '-1' if some error occurred. +FunctionEnd + +Section +SectionEnd \ No newline at end of file diff --git a/tools/Examples/StartMenu/Example.nsi b/tools/Examples/StartMenu/Example.nsi new file mode 100644 index 0000000..c5c9d04 --- /dev/null +++ b/tools/Examples/StartMenu/Example.nsi @@ -0,0 +1,50 @@ +Name "StartMenu.dll test" + +OutFile "StartMenu Test.exe" + +XPStyle on + +Page directory +DirText "This installer will create some shortcuts to MakeNSIS in the start menu.$\nFor this it needs NSIS's path." \ + "Please specify the path in which you have installed NSIS:" +InstallDir "${NSISDIR}" +Function .onVerifyInstDir + IfFileExists $INSTDIR\makensis.exe +2 + Abort +FunctionEnd + +Page custom StartMenuGroupSelect "" ": Start Menu Folder" +Function StartMenuGroupSelect + Push $R1 + + StartMenu::Select /checknoshortcuts "Don't create a start menu folder" /autoadd /lastused $R0 "StartMenu.dll test" + Pop $R1 + + StrCmp $R1 "success" success + StrCmp $R1 "cancel" done + ; error + MessageBox MB_OK $R1 + StrCpy $R0 "StartMenu.dll test" # use default + Return + success: + Pop $R0 + + done: + Pop $R1 +FunctionEnd + +Page instfiles +Section + # this part is only necessary if you used /checknoshortcuts + StrCpy $R1 $R0 1 + StrCmp $R1 ">" skip + + CreateDirectory $SMPROGRAMS\$R0 + CreateShortcut $SMPROGRAMS\$R0\MakeNSISw.lnk $INSTDIR\makensisw.exe + + SetShellVarContext All + CreateDirectory $SMPROGRAMS\$R0 + CreateShortcut "$SMPROGRAMS\$R0\All users MakeNSISw.lnk" $INSTDIR\makensisw.exe + + skip: +SectionEnd \ No newline at end of file diff --git a/tools/Examples/StrFunc.nsi b/tools/Examples/StrFunc.nsi new file mode 100644 index 0000000..2c52231 --- /dev/null +++ b/tools/Examples/StrFunc.nsi @@ -0,0 +1,562 @@ +Name "NSIS StrFunc Example" +OutFile "StrFunc.exe" +ShowInstDetails show +ShowUninstDetails show +XPStyle on +RequestExecutionLevel user + +!include "StrFunc.nsh" + +# Declare used functions +${StrCase} +${StrClb} +${StrIOToNSIS} +${StrLoc} +${StrNSISToIO} +${StrRep} +${StrStr} +${StrStrAdv} +${StrTok} +${StrTrimNewLines} +${StrSort} + +${UnStrCase} +${UnStrClb} +${UnStrIOToNSIS} +${UnStrLoc} +${UnStrNSISToIO} +${UnStrRep} +${UnStrStr} +${UnStrStrAdv} +${UnStrTok} +${UnStrTrimNewLines} +${UnStrSort} + + +Var SFPass +Var SFTotl +!macro EndStrFuncTestEx lbl name + IfErrors ${lbl} + DetailPrint "PASSED ${name} test" + IntOp $SFPass $SFPass + 1 + IntOp $SFTotl $SFTotl + 1 + Goto +3 +${lbl}: + DetailPrint "FAILED ${name} test" + IntOp $SFTotl $SFTotl + 1 +!macroend +!macro EndStrFuncTest name + !insertmacro EndStrFuncTestEx "${name}error" "${name}" +!macroend + +CompletedText "Passed $SFPass of $SFTotl tests" +!macro CompletedAllTests + StrCmp $SFPass $SFTotl +2 + SetErrorLevel 42 +!macroend + +!macro StackVerificationStart + StrCpy $0 S0 + StrCpy $1 S1 + StrCpy $2 S2 + StrCpy $3 S3 + StrCpy $4 S4 + StrCpy $5 S5 + StrCpy $6 S6 + StrCpy $7 S7 + StrCpy $8 S8 + StrCpy $9 S9 + StrCpy $R0 SR0 + StrCpy $R1 SR1 + StrCpy $R2 SR2 + StrCpy $R3 SR3 + StrCpy $R4 SR4 + StrCpy $R5 SR5 + StrCpy $R6 SR6 + StrCpy $R7 SR7 + StrCpy $R8 SR8 + StrCpy $R9 SR9 +!macroend + +!macro StackVerificationEnd + ClearErrors + ${If} $1 != "S1" + ${OrIf} $2 != "S2" + ${OrIf} $3 != "S3" + ${OrIf} $4 != "S4" + ${OrIf} $5 != "S5" + ${OrIf} $6 != "S6" + ${OrIf} $7 != "S7" + ${OrIf} $8 != "S8" + ${OrIf} $9 != "S9" + ${OrIf} $R0 != "SR0" + ${OrIf} $R1 != "SR1" + ${OrIf} $R2 != "SR2" + ${OrIf} $R3 != "SR3" + ${OrIf} $R4 != "SR4" + ${OrIf} $R5 != "SR5" + ${OrIf} $R6 != "SR6" + ${OrIf} $R7 != "SR7" + ${OrIf} $R8 != "SR8" + ${OrIf} $R9 != "SR9" + SetErrors + ${EndIf} +!macroend + +Section + + # Test case conversion + !insertmacro StackVerificationStart + ${StrCase} $0 "This is just an example. A very simple one." "" + StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror + ${StrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S" + StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror + ${StrCase} $0 "This is just an example. A very simple one." "L" + StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror + ${StrCase} $0 "This is just an example. A very simple one." "U" + StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror + ${StrCase} $0 "This is just an example. A very simple one." "T" + StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror + ${StrCase} $0 "This is just an example. A very simple one." "<>" + StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror + ${StrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S" + StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror + ${StrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>" + StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror + ${StrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S" + StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrCase + + # Test clipboard function + !insertmacro StackVerificationStart + !verbose push 4 + ${StrClb} $0 "StrFunc clipboard test" ">" + !verbose pop + StrCmp $0 "" 0 strclberror + ${StrClb} $0 "StrFunc clipboard test #2" "<>" + StrCmp $0 "StrFunc clipboard test" 0 strclberror + ${StrClb} $0 "" "<" + StrCmp $0 "StrFunc clipboard test #2" 0 strclberror + ${StrClb} $0 "" "" + StrCmp $0 "" 0 strclberror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrClb + + # Test IO functions + !insertmacro StackVerificationStart + !macro testio str + ${StrNSISToIO} $0 "${str}" + ${StrIOToNSIS} $0 $0 + StrCmp $0 "${str}" 0 ioerror + !macroend + !insertmacro testio "$\rtest$\n" + !insertmacro testio "test$\n" + !insertmacro testio "$\rtest" + !insertmacro testio "test" + !insertmacro testio "$\r\$\t$\n" + !insertmacro testio "$\r \ $\t $\n $$" + !insertmacro testio "" + !insertmacro testio " " + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTestEx ioerror "StrNSISToIO/StrIOToNSIS" + + # Test string search functions + !insertmacro StackVerificationStart + ${StrLoc} $0 "This is just an example" "just" "<" + StrCmp $0 "11" 0 strlocerror + ${StrLoc} $0 a abc < + StrCmp $0 "" 0 strlocerror + ${StrLoc} $0 a abc > + StrCmp $0 "" 0 strlocerror + ${StrLoc} $0 abc a > + StrCmp $0 "0" 0 strlocerror + ${StrLoc} $0 abc b > + StrCmp $0 "1" 0 strlocerror + ${StrLoc} $0 abc c > + StrCmp $0 "2" 0 strlocerror + ${StrLoc} $0 abc a < + StrCmp $0 "2" 0 strlocerror + ${StrLoc} $0 abc b < + StrCmp $0 "1" 0 strlocerror + ${StrLoc} $0 abc c < + StrCmp $0 "0" 0 strlocerror + ${StrLoc} $0 abc d < + StrCmp $0 "" 0 strlocerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrLoc + + # Test string replacement + !insertmacro StackVerificationStart + ${StrRep} $0 "This is just an example" "an" "one" + StrCmp $0 "This is just one example" 0 strreperror + ${StrRep} $0 "test... test... 1 2 3..." "test" "testing" + StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror + ${StrRep} $0 "" "test" "testing" + StrCmp $0 "" 0 strreperror + ${StrRep} $0 "test" "test" "testing" + StrCmp $0 "testing" 0 strreperror + ${StrRep} $0 "test" "test" "" + StrCmp $0 "" 0 strreperror + ${StrRep} $0 "test" "" "abc" + StrCmp $0 "test" 0 strreperror + ${StrRep} $0 "test" "" "" + StrCmp $0 "test" 0 strreperror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrRep + + # Test sorting + !insertmacro StackVerificationStart + ${StrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0" + StrCmp $0 "This is an exam" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "j" " " "0" "" "0" + StrCmp $0 "just" 0 strsorterror + ${StrSort} $0 "This is just an example" "" "j" "" "0" "1" "0" + StrCmp $0 "This is just an example" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "us" "" "0" "1" "0" + StrCmp $0 "just an example" 0 strsorterror + ${StrSort} $0 "This is just an example" "" "u" " " "0" "1" "0" + StrCmp $0 "This is just" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "just" " " "0" "1" "0" + StrCmp $0 "just" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "t" " " "0" "1" "0" + StrCmp $0 "This" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "le" " " "0" "1" "0" + StrCmp $0 "example" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "le" " " "1" "0" "0" + StrCmp $0 " examp" 0 strsorterror + ${StrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0" + StrCmp $0 "error" 0 strsorterror + ${StrSort} $0 "" " " "something" " " "0" "1" "0" + StrCmp $0 "" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "j" " " "" "" "" + StrCmp $0 " just " 0 strsorterror + ${StrSort} $0 "This is just an example" " " "j" " " "1" "0" "1" + StrCmp $0 " ust " 0 strsorterror + ${StrSort} $0 "This is just an example" "" "j" "" "0" "0" "1" + StrCmp $0 "This is ust an example" 0 strsorterror + ${StrSort} $0 "This is just an example" " " "us" "" "1" "0" "0" + StrCmp $0 " jt an example" 0 strsorterror + ${StrSort} $0 "This is just an example" "" "u" " " "0" "0" "1" + StrCmp $0 "This is jst " 0 strsorterror + ${StrSort} $0 "This is just an example" " " "just" " " "1" "0" "1" + StrCmp $0 " " 0 strsorterror + ${StrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0" + StrCmp $0 " rror " 0 strsorterror + ${StrSort} $0 "" " " "something" " " "1" "0" "1" + StrCmp $0 "" 0 strsorterror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrSort + + !insertmacro StackVerificationStart + ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "g" + StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror + ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga" + StrCmp $0 "" 0 strstrerror + ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "" + StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror + ${StrStr} $0 "a" "abcefghijklmnopqrstuvwxyz" + StrCmp $0 "" 0 strstrerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrStr + + !insertmacro StackVerificationStart + ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0" + StrCmp $0 "abcabcabc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0" + StrCmp $0 "abc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0" + StrCmp $0 "" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0" + StrCmp $0 "abc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0" + StrCmp $0 "abcabcabc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0" + StrCmp $0 "" 0 strstradverror + ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0" + StrCmp $0 "abc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1" + StrCmp $0 "abcabc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1" + StrCmp $0 "abc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1" + StrCmp $0 "" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1" + StrCmp $0 "" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1" + StrCmp $0 "ABCabcabc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1" + StrCmp $0 "ABCabc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1" + StrCmp $0 "ABCabcabc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1" + StrCmp $0 "ABCabc" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1" + StrCmp $0 "" 0 strstradverror + ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1" + StrCmp $0 "abc" 0 strstradverror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrStrAdv + + # Test tokenizer + !insertmacro StackVerificationStart + ${StrTok} $0 "This is, or is not, just an example" " ," "4" "1" + StrCmp $0 "not" 0 strtokerror + ${StrTok} $0 "This is, or is not, just an example" " ," "4" "0" + StrCmp $0 "is" 0 strtokerror + ${StrTok} $0 "This is, or is not, just an example" " ," "152" "0" + StrCmp $0 "" 0 strtokerror + ${StrTok} $0 "This is, or is not, just an example" " ," "" "0" + StrCmp $0 "example" 0 strtokerror + ${StrTok} $0 "This is, or is not, just an example" " ," "L" "0" + StrCmp $0 "example" 0 strtokerror + ${StrTok} $0 "This is, or is not, just an example" " ," "0" "0" + StrCmp $0 "This" 0 strtokerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrTok + + # Test trim new lines + !insertmacro StackVerificationStart + ${StrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n" + StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrTrimNewlines + + InitPluginsDir + WriteUninstaller $PluginsDir\UnStrFunc.exe + ExecWait '"$PluginsDir\UnStrFunc.exe" _?=$PluginsDir' + + !insertmacro CompletedAllTests +SectionEnd + +Section Uninstall + + # Test case conversion + !insertmacro StackVerificationStart + ${UnStrCase} $0 "This is just an example. A very simple one." "" + StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror + ${UnStrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S" + StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror + ${UnStrCase} $0 "This is just an example. A very simple one." "L" + StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror + ${UnStrCase} $0 "This is just an example. A very simple one." "U" + StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror + ${UnStrCase} $0 "This is just an example. A very simple one." "T" + StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror + ${UnStrCase} $0 "This is just an example. A very simple one." "<>" + StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror + ${UnStrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S" + StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror + ${UnStrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>" + StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror + ${UnStrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S" + StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrCase + + # Test clipboard function + !insertmacro StackVerificationStart + ${UnStrClb} $0 "StrFunc clipboard test" ">" + StrCmp $0 "" 0 strclberror + ${UnStrClb} $0 "StrFunc clipboard test #2" "<>" + StrCmp $0 "StrFunc clipboard test" 0 strclberror + ${UnStrClb} $0 "" "<" + StrCmp $0 "StrFunc clipboard test #2" 0 strclberror + ${UnStrClb} $0 "" "" + StrCmp $0 "" 0 strclberror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrClb + + # Test IO functions + !insertmacro StackVerificationStart + !macro untestio str + ${UnStrNSISToIO} $0 "${str}" + ${UnStrIOToNSIS} $0 $0 + StrCmp $0 "${str}" 0 ioerror + !macroend + !insertmacro untestio "$\rtest$\n" + !insertmacro untestio "test$\n" + !insertmacro untestio "$\rtest" + !insertmacro untestio "test" + !insertmacro untestio "$\r\$\t$\n" + !insertmacro untestio "$\r \ $\t $\n $$" + !insertmacro untestio "" + !insertmacro untestio " " + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTestEx ioerror "StrNSISToIO/StrIOToNSIS" + + # Test string search functions + !insertmacro StackVerificationStart + ${UnStrLoc} $0 "This is just an example" "just" "<" + StrCmp $0 "11" 0 strlocerror + ${UnStrLoc} $0 a abc < + StrCmp $0 "" 0 strlocerror + ${UnStrLoc} $0 a abc > + StrCmp $0 "" 0 strlocerror + ${UnStrLoc} $0 abc a > + StrCmp $0 "0" 0 strlocerror + ${UnStrLoc} $0 abc b > + StrCmp $0 "1" 0 strlocerror + ${UnStrLoc} $0 abc c > + StrCmp $0 "2" 0 strlocerror + ${UnStrLoc} $0 abc a < + StrCmp $0 "2" 0 strlocerror + ${UnStrLoc} $0 abc b < + StrCmp $0 "1" 0 strlocerror + ${UnStrLoc} $0 abc c < + StrCmp $0 "0" 0 strlocerror + ${UnStrLoc} $0 abc d < + StrCmp $0 "" 0 strlocerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrLoc + + # Test string replacement + !insertmacro StackVerificationStart + ${UnStrRep} $0 "This is just an example" "an" "one" + StrCmp $0 "This is just one example" 0 strreperror + ${UnStrRep} $0 "test... test... 1 2 3..." "test" "testing" + StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror + ${UnStrRep} $0 "" "test" "testing" + StrCmp $0 "" 0 strreperror + ${UnStrRep} $0 "test" "test" "testing" + StrCmp $0 "testing" 0 strreperror + ${UnStrRep} $0 "test" "test" "" + StrCmp $0 "" 0 strreperror + ${UnStrRep} $0 "test" "" "abc" + StrCmp $0 "test" 0 strreperror + ${UnStrRep} $0 "test" "" "" + StrCmp $0 "test" 0 strreperror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrRep + + # Test sorting + !insertmacro StackVerificationStart + ${UnStrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0" + StrCmp $0 "This is an exam" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "j" " " "0" "" "0" + StrCmp $0 "just" 0 strsorterror + ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "1" "0" + StrCmp $0 "This is just an example" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "us" "" "0" "1" "0" + StrCmp $0 "just an example" 0 strsorterror + ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "1" "0" + StrCmp $0 "This is just" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "just" " " "0" "1" "0" + StrCmp $0 "just" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "t" " " "0" "1" "0" + StrCmp $0 "This" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "le" " " "0" "1" "0" + StrCmp $0 "example" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "le" " " "1" "0" "0" + StrCmp $0 " examp" 0 strsorterror + ${UnStrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0" + StrCmp $0 "error" 0 strsorterror + ${UnStrSort} $0 "" " " "something" " " "0" "1" "0" + StrCmp $0 "" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "j" " " "" "" "" + StrCmp $0 " just " 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "j" " " "1" "0" "1" + StrCmp $0 " ust " 0 strsorterror + ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "0" "1" + StrCmp $0 "This is ust an example" 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "us" "" "1" "0" "0" + StrCmp $0 " jt an example" 0 strsorterror + ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "0" "1" + StrCmp $0 "This is jst " 0 strsorterror + ${UnStrSort} $0 "This is just an example" " " "just" " " "1" "0" "1" + StrCmp $0 " " 0 strsorterror + ${UnStrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0" + StrCmp $0 " rror " 0 strsorterror + ${UnStrSort} $0 "" " " "something" " " "1" "0" "1" + StrCmp $0 "" 0 strsorterror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrSort + + !insertmacro StackVerificationStart + ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "g" + StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror + ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga" + StrCmp $0 "" 0 strstrerror + ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "" + StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror + ${UnStrStr} $0 "a" "abcefghijklmnopqrstuvwxyz" + StrCmp $0 "" 0 strstrerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrStr + + !insertmacro StackVerificationStart + ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0" + StrCmp $0 "abcabcabc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0" + StrCmp $0 "abc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0" + StrCmp $0 "" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0" + StrCmp $0 "abc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0" + StrCmp $0 "abcabcabc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0" + StrCmp $0 "abcabc" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0" + StrCmp $0 "" 0 strstradverror + ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0" + StrCmp $0 "abc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1" + StrCmp $0 "abcabc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1" + StrCmp $0 "abc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1" + StrCmp $0 "" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1" + StrCmp $0 "" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1" + StrCmp $0 "ABCabcabc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1" + StrCmp $0 "ABCabc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1" + StrCmp $0 "ABCabcabc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1" + StrCmp $0 "ABCabc" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1" + StrCmp $0 "" 0 strstradverror + ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1" + StrCmp $0 "abc" 0 strstradverror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrStrAdv + + # Test tokenizer + !insertmacro StackVerificationStart + ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "1" + StrCmp $0 "not" 0 strtokerror + ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "0" + StrCmp $0 "is" 0 strtokerror + ${UnStrTok} $0 "This is, or is not, just an example" " ," "152" "0" + StrCmp $0 "" 0 strtokerror + ${UnStrTok} $0 "This is, or is not, just an example" " ," "" "0" + StrCmp $0 "example" 0 strtokerror + ${UnStrTok} $0 "This is, or is not, just an example" " ," "L" "0" + StrCmp $0 "example" 0 strtokerror + ${UnStrTok} $0 "This is, or is not, just an example" " ," "0" "0" + StrCmp $0 "This" 0 strtokerror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrTok + + # Test trim new lines + !insertmacro StackVerificationStart + ${UnStrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n" + StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror + !insertmacro StackVerificationEnd + !insertmacro EndStrFuncTest StrTrimNewLines + + !insertmacro CompletedAllTests +SectionEnd diff --git a/tools/Examples/System/Resource.dll b/tools/Examples/System/Resource.dll new file mode 100644 index 0000000..a111cfd Binary files /dev/null and b/tools/Examples/System/Resource.dll differ diff --git a/tools/Examples/System/SysFunc.nsh b/tools/Examples/System/SysFunc.nsh new file mode 100644 index 0000000..7a3e307 --- /dev/null +++ b/tools/Examples/System/SysFunc.nsh @@ -0,0 +1,395 @@ +; Some useful functions based on System plugin +; +; (c) brainsucker, 2002 +; (r) BSForce + + +!verbose push 3 +!ifndef SysFunc.NSH.Included +!define SysFunc.NSH.Included + +!include "System.nsh" +!include "WinMessages.nsh" + +; ================= GetInstallerExeName implementation ================= + +; Adopted Get Parameter function -> now it gets full installer.exe path +; input - nothing, output -> full path at the top of the stack +Function GetInstallerExeName + Push $R0 + Push $R1 + Push $R2 + StrCpy $R0 $CMDLINE 1 + StrCpy $R1 '"' + StrCpy $R2 1 + StrCmp $R0 '"' loop + StrCpy $R1 ' ' ; we're scanning for a space instead of a quote + loop: + StrCpy $R0 $CMDLINE 1 $R2 + StrCmp $R0 $R1 loop2 + StrCmp $R0 "" loop2 + IntOp $R2 $R2 + 1 + Goto loop + loop2: + + ; Ok, have we found last exename character or string end? + StrCmp $R0 "" "" +2 + IntOp $R2 $R2 - 1 ; last exename char + StrCmp $R1 ' ' +3 ; was first character the '"', or something other? + StrCpy $R1 1 ; it was quote + Goto +2 + StrCpy $R1 0 + IntOp $R2 $R2 - $R1 + StrCpy $R0 $CMDLINE $R2 $R1 + + SearchPath $R0 $R0 ; expand file name to full path + + Pop $R2 + Pop $R1 + Exch $R0 +FunctionEnd + +; ================= systemGetFileSysTime implementation ================= + +!macro smGetFileSysTime FILENAME + Push ${FILENAME} + Call systemGetFileSysTime + Pop $R0 +!macroend + +; ----------------------------------------------------------------- +; systemGetFileSysTime (params on stack): +; FILENAME - name of file to get file time +; returns to stack (SYSTEMTIME struct addr) +; ----------------------------------------------------------------- + +; uses original method from NSIS +Function systemGetFileSysTime + System::Store "s r1" + + StrCpy $R0 0 + + ; create WIN32_FIND_DATA struct + System::Call '*${stWIN32_FIND_DATA} .r2' + + ; Find file info + System::Call '${sysFindFirstFile}(r1, r2) .r3' + + ; ok? + IntCmp $3 ${INVALID_HANDLE_VALUE} sgfst_exit + + ; close file search + System::Call '${sysFindClose}(r3)' + + ; Create systemtime struct for local time + System::Call '*${stSYSTEMTIME} .R0' + + ; Get File time + System::Call '*$2${stWIN32_FIND_DATA} (,,, .r3)' + + ; Convert file time (UTC) to local file time + System::Call '${sysFileTimeToLocalFileTime}(r3, .r1)' + + ; Convert file time to system time + System::Call '${sysFileTimeToSystemTime}(r1, R0)' + +sgfst_exit: + ; free used memory for WIN32_FIND_DATA struct + System::Free $2 + + System::Store "P0 l" +FunctionEnd + +; ================= systemMessageBox implementation ================= + +; return to $R0 +!macro smMessageBox MODULE MSG CAPTION STYLE ICON + Push "${ICON}" + Push "${STYLE}" + Push "${CAPTION}" + Push "${MSG}" + Push "${MODULE}" + Call systemMessageBox + Pop $R0 +!macroend + +; ----------------------------------------------------------------- +; systemMessageBox (params on stack): +; Module: either handle ("i HANDLE", HANDLE could be 0) or "modulename" +; Msg: text of message +; Caption: caption of message box window +; Style: style, buttons etc +; Icon: either icon handle ("i HANDLE") or resource name +; returns to stack +; ----------------------------------------------------------------- +Function systemMessageBox + System::Store "s r2r3r4r5r6" + + ; may be Module is module handle? + StrCpy $1 $2 + IntCmp $1 0 0 smbnext smbnext + + ; Get module handle + System::Call '${sysGetModuleHandle}($2) .r1' + IntCmp $1 0 loadlib libnotloaded libnotloaded + +loadlib: + ; Load module and get handle + System::Call '${sysLoadLibrary}($2) .r1' + IntCmp $1 0 0 smbnext smbnext + +libnotloaded: + ; Indicate that LoadLibrary wasn't used + StrCpy $2 1 + +smbnext: + ; Create MSGBOXPARAMS structure + System::Call '*${stMSGBOXPARAMS}(, $HWNDPARENT, r1, r3, r4, "$5|${MB_USERICON}", $6, _) .r0' + ; call MessageBoxIndirect + System::Call '${sysMessageBoxIndirect}(r0) .R0' + ; free MSGBOXPARAMS structure + + System::Free $0 + + ; have we used load library at start? + IntCmp $2 0 0 smbskipfree smbskipfree + ; No, then free the module + System::Call '${sysFreeLibrary}(r1)' + +smbskipfree: + System::Store "P0 l" +FunctionEnd + +; ================= systemSplash implementation ================= + +; returns to $R0 +!macro smSystemSplash DELAY FILE + Push ${FILE} + Push ${DELAY} + call systemSplash + Pop $R0 +!macroend + +; ----------------------------------------------------------------- +; systemSplash (params on stack): +; Delay - time in ms to show the splash +; File - bitmap (& audio) file name (without extension) +; returns to stack +; ----------------------------------------------------------------- + +Function _systemSplashWndCB + ; Callback receives 4 values + System::Store "s r2r5r7r9" + + ; Message branching + IntCmp $5 ${WM_CLOSE} m_Close + IntCmp $5 ${WM_TIMER} m_Timer + IntCmp $5 ${WM_LBUTTONDOWN} m_Lbtn + IntCmp $5 ${WM_CREATE} m_Create + IntCmp $5 ${WM_PAINT} m_Paint + goto default + +m_Create: + ; Create structures + System::Call "*${stRECT} (_) .R8" + System::Call "*${stBITMAP} (_, &l0 .R7) .R9" + + ; Get bitmap info + System::Call "${sysGetObject} (r6, R7, R9)" + + ; Get desktop info + System::Call "${sysSystemParametersInfo} (${SPI_GETWORKAREA}, 0, R8, 0)" + + ; Style (callbacked) + System::Call "${sysSetWindowLong} (r2, ${GWL_STYLE}, 0) .s" + !insertmacro SINGLE_CALLBACK 5 $R7 1 _systemSplashWndCB + + ; Calculate and set window pos + + ; Get bmWidth(R2) and bmHeight(R3) + System::Call "*$R9${stBITMAP} (,.R2,.R3)" + ; Get left(R4), top(R5), right(R6), bottom(R7) + System::Call "*$R8${stRECT} (.R4,.R5,.R6,.R7)" + + ; Left pos + IntOp $R0 $R6 - $R4 + IntOp $R0 $R0 - $R2 + IntOp $R0 $R0 / 2 + IntOp $R0 $R0 + $R4 + + ; Top pos + IntOp $R1 $R7 - $R5 + IntOp $R1 $R1 - $R3 + IntOp $R1 $R1 / 2 + IntOp $R1 $R1 + $R5 + + System::Call "${sysSetWindowPos} (r2, 0, R0, R1, R2, R3, ${SWP_NOZORDER}) .s" + !insertmacro SINGLE_CALLBACK 6 $R7 1 _systemSplashWndCB + + ; Show window + System::Call "${sysShowWindow} (r2, ${SW_SHOW}) .s" + !insertmacro SINGLE_CALLBACK 7 $R7 1 _systemSplashWndCB + + ; Set Timer + System::Call "${sysSetTimer} (r2, 1, r8,)" + + ; Free used memory + System::Free $R8 + System::Free $R9 + + StrCpy $R0 0 + goto exit + +m_Paint: + ; Create structures + System::Call "*${stRECT} (_) .R8" + System::Call "*${stPAINTSTRUCT} (_) .R9" + + ; Begin Paint + System::Call "${sysBeginPaint} (r2, R9) .R7" + + ; CreateCompatibleDC + System::Call "${sysCreateCompatibleDC} (R7) .R6" + + ; GetClientRect + System::Call "${sysGetClientRect} (r2, R8)" + + ; Select new bitmap + System::Call "${sysSelectObject} (R6, r6) .R5" + + ; Get left(R0), top(R1), right(R2), bottom(R3) + System::Call "*$R8${stRECT} (.R0,.R1,.R2,.R3)" + + ; width=right-left + IntOp $R2 $R2 - $R0 + ; height=bottom-top + IntOp $R3 $R3 - $R1 + + System::Call "${sysBitBlt} (R7, R0, R1, R2, R3, R6, 0, 0, ${SRCCOPY})" + + ; Select old bitmap + System::Call "${sysSelectObject} (R6, R5)" + + ; Delete compatible DC + System::Call "${sysDeleteDC} (R6)" + + ; End Paint + System::Call "${sysEndPaint} (r2, R9)" + + ; Free used memory + System::Free $R8 + System::Free $R9 + + StrCpy $R0 0 + goto exit + +m_Timer: +m_Lbtn: + StrCpy $4 0 + IntCmp $5 ${WM_TIMER} destroy + StrCpy $4 1 + +destroy: + System::Call "${sysDestroyWindow} (r2) .s" + !insertmacro SINGLE_CALLBACK 12 $R4 1 _systemSplashWndCB + +default: + ; Default + System::Call "${sysDefWindowProc} (r2, r5, r7, r9) .s" + !insertmacro SINGLE_CALLBACK 14 $R0 1 _systemSplashWndCB + goto exit + +m_Close: + StrCpy $R0 0 + goto exit + +exit: + ; Restore + System::Store "p4P0 l R0r4" + + ; Return from callback + System::Call "$3" $R0 +FunctionEnd + +Function systemSplash + + ; Save registers and get input + System::Store "s r8r9" + + ; Get module instance + System::Call "${sysGetModuleHandle} (p) .r7" + + ; Get arrow cursor + System::Call "${sysLoadCursor} (0, p ${IDC_ARROW}) .R9" + + ; Get callback + System::Get "${sysWNDPROC}" + Pop $3 + + ; Create window class + System::Call "*${stWNDCLASS} (0,r3,0,0,r7,0,R9,0,p 0,'_sp') .R9" + + ; Register window class + System::Call "${sysRegisterClass} (R9) .R9" + IntCmp $R9 0 errorexit ; Class registered ok? + + ; Load Image (LR_CREATEDIBSECTION|LR_LOADFROMFILE = 0x2010) + System::Call '${sysLoadImage} (, s, ${IMAGE_BITMAP}, 0, 0, ${LR_CREATEDIBSECTION}|${LR_LOADFROMFILE}) .r6' "$9.bmp" + IntCmp $6 0 errorexit ; Image loaded ok? + + ; Start the sound (SND_ASYNC|SND_FILENAME|SND_NODEFAULT = 0x20003) + System::Call "${sysPlaySound} (s,,${SND_ASYNC}|${SND_FILENAME}|${SND_NODEFAULT})" "$9.wav" + + ; Create window + System::Call "${sysCreateWindowEx} (${WS_EX_TOOLWINDOW}, s, s,,,,,, $HWNDPARENT,,r7,) .s" "_sp" "_sp" + !insertmacro SINGLE_CALLBACK 1 $5 1 _systemSplashWndCB + + ; Create MSG struct + System::Call "*${stMSG} (_) p.R9" + + ; ------------------------- +repeat: + ; Check for window + System::Call "${sysIsWindow} (r5) .s" + !insertmacro SINGLE_CALLBACK 2 $R8 1 _systemSplashWndCB + IntCmp $R8 0 finish + + ; Get message + System::Call "${sysGetMessage} (R9, r5,_) .s" + !insertmacro SINGLE_CALLBACK 3 $R8 1 _systemSplashWndCB + IntCmp $R8 0 finish + + ; Dispatch message + System::Call "${sysDispatchMessage} (R9) .s" + !insertmacro SINGLE_CALLBACK 4 $R8 1 _systemSplashWndCB + + ; Repeat dispatch cycle + goto repeat + ; ------------------------- + +finish: + ; Stop the sound + System::Call "${sysPlaySound} (p 0, p 0, i 0)" + + ; Delete bitmap object + System::Call "${sysDeleteObject} (r6)" + + ; Delete the callback queue + System::Free $3 + + ; Dialog return + StrCpy $R0 $4 + goto exit + +; Exit in case of error +errorexit: + StrCpy $R0 -1 + goto exit + +exit: + ; Restore register and put output + System::Store "P0 l" +FunctionEnd + +!endif +!verbose pop \ No newline at end of file diff --git a/tools/Examples/System/System.nsh b/tools/Examples/System/System.nsh new file mode 100644 index 0000000..ec1506b --- /dev/null +++ b/tools/Examples/System/System.nsh @@ -0,0 +1,413 @@ +; Some useful functions, structures, constants +; +; (c) brainsucker, 2002 +; (r) BSForce + +!verbose push 3 +!ifndef System.NSH.Included +!define System.NSH.Included + +!include WinCore.nsh + +; ------------- Functions -------------- + +; LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +!define sysWNDPROC "(p.s, i.s, p.s, p.s) pss" + +; LRESULT DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +!define sysDefWindowProc "user32::DefWindowProc(p, i, p, p) p" + +!define sysMessageBox "user32::MessageBox(p, t, t, i) i" + +!define sysMessageBeep "user32::MessageBeep(i) i" + +!define sysMessageBoxIndirect 'user32::MessageBoxIndirect(p) i' + +; HMODULE GetModuleHandle(LPCTSTR lpModuleName); +!define sysGetModuleHandle "kernel32::GetModuleHandle(t) i" + +; HMODULE LoadLibrary(LPCTSTR lpFileName); +!define sysLoadLibrary "kernel32::LoadLibrary(t) p" + +; BOOL FreeLibrary(HMODULE hModule); +!define sysFreeLibrary "kernel32::FreeLibrary(p) i" + +; HCURSOR LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName); +!define sysLoadCursor "user32::LoadCursor(p, t) p" + +; ATOM RegisterClass(CONST WNDCLASS *lpWndClass); +!define sysRegisterClass "user32::RegisterClass(p) i" + +; HANDLE LoadImage(HINSTANCE hinst, LPCTSTR lpszName, UINT uType, +; int cxDesired, int cyDesired, UINT fuLoad); +!define sysLoadImage "user32::LoadImage(p, t, i, i, i, i) p" + +; BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); +!define sysPlaySound "winmm.dll::PlaySound(t, p, i) i" + +; HWND CreateWindowEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, +; DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, +; HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam); +!define sysCreateWindowEx "user32::CreateWindowEx(i, t, t, i, i, i, i, i, p, p, p, p) p" + +; BOOL IsWindow(HWND hWnd); +!define sysIsWindow "user32::IsWindow(p) i" + +; LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong); +!define sysSetWindowLong "user32::SetWindowLong(p, i, p) p" + +; BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); +!define sysSetWindowPos "user32::SetWindowPos(p, p, i, i, i, i, i) i" + +; BOOL ShowWindow(HWND hWnd, int nCmdShow); +!define sysShowWindow "user32::ShowWindow(p, i) i" + +; BOOL DestroyWindow(HWND hWnd); +!define sysDestroyWindow "user32::DestroyWindow(p) i" + +; BOOL GetClientRect(HWND hWnd, LPRECT lpRect); +!define sysGetClientRect "user32::GetClientRect(p, p) i" + +; BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); +!define sysGetMessage "user32::GetMessage(p, p, i, i) i" + +; LRESULT DispatchMessage(CONST MSG *lpmsg); +!define sysDispatchMessage "user32::DispatchMessage(p) p" + +; BOOL DeleteObject(HGDIOBJ hObject); +!define sysDeleteObject "gdi32::DeleteObject(p) i" + +; int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject); +!define sysGetObject "gdi32::GetObject(p, i, p) i" + +; HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj); +!define sysSelectObject "gdi32::SelectObject(p, p) p" + +; HDC CreateCompatibleDC(HDC hdc); +!define sysCreateCompatibleDC "gdi32::CreateCompatibleDC(p) p" + +; BOOL DeleteDC(HDC hdc); +!define sysDeleteDC "gdi32::DeleteDC(p) i" + +; BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, +; HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop); +!define sysBitBlt "gdi32::BitBlt(p, i, i, i, i, p, i, i, i) i" + +; proposed by abgandar +; int AddFontResource(LPCTSTR lpszFilename); +!define sysAddFontResource "gdi32::AddFontResource(t) i" + +; HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint); +!define sysBeginPaint "user32::BeginPaint(p, p) p" + +; BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint); +!define sysEndPaint "user32::EndPaint(p, p) i" + +; BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni); +!define sysSystemParametersInfo "user32::SystemParametersInfo(i, i, p, i) i" + +; UINT_PTR SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); +!define sysSetTimer "user32::SetTimer(p, p, i, k) i" + +; DWORD GetLogicalDriveStrings(DWORD nBufferLength, LPTSTR LpBuffer); +!define sysGetLogicalDriveStrings 'kernel32::GetLogicalDriveStrings(i, p) i' + +!define sysGetDiskFreeSpaceEx 'kernel32::GetDiskFreeSpaceEx(t, *l, *l, *l) i' + +; UINT GetDriveType(LPCTSTR lpRootPathName); +!define sysGetDriveType 'kernel32::GetDriveType(t) i' + +; HANDLE FindFirstFile(LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindFileData); +!define sysFindFirstFile 'kernel32::FindFirstFile(t, p) p' + +; BOOL FindClose(HANDLE hFindFile); +!define sysFindClose 'kernel32::FindClose(p) i' + +; BOOL FileTimeToSystemTime(CONST FILETIME *lpFileTime, +; LPSYSTEMTIME lpSystemTime); +!define sysFileTimeToSystemTime 'kernel32::FileTimeToSystemTime(*l, p) i' + +; BOOL FileTimeToLocalFileTime( +; CONST FILETIME *lpFileTime, +; LPFILETIME lpLocalFileTime); +!define sysFileTimeToLocalFileTime 'kernel32::FileTimeToLocalFileTime(*l, *l) i' + +; BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION lpTimeZone, +; LPSYSTEMTIME lpUniversalTime, LPSYSTEMTIME lpLocalTime); +!define sysSystemTimeToTzSpecificLocalTime 'kernel32::SystemTimeToTzSpecificLocalTime(p, p, p) i' + +!define syslstrlen 'kernel32::lstrlen(t) i' + +; int wsprintf(LPTSTR lpOut, LPCTSTR lpFmt, ...); +!define syswsprintf "user32::wsprintf(t, t) i ? c" + +; ------------- Structures -------------- + +; typedef struct _WNDCLASS { +; UINT style; +; WNDPROC lpfnWndProc; +; int cbClsExtra; +; int cbWndExtra; +; HINSTANCE hInstance; +; HICON hIcon; +; HCURSOR hCursor; +; HBRUSH hbrBackground; +; LPCTSTR lpszMenuName; +; LPCTSTR lpszClassName; +; } WNDCLASS, *PWNDCLASS; +!define stWNDCLASS "(i, k, i, i, p, p, p, p, t, t) p" + +; typedef struct tagMSG { +; HWND hwnd; +; UINT message; +; WPARAM wParam; +; LPARAM lParam; +; DWORD time; +; POINT pt; -> will be presented as two separate px and py +; } MSG, *PMSG; +!define stMSG "(p, i, p, p, i, i, i) p" + +; typedef struct tagBITMAP { +; LONG bmType; +; LONG bmWidth; +; LONG bmHeight; +; LONG bmWidthBytes; +; WORD bmPlanes; +; WORD bmBitsPixel; +; LPVOID bmBits; +; } BITMAP, *PBITMAP; +!define stBITMAP "(i, i, i, i, i, i, p) p" + +; typedef struct _RECT { +; LONG left; +; LONG top; +; LONG right; +; LONG bottom; +; } RECT, *PRECT; +!define stRECT "(i, i, i, i) p" + +; typedef struct tagPAINTSTRUCT { +; HDC hdc; +; BOOL fErase; +; RECT rcPaint; (rcl, rct, rcr, rcb) +; BOOL fRestore; +; BOOL fIncUpdate; +; BYTE rgbReserved[32]; +; } PAINTSTRUCT, *PPAINTSTRUCT; +!define stPAINTSTRUCT "(p, i, i, i, i, i, i, i, &v32) p" + +; typedef struct { +; UINT cbSize; +; HWND hwndOwner; +; HINSTANCE hInstance; +; LPCTSTR lpszText; +; LPCTSTR lpszCaption; +; DWORD dwStyle; +; LPCTSTR lpszIcon; +; DWORD_PTR dwContextHelpId; +; MSGBOXCALLBACK lpfnMsgBoxCallback; +; DWORD dwLanguageId; +; } MSGBOXPARAMS, *PMSGBOXPARAMS; +!define stMSGBOXPARAMS '(&l4, p, p, t, t, i, t, p, k, i) p' + +; typedef struct _SYSTEMTIME { +; WORD wYear; +; WORD wMonth; +; WORD wDayOfWeek; +; WORD wDay; +; WORD wHour; +; WORD wMinute; +; WORD wSecond; +; WORD wMilliseconds; +; } SYSTEMTIME, *PSYSTEMTIME; +!define stSYSTEMTIME '(&i2, &i2, &i2, &i2, &i2, &i2, &i2, &i2) p' + +; Maximal windows path +!define /ifndef MAX_PATH 260 + +; typedef struct _WIN32_FIND_DATA { +; DWORD dwFileAttributes; +; FILETIME ftCreationTime; +; FILETIME ftLastAccessTime; +; FILETIME ftLastWriteTime; +; DWORD nFileSizeHigh; +; DWORD nFileSizeLow; +; DWORD dwReserved0; +; DWORD dwReserved1; +; TCHAR cFileName[ MAX_PATH ]; +; TCHAR cAlternateFileName[ 14 ]; +; } WIN32_FIND_DATA, *PWIN32_FIND_DATA; +!define stWIN32_FIND_DATA '(i, l, l, l, i, i, i, i, &t${MAX_PATH}, &t14) p' + +; ------------- Constants -------------- + +; == Other == +!define /ifndef INVALID_HANDLE_VALUE -1 + +; == Sounds == + +!define SND_SYNC 0x0000 +!define SND_ASYNC 0x0001 +!define SND_NODEFAULT 0x0002 +!define SND_MEMORY 0x0004 +!define SND_LOOP 0x0008 +!define SND_NOSTOP 0x0010 + +!define SND_NOWAIT 0x00002000 +!define SND_ALIAS 0x00010000 +!define SND_ALIAS_ID 0x00110000 +!define SND_FILENAME 0x00020000 +!define SND_RESOURCE 0x00040004 +!define SND_PURGE 0x0040 +!define SND_APPLICATION 0x0080 + +; == Windows == + +!define /ifndef WS_OVERLAPPED 0x00000000 +!define /ifndef WS_POPUP 0x80000000 +!define /ifndef WS_CHILD 0x40000000 +!define /ifndef WS_MINIMIZE 0x20000000 +!define /ifndef WS_VISIBLE 0x10000000 +!define /ifndef WS_DISABLED 0x08000000 +!define /ifndef WS_CLIPSIBLINGS 0x04000000 +!define /ifndef WS_CLIPCHILDREN 0x02000000 +!define /ifndef WS_MAXIMIZE 0x01000000 +!define /ifndef WS_CAPTION 0x00C00000 +!define /ifndef WS_BORDER 0x00800000 +!define /ifndef WS_DLGFRAME 0x00400000 +!define /ifndef WS_VSCROLL 0x00200000 +!define /ifndef WS_HSCROLL 0x00100000 +!define /ifndef WS_SYSMENU 0x00080000 +!define /ifndef WS_THICKFRAME 0x00040000 +!define /ifndef WS_GROUP 0x00020000 +!define /ifndef WS_TABSTOP 0x00010000 +!define /ifndef WS_MINIMIZEBOX 0x00020000 +!define /ifndef WS_MAXIMIZEBOX 0x00010000 +!define /ifndef WS_TILED ${WS_OVERLAPPED} +!define /ifndef WS_ICONIC ${WS_MINIMIZE} +!define /ifndef WS_SIZEBOX ${WS_THICKFRAME} +!define /ifndef WS_OVERLAPPEDWINDOW 0x00CF0000 +!define /ifndef WS_TILEDWINDOW ${WS_OVERLAPPEDWINDOW} +!define /ifndef WS_POPUPWINDOW 0x80880000 +!define /ifndef WS_CHILDWINDOW ${WS_CHILD} +!define /ifndef WS_EX_DLGMODALFRAME 0x00000001 +!define /ifndef WS_EX_NOPARENTNOTIFY 0x00000004 +!define /ifndef WS_EX_TOPMOST 0x00000008 +!define /ifndef WS_EX_ACCEPTFILES 0x00000010 +!define /ifndef WS_EX_TRANSPARENT 0x00000020 +!define /ifndef WS_EX_MDICHILD 0x00000040 +!define /ifndef WS_EX_TOOLWINDOW 0x00000080 +!define /ifndef WS_EX_WINDOWEDGE 0x00000100 +!define /ifndef WS_EX_CLIENTEDGE 0x00000200 +!define /ifndef WS_EX_CONTEXTHELP 0x00000400 +!define /ifndef WS_EX_RIGHT 0x00001000 +!define /ifndef WS_EX_LEFT 0x00000000 +!define /ifndef WS_EX_RTLREADING 0x00002000 +!define /ifndef WS_EX_LTRREADING 0x00000000 +!define /ifndef WS_EX_LEFTSCROLLBAR 0x00004000 +!define /ifndef WS_EX_RIGHTSCROLLBAR 0x00000000 +!define /ifndef WS_EX_CONTROLPARENT 0x00010000 +!define /ifndef WS_EX_STATICEDGE 0x00020000 +!define /ifndef WS_EX_APPWINDOW 0x00040000 +!define /ifndef WS_EX_OVERLAPPEDWINDOW 0x00000300 +!define /ifndef WS_EX_PALETTEWINDOW 0x00000188 +!define /ifndef WS_EX_LAYERED 0x00080000 +!define /ifndef WS_EX_NOINHERITLAYOUT 0x00100000 +!define /ifndef WS_EX_LAYOUTRTL 0x00400000 +!define /ifndef WS_EX_COMPOSITED 0x02000000 +!define /ifndef WS_EX_NOACTIVATE 0x08000000 + + +; == System Parameters Info == + +!define SPI_GETWORKAREA 0x0030 + +; == Window swap == + +!define SWP_NOSIZE 0x0001 +!define SWP_NOMOVE 0x0002 +!define SWP_NOZORDER 0x0004 +!define SWP_NOREDRAW 0x0008 +!define SWP_NOACTIVATE 0x0010 +!define SWP_FRAMECHANGED 0x0020 +!define SWP_SHOWWINDOW 0x0040 +!define SWP_HIDEWINDOW 0x0080 +!define SWP_NOCOPYBITS 0x0100 +!define SWP_NOOWNERZORDER 0x0200 +!define SWP_NOSENDCHANGING 0x0400 + +!define SWP_DRAWFRAME ${SWP_FRAMECHANGED} +!define SWP_NOREPOSITION ${SWP_NOOWNERZORDER} +!define SWP_DEFERERASE 0x2000 +!define SWP_ASYNCWINDOWPOS 0x4000 + +; == Bit Copy == + +!define SRCCOPY 0x00CC0020 +!define SRCPAINT 0x00EE0086 +!define SRCAND 0x008800C6 +!define SRCINVERT 0x00660046 +!define SRCERASE 0x00440328 +!define NOTSRCCOPY 0x00330008 +!define NOTSRCERASE 0x001100A6 +!define MERGECOPY 0x00C000CA +!define MERGEPAINT 0x00BB0226 +!define PATCOPY 0x00F00021 +!define PATPAINT 0x00FB0A09 +!define PATINVERT 0x005A0049 +!define DSTINVERT 0x00550009 +!define BLACKNESS 0x00000042 +!define WHITENESS 0x00FF0062 + +; == Message Box == + +!define MB_OK 0x00000000 +!define MB_OKCANCEL 0x00000001 +!define MB_ABORTRETRYIGNORE 0x00000002 +!define MB_YESNOCANCEL 0x00000003 +!define MB_YESNO 0x00000004 +!define MB_RETRYCANCEL 0x00000005 +!define MB_CANCELTRYCONTINUE 0x00000006 +!define MB_ICONHAND 0x00000010 +!define MB_ICONQUESTION 0x00000020 +!define MB_ICONEXCLAMATION 0x00000030 +!define MB_ICONASTERISK 0x00000040 +!define MB_USERICON 0x00000080 +!define MB_ICONWARNING ${MB_ICONEXCLAMATION} +!define MB_ICONERROR ${MB_ICONHAND} + +!define MB_ICONINFORMATION ${MB_ICONASTERISK} +!define MB_ICONSTOP ${MB_ICONHAND} + +!define MB_DEFBUTTON1 0x00000000 +!define MB_DEFBUTTON2 0x00000100 +!define MB_DEFBUTTON3 0x00000200 +!define MB_DEFBUTTON4 0x00000300 + +!define MB_APPLMODAL 0x00000000 +!define MB_SYSTEMMODAL 0x00001000 +!define MB_TASKMODAL 0x00002000 +!define MB_HELP 0x00004000 + +!define MB_NOFOCUS 0x00008000 +!define MB_SETFOREGROUND 0x00010000 +!define MB_DEFAULT_DESKTOP_ONLY 0x00020000 + +!define MB_TOPMOST 0x00040000 +!define MB_RIGHT 0x00080000 +!define MB_RTLREADING 0x00100000 + + +; == Callbacks == + +!macro SINGLE_CALLBACK CHKN RES INDEX FUNC +CheckCB_${CHKN}: + Pop ${RES} + StrCmp ${RES} "callback${INDEX}" 0 ExitCB_${CHKN} + Call ${FUNC} + Goto CheckCB_${CHKN} +ExitCB_${CHKN}: +!macroend + +!endif +!verbose pop \ No newline at end of file diff --git a/tools/Examples/System/System.nsi b/tools/Examples/System/System.nsi new file mode 100644 index 0000000..7725fc4 --- /dev/null +++ b/tools/Examples/System/System.nsi @@ -0,0 +1,161 @@ +; This is just an example of System Plugin +; +; (c) brainsucker, 2002 +; (r) BSForce + +Name "System Plugin Example" +OutFile "System.exe" +RequestExecutionLevel User +Unicode True + +!include "SysFunc.nsh" + +Section "ThisNameIsIgnoredSoWhyBother?" + SetOutPath $TEMP + + ; ----- Sample 1 ----- Message box with custom icon ----- + + ; there are no default beeps for custom message boxes, use sysMessageBeep + ; in case you need it (see next message box example) + !insertmacro smMessageBox "i 0" "Message box with custom icon!" "System Example 1a" ${MB_OK} "i 103" + ; i 0 - installer exe as module + ; i 103 - icon ID + + ; The same example but using icon from resource.dll. + ; You could use this dll for storing your resources, just replace FAR icon + ; with something you really need. + File "Resource.dll" + System::Call '${sysMessageBeep} (${MB_ICONHAND})' ; custom beep + !insertmacro smMessageBox "`$TEMP\resource.dll`" "Message box with custom icon from resource.dll!" "System Example 1b" ${MB_OKCANCEL} "i 103" + Delete $TEMP\resource.dll + + ; ----- Sample 2 ----- Fixed disks size/space ----- + + StrCpy $7 ' Disk, Size, Free, Free for user:$\n$\n' + + ; Memory for paths + System::StrAlloc 1024 + Pop $1 + ; Get drives + System::Call '${sysGetLogicalDriveStrings}(1024, r1)' +enumok: + ; One more drive? + System::Call '${syslstrlen}(i r1) .r2' + IntCmp $2 0 enumex + + ; Is it DRIVE_FIXED? + System::Call '${sysGetDriveType} (i r1) .r3' + StrCmp $3 ${DRIVE_FIXED} 0 enumnext + + ; Drive space + System::Call '${sysGetDiskFreeSpaceEx}(i r1, .r3, .r4, .r5)' + + ; Pretty KBs will be saved on stack + System::Int64Op $3 / 1048576 + System::Int64Op $5 / 1048576 + System::Int64Op $4 / 1048576 + + ; Get pretty drive path string + System::Call '*$1(&t1024 .r6)' + System::Call '${syswsprintf} (.r7, "%s%20s %20s mb %20s mb %20s mb$\n", tr7, tr6, ts, ts, ts)' + +enumnext: + ; Next drive path + IntOp $2 $2 * ${NSIS_CHAR_SIZE} + IntOp $1 $1 + $2 + IntOp $1 $1 + ${NSIS_CHAR_SIZE} + goto enumok +enumex: ; End of drives or user cancel + ; Free memory for paths + System::Free $1 + + ; Message box + System::Call '${sysMessageBox}($HWNDPARENT, s, "System Example 2", ${MB_OKCANCEL})' "$7" + + ; ----- Sample 3 ----- Direct proc definition ----- + + ; Direct specification demo + System::Call 'user32::MessageBox(p $HWNDPARENT, t "Just direct MessageBox specification demo ;)", t "System Example 3", i ${MB_OK}) i.s' + Pop $0 + + ; ----- Sample 4 ----- Int64, mixed definition demo ----- + + ; Long int demo + StrCpy $2 "12312312" + StrCpy $3 "12345678903" + System::Int64Op $2 "*" $3 + Pop $4 + + ; Cdecl demo (uses 3 definitions (simple example)) + System::Call "${syswsprintf}(.R1, s,,, t, ir0) .R0 (,,tr2,tr3,$4_)" "Int64 ops and strange definition demo, %s x %s == %s, and previous msgbox result = %d" + MessageBox MB_OKCANCEL "Cool: '$R1'" + + ; ----- Sample 5 ----- Small structure example ----- + + ; Create & Fill structure + System::Call "*(i 123123123, &t10 'Hello', &i1 0x123dd, &i2 0xffeeddccaa) i.s" + Pop $1 + ; Read data from structure + System::Call "*$1(i .r2, &t10 .r3, &i1 .r4, &i2 .r5, &l0 .r6)" + ; Show data and delete structure + MessageBox MB_OK "Structure example: $\nint == $2 $\nstring == $3 $\nbyte == $4 $\nshort == $5 $\nsize == $6" + System::Free $1 + + ; ----- Sample 6 ----- systemGetFileSysTime demo ----- + Call GetInstallerExeName + pop $0 + + !insertmacro smGetFileSysTime $0 + System::Call '*$R0${stSYSTEMTIME}(.r1, .r2, .r3, .r4, .r5, .r6, .r7, .r8)' + + MessageBox MB_OK "GetFileSysTime example: file '$0', year $1, month $2, dow $3, day $4, hour $5, min $6, sec $7, ms $8" + + ; free memory from SYSTEMTIME + System::Free $R0 + + ; ----- Sample 7 ----- systemSplash -> Callbacks demonstration ----- + + ; Logo + File /oname=spltmp.bmp "${NSISDIR}\Contrib\Graphics\Header\orange-nsis.bmp" +; File /oname=spltmp.wav "d:\Windows\Media\tada.wav" + + ; I. systemSplash variant + !insertmacro smSystemSplash 2000 "$TEMP\spltmp" + + ; II. Splash Plugin variant +; splash::show 2000 $TEMP\spltmp +; Pop $R0 ; $R0 has '1' if the user closed the splash screen early, + + ; remove logo + Delete $TEMP\spltmp.bmp +; Delete $TEMP\spltmp.wav + + ; Display splash result + pop $0 + MessageBox MB_OK "Splash (callbacks) demo result $R0" + +SectionEnd + + +Section "Quoted path" + + !define /IfNDef CSIDL_FONTS 0x14 + StrCpy $9 "$PluginsDir\N(S # I)S" ; Directory with '(', ' ', '#' or ')' needs to be quoted + CreateDirectory "$9" + CopyFiles /Silent /FilesOnly "$sysdir\shfolder.dll" "$9\" ; This could fail on 95 & NT4? + + System::Call '"$9\shfolder.dll"::SHGetFolderPathA(p $hWndParent, i ${CSIDL_FONTS}, p 0, i 0, m "?" r1) ?u' + DetailPrint Fonts=$1 + +SectionEnd + + +Section "Ordinal" + + System::Call 'OLEAUT32::#2(w "OLE string")p.r0' ; SysAllocString + System::Call 'USER32::MessageBoxW(p $hWndParent, p r0, w "OLE:", i 0)' + System::Call 'OLEAUT32::#6(p r0)' + +SectionEnd + +; eof diff --git a/tools/Examples/TextFunc.ini b/tools/Examples/TextFunc.ini new file mode 100644 index 0000000..5b9a7bc --- /dev/null +++ b/tools/Examples/TextFunc.ini @@ -0,0 +1,130 @@ +[Settings] +NumFields=15 +NextButtonText=&Enter + +[Field 1] +Type=Droplist +Flags=NOTIFY +State=1. LineFind +ListItems=1. LineFind|2. LineRead|3. FileReadFromEnd|4. LineSum|5. FileJoin|6. TextCompare|7. ConfigRead|8. ConfigWrite|9. FileRecode +Left=44 +Right=139 +Top=9 +Bottom=100 + +[Field 2] +Type=FileRequest +Left=44 +Right=-17 +Top=30 +Bottom=41 + +[Field 3] +Type=FileRequest +Left=44 +Right=-17 +Top=46 +Bottom=57 + +[Field 4] +Type=FileRequest +State=3:-1 +Left=44 +Right=-17 +Top=62 +Bottom=75 + +[Field 5] +Type=Droplist +Flags=NOTIFY +State=Example1 (delete first two symbols) +ListItems=Example1 (delete first two symbols)|Example2 (show changed lines)|Example3 (delete lines)|Example4 (insert lines)|Example5 (replace in file - WordFunc.nsh required)|Example6 (line string to cut or delete)|Example7 (read lines) +Left=44 +Right=-36 +Top=81 +Bottom=155 + +[Field 6] +Type=Droplist +Flags=NOTIFY +State=Example1 (Different or Equal) +ListItems=Example1 (Different or Equal)|Example2 (Compare line-by-line - Different)|Example3 (Compare line-by-line - Equal)|Example4 (Compare all lines - Different)|Example5 (Compare all lines - Equal) +Left=44 +Right=-36 +Top=81 +Bottom=140 + +[Field 7] +Type=Droplist +State=FileReadFromEndCallback +ListItems=FileReadFromEndCallback +Left=44 +Right=-36 +Top=81 +Bottom=92 + +[Field 8] +Type=Text +Flags=READONLY +Left=9 +Right=-36 +Top=108 +Bottom=120 + +[Field 9] +Type=Button +Text=Edit +Flags=NOTIFY +Left=234 +Right=256 +Top=81 +Bottom=92 + +[Field 10] +Type=Button +Text=Log +Flags=NOTIFY|DISABLED +Left=234 +Right=256 +Top=108 +Bottom=120 + +[Field 11] +Type=Label +Text=InputFile +Left=10 +Right=43 +Top=32 +Bottom=44 + +[Field 12] +Type=Label +Text=OutputFile +Left=10 +Right=43 +Top=48 +Bottom=60 + +[Field 13] +Type=Label +Text=Range +Left=10 +Right=44 +Top=65 +Bottom=75 + +[Field 14] +Type=Label +Text=Function +Left=10 +Right=43 +Top=81 +Bottom=92 + +[Field 15] +Type=Label +Text=Result: +Left=10 +Right=229 +Top=97 +Bottom=105 diff --git a/tools/Examples/TextFunc.nsi b/tools/Examples/TextFunc.nsi new file mode 100644 index 0000000..e05b7f7 --- /dev/null +++ b/tools/Examples/TextFunc.nsi @@ -0,0 +1,834 @@ +;_____________________________________________________________________________ +; +; Text Functions +;_____________________________________________________________________________ +; +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "Text Functions" +OutFile "TextFunc.exe" +Caption "$(^Name)" +XPStyle on +RequestExecutionLevel user + +!include "WinMessages.nsh" +!include "TextFunc.nsh" + +Var HWND +Var INI +Var LOG +Var PROJECT +Var CALLBACK +Var VIEW +Var FUNCTION +Var LINEFIND1 +Var LINEFIND2 +Var LINEFIND3 +Var LINEREAD1 +Var LINEREAD2 +Var FILEREADFROMEND1 +Var LINESUM1 +Var FILEJOIN1 +Var FILEJOIN2 +Var FILEJOIN3 +Var TEXTCOMPARE1 +Var TEXTCOMPARE2 +Var TEXTCOMPARE3 +Var CONFIGREAD1 +Var CONFIGREAD2 +Var CONFIGWRITE1 +Var CONFIGWRITE2 +Var CONFIGWRITE3 +Var FILERECODE1 +Var FILERECODE2 + +Page Custom ShowCustom LeaveCustom + +Function ShowCustom + InstallOptions::initDialog "$INI" + Pop $hwnd + GetDlgItem $0 $HWND 1206 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1208 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1209 + ShowWindow $0 0 + StrCpy $FUNCTION LineFind + StrCpy $LINEREAD2 10 + StrCpy $TEXTCOMPARE3 FastDiff + StrCpy $CONFIGREAD1 "$WINDIR\system.ini" + StrCpy $CONFIGREAD2 "shell=" + StrCpy $FILERECODE2 CharToOem + InstallOptions::show + Pop $0 +FunctionEnd + +Function LeaveCustom + ReadINIStr $0 $INI "Settings" "State" + ReadINIStr $R0 $INI "Field 1" "State" + ReadINIStr $R1 $INI "Field 2" "State" + ReadINIStr $R2 $INI "Field 3" "State" + ReadINIStr $R3 $INI "Field 4" "State" + ReadINIStr $R4 $INI "Field 5" "State" + ReadINIStr $R5 $INI "Field 6" "State" + StrCpy $R4 $R4 8 + StrCpy $R5 $R5 8 + StrCpy $6 0 + StrCpy $7 '$${' + StrCpy $8 'r' + StrCpy $9 'n' + + StrCmp $0 10 Log + StrCmp $0 9 ViewOrEdit + StrCmp $0 0 Enter + goto MainSend + + Log: + Exec 'notepad.exe $LOG' + Abort + + ViewOrEdit: + StrCmp $FUNCTION FileReadFromEnd 0 Edit + StrCmp $VIEW '' 0 ViewFileReadFromEndCallback + GetTempFileName $VIEW $PLUGINSDIR + StrCpy $7 '$$' + FileOpen $0 $VIEW w + FileWrite $0 `Function FileReadFromEndCallback$\r$\n` + FileWrite $0 ` MessageBox MB_OKCANCEL '$7$$9 "Line"=[$$9]$7\$9$7$$8 "#"=[$$8]$7\$9$7$$7 "-#"=[$$7]' IDOK +2$\r$\n` + FileWrite $0 ` StrCpy $$R0 StopFileReadFromEnd$\r$\n$\r$\n` + FileWrite $0 ` Push $$R0$\r$\n` + FileWrite $0 `FunctionEnd$\r$\n` + FileClose $0 + StrCpy $7 '$${' + SetFileAttributes $VIEW READONLY + ViewFileReadFromEndCallback: + Exec 'notepad.exe $VIEW' + Abort + + Edit: + StrCmp $CALLBACK '' +5 + StrCmp $6$R6 '0$R0$R4$R5' showproject + StrCmp $R6 '$R0$R4$R5' +3 + Delete $CALLBACK + StrCpy $CALLBACK '' + StrCpy $R6 '$R0$R4$R5' + + #Project# + StrCmp $6$R0 "01. LineFind" 0 +5 + IfFileExists $CALLBACK +2 + GetTempFileName $CALLBACK $PLUGINSDIR + FileOpen $0 $CALLBACK w + goto function + IfFileExists $PROJECT +2 + GetTempFileName $PROJECT $PLUGINSDIR + FileOpen $0 $PROJECT w + + #Name# + FileWrite $0 'Name "$FUNCTION"$\r$\n' + FileWrite $0 'OutFile "$PROJECT.exe"$\r$\n$\r$\n' + + #!include# + StrCmp $R0$R4 '1. LineFindExample5' 0 TextFuncInclude + IfFileExists '$EXEDIR\WordFunc.nsh' 0 +3 + FileWrite $0 '!include "$EXEDIR\WordFunc.nsh"$\r$\n' + goto +2 + FileWrite $0 '!include "WordFunc.nsh"$\r$\n' + FileWrite $0 '!insertmacro WordFind$\r$\n' + FileWrite $0 '!insertmacro WordFindS$\r$\n' + FileWrite $0 '!insertmacro WordFind2X$\r$\n' + FileWrite $0 '!insertmacro WordFind2XS$\r$\n' + FileWrite $0 '!insertmacro WordFind3X$\r$\n' + FileWrite $0 '!insertmacro WordFind3XS$\r$\n' + FileWrite $0 '!insertmacro WordReplace$\r$\n' + FileWrite $0 '!insertmacro WordReplaceS$\r$\n' + FileWrite $0 '!insertmacro WordAdd$\r$\n' + FileWrite $0 '!insertmacro WordAddS$\r$\n' + FileWrite $0 '!insertmacro WordInsert$\r$\n' + FileWrite $0 '!insertmacro WordInsertS$\r$\n' + FileWrite $0 '!insertmacro StrFilter$\r$\n' + FileWrite $0 '!insertmacro StrFilterS$\r$\n' + TextFuncInclude: + IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3 + FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n' + goto +2 + FileWrite $0 '!include "TextFunc.nsh"$\r$\n' + FileWrite $0 '!insertmacro $FUNCTION$\r$\n' + StrCmp $FUNCTION TextCompare +2 + FileWrite $0 '!insertmacro TrimNewLines$\r$\n' + + #Section# + FileWrite $0 '$\r$\nSection -empty$\r$\n' + FileWrite $0 'SectionEnd$\r$\n$\r$\n' + + #Function .onInit# + FileWrite $0 'Function .onInit$\r$\n' + StrCmp $R0$R5 "6. TextCompareExample1" 0 TextCompareExample235 + FileWrite $0 ' StrCpy $$R0 ""$\r$\n' + FileWrite $0 ' $7TextCompare} "$R1" "$R2" "$R3" "$R5"$\r$\n' + FileWrite $0 ' IfErrors error$\r$\n' + FileWrite $0 ' StrCmp $$R0 NotEqual 0 +2$\r$\n' + FileWrite $0 ' MessageBox MB_OK " Files differ" IDOK +2$\r$\n' + FileWrite $0 ' MessageBox MB_OK " Files identical"$\r$\n' + FileWrite $0 ' goto end$\r$\n$\r$\n' + goto endoninit + TextCompareExample235: + StrCmp $R0$R5 "6. TextCompareExample2" +3 + StrCmp $R0$R5 "6. TextCompareExample3" +2 + StrCmp $R0$R5 "6. TextCompareExample5" 0 TextCompareExample4 + FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n' + FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n' + FileWrite $0 ' GetTempFileName $$R2$\r$\n' + FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n' + FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n' + FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n' + FileWrite $0 ' IfErrors error$\r$\n' + FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n' + FileWrite $0 ' goto end$\r$\n$\r$\n' + goto endoninit + TextCompareExample4: + StrCmp $R0$R5 "6. TextCompareExample4" 0 LineFindExample123456 + FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n' + FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n' + FileWrite $0 ' GetTempFileName $$R2$\r$\n' + FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n' + FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n' + FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n' + FileWrite $0 ' IfErrors error$\r$\n' + FileWrite $0 ' FileWrite $$R3 "$$\$8$$\$9$$R1 | $$R0$$\$8$$\$9"$\r$\n' + FileWrite $0 ' $7TextCompare} "$$R1" "$$R0" "$R3" "$R5"$\r$\n' + FileWrite $0 ' FileClose $$R3$\r$\n' + FileWrite $0 ' IfErrors error$\r$\n' + FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n$\r$\n' + FileWrite $0 ' goto end$\r$\n$\r$\n' + goto endoninit + LineFindExample123456: + FileWrite $0 ' $7$FUNCTION} "$R1" "$R2" "$R3" "$R4"$\r$\n' + FileWrite $0 ' IfErrors error$\r$\n' + FileWrite $0 ' MessageBox MB_YESNO " Open output file?" IDNO end$\r$\n' + FileWrite $0 ' StrCmp "$R2" "" 0 +3$\r$\n' + FileWrite $0 ` Exec 'notepad.exe "$R1"'$\r$\n` + FileWrite $0 ' goto end$\r$\n' + FileWrite $0 ' SearchPath $$R2 "$R2"$\r$\n' + FileWrite $0 ` Exec 'notepad.exe "$$R2"'$\r$\n` + FileWrite $0 ' goto end$\r$\n$\r$\n' + endoninit: + FileWrite $0 ' error:$\r$\n' + FileWrite $0 ' MessageBox MB_OK "Error"$\r$\n$\r$\n' + FileWrite $0 ' end:$\r$\n' + FileWrite $0 ' Quit$\r$\n' + FileWrite $0 'FunctionEnd$\r$\n$\r$\n' + #FunctionEnd# + + + #Function CallBack# + StrCmp $CALLBACK '' 0 close + function: + StrCmp $R0 '1. LineFind' 0 +8 + FileWrite $0 'Function $R4$\r$\n' + StrCmp $R4 "Example1" Example1LF + StrCmp $R4 "Example2" Example2LF + StrCmp $R4 "Example3" Example3LF + StrCmp $R4 "Example4" Example4LF + StrCmp $R4 "Example5" Example5LF + StrCmp $R4 "Example6" Example6LF + + FileWrite $0 'Function $R5$\r$\n' + StrCmp $R5 "Example1" Example1TC + StrCmp $R5 "Example2" Example2TC + StrCmp $R5 "Example3" Example3TC + StrCmp $R5 "Example4" Example4TC + StrCmp $R5 "Example5" Example3TC + + Example1LF: + FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n" + FileWrite $0 " StrCpy $$R9 $$R9 '' 2 ;delete first two symbols$\r$\n" + FileWrite $0 " StrCpy $$R9 '$$R9$$\$8$$\$9'$\r$\n$\r$\n" + goto endwrite + Example2LF: + FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n" + FileWrite $0 " StrCpy $$R9 '$$R9 ~Changed line ($$R8)~$$\$8$$\$9'$\r$\n$\r$\n" + goto endwrite + Example3LF: + FileWrite $0 " StrCpy $$0 SkipWrite$\r$\n$\r$\n" + goto endwrite + Example4LF: + FileWrite $0 " FileWrite $$R4 '---First Line---$$\$8$$\$9'$\r$\n" + FileWrite $0 " FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n" + goto endwrite + Example5LF: + FileWrite $0 " ; You can use:$\r$\n" + FileWrite $0 " ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n" + FileWrite $0 " ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n" + FileWrite $0 " ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n" + FileWrite $0 " ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n" + FileWrite $0 " $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n" + goto endwrite + Example6LF: + FileWrite $0 ' ;(Cut lines from a line to another line (also including that line))$\r$\n' + FileWrite $0 ' StrCmp $$R0 finish stop$\r$\n' + FileWrite $0 ' StrCmp $$R0 start finish$\r$\n' + FileWrite $0 ' StrCmp $$R9 "Start Line$$\$8$$\$9" 0 skip$\r$\n' + FileWrite $0 ' StrCpy $$R0 start$\r$\n' + FileWrite $0 ' StrCpy $$R1 $$R9$\r$\n' + FileWrite $0 ' goto code$\r$\n' + FileWrite $0 ' finish:$\r$\n' + FileWrite $0 ' StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 code$\r$\n' + FileWrite $0 ' StrCpy $$R0 finish$\r$\n' + FileWrite $0 ' StrCpy $$R2 $$R8$\r$\n' + FileWrite $0 ' goto code$\r$\n' + FileWrite $0 ' skip:$\r$\n' + FileWrite $0 ' StrCpy $$0 SkipWrite$\r$\n' + FileWrite $0 ' goto output$\r$\n' + FileWrite $0 ' stop:$\r$\n' + FileWrite $0 ' StrCpy $$0 StopLineFind$\r$\n' + FileWrite $0 ' goto output$\r$\n$\r$\n' + FileWrite $0 ' ;;(Delete lines from a line to another line (also including that line))$\r$\n' + FileWrite $0 ' ; StrCmp $$R0 finish code$\r$\n' + FileWrite $0 ' ; StrCmp $$R0 start finish$\r$\n' + FileWrite $0 ' ; StrCmp $$R9 "Start Line$$\$8$$\$9" 0 code$\r$\n' + FileWrite $0 ' ; StrCpy $$R0 start$\r$\n' + FileWrite $0 ' ; StrCpy $$R1 $$R8$\r$\n' + FileWrite $0 ' ; goto skip$\r$\n' + FileWrite $0 ' ; finish:$\r$\n' + FileWrite $0 ' ; StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 skip$\r$\n' + FileWrite $0 ' ; StrCpy $$R0 finish$\r$\n' + FileWrite $0 ' ; StrCpy $$R2 $$R8$\r$\n' + FileWrite $0 ' ; skip:$\r$\n' + FileWrite $0 ' ; StrCpy $$0 SkipWrite$\r$\n' + FileWrite $0 ' ; goto output$\r$\n$\r$\n' + FileWrite $0 ' code:$\r$\n' + FileWrite $0 ' ;...$\r$\n$\r$\n' + FileWrite $0 ' output:$\r$\n' + goto endwrite + Example1TC: + FileWrite $0 " StrCpy $$R0 NotEqual$\r$\n" + FileWrite $0 " StrCpy $$0 StopTextCompare$\r$\n$\r$\n" + goto endwrite + Example2TC: + FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n" + FileWrite $0 " FileWrite $$R3 '$$6=$$7$$\$8$$\$9'$\r$\n$\r$\n" + goto endwrite + Example3TC: + FileWrite $0 " FileWrite $$R3 '$$8|$$6=$$9'$\r$\n$\r$\n" + goto endwrite + Example4TC: + FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n$\r$\n" + goto endwrite + endwrite: + FileWrite $0 ' Push $$0$\r$\n' + FileWrite $0 'FunctionEnd$\r$\n' + close: + FileClose $0 + goto $6 + #FunctionEnd# + + showproject: + StrCmp $R0 '1. LineFind' 0 +3 + ExecWait 'notepad.exe $CALLBACK' + goto +4 + SetFileAttributes $PROJECT READONLY + ExecWait 'notepad.exe $PROJECT' + SetFileAttributes $PROJECT NORMAL + Abort + + MainSend: + GetDlgItem $0 $HWND 1210 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + EnableWindow $0 1 + GetDlgItem $0 $HWND 1204 + ShowWindow $0 1 + EnableWindow $0 1 + GetDlgItem $0 $HWND 1205 + EnableWindow $0 1 + GetDlgItem $0 $HWND 1206 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1207 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1208 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1209 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1211 + EnableWindow $0 1 + + StrCmp $FUNCTION LineFind 0 +5 + StrCpy $LINEFIND1 $R1 + StrCpy $LINEFIND2 $R2 + StrCpy $LINEFIND3 $R3 + goto LineFindSend + StrCmp $FUNCTION LineRead 0 +4 + StrCpy $LINEREAD1 $R1 + StrCpy $LINEREAD2 $R2 + goto LineFindSend + StrCmp $FUNCTION FileReadFromEnd 0 +3 + StrCpy $FILEREADFROMEND1 $R1 + goto LineFindSend + StrCmp $FUNCTION LineSum 0 +3 + StrCpy $LINESUM1 $R1 + goto LineFindSend + StrCmp $FUNCTION FileJoin 0 +5 + StrCpy $FILEJOIN1 $R1 + StrCpy $FILEJOIN2 $R2 + StrCpy $FILEJOIN3 $R3 + goto LineFindSend + StrCmp $FUNCTION TextCompare 0 +5 + StrCpy $TEXTCOMPARE1 $R1 + StrCpy $TEXTCOMPARE2 $R2 + StrCpy $TEXTCOMPARE3 $R3 + goto LineFindSend + StrCmp $FUNCTION ConfigRead 0 +4 + StrCpy $CONFIGREAD1 $R1 + StrCpy $CONFIGREAD2 $R2 + goto LineFindSend + StrCmp $FUNCTION ConfigWrite 0 +5 + StrCpy $CONFIGWRITE1 $R1 + StrCpy $CONFIGWRITE2 $R2 + StrCpy $CONFIGWRITE3 $R3 + goto LineFindSend + StrCmp $FUNCTION FileRecode 0 +3 + StrCpy $FILERECODE1 $R1 + StrCpy $FILERECODE2 $R2 + + LineFindSend: + StrCmp $R0 "1. LineFind" 0 LineReadSend + StrCmp $FUNCTION LineFind 0 LineFindSend2 + StrCmp $R4 "Example1" 0 +3 + StrCpy $LINEFIND3 "3:-1" + goto LineFindSend2 + StrCmp $R4 "Example2" 0 +3 + StrCpy $LINEFIND3 "{5:12 15 -6:-5 -1}" + goto LineFindSend2 + StrCmp $R4 "Example3" 0 +3 + StrCpy $LINEFIND3 "2:3 10:-5 -3:-2" + goto LineFindSend2 + StrCmp $R4 "Example4" 0 +3 + StrCpy $LINEFIND3 "10" + goto LineFindSend2 + StrCmp $R4 "Example5" 0 +3 + StrCpy $LINEFIND3 "1:-1" + goto LineFindSend2 + StrCmp $R4 "Example6" 0 +3 + StrCpy $LINEFIND3 "" + goto LineFindSend2 + StrCmp $R4 "Example7" 0 +2 + StrCpy $LINEFIND3 "1:-1" + + LineFindSend2: + StrCpy $FUNCTION LineFind + StrCmp $LINEFIND2 '/NUL' 0 +2 + StrCpy $LINEFIND2 '' + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND1" + GetDlgItem $0 $HWND 1203 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND2" + GetDlgItem $0 $HWND 1205 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND3" + GetDlgItem $0 $HWND 1207 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Edit" + GetDlgItem $0 $HWND 1212 + ShowWindow $0 1 + StrCmp $LOG '' +2 + EnableWindow $0 1 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Range" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Function" + + StrCmp $R4 "Example7" 0 +9 + GetDlgItem $0 $HWND 1203 + EnableWindow $0 0 + SendMessage $0 ${WM_ENABLE} 1 0 + SendMessage $0 ${WM_SETTEXT} 1 "STR:/NUL" + GetDlgItem $0 $HWND 1204 + EnableWindow $0 0 + GetDlgItem $0 $HWND 1211 + EnableWindow $0 0 + abort + + + LineReadSend: + StrCmp $R0 "2. LineRead" 0 FileReadFromEndSend + StrCpy $FUNCTION LineRead + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Line #" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + + FileReadFromEndSend: + StrCmp $R0 "3. FileReadFromEnd" 0 LineSumSend + StrCpy $FUNCTION FileReadFromEnd + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEREADFROMEND1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1209 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:View" + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Function" + Abort + + LineSumSend: + StrCmp $R0 "4. LineSum" 0 FileJoinSend + StrCpy $FUNCTION LineSum + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINESUM1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + + FileJoinSend: + StrCmp $R0 "5. FileJoin" 0 TextCompareSend + StrCpy $FUNCTION FileJoin + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 1 + EnableWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN3" + GetDlgItem $0 $HWND 1206 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile1" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile2" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + + TextCompareSend: + StrCmp $R0 "6. TextCompare" 0 ConfigReadSend + StrCmp $FUNCTION TextCompare 0 TextCompareSend2 + StrCmp $R5 "Example1" 0 +3 + StrCpy $TEXTCOMPARE3 "FastDiff" + goto TextCompareSend2 + StrCmp $R5 "Example2" 0 +3 + StrCpy $TEXTCOMPARE3 "FastDiff" + goto TextCompareSend2 + StrCmp $R5 "Example3" 0 +3 + StrCpy $TEXTCOMPARE3 "FastEqual" + goto TextCompareSend2 + StrCmp $R5 "Example4" 0 +3 + StrCpy $TEXTCOMPARE3 "SlowDiff" + goto TextCompareSend2 + StrCmp $R5 "Example5" 0 +2 + StrCpy $TEXTCOMPARE3 "SlowEqual" + + TextCompareSend2: + StrCpy $FUNCTION TextCompare + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE1" + GetDlgItem $0 $HWND 1203 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 1 + EnableWindow $0 0 + SendMessage $0 ${WM_ENABLE} 1 0 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE3" + GetDlgItem $0 $HWND 1208 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:View" + GetDlgItem $0 $HWND 1212 + ShowWindow $0 1 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile1" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile2" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Option" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Function" + abort + + ConfigReadSend: + StrCmp $R0 "7. ConfigRead" 0 ConfigWriteSend + StrCpy $FUNCTION ConfigRead + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + + ConfigWriteSend: + StrCmp $R0 "8. ConfigWrite" 0 FileRecodeSend + StrCpy $FUNCTION ConfigWrite + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE3" + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Value" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + + FileRecodeSend: + StrCmp $R0 "9. FileRecode" 0 Abort + StrCpy $FUNCTION FileRecode + GetDlgItem $0 $HWND 1201 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE1" + GetDlgItem $0 $HWND 1203 + ShowWindow $0 1 + SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE2" + GetDlgItem $0 $HWND 1204 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1205 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1211 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1212 + ShowWindow $0 0 + GetDlgItem $0 $HWND 1213 + SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile" + GetDlgItem $0 $HWND 1214 + SendMessage $0 ${WM_SETTEXT} 1 "STR:Format" + GetDlgItem $0 $HWND 1215 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $0 $HWND 1216 + SendMessage $0 ${WM_SETTEXT} 1 "STR:" + Abort + +;=Enter= + Enter: + StrCmp $R1 '' 0 +3 + StrCpy $0 'Choose InputFile' + goto send + IfFileExists $R1 +3 + StrCpy $0 'InputFile is not exist' + goto send + + StrCmp $R0 "1. LineFind" LineFindRead + StrCmp $R0 "2. LineRead" LineRead + StrCmp $R0 "3. FileReadFromEnd" FileReadFromEnd + StrCmp $R0 "4. LineSum" LineSum + StrCmp $R0 "5. FileJoin" FileJoin + StrCmp $R0 "6. TextCompare" LineFind-TextCompare + StrCmp $R0 "7. ConfigRead" ConfigRead + StrCmp $R0 "8. ConfigWrite" ConfigWrite + StrCmp $R0 "9. FileRecode" FileRecode + Abort + + LineFindRead: + StrCmp $R4 "Example7" 0 LineFind-TextCompare + ${LineFind} '$R1' '/NUL' '$R3' LineFindCallback + IfErrors error + StrCmp $R0 StopLineFind 0 done + StrCpy $0 'stopped' + goto send + + LineFind-TextCompare: + GetLabelAddress $6 LineFindBack + goto Edit + LineFindBack: + FileClose $0 + StrCmp $R0 "6. TextCompare" Compile + StrCmp $CALLBACK '' Compile + ${FileJoin} "$PROJECT" "$CALLBACK" "" + + Compile: + StrCmp $LOG '' 0 +4 + GetTempFileName $LOG $PLUGINSDIR + GetDlgItem $0 $HWND 1212 + EnableWindow $0 1 + ReadRegStr $0 HKLM "SOFTWARE\NSIS" "" + IfErrors 0 +2 + StrCpy $0 "${NSISDIR}" + nsExec::Exec '"$0\makensis.exe" /O$LOG $PROJECT' + Pop $0 + StrCmp $0 0 0 +6 + ExecWait '$PROJECT.exe' $0 + Delete $PROJECT + Delete $PROJECT.exe + StrCpy $PROJECT '' + goto done + MessageBox MB_YESNO|MB_ICONEXCLAMATION "Compile error. Open log?" IDNO +2 + Exec 'notepad.exe $LOG' + StrCpy $0 "Compile Error" + goto send + + LineRead: + ${LineRead} "$R1" "$R2" $0 + IfErrors error send + + FileReadFromEnd: + ${FileReadFromEnd} "$R1" "FileReadFromEndCallback" + IfErrors error + StrCmp $R0 StopFileReadFromEnd 0 done + StrCpy $0 'stopped' + goto send + + LineSum: + ${LineSum} "$R1" $0 + IfErrors error send + + FileJoin: + ${FileJoin} "$R1" "$R2" "$R3" + IfErrors error + MessageBox MB_YESNO " Open output file?" IDNO done + StrCmp $R3 '' 0 +3 + Exec '"notepad.exe" "$R1"' + goto done + Exec '"notepad.exe" "$R3"' + goto done + + ConfigRead: + ${ConfigRead} "$R1" "$R2" $0 + IfErrors error send + + ConfigWrite: + ${ConfigWrite} "$R1" "$R2" "$R3" $0 + IfErrors error + MessageBox MB_YESNO " Open output file?" IDNO send + Exec '"notepad.exe" "$R1"' + goto send + + FileRecode: + ${FileRecode} "$R1" "$R2" + IfErrors error + MessageBox MB_YESNO " Open output file?" IDNO done + Exec '"notepad.exe" "$R1"' + goto done + + error: + StrCpy $0 'error' + goto send + + done: + StrCpy $0 'Done' + + send: + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$0" + + abort: + Abort +FunctionEnd + +Function LineFindCallback + MessageBox MB_OKCANCEL '$$R9 "Line"=[$R9]$\n$$R8 "#"=[$R8]$\n$$R7 "-#"=[$R7]$\n$$R6 "Range"=[$R6]$\n$$R5 "Read"=[$R5]$\n$$R4 "Write"=[$R4]' IDOK +2 + StrCpy $R0 StopLineFind + + Push $R0 +FunctionEnd + +Function FileReadFromEndCallback + MessageBox MB_OKCANCEL '$$9 "Line"=[$9]$\n$$8 "#"=[$8]$\n$$7 "-#"=[$7]' IDOK +2 + StrCpy $R0 StopFileReadFromEnd + + Push $R0 +FunctionEnd + +Function .onInit + InitPluginsDir + GetTempFileName $INI $PLUGINSDIR + File /oname=$INI "TextFunc.ini" +FunctionEnd + +Page instfiles + +Section -Empty +SectionEnd diff --git a/tools/Examples/TextFuncTest.nsi b/tools/Examples/TextFuncTest.nsi new file mode 100644 index 0000000..359cdec --- /dev/null +++ b/tools/Examples/TextFuncTest.nsi @@ -0,0 +1,414 @@ +;_____________________________________________________________________________ +; +; Text Functions Test +;_____________________________________________________________________________ +; +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "Text Functions Test" +OutFile "TextFuncTest.exe" +Caption "$(^Name)" +ShowInstDetails show +XPStyle on +RequestExecutionLevel user + +Var FUNCTION +Var TEMPFILE1 +Var TEMPFILE2 +Var TEMPFILE3 +Var HANDLE +Var OUT + +!include "TextFunc.nsh" + +;############### INSTALL ############### + +!define StackVerificationStart `!insertmacro StackVerificationStart` +!macro StackVerificationStart _FUNCTION + StrCpy $FUNCTION ${_FUNCTION} + Call StackVerificationStart +!macroend + +!define StackVerificationEnd `!insertmacro StackVerificationEnd` +!macro StackVerificationEnd + Call StackVerificationEnd +!macroend + +Function StackVerificationStart + StrCpy $0 !0 + StrCpy $1 !1 + StrCpy $2 !2 + StrCpy $3 !3 + StrCpy $4 !4 + StrCpy $5 !5 + StrCpy $6 !6 + StrCpy $7 !7 + StrCpy $8 !8 + StrCpy $9 !9 + StrCpy $R0 !R0 + StrCpy $R1 !R1 + StrCpy $R2 !R2 + StrCpy $R3 !R3 + StrCpy $R4 !R4 + StrCpy $R5 !R5 + StrCpy $R6 !R6 + StrCpy $R7 !R7 + StrCpy $R8 !R8 + StrCpy $R9 !R9 +FunctionEnd + +Function StackVerificationEnd + IfErrors +3 + DetailPrint 'PASSED $FUNCTION no errors' + goto +2 + DetailPrint 'FAILED $FUNCTION error' + + StrCmp $0 '!0' 0 error + StrCmp $1 '!1' 0 error + StrCmp $2 '!2' 0 error + StrCmp $3 '!3' 0 error + StrCmp $4 '!4' 0 error + StrCmp $5 '!5' 0 error + StrCmp $6 '!6' 0 error + StrCmp $7 '!7' 0 error + StrCmp $8 '!8' 0 error + StrCmp $9 '!9' 0 error + StrCmp $R0 '!R0' 0 error + StrCmp $R1 '!R1' 0 error + StrCmp $R2 '!R2' 0 error + StrCmp $R3 '!R3' 0 error + StrCmp $R4 '!R4' 0 error + StrCmp $R5 '!R5' 0 error + StrCmp $R6 '!R6' 0 error + StrCmp $R7 '!R7' 0 error + StrCmp $R8 '!R8' 0 error + StrCmp $R9 '!R9' 0 error + DetailPrint 'PASSED $FUNCTION stack' + goto end + + error: + DetailPrint 'FAILED $FUNCTION stack' +; MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2 +; quit + + end: +FunctionEnd + + + +Section CreateTestFile + GetTempFileName $TEMPFILE1 + FileOpen $HANDLE $TEMPFILE1 w + FileWrite $HANDLE '1A=a$\r$\n' + FileWrite $HANDLE '2B=b$\r$\n' + FileWrite $HANDLE '3C=c$\r$\n' + FileWrite $HANDLE '4D=d$\r$\n' + FileWrite $HANDLE '5E=e$\r$\n' + FileClose $HANDLE + GetTempFileName $TEMPFILE2 + GetTempFileName $TEMPFILE3 +SectionEnd + + +Section LineFind + ${StackVerificationStart} LineFind + + ${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1' + IfErrors error + StrCmp $OUT '|1:2|-5|1|1A=a$\r$\n|1:2|-4|2|2B=b$\r$\n|3:3|-3|3|3C=c$\r$\n' 0 error + + StrCpy $OUT '' + SetDetailsPrint none + ${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2' + SetDetailsPrint both + IfErrors error + StrCmp $OUT '|1:-1||1|1A=a$\r$\n|1:-1||2|4D=d$\r$\n|1:-1||3|3C=c$\r$\n|1:-1||4|2B=B$\r$\n|1:-1||5|5E=e$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + +Function LineFindCallback1 + StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9' + StrCmp $R8 3 0 +2 + StrCpy $0 StopLineFind + + Push $0 +FunctionEnd + +Function LineFindCallback2 + StrCmp $R8 2 0 +2 + StrCpy $R9 '4D=d$\r$\n' + StrCmp $R8 4 0 +2 + StrCpy $R9 '2B=B$\r$\n' + + StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9' + + Push $0 +FunctionEnd + + +Section LineRead + ${StackVerificationStart} LineRead + + ${LineRead} '$TEMPFILE1' '-1' $OUT + IfErrors error + StrCmp $OUT '5E=e$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section FileReadFromEnd + ${StackVerificationStart} FileReadFromEnd + + StrCpy $OUT '' + ${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback' + IfErrors error + StrCmp $OUT '|-1|5|5E=e$\r$\n|-2|4|4D=d$\r$\n|-3|3|3C=c$\r$\n|-4|2|2B=b$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + +Function FileReadFromEndCallback + StrCpy $OUT '$OUT|$7|$8|$9' + StrCmp $8 2 0 +2 + StrCpy $0 StopFileReadFromEnd + + Push $0 +FunctionEnd + + +Section LineSum + ${StackVerificationStart} LineSum + + ${LineSum} '$TEMPFILE1' $OUT + IfErrors error + StrCmp $OUT '5' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section FileJoin + ${StackVerificationStart} FileJoin + + SetDetailsPrint none + ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3' + SetDetailsPrint both + + ${StackVerificationEnd} +SectionEnd + + +Section TextCompare + ${StackVerificationStart} TextCompare + + StrCpy $OUT '' + ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback' + StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error + + StrCpy $OUT '' + ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback' + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error + + StrCpy $OUT '' + ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback' + StrCmp $OUT '' 0 error + + StrCpy $OUT '' + ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback' + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|4|2B=B$\r$\n|2|2B=b$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + +Section TextCompareS + ${StackVerificationStart} TextCompareS + + StrCpy $OUT '' + ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback' + StrCmp $OUT '|||2|2B=b$\r$\n' 0 error + + StrCpy $OUT '' + ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback' + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + +Function TextCompareCallback + StrCpy $OUT '$OUT|$6|$7|$8|$9' + + Push $0 +FunctionEnd + + +Section ConfigRead + ${StackVerificationStart} ConfigRead + + ${ConfigRead} '$TEMPFILE1' '3c=' $OUT + StrCmp $OUT 'c' 0 error + + ${ConfigRead} '$TEMPFILE1' '6F=' $OUT + StrCmp $OUT '' 0 error + + ${ConfigRead} '$TEMPFILE1' 'FF=' $OUT + IfErrors 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section ConfigReadS + ${StackVerificationStart} ConfigReadS + + ${ConfigReadS} '$TEMPFILE1' '3C=' $OUT + StrCmp $OUT 'c' 0 error + + ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT + IfErrors 0 error + StrCmp $OUT '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section ConfigWrite + ${StackVerificationStart} ConfigWrite + + ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT + StrCmp $OUT 'CHANGED' 0 error + + ${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT + StrCmp $OUT 'DELETED' 0 error + + ${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT + StrCmp $OUT 'SAME' 0 error + + ${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT + StrCmp $OUT 'ADDED' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section ConfigWriteS + ${StackVerificationStart} ConfigWriteS + + ${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT + StrCmp $OUT 'ADDED' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section FileRecode + ${StackVerificationStart} FileRecode + + ${FileRecode} '$TEMPFILE1' 'CharToOem' + + ${StackVerificationEnd} +SectionEnd + + +Section TrimNewLines + ${StackVerificationStart} TrimNewLines + + ${TrimNewLines} 'Text Line$\r$\n' $OUT + StrCmp $OUT 'Text Line' 0 error + + ${TrimNewLines} 'Text Line' $OUT + StrCmp $OUT 'Text Line' 0 error + + ${TrimNewLines} 'Text Line$\n' $OUT + StrCmp $OUT 'Text Line' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WriteUninstaller + SetDetailsPrint none + Delete $TEMPFILE1 + Delete $TEMPFILE2 + Delete $TEMPFILE3 + SetDetailsPrint both + goto +2 + WriteUninstaller '$EXEDIR\un.TextFuncTest.exe' +SectionEnd + + + +;############### UNINSTALL ############### + +Section un.Uninstall + ${LineFind} '$TEMPFILE1' '/NUL' '1:-1' 'un.LineFindCallback' + ${LineRead} '$TEMPFILE1' '-1' $OUT + ${FileReadFromEnd} '$TEMPFILE1' 'un.FileReadFromEndCallback' + ${LineSum} '$TEMPFILE1' $OUT + ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3' + ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback' + ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback' + ${ConfigRead} '$TEMPFILE1' '3c=' $OUT + ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT + ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT + ${ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT + ${FileRecode} '$TEMPFILE1' 'CharToOem' + ${TrimNewLines} 'Text Line$\r$\n' $OUT +SectionEnd + +Function un.LineFindCallback + Push $0 +FunctionEnd + +Function un.FileReadFromEndCallback + Push $0 +FunctionEnd + +Function un.TextCompareCallback + Push $0 +FunctionEnd diff --git a/tools/Examples/UserInfo/UserInfo.nsi b/tools/Examples/UserInfo/UserInfo.nsi new file mode 100644 index 0000000..427f0c3 --- /dev/null +++ b/tools/Examples/UserInfo/UserInfo.nsi @@ -0,0 +1,45 @@ +Name "UserInfo.dll test" +OutFile UserInfo.exe +RequestExecutionLevel Highest + +!define REALMSG "$\nOriginal non-restricted account type: $2" + +Section + ClearErrors + UserInfo::GetName + IfErrors PluginFail + Pop $0 + StrCmp $0 "" 0 +2 ; GetName can return a empty string on Win9x + StrCpy $0 "?" + UserInfo::GetAccountType + Pop $1 + # GetOriginalAccountType will check the tokens of the original user of the + # current thread/process. If the user tokens were elevated or limited for + # this process, GetOriginalAccountType will return the non-restricted + # account type. + # On Vista with UAC, for example, this is not the same value when running + # with `RequestExecutionLevel user`. GetOriginalAccountType will return + # "admin" while GetAccountType will return "user". + UserInfo::GetOriginalAccountType + Pop $2 + StrCmp $1 "Admin" 0 +3 ; Note: Win9x always returns "Admin" + MessageBox MB_OK 'User "$0" is in the Administrators group${REALMSG}' + Goto done + StrCmp $1 "Power" 0 +3 + MessageBox MB_OK 'User "$0" is in the Power Users group${REALMSG}' + Goto done + StrCmp $1 "User" 0 +3 + MessageBox MB_OK 'User "$0" is just a regular user${REALMSG}' + Goto done + StrCmp $1 "Guest" 0 +3 + MessageBox MB_OK 'User "$0" is a guest${REALMSG}' + Goto done + MessageBox MB_OK "Unknown error" + Goto done + + PluginFail: + MessageBox MB_OK "Error! Unable to call plug-in!" + + done: +SectionEnd + diff --git a/tools/Examples/VPatch/example.nsi b/tools/Examples/VPatch/example.nsi new file mode 100644 index 0000000..081420e --- /dev/null +++ b/tools/Examples/VPatch/example.nsi @@ -0,0 +1,62 @@ +;VPatch example +;Written by Joost Verburg + +;-------------------------------- + +; The name of the installer +Name "VPatch Test" + +; The file to write +OutFile "vpatchtest.exe" + +; The default installation directory +InstallDir "$PROGRAMFILES\VPatch Test" + +; The text to prompt the user to enter a directory +DirText "Choose a folder in which to install the VPatch Test!" + +; Show details +ShowInstDetails show + +;-------------------------------- +; The normal way to use VPatch +;-------------------------------- +!include "VPatchLib.nsh" + +Section "Update file" + ; Set output path to the installation directory + SetOutPath $INSTDIR + + ; Extract the old file under name 'updatefile.txt' + File /oname=updatefile.txt oldfile.txt + + ; Update the file - it will be replaced with the new version + DetailPrint "Updating updatefile.txt using patch..." + !insertmacro VPatchFile "patch.pat" "$INSTDIR\updatefile.txt" "$INSTDIR\temporaryfile.txt" + +SectionEnd + +;------------------------------- +; The hard way to use VPatch +;------------------------------- +Section "New version in separate file" + + ; Set output path to the installation directory + SetOutPath $INSTDIR + + ; Extract the old file + File oldfile.txt + + ; Extract the patch to the plug-ins folder (temporary) + InitPluginsDir + File /oname=$PLUGINSDIR\patch.pat patch.pat + + ; Update the old file to the new file using the patch + DetailPrint "Updating oldfile.txt using patch to newfile.txt..." + vpatch::vpatchfile "$PLUGINSDIR\patch.pat" "$INSTDIR\oldfile.txt" "$INSTDIR\newfile.txt" + + ; Show result + Pop $R0 + DetailPrint "Result: $R0" + +SectionEnd \ No newline at end of file diff --git a/tools/Examples/VPatch/newfile.txt b/tools/Examples/VPatch/newfile.txt new file mode 100644 index 0000000..2369a70 --- /dev/null +++ b/tools/Examples/VPatch/newfile.txt @@ -0,0 +1,6 @@ +*** THIS IS A TEST FILE FOR THE VPATCH EXAMPLE *** +*** COMPILE EXAMPLE.NSI TO TEST *** + +newfile - vpatch + +67890 - GHIJKL \ No newline at end of file diff --git a/tools/Examples/VPatch/oldfile.txt b/tools/Examples/VPatch/oldfile.txt new file mode 100644 index 0000000..a378cf3 --- /dev/null +++ b/tools/Examples/VPatch/oldfile.txt @@ -0,0 +1,6 @@ +*** THIS IS A TEST FILE FOR THE VPATCH EXAMPLE *** +*** COMPILE EXAMPLE.NSI TO TEST *** + +oldfile - vpatch + +12345 - ABCDEF \ No newline at end of file diff --git a/tools/Examples/VPatch/patch.pat b/tools/Examples/VPatch/patch.pat new file mode 100644 index 0000000..e1e5304 Binary files /dev/null and b/tools/Examples/VPatch/patch.pat differ diff --git a/tools/Examples/VersionInfo.nsi b/tools/Examples/VersionInfo.nsi new file mode 100644 index 0000000..1ff449d --- /dev/null +++ b/tools/Examples/VersionInfo.nsi @@ -0,0 +1,29 @@ +; VersionInfo.nsi +; +; This script shows you how to add version information to an installer. +; Windows shows this information on the Version tab of the File properties. + +;-------------------------------- + +Name "Version Info" + +OutFile "VersionInfo.exe" + +LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf" +;-------------------------------- +;Version Information + + VIProductVersion "1.2.3.4" + VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Test Application" + VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment" + VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Fake company" + VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Test Application is a trademark of Fake company" + VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright Fake company" + VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Test Application" + VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "1.2.3" + +;-------------------------------- + +Section "" + +SectionEnd diff --git a/tools/Examples/WordFunc.ini b/tools/Examples/WordFunc.ini new file mode 100644 index 0000000..38c748d --- /dev/null +++ b/tools/Examples/WordFunc.ini @@ -0,0 +1,107 @@ +[Settings] +NumFields=13 +NextButtonText=&Enter + +[Field 1] +Type=Droplist +Flags=NOTIFY +State=1. WordFind (Find word by number) +ListItems=1. WordFind (Find word by number)| (Delimiter exclude)| (Sum of words)| (Sum of delimiters)| (Find word number)| ( }} )| ( {} )| ( *} )|2. WordFind2X|3. WordReplace (Replace)| (Delete)| (Multiple-replace)|4. WordAdd (Add)| (Delete) |5. WordInsert|6. StrFilter (UpperCase)| (LowerCase)| (Filter)|7. VersionCompare|8. VersionConvert +Left=44 +Right=190 +Top=10 +Bottom=191 + +[Field 2] +Type=Text +State=C:\io.sys|C:\logo.sys|C:\Program Files|C:\WINDOWS +Left=44 +Right=-10 +Top=30 +Bottom=41 + +[Field 3] +Type=Text +State=|C:\ +Left=44 +Right=-10 +Top=46 +Bottom=59 + +[Field 4] +Type=Text +Flags=DISABLED +Left=44 +Right=-10 +Top=62 +Bottom=75 + +[Field 5] +Type=Text +State=-4 +Left=44 +Right=-10 +Top=80 +Bottom=92 + +[Field 6] +Type=Text +Left=10 +Right=-30 +Top=108 +Bottom=120 + +[Field 7] +Type=Text +Left=-22 +Right=-10 +Top=108 +Bottom=120 + +[Field 8] +Type=Label +Text=String +Left=10 +Right=43 +Top=32 +Bottom=44 + +[Field 9] +Type=Label +Text=Delimiter +Left=10 +Right=43 +Top=48 +Bottom=60 + +[Field 10] +Type=Label +Left=10 +Right=44 +Top=65 +Bottom=76 + +[Field 11] +Type=Label +Text=Word # +Left=10 +Right=43 +Top=81 +Bottom=94 + +[Field 12] +Type=Label +Text=Result (Word): +Left=10 +Right=236 +Top=97 +Bottom=110 + +[Field 13] +Type=Label +Text=EL +Left=-21 +Right=-10 +Top=97 +Bottom=110 + diff --git a/tools/Examples/WordFunc.nsi b/tools/Examples/WordFunc.nsi new file mode 100644 index 0000000..a0e9f99 --- /dev/null +++ b/tools/Examples/WordFunc.nsi @@ -0,0 +1,535 @@ +;_____________________________________________________________________________ +; +; Word Functions +;_____________________________________________________________________________ +; +; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "Word Functions" +OutFile "WordFunc.exe" +Caption "$(^Name)" +XPStyle on +RequestExecutionLevel user + +Var INI +Var HWND +Var STATE + +!include "WinMessages.nsh" +!include "WordFunc.nsh" + +Page Custom ShowCustom LeaveCustom + +Function ShowCustom + InstallOptions::initDialog "$INI" + Pop $hwnd + InstallOptions::show + Pop $0 +FunctionEnd + +Function LeaveCustom + ReadINIStr $0 $INI "Settings" "State" + StrCmp $0 0 Enter + + GetDlgItem $1 $HWND 1202 + EnableWindow $1 1 + GetDlgItem $1 $HWND 1203 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1204 + ShowWindow $1 1 + GetDlgItem $1 $HWND 1206 + EnableWindow $1 1 + GetDlgItem $1 $HWND 1205 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1206 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + + ReadINIStr $0 $INI "Field 1" "State" + StrCmp $0 "1. WordFind (Find word by number)" 0 WordFind2Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:-4" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):" + goto WordFindSend + + WordFind2Send: + StrCmp $0 " (Delimiter exclude)" 0 WordFind3Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E-2{" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{ or }after delimiter):" + goto WordFindSend + + WordFind3Send: + StrCmp $0 " (Sum of words)" 0 WordFind4Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:#" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of words):" + goto WordFindSend + + WordFind4Send: + StrCmp $0 " (Sum of delimiters)" 0 WordFind5Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E*" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Option" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of delimiters):" + goto WordFindSend + + WordFind5Send: + StrCmp $0 " (Find word number)" 0 WordFind6Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:/Program Files" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:/Word" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word #):" + goto WordFindSend + + WordFind6Send: + StrCmp $0 " ( }} )" 0 WordFind7Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2}}" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{{ or }}after word):" + goto WordFindSend + + WordFind7Send: + StrCmp $0 " ( {} )" 0 WordFind8Send + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+2{}" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Without word):" + goto WordFindSend + + WordFind8Send: + StrCmp $0 " ( *} )" 0 WordFind2XSend + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2*}" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{* or *}after word with word):" + goto WordFindSend + + WordFind2XSend: + StrCmp $0 "2. WordFind2X" 0 WordReplace1Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\" + GetDlgItem $1 $HWND 1203 + EnableWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:];" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2" + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter1" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter2" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):" + abort + + WordReplace1Send: + StrCmp $0 "3. WordReplace (Replace)" 0 WordReplace2Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:bmp" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+2" + goto WordReplaceSend + + WordReplace2Send: + StrCmp $0 " (Delete)" 0 WordReplace3Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E+" + goto WordReplaceSend + + WordReplace3Send: + StrCmp $0 " (Multiple-replace)" 0 WordAdd1Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys||||||C:\logo.sys|||C:\WINDOWS" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+1*" + goto WordReplaceSend + + WordAdd1Send: + StrCmp $0 "4. WordAdd (Add)" 0 WordAdd2Send + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+C:\WINDOWS|C:\config.sys|C:\IO.SYS" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 + String2):" + goto WordAddSend + + WordAdd2Send: + StrCmp $0 " (Delete) " 0 WordInsertSend + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E-C:\WINDOWS|C:\config.sys|C:\IO.SYS" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 - String2):" + goto WordAddSend + + WordInsertSend: + StrCmp $0 "5. WordInsert" 0 StrFilter1Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\WINDOWS" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|" + GetDlgItem $1 $HWND 1203 + EnableWindow $1 1 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\logo.sys" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2" + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:" + abort + + StrFilter1Send: + StrCmp $0 "6. StrFilter (UpperCase)" 0 StrFilter2Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in uppercase):" + goto StrFilterSend + + StrFilter2Send: + StrCmp $0 " (LowerCase)" 0 StrFilter3Send + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:-" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:ef" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in lowercase except EF):" + goto StrFilterSend + + StrFilter3Send: + StrCmp $0 " (Filter)" 0 VersionCompareSend + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:+12" + GetDlgItem $1 $HWND 1203 + SendMessage $1 ${WM_SETTEXT} 1 "STR:b" + GetDlgItem $1 $HWND 1204 + SendMessage $1 ${WM_SETTEXT} 1 "STR:def" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String Digits + Letters + b - def):" + goto StrFilterSend + + VersionCompareSend: + StrCmp $0 "7. VersionCompare" 0 VersionConvertSend + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.9" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.01" + GetDlgItem $1 $HWND 1203 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1204 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1206 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Version1" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Version2" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (0-equal 1-newer 2-older):" + abort + + VersionConvertSend: + StrCmp $0 "8. VersionConvert" 0 Abort + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:9.0c" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1203 + ShowWindow $1 0 + GetDlgItem $1 $HWND 1204 + ShowWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1206 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Version" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:CharList" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (numerical version format):" + abort + + Abort: + Abort + + WordFindSend: + GetDlgItem $1 $HWND 1203 + EnableWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\Program Files|C:\WINDOWS" + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + Abort + + WordReplaceSend: + GetDlgItem $1 $HWND 1203 + EnableWindow $1 1 + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Replace it" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR: with" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #" + GetDlgItem $1 $HWND 1211 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:" + Abort + + WordAddSend: + GetDlgItem $1 $HWND 1203 + EnableWindow $1 0 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1201 + SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS" + GetDlgItem $1 $HWND 1202 + SendMessage $1 ${WM_SETTEXT} 1 "STR:|" + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String1" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String2" + Abort + + StrFilterSend: + GetDlgItem $1 $HWND 1203 + EnableWindow $1 1 + GetDlgItem $1 $HWND 1206 + EnableWindow $1 0 + GetDlgItem $1 $HWND 1207 + SendMessage $1 ${WM_SETTEXT} 1 "STR:String" + GetDlgItem $1 $HWND 1208 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Filter" + GetDlgItem $1 $HWND 1209 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Include" + GetDlgItem $1 $HWND 1210 + SendMessage $1 ${WM_SETTEXT} 1 "STR:Exclude" + Abort + +;=Enter= + Enter: + StrCpy $0 '' + ReadINIStr $STATE $INI "Field 1" "State" + ReadINIStr $R1 $INI "Field 2" "State" + ReadINIStr $R2 $INI "Field 3" "State" + ReadINIStr $R3 $INI "Field 4" "State" + ReadINIStr $R4 $INI "Field 5" "State" + + StrCmp $STATE "1. WordFind (Find word by number)" WordFind + StrCmp $STATE " (Delimiter exclude)" WordFind + StrCmp $STATE " (Find in string)" WordFind + StrCmp $STATE " (Sum of words)" WordFind + StrCmp $STATE " (Sum of delimiters)" WordFind + StrCmp $STATE " (Find word number)" WordFind + StrCmp $STATE " ( }} )" WordFind + StrCmp $STATE " ( {} )" WordFind + StrCmp $STATE " ( *} )" WordFind + StrCmp $STATE "2. WordFind2X" WordFind2X + StrCmp $STATE "3. WordReplace (Replace)" WordReplace + StrCmp $STATE " (Delete)" WordReplace + StrCmp $STATE " (Multiple-replace)" WordReplace + StrCmp $STATE "4. WordAdd (Add)" WordAdd + StrCmp $STATE " (Delete) " WordAdd + StrCmp $STATE "5. WordInsert" WordInsert + StrCmp $STATE "6. StrFilter (UpperCase)" StrFilter + StrCmp $STATE " (LowerCase)" StrFilter + StrCmp $STATE " (Filter)" StrFilter + StrCmp $STATE "7. VersionCompare" VersionCompare + StrCmp $STATE "8. VersionConvert" VersionConvert + Abort + + WordFind: + ${WordFind} "$R1" "$R2" "$R4" $R0 + IfErrors 0 Send + StrCpy $0 $R0 + StrCmp $R0 3 0 +3 + StrCpy $3 '"+1" "-1" "+1}" "+1{" "#" "/word"' + goto error3 + StrCmp $R0 2 0 error1 + StrCpy $R4 $R4 '' 1 + StrCpy $1 $R4 1 + StrCmp $1 / 0 error2 + StrCpy $R4 $R4 '' 1 + StrCpy $R0 '"$R4" no such word.' + goto Send + + WordFind2X: + ${WordFind2X} "$R1" "$R2" "$R3" "$R4" $R0 + IfErrors 0 Send + StrCpy $0 $R0 + StrCmp $R0 3 0 +3 + StrCpy $3 '"+1" "-1"' + goto error3 + StrCmp $R0 2 +3 + StrCpy $R0 '"$R2...$R3" no words found.' + goto Send + StrCpy $R4 $R4 '' 1 + StrCpy $1 $R4 1 + StrCmp $1 / 0 +2 + StrCpy $R4 $R4 '' 1 + StrCpy $R0 '"$R4" no such word.' + goto Send + + WordReplace: + ${WordReplace} "$R1" "$R2" "$R3" "$R4" $R0 + IfErrors 0 Send + StrCpy $0 $R0 + StrCmp $R0 3 0 +3 + StrCpy $3 '"+1" "+1*" "+" "+*" "{}"' + goto error3 + StrCmp $R0 2 0 error1 + StrCpy $R4 $R4 '' 1 + goto error2 + + WordAdd: + ${WordAdd} "$R1" "$R2" "$R4" $R0 + IfErrors 0 Send + StrCpy $0 $R0 + StrCmp $R0 3 0 error1empty + StrCpy $3 '"+text" "-text"' + goto error3 + + WordInsert: + ${WordInsert} "$R1" "$R2" "$R3" "$R4" $R0 + IfErrors 0 Send + StrCpy $0 $R0 + StrCmp $R0 3 0 +3 + StrCpy $3 '"+1" "-1"' + goto error3 + StrCmp $R0 2 0 error1empty + StrCpy $R4 $R4 '' 1 + goto error2 + + StrFilter: + ${StrFilter} "$R1" "$R2" "$R3" "$R4" $R0 + IfErrors 0 Send + StrCpy $R0 'Syntax error' + goto Send + + VersionCompare: + ${VersionCompare} "$R1" "$R2" $R0 + goto Send + + VersionConvert: + ${VersionConvert} "$R1" "$R2" $R0 + goto Send + + error3: + StrCpy $R0 '"$R4" syntax error ($3)' + goto Send + error2: + StrCpy $R0 '"$R4" no such word number' + goto Send + error1empty: + StrCpy $R0 '"$R2" delimiter is empty' + goto Send + error1: + StrCpy $R0 '"$R2" delimiter not found in string' + goto Send + + Send: + GetDlgItem $1 $HWND 1205 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0" + GetDlgItem $1 $HWND 1206 + SendMessage $1 ${WM_SETTEXT} 1 "STR:$0" + abort +FunctionEnd + +Function .onInit + InitPluginsDir + GetTempFileName $INI $PLUGINSDIR + File /oname=$INI "WordFunc.ini" +FunctionEnd + +Page instfiles + +Section "Empty" +SectionEnd diff --git a/tools/Examples/WordFuncTest.nsi b/tools/Examples/WordFuncTest.nsi new file mode 100644 index 0000000..e9d1160 --- /dev/null +++ b/tools/Examples/WordFuncTest.nsi @@ -0,0 +1,610 @@ +;_____________________________________________________________________________ +; +; Word Functions Test +;_____________________________________________________________________________ +; +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + +Name "Word Functions Test" +OutFile "WordFuncTest.exe" +Caption "$(^Name)" +ShowInstDetails show +XPStyle on +RequestExecutionLevel user + +Var FUNCTION +Var OUT + +!include "WordFunc.nsh" + +;############### INSTALL ############### + +!define StackVerificationStart `!insertmacro StackVerificationStart` +!macro StackVerificationStart _FUNCTION + StrCpy $FUNCTION ${_FUNCTION} + Call StackVerificationStart +!macroend + +!define StackVerificationEnd `!insertmacro StackVerificationEnd` +!macro StackVerificationEnd + Call StackVerificationEnd +!macroend + +Function StackVerificationStart + StrCpy $0 !0 + StrCpy $1 !1 + StrCpy $2 !2 + StrCpy $3 !3 + StrCpy $4 !4 + StrCpy $5 !5 + StrCpy $6 !6 + StrCpy $7 !7 + StrCpy $8 !8 + StrCpy $9 !9 + StrCpy $R0 !R0 + StrCpy $R1 !R1 + StrCpy $R2 !R2 + StrCpy $R3 !R3 + StrCpy $R4 !R4 + StrCpy $R5 !R5 + StrCpy $R6 !R6 + StrCpy $R7 !R7 + StrCpy $R8 !R8 + StrCpy $R9 !R9 +FunctionEnd + +Function StackVerificationEnd + IfErrors +3 + DetailPrint 'PASSED $FUNCTION no errors' + goto +2 + DetailPrint 'FAILED $FUNCTION error' + + StrCmp $0 '!0' 0 error + StrCmp $1 '!1' 0 error + StrCmp $2 '!2' 0 error + StrCmp $3 '!3' 0 error + StrCmp $4 '!4' 0 error + StrCmp $5 '!5' 0 error + StrCmp $6 '!6' 0 error + StrCmp $7 '!7' 0 error + StrCmp $8 '!8' 0 error + StrCmp $9 '!9' 0 error + StrCmp $R0 '!R0' 0 error + StrCmp $R1 '!R1' 0 error + StrCmp $R2 '!R2' 0 error + StrCmp $R3 '!R3' 0 error + StrCmp $R4 '!R4' 0 error + StrCmp $R5 '!R5' 0 error + StrCmp $R6 '!R6' 0 error + StrCmp $R7 '!R7' 0 error + StrCmp $R8 '!R8' 0 error + StrCmp $R9 '!R9' 0 error + DetailPrint 'PASSED $FUNCTION stack' + goto end + + error: + DetailPrint 'FAILED $FUNCTION stack' +; MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2 +; quit + + end: +FunctionEnd + + + +Section WordFind + ${StackVerificationStart} WordFind + + ${WordFind} '||io.sys|||Program Files|||WINDOWS' '||' '-02' $OUT + StrCmp $OUT '|Program Files' 0 error + + ${WordFind} '||io.sys||||Program Files||||WINDOWS' '||' '-2' $OUT + StrCmp $OUT 'Program Files' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '-2}' $OUT + StrCmp $OUT '|logo.sys|||WINDOWS' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '#' $OUT + StrCmp $OUT '3' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '*' $OUT + StrCmp $OUT '2' 0 error + + ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT + StrCmp $OUT '2' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2}}' $OUT + StrCmp $OUT '|||WINDOWS' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2{}' $OUT + StrCmp $OUT 'C:\io.sys|||WINDOWS' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2*}' $OUT + StrCmp $OUT '|logo.sys|||WINDOWS' 0 error + + ${WordFind} 'C:\\Program Files\\NSIS\\NSIS.chm' '\' '-2{*' $OUT + StrCmp $OUT 'C:\\Program Files\\NSIS' 0 error + + ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS|||' '||' '-1' $OUT + StrCmp $OUT '|' 0 error + + ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '-1}' $OUT + StrCmp $OUT '' 0 error + + ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '+1{' $OUT + StrCmp $OUT '' 0 error + + ${WordFind} 'C:\io.sys|||logo.sys' '_' 'E+1' $OUT + IfErrors 0 error + StrCmp $OUT 1 0 error + + ${WordFind} 'C:\io.sys|||logo.sys|||' '\' 'E+3' $OUT + IfErrors 0 error + StrCmp $OUT 2 0 error + + ${WordFind} 'C:\io.sys|||logo.sys' '\' 'E1' $OUT + IfErrors 0 error + StrCmp $OUT 3 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordFindS + ${StackVerificationStart} WordFindS + + ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|PROGRAM FILES' $OUT + StrCmp $OUT 'C:\io.sys|||Program Files|||WINDOWS' 0 error + + ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordFind2X + ${StackVerificationStart} WordFind2X + + ${WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT + StrCmp $OUT 'logo.sys' 0 error + + ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1' $OUT + StrCmp $OUT 'logo' 0 error + + ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{{' $OUT + StrCmp $OUT 'C:\WINDOWS C:\io.sys C:' 0 error + + ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{}' $OUT + StrCmp $OUT 'C:\WINDOWS C:\io.sys C:sys' 0 error + + ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{*' $OUT + StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.' 0 error + + ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT + StrCmp $OUT '2' 0 error + + ${WordFind2X} '||a||b||c' '||' '||' 'E+1' $OUT + StrCmp $OUT 'a' 0 error + + ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E+1' $OUT + IfErrors 0 error + StrCmp $OUT 1 0 error + + ${WordFind2X} '[io.sys];[C:\logo.sys]' '[' '];' 'E+2' $OUT + IfErrors 0 error + StrCmp $OUT 2 0 error + + ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E2' $OUT + IfErrors 0 error + StrCmp $OUT 3 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordFind2XS + ${StackVerificationStart} WordFind2XS + + ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/LOGO' $OUT + StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.sys' 0 error + + ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordFind3X + ${StackVerificationStart} WordFind3X + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT + StrCmp $OUT '1.AAB' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1' $OUT + StrCmp $OUT '2.BAA' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{{' $OUT + StrCmp $OUT '[1.AAB];' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{}' $OUT + StrCmp $OUT '[1.AAB];[3.BBB];' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{*' $OUT + StrCmp $OUT '[1.AAB];[2.BAA];' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT + StrCmp $OUT '2' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'XX' '];' 'E+1' $OUT + IfErrors 0 error + StrCmp $OUT '1' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E+3' $OUT + IfErrors 0 error + StrCmp $OUT '2' 0 error + + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E3' $OUT + IfErrors 0 error + StrCmp $OUT '3' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordFind3XS + ${StackVerificationStart} WordFind3XS + + ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.baa' $OUT + StrCmp $OUT '[1.AAB];[2.BAA];[3.BBB];' 0 error + + ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordReplace + ${StackVerificationStart} WordReplace + + ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' '' '+' $OUT + StrCmp $OUT 'C:\io. C:\logo. C:\WINDOWS' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'C:\io.sys' '' '+' $OUT + StrCmp $OUT ' C:\logo.sys C:\WINDOWS' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' ' ' '+1*' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT + StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{' $OUT + StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}' $OUT + StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}' $OUT + StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{*' $OUT + StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}*' $OUT + StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|' 0 error + + ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT + StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error + + ${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT + StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys' '#sys' '|sys|' 'E+1' $OUT + IfErrors 0 error + StrCmp $OUT '1' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E+3' $OUT + IfErrors 0 error + StrCmp $OUT '2' 0 error + + ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E3' $OUT + IfErrors 0 error + StrCmp $OUT '3' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordReplaceS + ${StackVerificationStart} WordReplaceS + + ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error + + ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'sys' 'bmp' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordAdd + ${StackVerificationStart} WordAdd + + ${WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error + + ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT + StrCmp $OUT 'C:\logo.sys' 0 error + + ${WordAdd} 'C:\io.sys' ' ' '+C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error + + ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error + + ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' '+C:\logo.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error + + ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' 'E-' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error + IfErrors error + + ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'E-C:\logo.sys' $OUT + IfErrors 0 error + StrCmp $OUT '1' 0 error + + ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'EC:\logo.sys' $OUT + IfErrors 0 error + StrCmp $OUT '3' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordAddS + ${StackVerificationStart} WordAddS + + ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\windows C:\config.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\windows C:\config.sys' 0 error + + ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordInsert + ${StackVerificationStart} WordInsert + + ${WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error + + ${WordInsert} 'C:\io.sys' ' ' 'C:\WINDOWS' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS' 0 error + + ${WordInsert} '' ' ' 'C:\WINDOWS' '+1' $OUT + StrCmp $OUT 'C:\WINDOWS ' 0 error + + ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E+1' $OUT + IfErrors 0 error + StrCmp $OUT '1' 0 error + + ${WordInsert} 'C:\io.sys C:\logo.sys' ' ' 'C:\logo.sys' 'E+4' $OUT + IfErrors 0 error + StrCmp $OUT '2' 0 error + + ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E1' $OUT + IfErrors 0 error + StrCmp $OUT '3' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WordInsertS + ${StackVerificationStart} WordInsertS + + ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' X ' 'C:\NTLDR' '+2' $OUT + StrCmp $OUT 'C:\io.sys x C:\logo.sys X C:\NTLDR' 0 error + + ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' x ' 'C:\NTLDR' '+2' $OUT + StrCmp $OUT 'C:\io.sys x C:\NTLDR x C:\logo.sys' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section StrFilter + ${StackVerificationStart} StrFilter + + ${StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT + IfErrors error + StrCmp $OUT '123ABC 456DEF 7890|%#' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '-' 'ef' '' $OUT + IfErrors error + StrCmp $OUT '123abc 456dEF 7890|%#' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '2' '|%' '' $OUT + IfErrors error + StrCmp $OUT 'abcDEF|%' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT + IfErrors error + StrCmp $OUT '123a 6F 78|%#' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT + IfErrors error + StrCmp $OUT '123AbC4567890' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT + IfErrors error + StrCmp $OUT '123AbC4567890' 0 error + + ${StrFilter} '123abc 456DEF 7890|%#' '123' 'b' 'def' $OUT + IfErrors 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section StrFilterS + ${StackVerificationStart} StrFilterS + + ${StrFilterS} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT + IfErrors error + StrCmp $OUT '123a 6 78|%#' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section VersionCompare + ${StackVerificationStart} VersionCompare + + ${VersionCompare} '1.1.1.9' '1.1.1.01' $OUT + StrCmp $OUT '1' 0 error + + ${VersionCompare} '1.1.1.1' '1.1.1.10' $OUT + StrCmp $OUT '2' 0 error + + ${VersionCompare} '91.1.1.1' '101.1.1.9' $OUT + StrCmp $OUT '2' 0 error + + ${VersionCompare} '1.1.1.1' '1.1.1.1' $OUT + StrCmp $OUT '0' 0 error + + ${VersionCompare} '1.1.1.9' '1.1.1.10' $OUT + StrCmp $OUT '2' 0 error + + ${VersionCompare} '1.1.1.0' '1.1.1' $OUT + StrCmp $OUT '0' 0 error + + ${VersionCompare} '1.1.0.0' '1.1' $OUT + StrCmp $OUT '0' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section VersionConvert + ${StackVerificationStart} VersionConvert + + ${VersionConvert} '9.0a' '' $OUT + StrCmp $OUT '9.0.01' 0 error + + ${VersionConvert} '9.0c' '' $OUT + StrCmp $OUT '9.0.03' 0 error + + ${VersionConvert} '0.15c-9m' '' $OUT + StrCmp $OUT '0.15.03.9.13' 0 error + + ${VersionConvert} '0.15c+' 'abcdefghijklmnopqrstuvwxyz+' $OUT + StrCmp $OUT '0.15.0327' 0 error + + ${VersionConvert} '0.0xa12.x.ax|.|.|x|a|.3|a.4.||5.|' '' $OUT + StrCmp $OUT '0.0.2401.12.24.0124.24.01.3.01.4.5' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section WriteUninstaller + goto +2 + WriteUninstaller '$EXEDIR\un.WordFuncTest.exe' +SectionEnd + + + +;############### UNINSTALL ############### + +Section un.Uninstall + ${WordFind} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT + ${WordFindS} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT + ${WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT + ${WordFind2XS} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT + ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT + ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT + ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + ${WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + ${WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT + ${WordInsertS} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT + ${StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT + ${StrFilterS} '123abc 456DEF 7890|%#' '+' '' '' $OUT + ${VersionCompare} '1.1.1.9' '1.1.1.01' $OUT + ${VersionConvert} '9.0a' '' $OUT +SectionEnd diff --git a/tools/Examples/bigtest.nsi b/tools/Examples/bigtest.nsi new file mode 100644 index 0000000..c4bcb04 --- /dev/null +++ b/tools/Examples/bigtest.nsi @@ -0,0 +1,330 @@ +; bigtest.nsi +; +; This script attempts to test most of the functionality of the NSIS exehead. + +;-------------------------------- + +!ifdef HAVE_UPX +!packhdr tmp.dat "upx\upx -9 tmp.dat" +!endif + +!ifdef NOCOMPRESS +SetCompress off +!endif + +;-------------------------------- + +Name "BigNSISTest" +Caption "NSIS Big Test" +Icon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico" +OutFile "bigtest.exe" + +SetDateSave on +SetDatablockOptimize on +CRCCheck on +SilentInstall normal +BGGradient 000000 800000 FFFFFF +InstallColors FF8080 000030 +XPStyle on + +InstallDir "$PROGRAMFILES\NSISTest\BigNSISTest" +InstallDirRegKey HKLM "Software\NSISTest\BigNSISTest" "Install_Dir" + +CheckBitmap "${NSISDIR}\Contrib\Graphics\Checks\classic-cross.bmp" + +LicenseText "A test text, make sure it's all there" +LicenseData "bigtest.nsi" + +RequestExecutionLevel admin +ManifestSupportedOS all + +;-------------------------------- + +Page license +Page components +Page directory +Page instfiles + +UninstPage uninstConfirm +UninstPage instfiles + +;-------------------------------- + +!ifndef NOINSTTYPES ; only if not defined + InstType "Most" + InstType "Full" + InstType "More" + InstType "Base" + ;InstType /NOCUSTOM + ;InstType /COMPONENTSONLYONCUSTOM +!endif + +AutoCloseWindow false +ShowInstDetails show + +;-------------------------------- + +Section "" ; empty string makes it hidden, so would starting with - + + ; write reg info + StrCpy $1 "Hello World" + DetailPrint "I like to be able to see what is going on (debug) $1" + WriteRegStr HKLM SOFTWARE\NSISTest\BigNSISTest "Install_Dir" "$INSTDIR" + + ; write uninstall strings + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "DisplayName" "BigNSISTest (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "UninstallString" '"$INSTDIR\bt-uninst.exe"' + + SetOutPath $INSTDIR + File /a "silent.nsi" + CreateDirectory "$INSTDIR\MyProjectFamily\MyProject" ; 2 recursively create a directory for fun. + WriteUninstaller "$INSTDIR\bt-uninst.exe" + + Nop ; for fun + +SectionEnd + +Section "TempTest" + +SectionIn 1 2 3 + Start: MessageBox MB_OK "Start:" + + MessageBox MB_YESNO "Goto MyLabel" IDYES MyLabel + + MessageBox MB_OK "Right before MyLabel:" + + MyLabel: MessageBox MB_OK "MyLabel:" + + MessageBox MB_OK "Right after MyLabel:" + + MessageBox MB_YESNO "Goto Start:?" IDYES Start + +SectionEnd + +SectionGroup /e SectionGroup1 + +Section "Test Registry/INI functions" + +SectionIn 1 4 3 + + WriteRegStr HKLM SOFTWARE\NSISTest\BigNSISTest "StrTest_INSTDIR" "$INSTDIR" + WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_0xDEADBEEF" 0xdeadbeef + WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_123456" 123456 + WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_0123" 0123 + WriteRegBin HKLM SOFTWARE\NSISTest\BigNSISTest "BinTest_deadbeef01f00dbeef" "DEADBEEF01F00DBEEF" + StrCpy $8 "$SYSDIR\IniTest" + WriteINIStr "$INSTDIR\test.ini" "MySection" "Value1" $8 + WriteINIStr "$INSTDIR\test.ini" "MySectionIni" "Value1" $8 + WriteINIStr "$INSTDIR\test.ini" "MySectionIni" "Value2" $8 + WriteINIStr "$INSTDIR\test.ini" "IniOn" "Value1" $8 + + Call MyFunctionTest + + DeleteINIStr "$INSTDIR\test.ini" "IniOn" "Value1" + DeleteINISec "$INSTDIR\test.ini" "MySectionIni" + + ReadINIStr $1 "$INSTDIR\test.ini" "MySectionIni" "Value1" + StrCmp $1 "" INIDelSuccess + MessageBox MB_OK "DeleteINISec failed" + INIDelSuccess: + + ClearErrors + ReadRegStr $1 HKCR "software\microsoft" xyz_cc_does_not_exist + IfErrors 0 NoError + MessageBox MB_OK "could not read from HKCR\software\microsoft\xyz_cc_does_not_exist" + Goto ErrorYay + NoError: + MessageBox MB_OK "read '$1' from HKCR\software\microsoft\xyz_cc_does_not_exist" + ErrorYay: + +SectionEnd + +Section "Test CreateShortcut" + + SectionIn 1 2 3 + + Call CSCTest + +SectionEnd + +SectionGroup Group2 + +!define ASSERT `!insertmacro ASSERT "${U+24}{__FILE__}" ${U+24}{__LINE__} ` +!macro ASSERT __file __line __xpr +${__xpr} +2 +MessageBox MB_ICONSTOP `ASSERT: ${__xpr} (${__file}:${__line})` +!macroend + +Section "Integer" +IntOp $0 0xffffffff >> 31 +${ASSERT} `IntCmpU $0 -1` +IntOp $0 0xffffffff >>> 31 +${ASSERT} `IntCmpU $0 1` +IntOp $0 1 << 31 +${ASSERT} `IntCmpU $0 0x80000000` +IntOp $0 0x80000000 ^ 0x40000000 +${ASSERT} `IntCmpU $0 0xC0000000` +ClearErrors +IntOp $0 1 / 0 +${ASSERT} `IfErrors ` ; Division by zero must set the error flag +${ASSERT} `IntCmpU $0 0` ; Unspecified result, hopefully it's zero +SectionEnd + +Section "Test Branching" + + BeginTestSection: + SectionIn 1 2 3 + + SetOutPath $INSTDIR + + IfFileExists "$INSTDIR\LogicLib.nsi" 0 BranchTest69 + + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite $INSTDIR\LogicLib.nsi?" IDNO NoOverwrite ; skipped if file doesn't exist + + BranchTest69: + + SetOverwrite ifnewer ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS + + NoOverwrite: + + File "LogicLib.nsi" ; skipped if answered no + SetOverwrite try ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS + + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to skip the rest of this section?" IDYES EndTestBranch + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to go back to the beginning of this section?" IDYES BeginTestSection + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to hide the installer and wait five seconds?" IDNO NoHide + + HideWindow + Sleep 5000 + BringToFront + + NoHide: + + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to call the function 5 times?" IDNO NoRecurse + + StrCpy $1 "x" + + LoopTest: + + Call myfunc + StrCpy $1 "x$1" + StrCmp $1 "xxxxxx" 0 LoopTest + + NoRecurse: + + EndTestBranch: + +SectionEnd + +SectionGroupEnd + +Section "Test CopyFiles" + + SectionIn 1 2 3 + + SetOutPath $INSTDIR\cpdest + CopyFiles "$WINDIR\*.ini" "$INSTDIR\cpdest" 0 + +SectionEnd + +SectionGroupEnd + +Section "Test Exec functions" TESTIDX + + SectionIn 1 2 3 + + SearchPath $1 notepad.exe + + MessageBox MB_OK "notepad.exe=$1" + Exec '"$1"' + ExecShell "open" '"$INSTDIR"' + Sleep 500 + BringToFront + +SectionEnd + +Section "Test ActiveX control registration" + + SectionIn 2 + + UnRegDLL "$SYSDIR\spin32.ocx" + Sleep 1000 + RegDLL "$SYSDIR\spin32.ocx" + Sleep 1000 + +SectionEnd + +;-------------------------------- + +Function "CSCTest" + + CreateDirectory "$SMPROGRAMS\Big NSIS Test" + SetOutPath $INSTDIR ; for working directory + CreateShortcut "$SMPROGRAMS\Big NSIS Test\Uninstall BIG NSIS Test.lnk" "$INSTDIR\bt-uninst.exe" ; use defaults for parameters, icon, etc. + ; this one will use notepad's icon, start it minimized, and give it a hotkey (of Ctrl+Shift+Q) + CreateShortcut "$SMPROGRAMS\Big NSIS Test\silent.nsi.lnk" "$INSTDIR\silent.nsi" "" "$WINDIR\notepad.exe" 0 SW_SHOWMINIMIZED CONTROL|SHIFT|Q + CreateShortcut "$SMPROGRAMS\Big NSIS Test\TheDir.lnk" "$INSTDIR\" "" "" 0 SW_SHOWMAXIMIZED CONTROL|SHIFT|Z + +FunctionEnd + +Function myfunc + + StrCpy $2 "MyTestVar=$1" + MessageBox MB_OK "myfunc: $2" + +FunctionEnd + +Function MyFunctionTest + + ReadINIStr $1 "$INSTDIR\test.ini" "MySectionIni" "Value1" + StrCmp $1 $8 NoFailedMsg + MessageBox MB_OK "WriteINIStr failed" + + NoFailedMsg: + +FunctionEnd + +Function .onSelChange + + SectionGetText ${TESTIDX} $0 + StrCmp $0 "" e + SectionSetText ${TESTIDX} "" + Goto e2 +e: + SectionSetText ${TESTIDX} "TextInSection" +e2: + +FunctionEnd + +;-------------------------------- + +; Uninstaller + +UninstallText "This will uninstall example2. Hit next to continue." +UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico" + +Section "Uninstall" + + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" + DeleteRegKey HKLM "SOFTWARE\NSISTest\BigNSISTest" + Delete "$INSTDIR\silent.nsi" + Delete "$INSTDIR\LogicLib.nsi" + Delete "$INSTDIR\bt-uninst.exe" + Delete "$INSTDIR\test.ini" + Delete "$SMPROGRAMS\Big NSIS Test\*.*" + RMDir "$SMPROGRAMS\BiG NSIS Test" + + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to remove the directory $INSTDIR\cpdest?" IDNO NoDelete + Delete "$INSTDIR\cpdest\*.*" + RMDir "$INSTDIR\cpdest" ; skipped if no + NoDelete: + + RMDir "$INSTDIR\MyProjectFamily\MyProject" + RMDir "$INSTDIR\MyProjectFamily" + RMDir "$INSTDIR" + + IfFileExists "$INSTDIR" 0 NoErrorMsg + MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist + NoErrorMsg: + +SectionEnd diff --git a/tools/Examples/example1.nsi b/tools/Examples/example1.nsi new file mode 100644 index 0000000..e2a3802 --- /dev/null +++ b/tools/Examples/example1.nsi @@ -0,0 +1,45 @@ +; example1.nsi +; +; This script is perhaps one of the simplest NSIs you can make. All of the +; optional settings are left to their default settings. The installer simply +; prompts the user asking them where to install, and drops a copy of example1.nsi +; there. +; +; example2.nsi expands on this by adding a uninstaller and start menu shortcuts. + +;-------------------------------- + +; The name of the installer +Name "Example1" + +; The file to write +OutFile "example1.exe" + +; Request application privileges for Windows Vista +RequestExecutionLevel user + +; Build Unicode installer +Unicode True + +; The default installation directory +InstallDir $DESKTOP\Example1 + +;-------------------------------- + +; Pages + +Page directory +Page instfiles + +;-------------------------------- + +; The stuff to install +Section "" ;No components page, name is not important + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + + ; Put file there + File example1.nsi + +SectionEnd diff --git a/tools/Examples/example2.nsi b/tools/Examples/example2.nsi new file mode 100644 index 0000000..0e179ef --- /dev/null +++ b/tools/Examples/example2.nsi @@ -0,0 +1,98 @@ +; example2.nsi +; +; This script is based on example1.nsi but it remembers the directory, +; has uninstall support and (optionally) installs start menu shortcuts. +; +; It will install example2.nsi into a directory that the user selects. +; +; See install-shared.nsi for a more robust way of checking for administrator rights. +; See install-per-user.nsi for a file association example. + +;-------------------------------- + +; The name of the installer +Name "Example2" + +; The file to write +OutFile "example2.exe" + +; Request application privileges for Windows Vista and higher +RequestExecutionLevel admin + +; Build Unicode installer +Unicode True + +; The default installation directory +InstallDir $PROGRAMFILES\Example2 + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey HKLM "Software\NSIS_Example2" "Install_Dir" + +;-------------------------------- + +; Pages + +Page components +Page directory +Page instfiles + +UninstPage uninstConfirm +UninstPage instfiles + +;-------------------------------- + +; The stuff to install +Section "Example2 (required)" + + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + + ; Put file there + File "example2.nsi" + + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\NSIS_Example2 "Install_Dir" "$INSTDIR" + + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2" "DisplayName" "NSIS Example2" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2" "NoRepair" 1 + WriteUninstaller "$INSTDIR\uninstall.exe" + +SectionEnd + +; Optional section (can be disabled by the user) +Section "Start Menu Shortcuts" + + CreateDirectory "$SMPROGRAMS\Example2" + CreateShortcut "$SMPROGRAMS\Example2\Uninstall.lnk" "$INSTDIR\uninstall.exe" + CreateShortcut "$SMPROGRAMS\Example2\Example2 (MakeNSISW).lnk" "$INSTDIR\example2.nsi" + +SectionEnd + +;-------------------------------- + +; Uninstaller + +Section "Uninstall" + + ; Remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Example2" + DeleteRegKey HKLM SOFTWARE\NSIS_Example2 + + ; Remove files and uninstaller + Delete $INSTDIR\example2.nsi + Delete $INSTDIR\uninstall.exe + + ; Remove shortcuts, if any + Delete "$SMPROGRAMS\Example2\*.lnk" + + ; Remove directories + RMDir "$SMPROGRAMS\Example2" + RMDir "$INSTDIR" + +SectionEnd diff --git a/tools/Examples/gfx.nsi b/tools/Examples/gfx.nsi new file mode 100644 index 0000000..05af852 --- /dev/null +++ b/tools/Examples/gfx.nsi @@ -0,0 +1,123 @@ +; gfx.nsi +; +; This script shows some examples of using all of the new +; graphic related additions introduced in NSIS 2 +; +; Written by Amir Szkeley 22nd July 2002 + +;-------------------------------- + +!macro BIMAGE IMAGE PARMS + Push $0 + GetTempFileName $0 + File /oname=$0 "${IMAGE}" + SetBrandingImage ${PARMS} $0 + Delete $0 + Pop $0 +!macroend + +;-------------------------------- + +Name "Graphical effects" + +OutFile "gfx.exe" + +; Adds an XP manifest to the installer +XPStyle on + +; Add branding image to the installer (an image placeholder on the side). +; It is not enough to just add the placeholder, we must set the image too... +; We will later set the image in every pre-page function. +; We can also set just one persistent image in .onGUIInit +AddBrandingImage left 100u + +; Sets the font of the installer +SetFont "Comic Sans MS" 8 + +; Just to make it three pages... +SubCaption 0 ": Yet another page..." +SubCaption 2 ": Yet another page..." +LicenseText "License page" +LicenseData "gfx.nsi" +DirText "Lets make a third page!" + +; Install dir +InstallDir "${NSISDIR}\Examples" + +; Request application privileges for Windows Vista +RequestExecutionLevel user + +;-------------------------------- + +; Pages +Page license licenseImage +Page custom customPage +Page directory dirImage +Page instfiles instImage + +;-------------------------------- + +Section "" + ; You can also use the BI_NEXT macro here... + MessageBox MB_YESNO "We can change the branding image from within a section too!$\nDo you want me to change it?" IDNO done + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Wizard\nsis.bmp" "" + done: + WriteUninstaller $INSTDIR\uninst.exe +SectionEnd + +;-------------------------------- + +Function licenseImage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" /RESIZETOFIT + MessageBox MB_YESNO 'Would you like to skip the license page?' IDNO no + Abort + no: +FunctionEnd + +Function customPage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" /RESIZETOFIT + MessageBox MB_OK 'This is a nice custom "page" with yet another image :P' + #insert install options/start menu/ here +FunctionEnd + +Function dirImage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Header\win.bmp" /RESIZETOFIT +FunctionEnd + +Function instImage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp" /RESIZETOFIT +FunctionEnd + +;-------------------------------- + +; Uninstall pages + +UninstPage uninstConfirm un.uninstImage +UninstPage custom un.customPage +UninstPage instfiles un.instImage + +Function un.uninstImage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Checks\modern.bmp" /RESIZETOFIT +FunctionEnd + +Function un.customPage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Header\win.bmp" /RESIZETOFIT + MessageBox MB_OK 'This is a nice uninstaller custom "page" with yet another image :P' + #insert install options/start menu/ here +FunctionEnd + +Function un.instImage + !insertmacro BIMAGE "${NSISDIR}\Contrib\Graphics\Wizard\llama.bmp" /RESIZETOFIT +FunctionEnd + +;-------------------------------- + +; Uninstaller + +; Another page for uninstaller +UninstallText "Another page..." + +Section uninstall + MessageBox MB_OK "Bla" +SectionEnd + diff --git a/tools/Examples/install-per-user.nsi b/tools/Examples/install-per-user.nsi new file mode 100644 index 0000000..f925ac1 --- /dev/null +++ b/tools/Examples/install-per-user.nsi @@ -0,0 +1,181 @@ +/* + +This example script installs a simple application for a single user. + +If multiple users on the same machine run this installer, each user +will end up with a separate install that is not affected by +update/removal operations performed by other users. + +Per-user installers should only write to HKCU and +folders inside the users profile. + +*/ + +!define NAME "Per-user example" +!define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" +Name "${NAME}" +OutFile "Install ${NAME}.exe" +Unicode True +RequestExecutionLevel User ; We don't need UAC elevation +InstallDir "" ; Don't set a default $InstDir so we can detect /D= and InstallDirRegKey +InstallDirRegKey HKCU "${REGPATH_UNINSTSUBKEY}" "UninstallString" + +!include LogicLib.nsh +!include WinCore.nsh +!include Integration.nsh + + +Page Directory +Page InstFiles + +Uninstpage UninstConfirm +Uninstpage InstFiles + + +Function .onInit + SetShellVarContext Current + + ${If} $InstDir == "" ; No /D= nor InstallDirRegKey? + GetKnownFolderPath $InstDir ${FOLDERID_UserProgramFiles} ; This folder only exists on Win7+ + StrCmp $InstDir "" 0 +2 + StrCpy $InstDir "$LocalAppData\Programs" ; Fallback directory + + StrCpy $InstDir "$InstDir\$(^Name)" + ${EndIf} +FunctionEnd + +Function un.onInit + SetShellVarContext Current +FunctionEnd + + +Section "Program files (Required)" + SectionIn Ro + + SetOutPath $InstDir + WriteUninstaller "$InstDir\Uninst.exe" + WriteRegStr HKCU "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}" + WriteRegStr HKCU "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" "$InstDir\MyApp.exe,0" + WriteRegStr HKCU "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$InstDir\Uninst.exe"' + WriteRegStr HKCU "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$InstDir\Uninst.exe" /S' + WriteRegDWORD HKCU "${REGPATH_UNINSTSUBKEY}" "NoModify" 1 + WriteRegDWORD HKCU "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1 + + !tempfile APP + !makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NSISPerUserAppExample" -DCOMPANY=Nullsoft "AppGen.nsi"' = 0 + File "/oname=$InstDir\MyApp.exe" "${APP}" ; Pretend that we have a real application to install + !delfile "${APP}" +SectionEnd + +Section "Start Menu shortcut" + CreateShortcut /NoWorkingDir "$SMPrograms\${NAME}.lnk" "$InstDir\MyApp.exe" +SectionEnd + +/* +This Section registers a fictional .test-nullsoft file extension and the Nullsoft.Test ProgId. +Proprietary file types are encouraged (by Microsoft) to use long file extensions and ProgIds that include the company name. + +When registering with "Open With" your executable should ideally have a somewhat unique name, +otherwise there could be a naming collision with a different application (with the same name) installed on the same machine. + +REGISTER_DEFAULTPROGRAMS is not defined because proprietary file types do not typically use the Default Programs functionality. +If your application registers a standard file type such as .mp3 or .html or a protocol like HTTP it should register as a Default Program. +It should also register as a client (https://docs.microsoft.com/en-us/windows/win32/shell/reg-middleware-apps#common-registration-elements-for-all-client-types). +*/ +!define ASSOC_EXT ".test-nullsoft" +!define ASSOC_PROGID "Nullsoft.Test" +!define ASSOC_VERB "MyApp" +!define ASSOC_APPEXE "MyApp.exe" +Section -ShellAssoc + # Register file type + WriteRegStr ShCtx "Software\Classes\${ASSOC_PROGID}\DefaultIcon" "" "$InstDir\${ASSOC_APPEXE},0" + ;WriteRegStr ShCtx "Software\Classes\${ASSOC_PROGID}\shell\${ASSOC_VERB}" "" "Nullsoft Test App" [Optional] + ;WriteRegStr ShCtx "Software\Classes\${ASSOC_PROGID}\shell\${ASSOC_VERB}" "MUIVerb" "@$InstDir\${ASSOC_APPEXE},-42" ; WinXP+ [Optional] Localizable verb display name + WriteRegStr ShCtx "Software\Classes\${ASSOC_PROGID}\shell\${ASSOC_VERB}\command" "" '"$InstDir\${ASSOC_APPEXE}" "%1"' + WriteRegStr ShCtx "Software\Classes\${ASSOC_EXT}" "" "${ASSOC_PROGID}" + + # Register "Open With" [Optional] + WriteRegNone ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithList" "${ASSOC_APPEXE}" ; Win2000+ [Optional] + ;WriteRegNone ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithProgids" "${ASSOC_PROGID}" ; WinXP+ [Optional] + WriteRegStr ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}\shell\open\command" "" '"$InstDir\${ASSOC_APPEXE}" "%1"' + WriteRegStr ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}" "FriendlyAppName" "Nullsoft Test App" ; [Optional] + WriteRegStr ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}" "ApplicationCompany" "Nullsoft" ; [Optional] + WriteRegNone ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}\SupportedTypes" "${ASSOC_EXT}" ; [Optional] Only allow "Open With" with specific extension(s) on WinXP+ + + # Register "Default Programs" [Optional] + !ifdef REGISTER_DEFAULTPROGRAMS + WriteRegStr ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}\Capabilities" "ApplicationDescription" "Shell association example test application" + WriteRegStr ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}\Capabilities\FileAssociations" "${ASSOC_EXT}" "${ASSOC_PROGID}" + WriteRegStr ShCtx "Software\RegisteredApplications" "Nullsoft Test App" "Software\Classes\Applications\${ASSOC_APPEXE}\Capabilities" + !endif + + ${NotifyShell_AssocChanged} +SectionEnd + + +Section -un.ShellAssoc + # Unregister file type + ClearErrors + DeleteRegKey ShCtx "Software\Classes\${ASSOC_PROGID}\shell\${ASSOC_VERB}" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_PROGID}\shell" + ${IfNot} ${Errors} + DeleteRegKey ShCtx "Software\Classes\${ASSOC_PROGID}\DefaultIcon" + ${EndIf} + ReadRegStr $0 ShCtx "Software\Classes\${ASSOC_EXT}" "" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_PROGID}" + ${IfNot} ${Errors} + ${AndIf} $0 == "${ASSOC_PROGID}" + DeleteRegValue ShCtx "Software\Classes\${ASSOC_EXT}" "" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_EXT}" + ${EndIf} + + # Unregister "Open With" + DeleteRegKey ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}" + DeleteRegValue ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithList" "${ASSOC_APPEXE}" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithList" + DeleteRegValue ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithProgids" "${ASSOC_PROGID}" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_EXT}\OpenWithProgids" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\${ASSOC_EXT}" + + # Unregister "Default Programs" + !ifdef REGISTER_DEFAULTPROGRAMS + DeleteRegValue ShCtx "Software\RegisteredApplications" "Nullsoft Test App" + DeleteRegKey ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}\Capabilities" + DeleteRegKey /IfEmpty ShCtx "Software\Classes\Applications\${ASSOC_APPEXE}" + !endif + + # Attempt to clean up junk left behind by the Windows shell + DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Search\JumplistData" "$InstDir\${ASSOC_APPEXE}" + DeleteRegValue HKCU "Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache" "$InstDir\${ASSOC_APPEXE}.FriendlyAppName" + DeleteRegValue HKCU "Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache" "$InstDir\${ASSOC_APPEXE}.ApplicationCompany" + DeleteRegValue HKCU "Software\Microsoft\Windows\ShellNoRoam\MUICache" "$InstDir\${ASSOC_APPEXE}" ; WinXP + DeleteRegValue HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store" "$InstDir\${ASSOC_APPEXE}" + DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" "${ASSOC_PROGID}_${ASSOC_EXT}" + DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" "Applications\${ASSOC_APPEXE}_${ASSOC_EXT}" + DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${ASSOC_EXT}\OpenWithProgids" "${ASSOC_PROGID}" + DeleteRegKey /IfEmpty HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${ASSOC_EXT}\OpenWithProgids" + DeleteRegKey /IfEmpty HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${ASSOC_EXT}\OpenWithList" + DeleteRegKey /IfEmpty HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${ASSOC_EXT}" + ;DeleteRegKey HKCU "Software\Microsoft\Windows\Roaming\OpenWith\FileExts\${ASSOC_EXT}" + ;DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\${ASSOC_EXT}" + + ${NotifyShell_AssocChanged} +SectionEnd + +!macro DeleteFileOrAskAbort path + ClearErrors + Delete "${path}" + IfErrors 0 +3 + MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP 'Unable to delete "${path}"!' IDRETRY -3 IDIGNORE +2 + Abort "Aborted" +!macroend + +Section -Uninstall + !insertmacro DeleteFileOrAskAbort "$InstDir\MyApp.exe" + Delete "$InstDir\Uninst.exe" + RMDir "$InstDir" + DeleteRegKey HKCU "${REGPATH_UNINSTSUBKEY}" + + ${UnpinShortcut} "$SMPrograms\${NAME}.lnk" + Delete "$SMPrograms\${NAME}.lnk" +SectionEnd diff --git a/tools/Examples/install-shared.nsi b/tools/Examples/install-shared.nsi new file mode 100644 index 0000000..01e1fe1 --- /dev/null +++ b/tools/Examples/install-shared.nsi @@ -0,0 +1,95 @@ +/* + +This example script installs a simple application for all users on a machine. + +All-users installers should only write to HKLM, $ProgramFiles, $CommonFiles and the +"All context" versions of $LocalAppData, $Templates, $SMPrograms etc. + +It should not write to HKCU nor any folders in the users profile! +If the application requires writable template data in $AppData it +must copy the required files from a shared location the +first time a user launches the application. + +*/ + +!define NAME "All-users example" +!define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" +Name "${NAME}" +OutFile "Install ${NAME}.exe" +Unicode True +RequestExecutionLevel Admin ; Request admin rights on WinVista+ (when UAC is turned on) +InstallDir "$ProgramFiles\$(^Name)" +InstallDirRegKey HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" + +!include LogicLib.nsh +!include Integration.nsh + + +Page Directory +Page InstFiles + +Uninstpage UninstConfirm +Uninstpage InstFiles + + +!macro EnsureAdminRights + UserInfo::GetAccountType + Pop $0 + ${If} $0 != "admin" ; Require admin rights on WinNT4+ + MessageBox MB_IconStop "Administrator rights required!" + SetErrorLevel 740 ; ERROR_ELEVATION_REQUIRED + Quit + ${EndIf} +!macroend + +Function .onInit + SetShellVarContext All + !insertmacro EnsureAdminRights +FunctionEnd + +Function un.onInit + SetShellVarContext All + !insertmacro EnsureAdminRights +FunctionEnd + + +Section "Program files (Required)" + SectionIn Ro + + SetOutPath $InstDir + WriteUninstaller "$InstDir\Uninst.exe" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" "$InstDir\MyApp.exe,0" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$InstDir\Uninst.exe"' + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$InstDir\Uninst.exe" /S' + WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1 + WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1 + + !tempfile APP + !makensis '-v2 "-DOUTFILE=${APP}" "-DNAME=NSISSharedAppExample" -DCOMPANY=Nullsoft "AppGen.nsi"' = 0 + File "/oname=$InstDir\MyApp.exe" "${APP}" ; Pretend that we have a real application to install + !delfile "${APP}" +SectionEnd + +Section "Start Menu shortcut" + CreateShortcut /NoWorkingDir "$SMPrograms\${NAME}.lnk" "$InstDir\MyApp.exe" +SectionEnd + + +!macro DeleteFileOrAskAbort path + ClearErrors + Delete "${path}" + IfErrors 0 +3 + MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP 'Unable to delete "${path}"!' IDRETRY -3 IDIGNORE +2 + Abort "Aborted" +!macroend + +Section -Uninstall + !insertmacro DeleteFileOrAskAbort "$InstDir\MyApp.exe" + Delete "$InstDir\Uninst.exe" + RMDir "$InstDir" + DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}" + + ${UnpinShortcut} "$SMPrograms\${NAME}.lnk" + Delete "$SMPrograms\${NAME}.lnk" +SectionEnd diff --git a/tools/Examples/languages.nsi b/tools/Examples/languages.nsi new file mode 100644 index 0000000..f6bd39c --- /dev/null +++ b/tools/Examples/languages.nsi @@ -0,0 +1,192 @@ +; languages.nsi +; +; This is an example of a multilingual installer +; The user can select the language on startup + +!pragma warning error all + +;-------------------------------- + +OutFile languages.exe + +XPStyle on + +RequestExecutionLevel user + +Unicode True +;-------------------------------- + +Page license +Page components +Page instfiles + +;-------------------------------- + +; First is default +LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Czech.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Dutch.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\French.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Korean.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Russian.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Spanish.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Swedish.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\TradChinese.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf" +LoadLanguageFile "${NSISDIR}\Contrib\Language files\Slovak.nlf" + +; License data +; Not exactly translated, but it shows what's needed +LicenseLangString myLicenseData ${LANG_ENGLISH} "bigtest.nsi" +LicenseLangString myLicenseData ${LANG_CZECH} "WordFuncTest.nsi" +LicenseLangString myLicenseData ${LANG_DUTCH} "waplugin.nsi" +LicenseLangString myLicenseData ${LANG_FRENCH} "example1.nsi" +LicenseLangString myLicenseData ${LANG_GERMAN} "example2.nsi" +LicenseLangString myLicenseData ${LANG_KOREAN} "gfx.nsi" +LicenseLangString myLicenseData ${LANG_RUSSIAN} "languages.nsi" +LicenseLangString myLicenseData ${LANG_SPANISH} "LogicLib.nsi" +LicenseLangString myLicenseData ${LANG_SWEDISH} "makensis.nsi" +LicenseLangString myLicenseData ${LANG_TRADCHINESE} "one-section.nsi" +LicenseLangString myLicenseData ${LANG_SIMPCHINESE} "primes.nsi" +LicenseLangString myLicenseData ${LANG_SLOVAK} "silent.nsi" + +LicenseData $(myLicenseData) + +; Set name using the normal interface (Name command) +LangString Name ${LANG_ENGLISH} "English" +LangString Name ${LANG_CZECH} "Czech" +LangString Name ${LANG_DUTCH} "Dutch" +LangString Name ${LANG_FRENCH} "French" +LangString Name ${LANG_GERMAN} "German" +LangString Name ${LANG_KOREAN} "Korean" +LangString Name ${LANG_RUSSIAN} "Russian" +LangString Name ${LANG_SPANISH} "Spanish" +LangString Name ${LANG_SWEDISH} "Swedish" +LangString Name ${LANG_TRADCHINESE} "Traditional Chinese" +LangString Name ${LANG_SIMPCHINESE} "Simplified Chinese" +LangString Name ${LANG_SLOVAK} "Slovak" + +Name $(Name) + +; Directly change the inner lang strings (Same as ComponentText) +LangString ^ComponentsText ${LANG_ENGLISH} "English component page" +LangString ^ComponentsText ${LANG_CZECH} "Czech component page" +LangString ^ComponentsText ${LANG_DUTCH} "Dutch component page" +LangString ^ComponentsText ${LANG_FRENCH} "French component page" +LangString ^ComponentsText ${LANG_GERMAN} "German component page" +LangString ^ComponentsText ${LANG_KOREAN} "Korean component page" +LangString ^ComponentsText ${LANG_RUSSIAN} "Russian component page" +LangString ^ComponentsText ${LANG_SPANISH} "Spanish component page" +LangString ^ComponentsText ${LANG_SWEDISH} "Swedish component page" +LangString ^ComponentsText ${LANG_TRADCHINESE} "Traditional Chinese component page" +LangString ^ComponentsText ${LANG_SIMPCHINESE} "Simplified Chinese component page" +LangString ^ComponentsText ${LANG_SLOVAK} "Slovak component page" + +; Set one text for all languages (simply don't use a LangString) +CompletedText "Languages example completed" + +; A LangString for the section name +LangString Sec1Name ${LANG_ENGLISH} "English section #1" +LangString Sec1Name ${LANG_CZECH} "Czech section #1" +LangString Sec1Name ${LANG_DUTCH} "Dutch section #1" +LangString Sec1Name ${LANG_FRENCH} "French section #1" +LangString Sec1Name ${LANG_GERMAN} "German section #1" +LangString Sec1Name ${LANG_KOREAN} "Korean section #1" +LangString Sec1Name ${LANG_RUSSIAN} "Russian section #1" +LangString Sec1Name ${LANG_SPANISH} "Spanish section #1" +LangString Sec1Name ${LANG_SWEDISH} "Swedish section #1" +LangString Sec1Name ${LANG_TRADCHINESE} "Traditional Chinese section #1" +LangString Sec1Name ${LANG_SIMPCHINESE} "Simplified Chinese section #1" +LangString Sec1Name ${LANG_SLOVAK} "Slovak section #1" + +; A multilingual message +LangString Message ${LANG_ENGLISH} "English message" +LangString Message ${LANG_CZECH} "Czech message" +LangString Message ${LANG_DUTCH} "Dutch message" +LangString Message ${LANG_FRENCH} "French message" +LangString Message ${LANG_GERMAN} "German message" +LangString Message ${LANG_KOREAN} "Korean message" +LangString Message ${LANG_RUSSIAN} "Russian message" +LangString Message ${LANG_SPANISH} "Spanish message" +LangString Message ${LANG_SWEDISH} "Swedish message" +LangString Message ${LANG_TRADCHINESE} "Traditional Chinese message" +LangString Message ${LANG_SIMPCHINESE} "Simplified Chinese message" +LangString Message ${LANG_SLOVAK} "Slovak message" + +;-------------------------------- + +;Section names set by Language strings +;It works with ! too +Section !$(Sec1Name) sec1 + MessageBox MB_OK $(Message) +SectionEnd + +; The old, slow, wasteful way +; Look at this section and see why LangString is so much easier +Section "Section number two" + StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2 + MessageBox MB_OK "Installing English stuff" + StrCmp $LANGUAGE ${LANG_CZECH} 0 +2 + MessageBox MB_OK "Installing Czech stuff" + StrCmp $LANGUAGE ${LANG_DUTCH} 0 +2 + MessageBox MB_OK "Installing Dutch stuff" + StrCmp $LANGUAGE ${LANG_FRENCH} 0 +2 + MessageBox MB_OK "Installing French stuff" + StrCmp $LANGUAGE ${LANG_GERMAN} 0 +2 + MessageBox MB_OK "Installing German stuff" + StrCmp $LANGUAGE ${LANG_KOREAN} 0 +2 + MessageBox MB_OK "Installing Korean stuff" + StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2 + MessageBox MB_OK "Installing Russian stuff" + StrCmp $LANGUAGE ${LANG_SPANISH} 0 +2 + MessageBox MB_OK "Installing Spanish stuff" + StrCmp $LANGUAGE ${LANG_SWEDISH} 0 +2 + MessageBox MB_OK "Installing Swedish stuff" + StrCmp $LANGUAGE ${LANG_TRADCHINESE} 0 +2 + MessageBox MB_OK "Installing Traditional Chinese stuff" + StrCmp $LANGUAGE ${LANG_SIMPCHINESE} 0 +2 + MessageBox MB_OK "Installing Simplified Chinese stuff" + StrCmp $LANGUAGE ${LANG_SLOVAK} 0 +2 + MessageBox MB_OK "Installing Slovak stuff" +SectionEnd + +;-------------------------------- + +Function .onInit + + ;Language selection dialog + + Push "" + Push ${LANG_ENGLISH} + Push English + Push ${LANG_CZECH} + Push Czech + Push ${LANG_DUTCH} + Push Dutch + Push ${LANG_FRENCH} + Push French + Push ${LANG_GERMAN} + Push German + Push ${LANG_KOREAN} + Push Korean + Push ${LANG_RUSSIAN} + Push Russian + Push ${LANG_SPANISH} + Push Spanish + Push ${LANG_SWEDISH} + Push Swedish + Push ${LANG_TRADCHINESE} + Push "Traditional Chinese" + Push ${LANG_SIMPCHINESE} + Push "Simplified Chinese" + Push ${LANG_SLOVAK} + Push Slovak + Push A ; A means auto count languages + ; for the auto count to work the first empty push (Push "") must remain + LangDLL::LangDialog "Installer Language" "Please select the language of the installer" + + Pop $LANGUAGE + StrCmp $LANGUAGE "cancel" 0 +2 + Abort +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/makensis.nsi b/tools/Examples/makensis.nsi new file mode 100644 index 0000000..df0ecd0 --- /dev/null +++ b/tools/Examples/makensis.nsi @@ -0,0 +1,1093 @@ +;NSIS Setup Script +;-------------------------------- + +!pragma warning error all +!pragma warning warning 7010 ; File /NonFatal + +!ifdef VER_MAJOR & VER_MINOR + !define /ifndef VER_REVISION 0 + !define /ifndef VER_BUILD 0 +!endif + +!define /ifndef VERSION 'anonymous-build' + +;-------------------------------- +;Configuration + +!if ${NSIS_PTR_SIZE} > 4 + !define BITS 64 + !define NAMESUFFIX " (64 bit)" +!else + !define BITS 32 + !define NAMESUFFIX "" +!endif + +!ifndef OUTFILE + !define OUTFILE "..\nsis${BITS}-${VERSION}-setup.exe" + !searchreplace OUTFILE "${OUTFILE}" nsis32 nsis +!endif + +OutFile "${OUTFILE}" +Unicode true +SetCompressor /SOLID lzma + +InstType "Full" +InstType "Lite" +InstType "Minimal" + +InstallDir $PROGRAMFILES${BITS}\NSIS +InstallDirRegKey HKLM Software\NSIS "" + +RequestExecutionLevel admin + +;-------------------------------- +;Header Files + +!include "MUI2.nsh" +!include "Sections.nsh" +!include "LogicLib.nsh" +!include "Memento.nsh" +!include "WordFunc.nsh" +!include "Util.nsh" +!include "Integration.nsh" + +;-------------------------------- +;Configuration + +;Names +Name "NSIS" +Caption "NSIS ${VERSION}${NAMESUFFIX} Setup" + +!define REG_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" + +;Memento Settings +!define MEMENTO_REGISTRY_ROOT HKLM +!define MEMENTO_REGISTRY_KEY "${REG_UNINST_KEY}" + +;Interface Settings +!define MUI_ABORTWARNING + +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico" + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_RIGHT +!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis3-branding-r.bmp" +!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\nsis3-branding.bmp" + +!define MUI_COMPONENTSPAGE_SMALLDESC + +;Pages +!define MUI_WELCOMEPAGE_TITLE "Welcome to the NSIS ${VERSION} Setup Wizard" +!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of NSIS (Nullsoft Scriptable Install System) ${VERSION}, the next generation of the Windows installer and uninstaller system that doesn't suck and isn't huge.$\r$\n$\r$\nNSIS includes a Modern User Interface, LZMA compression, support for multiple languages and an easy plug-in system.$\r$\n$\r$\n$_CLICK" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "..\COPYING" +!ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD +Page custom PageReinstall PageLeaveReinstall +!endif +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES + +!define MUI_FINISHPAGE_LINK "Visit the NSIS site for the latest news, FAQs and support" +!define MUI_FINISHPAGE_LINK_LOCATION "http://nsis.sf.net/" + +!define MUI_FINISHPAGE_RUN "$INSTDIR\NSIS.exe" +!define MUI_FINISHPAGE_NOREBOOTSUPPORT + +!define MUI_FINISHPAGE_SHOWREADME +!define MUI_FINISHPAGE_SHOWREADME_TEXT "Show release notes" +!define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReleaseNotes + +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + +!insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Version information + +!ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD +VIProductVersion ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} +VIAddVersionKey "FileVersion" "${VERSION}" +VIAddVersionKey "FileDescription" "NSIS Setup" +VIAddVersionKey "LegalCopyright" "http://nsis.sf.net/License" +!endif + +;-------------------------------- +;Installer Sections + +!macro InstallPlugin pi + !if ${BITS} >= 64 + File "/oname=$InstDir\Plugins\amd64-unicode\${pi}.dll" ..\Plugins\amd64-unicode\${pi}.dll + !else + File "/oname=$InstDir\Plugins\x86-ansi\${pi}.dll" ..\Plugins\x86-ansi\${pi}.dll + File "/oname=$InstDir\Plugins\x86-unicode\${pi}.dll" ..\Plugins\x86-unicode\${pi}.dll + !endif +!macroend + +!macro InstallStub stub + !if ${BITS} >= 64 + File ..\Stubs\${stub}-amd64-unicode + !else + File ..\Stubs\${stub}-x86-ansi + File ..\Stubs\${stub}-x86-unicode + !endif +!macroend + +${MementoSection} "NSIS Core Files (required)" SecCore + + SetDetailsPrint textonly + DetailPrint "Installing NSIS Core Files..." + SetDetailsPrint listonly + + SectionIn 1 2 3 RO + SetOutPath $INSTDIR + + IfFileExists $INSTDIR\nsisconf.nsi "" +2 + Rename $INSTDIR\nsisconf.nsi $INSTDIR\nsisconf.nsh + SetOverwrite off + File ..\nsisconf.nsh + + SetOverwrite on + File ..\makensis.exe + File ..\makensisw.exe + File ..\COPYING + File ..\NSIS.chm + !pragma verifychm "..\NSIS.chm" + !if /FileExists "..\NSIS.exe" + !if /FileExists "..\NSIS.exe.manifest" + File "..\NSIS.exe.manifest" + !endif + !else + !define NO_NSISMENU_HTML 1 + !makensis '-v2 "NSISMenu.nsi" "-XOutFile ..\NSIS.exe"' = 0 + !endif + File ..\NSIS.exe + + SetOutPath $INSTDIR\Bin + File ..\Bin\makensis.exe +!ifdef USE_NEW_ZLIB + File ..\Bin\zlib.dll +!else + File ..\Bin\zlib1.dll +!endif + + SetOutPath $INSTDIR\Stubs + File ..\Stubs\uninst + !insertmacro InstallStub bzip2 + !insertmacro InstallStub bzip2_solid + !insertmacro InstallStub lzma + !insertmacro InstallStub lzma_solid + !insertmacro InstallStub zlib + !insertmacro InstallStub zlib_solid + + + SetOutPath $INSTDIR\Include + File ..\Include\WinMessages.nsh + File ..\Include\Sections.nsh + File ..\Include\Library.nsh + File ..\Include\UpgradeDLL.nsh + File ..\Include\LogicLib.nsh + File ..\Include\StrFunc.nsh + File ..\Include\Colors.nsh + File ..\Include\FileFunc.nsh + File ..\Include\TextFunc.nsh + File ..\Include\WordFunc.nsh + File ..\Include\WinVer.nsh + File ..\Include\x64.nsh + File ..\Include\Memento.nsh + File ..\Include\LangFile.nsh + File ..\Include\InstallOptions.nsh + File ..\Include\MultiUser.nsh + File ..\Include\VB6RunTime.nsh + File ..\Include\Util.nsh + File ..\Include\Integration.nsh + File ..\Include\WinCore.nsh + + SetOutPath $INSTDIR\Include\Win + File ..\Include\Win\WinDef.nsh + File ..\Include\Win\WinError.nsh + File ..\Include\Win\WinNT.nsh + File ..\Include\Win\WinUser.nsh + File ..\Include\Win\COM.nsh + File ..\Include\Win\Propkey.nsh + File ..\Include\Win\RestartManager.nsh + + SetOutPath $INSTDIR\Docs\StrFunc + File ..\Docs\StrFunc\StrFunc.txt + + SetOutPath $INSTDIR\Docs\MultiUser + File ..\Docs\MultiUser\Readme.html + + SetOutPath $INSTDIR\Docs\makensisw + File ..\Docs\makensisw\*.txt + + !ifndef NO_NSISMENU_HTML + SetOutPath $INSTDIR\Menu + File ..\Menu\*.html + SetOutPath $INSTDIR\Menu\images + File ..\Menu\images\header.gif + File ..\Menu\images\line.gif + File ..\Menu\images\site.gif + !endif + + Delete $INSTDIR\makensis.htm + Delete $INSTDIR\Docs\*.html + Delete $INSTDIR\Docs\style.css + RMDir $INSTDIR\Docs + + SetOutPath $INSTDIR\Bin + !if ${BITS} >= 64 + File /NonFatal ..\Bin\RegTool-x86.bin + File ..\Bin\RegTool-amd64.bin + !else + File ..\Bin\RegTool-x86.bin + !if /FileExists ..\Bin\RegTool-amd64.bin ; It is unlikely that this exists, avoid the /NonFatal warning. + File ..\Bin\RegTool-amd64.bin + !endif + !endif + + CreateDirectory $INSTDIR\Plugins\x86-ansi + CreateDirectory $INSTDIR\Plugins\x86-unicode + !if ${BITS} >= 64 + CreateDirectory $INSTDIR\Plugins\amd64-unicode + !endif + !insertmacro InstallPlugin TypeLib + + ReadRegStr $R0 HKCR ".nsi" "" + StrCmp $R0 "NSISFile" 0 +2 + DeleteRegKey HKCR "NSISFile" + + WriteRegStr HKCR ".nsi" "" "NSIS.Script" + WriteRegStr HKCR ".nsi" "PerceivedType" "text" + WriteRegStr HKCR "NSIS.Script" "" "NSIS Script File" + WriteRegStr HKCR "NSIS.Script\DefaultIcon" "" "$INSTDIR\makensisw.exe,1" + ReadRegStr $R0 HKCR "NSIS.Script\shell\open\command" "" + ${If} $R0 == "" + WriteRegStr HKCR "NSIS.Script\shell" "" "open" + WriteRegStr HKCR "NSIS.Script\shell\open\command" "" 'notepad.exe "%1"' + ${EndIf} + WriteRegStr HKCR "NSIS.Script\shell\compile" "" "Compile NSIS Script" + WriteRegStr HKCR "NSIS.Script\shell\compile\command" "" '"$INSTDIR\makensisw.exe" "%1"' + WriteRegStr HKCR "NSIS.Script\shell\compile-compressor" "" "Compile NSIS Script (Choose Compressor)" + WriteRegStr HKCR "NSIS.Script\shell\compile-compressor\command" "" '"$INSTDIR\makensisw.exe" /ChooseCompressor "%1"' + + ReadRegStr $R0 HKCR ".nsh" "" + StrCmp $R0 "NSHFile" 0 +2 + DeleteRegKey HKCR "NSHFile" + + WriteRegStr HKCR ".nsh" "" "NSIS.Header" + WriteRegStr HKCR ".nsh" "PerceivedType" "text" + WriteRegStr HKCR "NSIS.Header" "" "NSIS Header File" + WriteRegStr HKCR "NSIS.Header\DefaultIcon" "" "$INSTDIR\makensisw.exe,2" + ReadRegStr $R0 HKCR "NSIS.Header\shell\open\command" "" + ${If} $R0 == "" + WriteRegStr HKCR "NSIS.Header\shell" "" "open" + WriteRegStr HKCR "NSIS.Header\shell\open\command" "" 'notepad.exe "%1"' + ${EndIf} + + ${NotifyShell_AssocChanged} + +${MementoSectionEnd} + +${MementoSection} "Script Examples" SecExample + + SetDetailsPrint textonly + DetailPrint "Installing Script Examples..." + SetDetailsPrint listonly + + SectionIn 1 2 + SetOutPath $INSTDIR\Examples + File ..\Examples\makensis.nsi + File ..\Examples\example1.nsi + File ..\Examples\example2.nsi + File ..\Examples\AppGen.nsi + File ..\Examples\install-per-user.nsi + File ..\Examples\install-shared.nsi + File ..\Examples\waplugin.nsi + File ..\Examples\bigtest.nsi + File ..\Examples\primes.nsi + File ..\Examples\rtest.nsi + File ..\Examples\gfx.nsi + File ..\Examples\one-section.nsi + File ..\Examples\languages.nsi + File ..\Examples\Library.nsi + File ..\Examples\VersionInfo.nsi + File ..\Examples\LogicLib.nsi + File ..\Examples\silent.nsi + File ..\Examples\StrFunc.nsi + File ..\Examples\FileFunc.nsi + File ..\Examples\FileFunc.ini + File ..\Examples\FileFuncTest.nsi + File ..\Examples\TextFunc.nsi + File ..\Examples\TextFunc.ini + File ..\Examples\TextFuncTest.nsi + File ..\Examples\WordFunc.nsi + File ..\Examples\WordFunc.ini + File ..\Examples\WordFuncTest.nsi + File ..\Examples\Memento.nsi + File ..\Examples\MultiUser.nsi + File ..\Examples\unicode.nsi + File ..\Examples\NSISMenu.nsi + + SetOutPath $INSTDIR\Examples\Plugin + File ..\Examples\Plugin\exdll.c + File ..\Examples\Plugin\exdll.dpr + File ..\Examples\Plugin\exdll.dsp + File ..\Examples\Plugin\exdll.dsw + File ..\Examples\Plugin\exdll_with_unit.dpr + File ..\Examples\Plugin\exdll-vs2008.sln + File ..\Examples\Plugin\exdll-vs2008.vcproj + File ..\Examples\Plugin\extdll.inc + File ..\Examples\Plugin\nsis.pas + + SetOutPath $INSTDIR\Examples\Plugin\nsis + File ..\Examples\Plugin\nsis\pluginapi.h + File /nonfatal ..\Examples\Plugin\nsis\pluginapi*.lib + File ..\Examples\Plugin\nsis\api.h + File ..\Examples\Plugin\nsis\nsis_tchar.h + +${MementoSectionEnd} + +${MementoSection} "Start Menu Shortcut" SecShortcuts + + SetDetailsPrint textonly + DetailPrint "Installing Start Menu shortcut..." + SetDetailsPrint listonly + + SectionIn 1 2 + SetOutPath $INSTDIR + CreateShortcut "$SMPROGRAMS\NSIS${NAMESUFFIX}.lnk" "$INSTDIR\NSIS.exe" + +${MementoSectionEnd} + +SectionGroup "User Interfaces" SecInterfaces + +${MementoSection} "Modern User Interface" SecInterfacesModernUI + + SetDetailsPrint textonly + DetailPrint "Installing User Interfaces | Modern User Interface..." + SetDetailsPrint listonly + + SectionIn 1 2 + + SetOutPath "$INSTDIR\Examples\Modern UI" + File "..\Examples\Modern UI\Basic.nsi" + File "..\Examples\Modern UI\HeaderBitmap.nsi" + File "..\Examples\Modern UI\MultiLanguage.nsi" + File "..\Examples\Modern UI\StartMenu.nsi" + File "..\Examples\Modern UI\WelcomeFinish.nsi" + + SetOutPath "$INSTDIR\Contrib\Modern UI" + File "..\Contrib\Modern UI\System.nsh" + File "..\Contrib\Modern UI\ioSpecial.ini" + + SetOutPath "$INSTDIR\Docs\Modern UI" + File "..\Docs\Modern UI\Readme.html" + File "..\Docs\Modern UI\Changelog.txt" + File "..\Docs\Modern UI\License.txt" + + SetOutPath "$INSTDIR\Docs\Modern UI\images" + File "..\Docs\Modern UI\images\header.gif" + File "..\Docs\Modern UI\images\screen1.png" + File "..\Docs\Modern UI\images\screen2.png" + File "..\Docs\Modern UI\images\open.gif" + File "..\Docs\Modern UI\images\closed.gif" + + SetOutPath $INSTDIR\Contrib\UIs + File "..\Contrib\UIs\modern.exe" + File "..\Contrib\UIs\modern_headerbmp.exe" + File "..\Contrib\UIs\modern_headerbmpr.exe" + File "..\Contrib\UIs\modern_nodesc.exe" + File "..\Contrib\UIs\modern_smalldesc.exe" + + SetOutPath $INSTDIR\Include + File "..\Include\MUI.nsh" + + SetOutPath "$INSTDIR\Contrib\Modern UI 2" + File "..\Contrib\Modern UI 2\Deprecated.nsh" + File "..\Contrib\Modern UI 2\Interface.nsh" + File "..\Contrib\Modern UI 2\Localization.nsh" + File "..\Contrib\Modern UI 2\MUI2.nsh" + File "..\Contrib\Modern UI 2\Pages.nsh" + + SetOutPath "$INSTDIR\Contrib\Modern UI 2\Pages" + File "..\Contrib\Modern UI 2\Pages\Components.nsh" + File "..\Contrib\Modern UI 2\Pages\Directory.nsh" + File "..\Contrib\Modern UI 2\Pages\Finish.nsh" + File "..\Contrib\Modern UI 2\Pages\InstallFiles.nsh" + File "..\Contrib\Modern UI 2\Pages\License.nsh" + File "..\Contrib\Modern UI 2\Pages\StartMenu.nsh" + File "..\Contrib\Modern UI 2\Pages\UninstallConfirm.nsh" + File "..\Contrib\Modern UI 2\Pages\Welcome.nsh" + + SetOutPath "$INSTDIR\Docs\Modern UI 2" + File "..\Docs\Modern UI 2\Readme.html" + File "..\Docs\Modern UI 2\License.txt" + + SetOutPath "$INSTDIR\Docs\Modern UI 2\images" + File "..\Docs\Modern UI 2\images\header.gif" + File "..\Docs\Modern UI 2\images\screen1.png" + File "..\Docs\Modern UI 2\images\screen2.png" + File "..\Docs\Modern UI 2\images\open.gif" + File "..\Docs\Modern UI 2\images\closed.gif" + + SetOutPath $INSTDIR\Include + File "..\Include\MUI2.nsh" + +${MementoSectionEnd} + +${MementoSection} "Default User Interface" SecInterfacesDefaultUI + + SetDetailsPrint textonly + DetailPrint "Installing User Interfaces | Default User Interface..." + SetDetailsPrint listonly + + SectionIn 1 + + SetOutPath "$INSTDIR\Contrib\UIs" + File "..\Contrib\UIs\default.exe" + +${MementoSectionEnd} + +${MementoSection} "Tiny User Interface" SecInterfacesTinyUI + + SetDetailsPrint textonly + DetailPrint "Installing User Interfaces | Tiny User Interface..." + SetDetailsPrint listonly + + SectionIn 1 + + SetOutPath "$INSTDIR\Contrib\UIs" + File "..\Contrib\UIs\sdbarker_tiny.exe" + +${MementoSectionEnd} + +SectionGroupEnd + +${MementoSection} "Graphics" SecGraphics + + SetDetailsPrint textonly + DetailPrint "Installing Graphics..." + SetDetailsPrint listonly + + SectionIn 1 + + Delete $INSTDIR\Contrib\Icons\*.ico + Delete $INSTDIR\Contrib\Icons\*.bmp + RMDir $INSTDIR\Contrib\Icons + SetOutPath $INSTDIR\Contrib\Graphics + File /r "..\Contrib\Graphics\*.ico" + File /r "..\Contrib\Graphics\*.bmp" +${MementoSectionEnd} + +${MementoSection} "Language Files" SecLangFiles + + SetDetailsPrint textonly + DetailPrint "Installing Language Files..." + SetDetailsPrint listonly + + SectionIn 1 + + SetOutPath "$INSTDIR\Contrib\Language files" + File "..\Contrib\Language files\*.nlf" + + SetOutPath $INSTDIR\Bin + File ..\Bin\MakeLangID.exe + + ${If} ${SectionIsSelected} ${SecInterfacesModernUI} + SetOutPath "$INSTDIR\Contrib\Language files" + File "..\Contrib\Language files\*.nsh" + ${EndIf} + +${MementoSectionEnd} + +SectionGroup "Tools" SecTools + +${MementoSection} "Zip2Exe" SecToolsZ2E + + SetDetailsPrint textonly + DetailPrint "Installing Tools | Zip2Exe..." + SetDetailsPrint listonly + + SectionIn 1 + + SetOutPath $INSTDIR\Bin + File ..\Bin\zip2exe.exe + SetOutPath $INSTDIR\Contrib\zip2exe + File ..\Contrib\zip2exe\Base.nsh + File ..\Contrib\zip2exe\Modern.nsh + File ..\Contrib\zip2exe\Classic.nsh + +${MementoSectionEnd} + +SectionGroupEnd + +SectionGroup "Plug-ins" SecPluginsPlugins + +${MementoSection} "Banner" SecPluginsBanner + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | Banner..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin Banner + SetOutPath $INSTDIR\Docs\Banner + File ..\Docs\Banner\Readme.txt + SetOutPath $INSTDIR\Examples\Banner + File ..\Examples\Banner\Example.nsi +${MementoSectionEnd} + +${MementoSection} "Language DLL" SecPluginsLangDLL + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | Language DLL..." + SetDetailsPrint listonly + + SectionIn 1 + !insertmacro InstallPlugin LangDLL +${MementoSectionEnd} + +${MementoSection} "nsExec" SecPluginsnsExec + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | nsExec..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin nsExec + SetOutPath $INSTDIR\Docs\nsExec + File ..\Docs\nsExec\nsExec.txt + SetOutPath $INSTDIR\Examples\nsExec + File ..\Examples\nsExec\test.nsi +${MementoSectionEnd} + +${MementoSection} "Splash" SecPluginsSplash + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | Splash..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin Splash + SetOutPath $INSTDIR\Docs\Splash + File ..\Docs\Splash\splash.txt + SetOutPath $INSTDIR\Examples\Splash + File ..\Examples\Splash\Example.nsi +${MementoSectionEnd} + +${MementoSection} "AdvSplash" SecPluginsSplashT + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | AdvSplash..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin AdvSplash + SetOutPath $INSTDIR\Docs\AdvSplash + File ..\Docs\AdvSplash\advsplash.txt + SetOutPath $INSTDIR\Examples\AdvSplash + File ..\Examples\AdvSplash\Example.nsi +${MementoSectionEnd} + +${MementoSection} "BgImage" SecPluginsBgImage + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | BgImage..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin BgImage + SetOutPath $INSTDIR\Docs\BgImage + File ..\Docs\BgImage\BgImage.txt + SetOutPath $INSTDIR\Examples\BgImage + File ..\Examples\BgImage\Example.nsi +${MementoSectionEnd} + +${MementoSection} "InstallOptions" SecPluginsIO + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | InstallOptions..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin InstallOptions + SetOutPath $INSTDIR\Docs\InstallOptions + File ..\Docs\InstallOptions\Readme.html + File ..\Docs\InstallOptions\Changelog.txt + SetOutPath $INSTDIR\Examples\InstallOptions + File ..\Examples\InstallOptions\test.ini + File ..\Examples\InstallOptions\test.nsi + File ..\Examples\InstallOptions\testimgs.ini + File ..\Examples\InstallOptions\testimgs.nsi + File ..\Examples\InstallOptions\testlink.ini + File ..\Examples\InstallOptions\testlink.nsi + File ..\Examples\InstallOptions\testnotify.ini + File ..\Examples\InstallOptions\testnotify.nsi +${MementoSectionEnd} + +${MementoSection} "nsDialogs" SecPluginsDialogs + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | nsDialogs..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin nsDialogs + SetOutPath $INSTDIR\Examples\nsDialogs + File ..\Examples\nsDialogs\example.nsi + File ..\Examples\nsDialogs\InstallOptions.nsi + File ..\Examples\nsDialogs\timer.nsi + File ..\Examples\nsDialogs\welcome.nsi + SetOutPath $INSTDIR\Include + File ..\Include\nsDialogs.nsh + SetOutPath $INSTDIR\Docs\nsDialogs + File ..\Docs\nsDialogs\Readme.html +${MementoSectionEnd} + +${MementoSection} "Math" SecPluginsMath + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | Math..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin Math + SetOutPath $INSTDIR\Docs\Math + File ..\Docs\Math\Math.txt + SetOutPath $INSTDIR\Examples\Math + File ..\Examples\Math\math.nsi + File ..\Examples\Math\mathtest.txt + File ..\Examples\Math\mathtest.nsi + File ..\Examples\Math\mathtest.ini + +${MementoSectionEnd} + +${MementoSection} "NSISdl" SecPluginsNSISDL + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | NSISdl..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin NSISdl + SetOutPath $INSTDIR\Docs\NSISdl + File ..\Docs\NSISdl\ReadMe.txt + File ..\Docs\NSISdl\License.txt +${MementoSectionEnd} + +${MementoSection} "System" SecPluginsSystem + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | System..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin System + SetOutPath $INSTDIR\Docs\System + File ..\Docs\System\System.html + File ..\Docs\System\WhatsNew.txt + SetOutPath $INSTDIR\Examples\System + File ..\Examples\System\Resource.dll + File ..\Examples\System\SysFunc.nsh + File ..\Examples\System\System.nsh + File ..\Examples\System\System.nsi +${MementoSectionEnd} + +${MementoSection} "StartMenu" SecPluginsStartMenu + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | StartMenu..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin StartMenu + SetOutPath $INSTDIR\Docs\StartMenu + File ..\Docs\StartMenu\Readme.txt + SetOutPath $INSTDIR\Examples\StartMenu + File ..\Examples\StartMenu\Example.nsi +${MementoSectionEnd} + +${MementoSection} "UserInfo" SecPluginsUserInfo + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | UserInfo..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin UserInfo + SetOutPath $INSTDIR\Examples\UserInfo + File ..\Examples\UserInfo\UserInfo.nsi +${MementoSectionEnd} + +${MementoSection} "Dialer" SecPluginsDialer + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | Dialer..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin Dialer + SetOutPath $INSTDIR\Docs\Dialer + File ..\Docs\Dialer\Dialer.txt +${MementoSectionEnd} + +${MementoSection} "VPatch" SecPluginsVPatch + + SetDetailsPrint textonly + DetailPrint "Installing Plug-ins | VPatch..." + SetDetailsPrint listonly + + SectionIn 1 + + !insertmacro InstallPlugin VPatch + SetOutPath $INSTDIR\Examples\VPatch + File ..\Examples\VPatch\example.nsi + File ..\Examples\VPatch\oldfile.txt + File ..\Examples\VPatch\newfile.txt + File ..\Examples\VPatch\patch.pat + SetOutPath $INSTDIR\Docs\VPatch + File ..\Docs\VPatch\Readme.html + SetOutPath $INSTDIR\Bin + File ..\Bin\GenPat.exe + SetOutPath $INSTDIR\Include + File ..\Include\VPatchLib.nsh +${MementoSectionEnd} + +${MementoSectionDone} + +SectionGroupEnd + +Section -post + + ; When Modern UI is installed: + ; * Always install the English language file + ; * Always install default icons / bitmaps + + ${If} ${SectionIsSelected} ${SecInterfacesModernUI} + + SetDetailsPrint textonly + DetailPrint "Configuring Modern UI..." + SetDetailsPrint listonly + + ${IfNot} ${SectionIsSelected} ${SecLangFiles} + SetOutPath "$INSTDIR\Contrib\Language files" + File "..\Contrib\Language files\English.nlf" + File "..\Contrib\Language files\English.nsh" + ${EndIf} + + ${IfNot} ${SectionIsSelected} ${SecGraphics} + SetOutPath $INSTDIR\Contrib\Graphics\Checks + File "..\Contrib\Graphics\Checks\modern.bmp" + SetOutPath $INSTDIR\Contrib\Graphics\Icons + File "..\Contrib\Graphics\Icons\modern-install.ico" + File "..\Contrib\Graphics\Icons\modern-uninstall.ico" + SetOutPath $INSTDIR\Contrib\Graphics\Header + File "..\Contrib\Graphics\Header\nsis.bmp" + SetOutPath $INSTDIR\Contrib\Graphics\Wizard + File "..\Contrib\Graphics\Wizard\win.bmp" + ${EndIf} + + ${EndIf} + + SetDetailsPrint textonly + DetailPrint "Creating Registry Keys..." + SetDetailsPrint listonly + + SetOutPath $INSTDIR + + WriteRegStr HKLM "Software\NSIS" "" $INSTDIR +!ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD + WriteRegDword HKLM "Software\NSIS" "VersionMajor" "${VER_MAJOR}" + WriteRegDword HKLM "Software\NSIS" "VersionMinor" "${VER_MINOR}" + WriteRegDword HKLM "Software\NSIS" "VersionRevision" "${VER_REVISION}" + WriteRegDword HKLM "Software\NSIS" "VersionBuild" "${VER_BUILD}" +!endif + + WriteRegStr HKLM "${REG_UNINST_KEY}" "UninstallString" '"$INSTDIR\uninst-nsis.exe"' + WriteRegStr HKLM "${REG_UNINST_KEY}" "QuietUninstallString" '"$INSTDIR\uninst-nsis.exe" /S' + WriteRegStr HKLM "${REG_UNINST_KEY}" "InstallLocation" "$INSTDIR" + WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayName" "Nullsoft Install System${NAMESUFFIX}" + WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayIcon" "$INSTDIR\uninst-nsis.exe,0" + WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayVersion" "${VERSION}" +!ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD + WriteRegDWORD HKLM "${REG_UNINST_KEY}" "VersionMajor" "${VER_MAJOR}" ; Required by WACK + WriteRegDWORD HKLM "${REG_UNINST_KEY}" "VersionMinor" "${VER_MINOR}" ; Required by WACK +!endif + WriteRegStr HKLM "${REG_UNINST_KEY}" "Publisher" "Nullsoft and Contributors" ; Required by WACK + WriteRegStr HKLM "${REG_UNINST_KEY}" "URLInfoAbout" "https://nsis.sourceforge.io/" + WriteRegStr HKLM "${REG_UNINST_KEY}" "HelpLink" "https://nsis.sourceforge.io/Support" + WriteRegDWORD HKLM "${REG_UNINST_KEY}" "NoModify" "1" + WriteRegDWORD HKLM "${REG_UNINST_KEY}" "NoRepair" "1" + ${MakeARPInstallDate} $1 + WriteRegStr HKLM "${REG_UNINST_KEY}" "InstallDate" $1 + + WriteUninstaller $INSTDIR\uninst-nsis.exe + + ${MementoSectionSave} + + SetDetailsPrint both + +SectionEnd + +;-------------------------------- +;Descriptions + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "The core files required to use NSIS (compiler etc.)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecExample} "Example installation scripts that show you how to use NSIS" + !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} "Add icon to your start menu for easy access" + !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfaces} "User interface designs that can be used to change the installer look and feel" + !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesModernUI} "A modern user interface like the wizards of recent Windows versions" + !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesDefaultUI} "The default NSIS user interface which you can customize to make your own UI" + !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesTinyUI} "A tiny version of the default user interface" + !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} "Tools that help you with NSIS development" + !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsZ2E} "A utility that converts a ZIP file to a NSIS installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecGraphics} "Icons, checkbox images and other graphics" + !insertmacro MUI_DESCRIPTION_TEXT ${SecLangFiles} "Language files used to support multiple languages in an installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsPlugins} "Useful plugins that extend NSIS's functionality" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBanner} "Plugin that lets you show a banner before installation starts" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsLangDLL} "Plugin that lets you add a language select dialog to your installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsnsExec} "Plugin that executes console programs and prints its output in the NSIS log window or hides it" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplash} "Splash screen add-on that lets you add a splash screen to an installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplashT} "Splash screen add-on with transparency support that lets you add a splash screen to an installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSystem} "Plugin that lets you call Win32 API or external DLLs" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsMath} "Plugin that lets you evaluate complicated mathematical expressions" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialer} "Plugin that provides internet connection functions" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsIO} "Plugin that lets you add custom pages to an installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialogs} "Plugin that lets you add custom pages to an installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsStartMenu} "Plugin that lets the user select the start menu folder" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBgImage} "Plugin that lets you show a persistent background image plugin and play sounds" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsUserInfo} "Plugin that that gives you the user name and the user account type" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsNSISDL} "Plugin that lets you create a web based installer" + !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsVPatch} "Plugin that lets you create patches to upgrade older files" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Installer Functions + +Function .onInit + + ${MementoSectionRestore} + +FunctionEnd + +!ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD + +Var ReinstallPageCheck + +Function PageReinstall + + ReadRegStr $R0 HKLM "Software\NSIS" "" + ReadRegStr $R1 HKLM "${REG_UNINST_KEY}" "UninstallString" + ${IfThen} "$R0$R1" == "" ${|} Abort ${|} + + StrCpy $R4 "older" + ReadRegDWORD $R0 HKLM "Software\NSIS" "VersionMajor" + ReadRegDWORD $R1 HKLM "Software\NSIS" "VersionMinor" + ReadRegDWORD $R2 HKLM "Software\NSIS" "VersionRevision" + ReadRegDWORD $R3 HKLM "Software\NSIS" "VersionBuild" + ${IfThen} $R0 = 0 ${|} StrCpy $R4 "unknown" ${|} ; Anonymous builds have no version number + StrCpy $R0 $R0.$R1.$R2.$R3 + + ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0 + ${If} $R0 == 0 + StrCpy $R1 "NSIS ${VERSION} is already installed. Select the operation you want to perform and click Next to continue." + StrCpy $R2 "Add/Reinstall components" + StrCpy $R3 "Uninstall NSIS" + !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform." + StrCpy $R0 "2" + ${ElseIf} $R0 == 1 + StrCpy $R1 "An $R4 version of NSIS is installed on your system. It's recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue." + StrCpy $R2 "Uninstall before installing" + StrCpy $R3 "Do not uninstall" + !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS." + StrCpy $R0 "1" + ${ElseIf} $R0 == 2 + StrCpy $R1 "A newer version of NSIS is already installed! It is not recommended that you install an older version. If you really want to install this older version, it's better to uninstall the current version first. Select the operation you want to perform and click Next to continue." + StrCpy $R2 "Uninstall before installing" + StrCpy $R3 "Do not uninstall" + !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS." + StrCpy $R0 "1" + ${Else} + Abort + ${EndIf} + + nsDialogs::Create 1018 + Pop $R4 + + ${NSD_CreateLabel} 0 0 100% 24u $R1 + Pop $R1 + + ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2 + Pop $R2 + ${NSD_OnClick} $R2 PageReinstallUpdateSelection + + ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3 + Pop $R3 + ${NSD_OnClick} $R3 PageReinstallUpdateSelection + + ${If} $ReinstallPageCheck != 2 + SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0 + ${Else} + SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0 + ${EndIf} + + ${NSD_SetFocus} $R2 + + nsDialogs::Show + +FunctionEnd + +Function PageReinstallUpdateSelection + + Pop $R1 + + ${NSD_GetState} $R2 $R1 + + ${If} $R1 == ${BST_CHECKED} + StrCpy $ReinstallPageCheck 1 + ${Else} + StrCpy $ReinstallPageCheck 2 + ${EndIf} + +FunctionEnd + +Function PageLeaveReinstall + + ${NSD_GetState} $R2 $R1 + + StrCmp $R0 "1" 0 +2 ; Existing install is not the same version? + StrCmp $R1 "1" reinst_uninstall reinst_done + + StrCmp $R1 "1" reinst_done ; Same version, skip to add/reinstall components? + + reinst_uninstall: + ReadRegStr $R1 HKLM "${REG_UNINST_KEY}" "UninstallString" + + ;Run uninstaller + HideWindow + + ClearErrors + ExecWait '$R1 _?=$INSTDIR' $0 + + BringToFront + + ${IfThen} ${Errors} ${|} StrCpy $0 2 ${|} ; ExecWait failed, set fake exit code + + ${If} $0 <> 0 + ${OrIf} ${FileExists} "$INSTDIR\Bin\makensis.exe" + ${If} $0 = 1 ; User aborted uninstaller? + StrCmp $R0 "2" 0 +2 ; Is the existing install the same version? + Quit ; ...yes, already installed, we are done + Abort + ${EndIf} + MessageBox MB_ICONEXCLAMATION "Unable to uninstall!" + Abort + ${Else} + StrCpy $0 $R1 1 + ${IfThen} $0 == '"' ${|} StrCpy $R1 $R1 -1 1 ${|} ; Strip quotes from UninstallString + Delete $R1 + RMDir $INSTDIR + ${EndIf} + + reinst_done: + +FunctionEnd + +!endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD + +Function ShowReleaseNotes + StrCpy $0 $WINDIR\hh.exe + ${IfNotThen} ${FileExists} $0 ${|} SearchPath $0 hh.exe ${|} + ${If} ${FileExists} $0 + Exec '"$0" mk:@MSITStore:$INSTDIR\NSIS.chm::/SectionF.1.html' + ${Else} + ExecShell "" "https://nsis.sourceforge.io/Docs/AppendixF.html#F.1" + ${EndIf} +FunctionEnd + +;-------------------------------- +;Uninstaller Section + +Section Uninstall + + SetDetailsPrint textonly + DetailPrint "Uninstalling NSI Development Shell Extensions..." + SetDetailsPrint listonly + + IfFileExists $INSTDIR\Bin\makensis.exe nsis_installed + MessageBox MB_YESNO "It does not appear that NSIS is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES nsis_installed + Abort "Uninstall aborted by user" + nsis_installed: + + SetDetailsPrint textonly + DetailPrint "Deleting Registry Keys..." + SetDetailsPrint listonly + + !macro AssocDeleteFileExtAndProgId _hkey _dotext _pid + ReadRegStr $R0 ${_hkey} "Software\Classes\${_dotext}" "" + StrCmp $R0 "${_pid}" 0 +2 + DeleteRegKey ${_hkey} "Software\Classes\${_dotext}" + + DeleteRegKey ${_hkey} "Software\Classes\${_pid}" + !macroend + + !insertmacro AssocDeleteFileExtAndProgId HKLM ".nsi" "NSIS.Script" + !insertmacro AssocDeleteFileExtAndProgId HKLM ".nsh" "NSIS.Header" + + ${NotifyShell_AssocChanged} + + DeleteRegKey HKLM "${REG_UNINST_KEY}" + DeleteRegKey HKLM "Software\NSIS" + + SetDetailsPrint textonly + DetailPrint "Deleting Files..." + SetDetailsPrint listonly + + Delete "$SMPROGRAMS\NSIS${NAMESUFFIX}.lnk" + Delete "$DESKTOP\NSIS${NAMESUFFIX}.lnk" ; Remove legacy shortcut + Delete $INSTDIR\makensis.exe + Delete $INSTDIR\makensisw.exe + Delete $INSTDIR\NSIS.exe + Delete $INSTDIR\NSIS.exe.manifest + Delete $INSTDIR\license.txt + Delete $INSTDIR\COPYING + Delete $INSTDIR\uninst-nsis.exe + Delete $INSTDIR\nsisconf.nsi + Delete $INSTDIR\nsisconf.nsh + Delete $INSTDIR\NSIS.chm + RMDir /r $INSTDIR\Bin + RMDir /r $INSTDIR\Contrib + RMDir /r $INSTDIR\Docs + RMDir /r $INSTDIR\Examples + RMDir /r $INSTDIR\Include + RMDir /r $INSTDIR\Menu + RMDir /r $INSTDIR\Plugins + RMDir /r $INSTDIR\Stubs + RMDir $INSTDIR + + SetDetailsPrint both + +SectionEnd diff --git a/tools/Examples/nsDialogs/InstallOptions.nsi b/tools/Examples/nsDialogs/InstallOptions.nsi new file mode 100644 index 0000000..68a68f9 --- /dev/null +++ b/tools/Examples/nsDialogs/InstallOptions.nsi @@ -0,0 +1,47 @@ +!include LogicLib.nsh +!include WinMessages.nsh + +Name "nsDialogs IO" +OutFile "nsDialogs IO.exe" + +Page custom nsDialogsIO UpdateINIState +Page instfiles + +XPStyle on + +ShowInstDetails show + +!include nsDialogs.nsh +!insertmacro NSD_FUNCTION_INIFILE + +Function nsDialogsIO + + InitPluginsDir + File /oname=$PLUGINSDIR\io.ini "..\InstallOptions\test.ini" + + ${If} ${Cmd} `MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Test the right-to-left version?" IDYES` + WriteINIStr $PLUGINSDIR\io.ini Settings RTL 1 + ${EndIf} + + StrCpy $0 $PLUGINSDIR\io.ini + + Call CreateDialogFromINI + +FunctionEnd + +Section + + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 2" "State" + DetailPrint "Install X=$0" + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 3" "State" + DetailPrint "Install Y=$0" + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 4" "State" + DetailPrint "Install Z=$0" + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 5" "State" + DetailPrint "File=$0" + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 6" "State" + DetailPrint "Dir=$0" + ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 8" "State" + DetailPrint "Info=$0" + +SectionEnd diff --git a/tools/Examples/nsDialogs/example.nsi b/tools/Examples/nsDialogs/example.nsi new file mode 100644 index 0000000..766a0d0 --- /dev/null +++ b/tools/Examples/nsDialogs/example.nsi @@ -0,0 +1,299 @@ +Name "nsDialogs Example" +OutFile "nsDialogs Example.exe" +Caption "$(^Name)" + +Unicode True +XPStyle on +RequestExecutionLevel user + +!include nsDialogs.nsh +!include LogicLib.nsh +!include WinCore.nsh ; MAKELONG + +LicenseText "All the action takes place on the next page..." "Start" +SubCaption 0 ": Ready?" + +Page license +Page custom nsDialogsPage +Page custom LBPage +Page custom RangesPage +Page custom NotifyPage +Page custom RadioPage RadioLeave +!pragma warning disable 8000 ; "Page instfiles not used, no sections will be executed!" + +Var BUTTON +Var EDIT +Var CHECKBOX + +Function nsDialogsPage + nsDialogs::Create 1018 + Pop $0 + + GetFunctionAddress $0 OnBack + nsDialogs::OnBack $0 + + ${NSD_CreateButton} 0 0 100% 12u Test + Pop $BUTTON + GetFunctionAddress $0 OnClick + nsDialogs::OnClick $BUTTON $0 + + ${NSD_CreateText} 0 35 100% 12u hello + Pop $EDIT + GetFunctionAddress $0 OnChange + nsDialogs::OnChange $EDIT $0 + ${NSD_Edit_SetCueBannerText} $EDIT 0 "Type 'hello there' and get a free surprise" + + ${NSD_CreateCheckbox} 0 -50 100% 8u Test + Pop $CHECKBOX + GetFunctionAddress $0 OnCheckbox + nsDialogs::OnClick $CHECKBOX $0 + + ${NSD_CreateLabel} 0 40u 75% 40u "* Type `hello there` above.$\n* Click the button.$\n* Check the checkbox.$\n* Hit the Back button." + Pop $0 + + nsDialogs::Show +FunctionEnd + +Function OnClick + Pop $0 # HWND + MessageBox MB_OK clicky +FunctionEnd + +Function OnChange + Pop $0 # HWND + + System::Call user32::GetWindowText(p$EDIT,t.r0,i${NSIS_MAX_STRLEN}) + ${If} $0 == "hello there" + MessageBox MB_OK "right back at ya" + ${EndIf} +FunctionEnd + +Function OnBack + MessageBox MB_YESNO "are you sure?" IDYES +2 + Abort +FunctionEnd + +Function OnCheckbox + Pop $0 # HWND + MessageBox MB_OK "checkbox clicked" +FunctionEnd + +!macro BeginControlsTestPage title + nsDialogs::Create 1018 + Pop $0 + ${NSD_SetText} $hWndParent "$(^Name): ${title}" +!macroend + +!macro CreateButton x y w h txt var handler data + ${NSD_CreateButton} ${x} ${y} ${w} ${h} "${txt}" + Pop ${var} + nsDialogs::SetUserData ${var} ${data} + ${NSD_OnClick} ${var} ${handler} +!macroend + + +Function LBPage + !insertmacro BeginControlsTestPage "ListBox" + + ${NSD_CreateSortedListBox} 1u 0 -2u 70u "" + Pop $1 + ${NSD_LB_AddString} $1 "Foo" + ${NSD_LB_AddString} $1 "Bar" + + StrCpy $9 1 + ${NSD_CreateText} 1u 75u -2u 12u "New item #$9" + Pop $EDIT + !insertmacro CreateButton 1u 90u 50u 12u "Add (&Sorted)" $0 LBAction Add + !insertmacro CreateButton 53u 90u 50u 12u "&Prepend" $0 LBAction Prepend + !insertmacro CreateButton 105u 90u 50u 12u "&Append" $0 LBAction Append + !insertmacro CreateButton 160u 90u 50u 12u "&Delete Last" $0 LBAction DL + !insertmacro CreateButton 215u 90u 50u 12u "&Clear" $0 LBAction Clear + + nsDialogs::Show +FunctionEnd + +Function LBAction + Pop $0 + nsDialogs::GetUserData $0 + Pop $0 + ${NSD_GetText} $EDIT $8 + + ${Select} $0 + ${Case} "Add" + ${NSD_LB_AddString} $1 $8 + ${Case} "Prepend" + ${NSD_LB_PrependString} $1 $8 + ${Case} "Append" + ${NSD_LB_AppendString} $1 $8 + ${Case} "DL" + ${NSD_LB_GetCount} $1 $8 + ${If} $8 U> 0 + IntOp $8 $8 - 1 + ${NSD_LB_DelItem} $1 $8 + ${EndIf} + Return + ${Case} "Clear" + ${NSD_LB_Clear} $1 + Return + ${EndSelect} + + IntOp $9 $9 + 1 + ${NSD_SetText} $EDIT "New item #$9" +FunctionEnd + + +Function RangesPage + !insertmacro BeginControlsTestPage "Ranges" + + ${NSD_CreateHTrackBar} 1 0 -2 20u "" + Pop $1 + ${NSD_TrackBar_SetRangeMax} $1 10 + ${NSD_TrackBar_SetTicFreq} $1 1 + ${NSD_TrackBar_SetPos} $1 3 + + StrCpy $9 20 ; Progress pos + ${NSD_CreateProgressBar} 1 25u -2 8u "" + Pop $2 + ${NSD_CreateTimer} RangesTimer 1000 + + ${NSD_CreateNumber} 1 40u 50u 12u "42" + Pop $3 + ${NSD_CreateUpDown} 0 0 0 0 "" + Pop $4 + ${NSD_UD_SetBuddy} $4 $3 + ${MAKELONG} $5 $0 50 0 ; 0..50 + ${NSD_UD_SetPackedRange} $4 $5 + + nsDialogs::Show +FunctionEnd + +Function RangesTimer + IntOp $9 $9 + 5 + ${IfThen} $9 > 100 ${|} StrCpy $9 0 ${|} + ${NSD_ProgressBar_SetPos} $2 $9 +FunctionEnd + + +Function NotifyPage + !insertmacro BeginControlsTestPage "WM_NOTIFY" + + nsDialogs::CreateControl "${__NSD_RichEdit_CLASS_20A}" "${__NSD_RichEdit_STYLE}" "${__NSD_RichEdit_EXSTYLE}" 1 1 -2 50u "" ; Forcing ANSI control, see forums.winamp.com/showthread.php?p=3169999 + Pop $9 + ${NSD_OnNotify} $9 OnNotify + IntOp $8 ${ENM_LINK} | ${ENM_KEYEVENTS} + ${NSD_RichEd_SetEventMask} $9 $8 + SendMessage $9 ${EM_AUTOURLDETECT} 1 0 + ${NSD_SetText} $9 "{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard http://nsis.sf.net\par {\b Click the link!}\par\par Type something and I will block every other character...}" + + ${NSD_InitCommonControlsEx} ${ICC_DATE_CLASSES} + ${NSD_CreateDatePicker} 1% 55u 48% 12u "" + Pop $1 + ${NSD_OnNotify} $1 onDateTimeNotify + ${NSD_CreateLabel} 51% 56u 48% 12u "Change the date..." + Pop $9 + + /* + ${NSD_CreateCalendar} 1% 23% 150u 90u "" + Pop $1 + ${NSD_AddStyle} $1 ${MCS_NOTODAY} + System::Call 'USER32::SendMessage(p$1, i${MCM_GETMINREQRECT}, p0, @r2)' + System::Call '*$2(i,i,i.r2,i.r3)' + #System::Call 'USER32::SendMessage(p$1, i${MCM_GETMAXTODAYWIDTH}, p0, *i0r4)' + #${IfThen} $4 > $2 ${|} StrCpy $2 $4 ${|} + System::Call 'USER32::SetWindowPos(p$1,p0,i,i,ir2,ir3,i0x16)' + */ + + nsDialogs::Show +FunctionEnd + +Function OnNotify + Pop $1 ; HWND + Pop $2 ; Code + Pop $3 ; NMHDR* + ${If} $2 = ${EN_LINK} + System::Call '*$3(p,p,p,p.r2,p,p,i.r4,i.r5)' ; Extract from ENLINK* + ${IfThen} $2 <> ${WM_LBUTTONDOWN} ${|} Return ${|} + IntOp $2 $5 - $4 + System::Call '*(ir4,ir5,l,&t$2,i)p.r2' ; Create TEXTRANGE and a text buffer + ${If} $2 P<> 0 + IntPtrOp $3 $2 + 16 ; Find buffer + System::Call '*$2(i,i,p$3)' ; Set buffer in TEXTRANGE + SendMessage $1 ${EM_GETTEXTRANGE} "" $2 $4 + ${If} $4 <> 0 + System::Call 'SHELL32::ShellExecute(p$hWndParent, p0, pr3, p0, p0, i 1)' + ${EndIf} + System::Free $2 + ${EndIf} + ${ElseIf} $2 = ${EN_MSGFILTER} + Var /Global Toggle + System::Call '*$3(p,i,i,i.r4)' ; MSGFILTER->msg + ${If} $4 = ${WM_CHAR} + IntOp $Toggle $Toggle ^ 1 + ${If} $Toggle & 1 + ${NSD_Return} 1 + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +Function onDateTimeNotify +Pop $1 ; HWND +Pop $2 ; Code +Pop $3 ; NMHDR* +${If} $2 = ${DTN_DATETIMECHANGE} + System::Call 'USER32::SendMessage(p$1, i${DTM_GETSYSTEMTIME}, p0, @r3)i.r0' + ${If} $0 = ${GDT_VALID} + System::Call '*$3(&i2.R1, &i2.R2, &i2, &i2.R3, &i2, &i2, &i2, &i2)' ; SYSTEMTIME + StrCpy $0 "$R1/$R2/$R3" + ${Else} + StrCpy $0 "N/A" + ${EndIf} + ${NSD_SetText} $9 $0 +${EndIf} +FunctionEnd + + +Function RadioPage + !insertmacro BeginControlsTestPage "Radio buttons" + + ; Group 1 + ${NSD_CreateFirstRadioButton} 4u 0 40% 6% "NPR" + Pop $1 + ${NSD_OnClick} $1 onStationChanged + ${NSD_CreateAdditionalRadioButton} 4u 12% 40% 6% "BBC" + Pop $2 + ${NSD_OnClick} $2 onStationChanged + ${NSD_CreateLabel} 4u 30u 80% 12u "" + Pop $3 + + ; Group 2 + ${NSD_CreateFirstRadioButton} 4u 50u 50% 12u "FM" + Pop $4 + ${NSD_CreateAdditionalRadioButton} 4u 64u 50% 12u "AM" + Pop $5 + + SendMessage $4 ${BM_CLICK} "" "" ; Must select a default + SendMessage $2 ${BM_CLICK} "" "" ; Must select a default + nsDialogs::Show +FunctionEnd + +Function onStationChanged +Pop $0 +${NSD_GetText} $0 $0 +${If} $0 == "NPR" + ${NSD_SetText} $3 "America, f*(# yeah!" +${Else} + ${NSD_SetText} $3 "Keep Calm and Carry On" +${EndIf} +FunctionEnd + +Function RadioLeave +${NSD_GetChecked} $5 $0 +${If} $0 <> 0 + MessageBox MB_YESNO "Are you sure you want to keep living in the past?" IDYES +2 + Abort +${EndIf} +FunctionEnd + +Section +SectionEnd diff --git a/tools/Examples/nsDialogs/timer.nsi b/tools/Examples/nsDialogs/timer.nsi new file mode 100644 index 0000000..c24ef2c --- /dev/null +++ b/tools/Examples/nsDialogs/timer.nsi @@ -0,0 +1,107 @@ +!include LogicLib.nsh +!include nsDialogs.nsh +!include WinMessages.nsh + +Name "nsDialogs Timer Example" +OutFile "nsDialogs Timer Example.exe" +XPStyle on +RequestExecutionLevel user + +Var DIALOG +Var TEXT +Var PROGBAR +Var PROGBAR2 +Var PROGBAR3 +Var BUTTON +Var BUTTON2 + +Page custom nsDialogsPage +!pragma warning disable 8000 ; "Page instfiles not used, no sections will be executed!" + +Function OnTimer + + SendMessage $PROGBAR ${PBM_GETPOS} 0 0 $1 + ${If} $1 = 100 + SendMessage $PROGBAR ${PBM_SETPOS} 0 0 + ${Else} + SendMessage $PROGBAR ${PBM_DELTAPOS} 10 0 + ${EndIf} + +FunctionEnd + +Function OnTimer2 + + SendMessage $PROGBAR2 ${PBM_GETPOS} 0 0 $1 + ${If} $1 = 100 + SendMessage $PROGBAR2 ${PBM_SETPOS} 0 0 + ${Else} + SendMessage $PROGBAR2 ${PBM_DELTAPOS} 5 0 + ${EndIf} + +FunctionEnd + +Function OnTimer3 + + SendMessage $PROGBAR3 ${PBM_GETPOS} 0 0 $1 + ${If} $1 >= 100 + ${NSD_KillTimer} OnTimer3 + MessageBox MB_OK "Timer 3 killed" + ${Else} + SendMessage $PROGBAR3 ${PBM_DELTAPOS} 2 0 + ${EndIf} + +FunctionEnd + +Function OnClick + + Pop $0 + + ${NSD_KillTimer} OnTimer + +FunctionEnd + +Function OnClick2 + + Pop $0 + + ${NSD_KillTimer} OnTimer2 + +FunctionEnd + +Function nsDialogsPage + + nsDialogs::Create 1018 + Pop $DIALOG + + ${NSD_CreateLabel} 0u 0u 100% 9u "nsDialogs timer example" + Pop $TEXT + + ${NSD_CreateProgressBar} 0u 10u 100% 12u "" + Pop $PROGBAR + + ${NSD_CreateButton} 0u 25u 100u 14u "Kill Timer 1" + Pop $BUTTON + ${NSD_OnClick} $BUTTON OnClick + + ${NSD_CreateProgressBar} 0u 52u 100% 12u "" + Pop $PROGBAR2 + SendMessage $PROGBAR2 ${PBM_SETBARCOLOR} 0 0x0000FF ; No visual styles + SendMessage $PROGBAR2 ${PBM_SETSTATE} ${PBST_ERROR} 0 ; Vista+ + + ${NSD_CreateButton} 0u 67u 100u 14u "Kill Timer 2" + Pop $BUTTON2 + ${NSD_OnClick} $BUTTON2 OnClick2 + + ${NSD_CreateProgressBar} 0u 114u 100% 12u "" + Pop $PROGBAR3 + + ${NSD_CreateTimer} OnTimer 1000 + ${NSD_CreateTimer} OnTimer2 100 + ${NSD_CreateTimer} OnTimer3 200 + + nsDialogs::Show + +FunctionEnd + +Section +SectionEnd diff --git a/tools/Examples/nsDialogs/welcome.nsi b/tools/Examples/nsDialogs/welcome.nsi new file mode 100644 index 0000000..d8c2cd7 --- /dev/null +++ b/tools/Examples/nsDialogs/welcome.nsi @@ -0,0 +1,214 @@ +!include MUI.nsh +!include LogicLib.nsh +!include nsDialogs.nsh +!include WinMessages.nsh +!include FileFunc.nsh + +Name "nsDialogs Welcome" +OutFile "nsDialogs Welcome.exe" + +Page custom nsDialogsWelcome +Page custom nsDialogsDirectory +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_LANGUAGE English + + +Var DIALOG +Var HEADLINE +Var TEXT +Var IMAGECTL +Var IMAGE +Var DIRECTORY +Var FREESPACE + +Var HEADLINE_FONT + +Function .onInit + + CreateFont $HEADLINE_FONT "$(^Font)" "14" "700" + + InitPluginsDir + File /oname=$PLUGINSDIR\welcome.bmp "${NSISDIR}\Contrib\Graphics\Wizard\orange-nsis.bmp" + +FunctionEnd + +Function HideControls + + LockWindow on + GetDlgItem $0 $HWNDPARENT 1028 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1256 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1035 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1037 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1038 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1039 + ShowWindow $0 ${SW_HIDE} + + GetDlgItem $0 $HWNDPARENT 1045 + ShowWindow $0 ${SW_NORMAL} + LockWindow off + +FunctionEnd + +Function ShowControls + + LockWindow on + GetDlgItem $0 $HWNDPARENT 1028 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1256 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1035 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1037 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1038 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1039 + ShowWindow $0 ${SW_NORMAL} + + GetDlgItem $0 $HWNDPARENT 1045 + ShowWindow $0 ${SW_HIDE} + LockWindow off + +FunctionEnd + +Function nsDialogsWelcome + + nsDialogs::Create 1044 + Pop $DIALOG + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 0 0 109u 193u "" + Pop $IMAGECTL + + StrCpy $0 $PLUGINSDIR\welcome.bmp + System::Call 'user32::LoadImage(p 0, t r0, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE})p.s' + Pop $IMAGE + + SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 10u -130u 20u "Welcome to nsDialogs!" + Pop $HEADLINE + + SendMessage $HEADLINE ${WM_SETFONT} $HEADLINE_FONT 0 + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 32u -130u -32u "nsDialogs is the next generation of user interfaces in NSIS. It gives the developer full control over custom pages. Some of the features include control text containing variables, callbacks directly into script functions and creation of any type of control. Create boring old edit boxes or load some external library and create custom controls with no need of creating your own plug-in.$\r$\n$\r$\nUnlike InstallOptions, nsDialogs doesn't use INI files to communicate with the script. By interacting directly with the script, nsDialogs can perform much faster without the need of costly, old and inefficient INI operations. Direct interaction also allows direct calls to functions defined in the script and removes the need of conversion functions like Io2Nsis.$\r$\n$\r$\nHit the Next button to see how it all fits into a mock directory page." + Pop $TEXT + + SetCtlColors $DIALOG 0 0xffffff + SetCtlColors $HEADLINE 0 0xffffff + SetCtlColors $TEXT 0 0xffffff + + Call HideControls + + nsDialogs::Show + + Call ShowControls + + System::Call gdi32::DeleteObject(p$IMAGE) + +FunctionEnd + +!define SHACF_FILESYSTEM 1 + +Function nsDialogsDirectory + + !insertmacro MUI_HEADER_TEXT "Choose Install Location" "Choose the folder in which to install $(^NameDA)." + + GetDlgItem $0 $HWNDPARENT 1 + EnableWindow $0 0 + + nsDialogs::Create 1018 + Pop $DIALOG + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_CENTER} 0 0 0 100% 30 "Directory page" + Pop $HEADLINE + + SendMessage $HEADLINE ${WM_SETFONT} $HEADLINE_FONT 0 + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 30 100% 40 "Select the installation directory of NSIS to continue. $_CLICK" + Pop $TEXT + + nsDialogs::CreateControl EDIT ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${ES_AUTOHSCROLL}|${WS_TABSTOP} ${WS_EX_CLIENTEDGE} 0 75 100% 12u "" + Pop $DIRECTORY + + SendMessage $HWNDPARENT ${WM_NEXTDLGCTL} $DIRECTORY 1 + + GetFunctionAddress $0 DirChange + nsDialogs::OnChange $DIRECTORY $0 + + System::Call shlwapi::SHAutoComplete(p$DIRECTORY,i${SHACF_FILESYSTEM}) + + nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 -10u 100% 10u "" + Pop $FREESPACE + + Call UpdateFreeSpace + + nsDialogs::Show + +FunctionEnd + +Function UpdateFreeSpace + + ${GetRoot} $INSTDIR $0 + StrCpy $1 " bytes" + + System::Call kernel32::GetDiskFreeSpaceEx(tr0,*l,*l,*l.r0) + + ${If} $0 > 1024 + ${OrIf} $0 < 0 + System::Int64Op $0 / 1024 + Pop $0 + StrCpy $1 "kb" + ${If} $0 > 1024 + ${OrIf} $0 < 0 + System::Int64Op $0 / 1024 + Pop $0 + StrCpy $1 "mb" + ${If} $0 > 1024 + ${OrIf} $0 < 0 + System::Int64Op $0 / 1024 + Pop $0 + StrCpy $1 "gb" + ${EndIf} + ${EndIf} + ${EndIf} + + SendMessage $FREESPACE ${WM_SETTEXT} 0 "STR:Free space: $0$1" + +FunctionEnd + +Function DirChange + + Pop $0 # dir hwnd + + GetDlgItem $0 $HWNDPARENT 1 + + System::Call user32::GetWindowText(p$DIRECTORY,t.d,i${NSIS_MAX_STRLEN}) + + ${If} ${FileExists} $INSTDIR\makensis.exe + EnableWindow $0 1 + ${Else} + EnableWindow $0 0 + ${EndIf} + + Call UpdateFreeSpace + +FunctionEnd + +Section +SectionEnd diff --git a/tools/Examples/nsExec/test.nsi b/tools/Examples/nsExec/test.nsi new file mode 100644 index 0000000..5a0c931 --- /dev/null +++ b/tools/Examples/nsExec/test.nsi @@ -0,0 +1,31 @@ +Name "nsExec Test" + +OutFile "nsExec Test.exe" + +ShowInstDetails show + +Section "Silent MakeNSIS" + nsExec::Exec '"${NSISDIR}\makensis.exe"' + Pop $0 # return value/error/timeout + DetailPrint "" + DetailPrint " Return value: $0" + DetailPrint "" +SectionEnd + +Section "MakeNSIS commands help" + nsExec::ExecToLog '"${NSISDIR}\makensis.exe" /CMDHELP' + Pop $0 # return value/error/timeout + DetailPrint "" + DetailPrint " Return value: $0" + DetailPrint "" +SectionEnd + +Section "Output to variable" + nsExec::ExecToStack '"${NSISDIR}\makensis.exe" /VERSION' + Pop $0 # return value/error/timeout + Pop $1 # printed text, up to ${NSIS_MAX_STRLEN} + DetailPrint '"${NSISDIR}\makensis.exe" /VERSION printed: $1' + DetailPrint "" + DetailPrint " Return value: $0" + DetailPrint "" +SectionEnd \ No newline at end of file diff --git a/tools/Examples/one-section.nsi b/tools/Examples/one-section.nsi new file mode 100644 index 0000000..ef3779b --- /dev/null +++ b/tools/Examples/one-section.nsi @@ -0,0 +1,80 @@ +; one-section.nsi +; +; This example demonstrates how to control section selection. +; It allows only one of the sections of a group to be selected. + +;-------------------------------- + +; Section define/macro header file +; See this header file for more info + +!include "Sections.nsh" + +;-------------------------------- + +Name "One Section" +OutFile "one-section.exe" +RequestExecutionLevel user + +;-------------------------------- + +; Pages + +Page Components +Page InstFiles + +;-------------------------------- + +; Sections + +Section !Required + SectionIn RO +SectionEnd + +Section "Group 1 - Option 1" g1o1 +SectionEnd + +Section /o "Group 1 - Option 2" g1o2 +SectionEnd + +Section /o "Group 1 - Option 3" g1o3 +SectionEnd + +Section "Group 2 - Option 1" g2o1 +SectionEnd + +Section /o "Group 2 - Option 2" g2o2 +SectionEnd + +Section /o "Group 2 - Option 3" g2o3 +SectionEnd + +;-------------------------------- + +; Functions + +; $1 stores the status of group 1 +; $2 stores the status of group 2 + +Function .onInit + + StrCpy $1 ${g1o1} ; Group 1 - Option 1 is selected by default + StrCpy $2 ${g2o1} ; Group 2 - Option 1 is selected by default + +FunctionEnd + +Function .onSelChange + + !insertmacro StartRadioButtons $1 + !insertmacro RadioButton ${g1o1} + !insertmacro RadioButton ${g1o2} + !insertmacro RadioButton ${g1o3} + !insertmacro EndRadioButtons + + !insertmacro StartRadioButtons $2 + !insertmacro RadioButton ${g2o1} + !insertmacro RadioButton ${g2o2} + !insertmacro RadioButton ${g2o3} + !insertmacro EndRadioButtons + +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/primes.nsi b/tools/Examples/primes.nsi new file mode 100644 index 0000000..1d8f196 --- /dev/null +++ b/tools/Examples/primes.nsi @@ -0,0 +1,70 @@ +; primes.nsi +; +; This is an example of the possibilities of the NSIS Script language. +; It calculates prime numbers. + +;-------------------------------- + +Name "primes" +AllowRootDirInstall true +OutFile "primes.exe" +Caption "Prime number generator" +ShowInstDetails show +AllowRootDirInstall true +InstallDir "$EXEDIR" +RequestExecutionLevel user + +DirText "Select a directory to write primes.txt. $_CLICK" + +;-------------------------------- + +;Pages + +Page directory +Page instfiles + +;-------------------------------- + +Section "" + SetOutPath $INSTDIR + Call DoPrimes +SectionEnd + +;-------------------------------- + +Function DoPrimes + +; we put this in here so it doesn't update the progress bar (faster) + +!define PPOS $0 ; position in prime searching +!define PDIV $1 ; divisor +!define PMOD $2 ; the result of the modulus +!define PCNT $3 ; count of how many we've printed + FileOpen $9 $INSTDIR\primes.txt w + + DetailPrint "2 is prime!" + FileWrite $9 "2 is prime!$\r$\n" + DetailPrint "3 is prime!" + FileWrite $9 "3 is prime!$\r$\n" + Strcpy ${PPOS} 3 + Strcpy ${PCNT} 2 +outerloop: + StrCpy ${PDIV} 3 + innerloop: + IntOp ${PMOD} ${PPOS} % ${PDIV} + IntCmp ${PMOD} 0 notprime + IntOp ${PDIV} ${PDIV} + 2 + IntCmp ${PDIV} ${PPOS} 0 innerloop 0 + DetailPrint "${PPOS} is prime!" + FileWrite $9 "${PPOS} is prime!$\r$\n" + IntOp ${PCNT} ${PCNT} + 1 + IntCmp ${PCNT} 100 0 innerloop + StrCpy ${PCNT} 0 + MessageBox MB_YESNO "Process more?" IDNO stop + notprime: + IntOp ${PPOS} ${PPOS} + 2 + Goto outerloop + stop: + FileClose $9 + +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/rtest.nsi b/tools/Examples/rtest.nsi new file mode 100644 index 0000000..0a94515 --- /dev/null +++ b/tools/Examples/rtest.nsi @@ -0,0 +1,93 @@ +; rtest.nsi +; +; This script tests some advanced NSIS functions. + +;-------------------------------- + +Name "rtest" +OutFile "rtest.exe" + +ComponentText "Select tests!" +ShowInstDetails show + +RequestExecutionLevel user + +;-------------------------------- + +Section "Test 1" + + StrCpy $R0 "a" + + GetFunctionAddress $R1 test1 + Call $R1 + + StrCmp $R0 "a182345678" success + + DetailPrint "Test 1 failed (output: $R0)" + Goto end + + success: + DetailPrint "Test 1 succeeded (output: $R0)" + + end: + +SectionEnd + +Function test1 + + GetLabelAddress $9 skip + + IntOp $9 $9 - 1 + StrCpy $R0 $R01 + + Call $9 + + StrCpy $R0 $R02 + StrCpy $R0 $R03 + StrCpy $R0 $R04 + StrCpy $R0 $R05 + StrCpy $R0 $R06 + StrCpy $R0 $R07 + StrCpy $R0 $R08 + + skip: + +FunctionEnd + +;-------------------------------- + +Section "Test 2" + + StrCpy $R0 "0" + StrCpy $R1 "11" + + Call test2 + + StrCmp $R1 "11,10,9,8,7,6,5,4,3,2,1" success + + DetailPrint "Test 2 failed (output: $R1)" + Goto end + + success: + DetailPrint "Test 2 succeeded (output: $R1)" + + end: + +SectionEnd + +Function test2 + + IntOp $R0 $R0 + 1 + IntCmp $R0 10 done + + Push $R0 + + GetFunctionAddress $R2 test2 + Call $R2 + + Pop $R0 + + done: + StrCpy $R1 "$R1,$R0" + +FunctionEnd \ No newline at end of file diff --git a/tools/Examples/silent.nsi b/tools/Examples/silent.nsi new file mode 100644 index 0000000..d0492ce --- /dev/null +++ b/tools/Examples/silent.nsi @@ -0,0 +1,63 @@ +# This example shows how to handle silent installers. +# In short, you need IfSilent and the /SD switch for MessageBox to make your installer +# really silent when the /S switch is used. + +Name "Silent" +OutFile "silent.exe" +RequestExecutionLevel user + +# uncomment the following line to make the installer silent by default. +; SilentInstall silent + +Function .onInit + # `/SD IDYES' tells MessageBox to automatically choose IDYES if the installer is silent + # in this case, the installer can only be silent if the user used the /S switch or if + # you've uncommented line number 5 + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like the installer to be silent from now on?" \ + /SD IDYES IDNO no IDYES yes + + # SetSilent can only be used in .onInit and doesn't work well along with `SetSilent silent' + + yes: + SetSilent silent + Goto done + no: + SetSilent normal + done: +FunctionEnd + +Section + IfSilent 0 +2 + MessageBox MB_OK|MB_ICONINFORMATION 'This is a "silent" installer' + + # there is no need to use IfSilent for this one because the /SD switch takes care of that + MessageBox MB_OK|MB_ICONINFORMATION "This is not a silent installer" /SD IDOK + + # when `SetOverwrite on' (which is the default) is used, the installer will show a message + # if it can't open a file for writing. On silent installers, the ignore option will be + # automatically selected. if `AllowSkipFiles off' (default is on) was used, there is no + # ignore option and the cancel option will be automatically selected. + + # on is default + ; AllowSkipFiles on + + # lock file + FileOpen $0 $TEMP\silentOverwrite w + # try to extract - will fail + File /oname=$TEMP\silentOverwrite silent.nsi + # unlcok + FileClose $0 + + # this will always show on silent installers because ignore is the option automatically + # selected when a file can't be opened for writing on a silent installer + MessageBox MB_OK|MB_ICONINFORMATION "This message box always shows if the installer is silent" + + AllowSkipFiles off + + # lock file + FileOpen $0 $TEMP\silentOverwrite w + # try to extract - will fail + File /oname=$TEMP\silentOverwrite silent.nsi + # unlcok + FileClose $0 +SectionEnd \ No newline at end of file diff --git a/tools/Examples/unicode.nsi b/tools/Examples/unicode.nsi new file mode 100644 index 0000000..6c604f3 --- /dev/null +++ b/tools/Examples/unicode.nsi @@ -0,0 +1,47 @@ +; Unicode installers will not be able to run on Windows 9x! +Unicode true + +Name "Unicode Games" +OutFile "unicode.exe" +RequestExecutionLevel User +ShowInstDetails show +XPStyle on + + +Section "Unicode in UI" + + DetailPrint "Hello World!" + DetailPrint "שלום עולם!" + DetailPrint "مرحبا العالم!" + DetailPrint "こんにちは、世界!" + DetailPrint "你好世界!" + DetailPrint "привет мир!" + DetailPrint "안녕하세요!" + + DetailPrint "${U+00A9}" # arbitrary unicode chars + +SectionEnd + + +Section "Unicode in Files" + + Var /Global Message + + InitPluginsDir + FileOpen $0 "$PluginsDir\Test.txt" w + IfErrors done + FileWriteUTF16LE /BOM $0 "Hello World " + FileWriteWord $0 0xD83C # Manually write ${U+1F30D} + FileWriteWord $0 0xDF0D # as surrogate-pair + FileWriteUTF16LE $0 " and Sun ${U+2600}$\r$\n" + FileClose $0 + + FileOpen $0 "$PluginsDir\Test.txt" r + IfErrors done + FileReadUTF16LE $0 $Message + FileClose $0 + + DetailPrint "Message: $Message" + done: + +SectionEnd diff --git a/tools/Examples/waplugin.nsi b/tools/Examples/waplugin.nsi new file mode 100644 index 0000000..37d74d5 --- /dev/null +++ b/tools/Examples/waplugin.nsi @@ -0,0 +1,205 @@ +; waplugin.nsi +; +; This script will generate an installer that installs a Winamp 2 plug-in. +; +; This installer will automatically alert the user that installation was +; successful, and ask them whether or not they would like to make the +; plug-in the default and run Winamp. + +;-------------------------------- + +; Uncomment the next line to enable auto Winamp download +; !define WINAMP_AUTOINSTALL + +; The name of the installer +Name "TinyVis Plug-in" + +; The file to write +OutFile "waplugin.exe" + +; The default installation directory +InstallDir $PROGRAMFILES\Winamp + +; detect winamp path from uninstall string if available +InstallDirRegKey HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \ + "UninstallString" + +; The text to prompt the user to enter a directory +DirText "Please select your Winamp path below (you will be able to proceed when Winamp is detected):" +# currently doesn't work - DirShow hide + +; automatically close the installer when done. +AutoCloseWindow true + +; hide the "show details" box +ShowInstDetails nevershow + +; Request application privileges for Windows Vista +RequestExecutionLevel admin + +;-------------------------------- + +;Pages + +Page directory +Page instfiles + +;-------------------------------- + +; The stuff to install + +Section "" + +!ifdef WINAMP_AUTOINSTALL + Call MakeSureIGotWinamp +!endif + + Call QueryWinampVisPath + SetOutPath $1 + + ; File to extract + #File "C:\program files\winamp\plugins\vis_nsfs.dll" + File /oname=vis_nsfs.dll "${NSISDIR}\Plugins\x86-ansi\TypeLib.dll" # dummy plug-in + + ; prompt user, and if they select no, go to NoWinamp + MessageBox MB_YESNO|MB_ICONQUESTION \ + "The plug-in was installed. Would you like to run Winamp now with TinyVis as the default plug-in?" \ + IDNO NoWinamp + WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_name" "vis_nsfs.dll" + WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_num" "0" + Exec '"$INSTDIR\Winamp.exe"' + NoWinamp: + +SectionEnd + +;-------------------------------- + +Function .onVerifyInstDir + +!ifndef WINAMP_AUTOINSTALL + + ;Check for Winamp installation + + IfFileExists $INSTDIR\Winamp.exe Good + Abort + Good: + +!endif ; WINAMP_AUTOINSTALL + +FunctionEnd + +Function QueryWinampVisPath ; sets $1 with vis path + + StrCpy $1 $INSTDIR\Plugins + ; use DSPDir instead of VISDir to get DSP plugins directory + ReadINIStr $9 $INSTDIR\winamp.ini Winamp VisDir + StrCmp $9 "" End + IfFileExists $9 0 End + StrCpy $1 $9 ; update dir + End: + +FunctionEnd + +!ifdef WINAMP_AUTOINSTALL + +Function GetWinampInstPath + + Push $0 + Push $1 + Push $2 + ReadRegStr $0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \ + "UninstallString" + StrCmp $0 "" fin + + StrCpy $1 $0 1 0 ; get firstchar + StrCmp $1 '"' "" getparent + ; if first char is ", let's remove "'s first. + StrCpy $0 $0 "" 1 + StrCpy $1 0 + rqloop: + StrCpy $2 $0 1 $1 + StrCmp $2 '"' rqdone + StrCmp $2 "" rqdone + IntOp $1 $1 + 1 + Goto rqloop + rqdone: + StrCpy $0 $0 $1 + getparent: + ; the uninstall string goes to an EXE, let's get the directory. + StrCpy $1 -1 + gploop: + StrCpy $2 $0 1 $1 + StrCmp $2 "" gpexit + StrCmp $2 "\" gpexit + IntOp $1 $1 - 1 + Goto gploop + gpexit: + StrCpy $0 $0 $1 + + StrCmp $0 "" fin + IfFileExists $0\winamp.exe fin + StrCpy $0 "" + fin: + Pop $2 + Pop $1 + Exch $0 + +FunctionEnd + +Function MakeSureIGotWinamp + + Call GetWinampInstPath + + Pop $0 + StrCmp $0 "" getwinamp + Return + + getwinamp: + + Call ConnectInternet ;Make an internet connection (if no connection available) + + StrCpy $2 "$TEMP\Winamp Installer.exe" + NSISdl::download http://download.nullsoft.com/winamp/client/winamp281_lite.exe $2 + Pop $0 + StrCmp $0 success success + SetDetailsView show + DetailPrint "download failed: $0" + Abort + success: + ExecWait '"$2" /S' + Delete $2 + Call GetWinampInstPath + Pop $0 + StrCmp $0 "" skip + StrCpy $INSTDIR $0 + skip: + +FunctionEnd + +Function ConnectInternet + + Push $R0 + + ClearErrors + Dialer::AttemptConnect + IfErrors noie3 + + Pop $R0 + StrCmp $R0 "online" connected + MessageBox MB_OK|MB_ICONSTOP "Cannot connect to the internet." + Quit + + noie3: + + ; IE3 not installed + MessageBox MB_OK|MB_ICONINFORMATION "Please connect to the internet now." + + connected: + + Pop $R0 + +FunctionEnd + +!endif ; WINAMP_AUTOINSTALL \ No newline at end of file diff --git a/tools/Include/Colors.nsh b/tools/Include/Colors.nsh new file mode 100644 index 0000000..64ca3a1 --- /dev/null +++ b/tools/Include/Colors.nsh @@ -0,0 +1,75 @@ +!ifndef COLORS_NSH +!define COLORS_NSH + +!verbose push +!verbose 3 + +# Squad +# Rob Segal +# Joel +# Yathosho + + +# Predefined HTML Hex colors +!define WHITE "FFFFFF" +!define BLACK "000000" +!define YELLOW "FFFF00" +!define RED "FF0000" +!define GREEN "00FF00" +!define BLUE "0000FF" +!define MAGENTA "FF00FF" +!define CYAN "00FFFF" + +# Function to convert red , green and blue integer values to HTML Hex format +!define RGB '!insertmacro rgb2hex' + +# Function to convert red, green and blue integer values to Hexadecimal (0xRRGGBB) format +!define HEX '!insertmacro rgb2hex2' + +# Function to get the r value from a RGB number +!define GetRvalue '!insertmacro redvalue' + +# Function to get the g value from a RGB number +!define GetGvalue '!insertmacro greenvalue' + +# Function to get the b value from a RGB number +!define GetBvalue '!insertmacro bluevalue' + +# Function to get the r value from a Hex number +!define GetRvalueX '!insertmacro bluevalue' + +# Function to get the g value from a Hex number +!define GetGvalueX '!insertmacro greenvalue' + +# Function to get the r value from a HEX number +!define GetBvalueX '!insertmacro redvalue' + +!macro rgb2hex output R G B +IntFmt "${output}" "%02X" "${R}" +IntFmt "${output}" "${output}%02X" "${G}" +IntFmt "${output}" "${output}%02X" "${B}" +!macroend + +!macro rgb2hex2 output R G B +IntFmt "${output}" "%02X" "${B}" +IntFmt "${output}" "${output}%02X" "${G}" +IntFmt "${output}" "${output}%02X" "${R}" +!macroend + +!macro redvalue output hexval +StrCpy ${output} ${hexval} 2 0 +IntFmt "${output}" "%02i" "0x${output}" +!macroend + +!macro greenvalue output hexval +StrCpy ${output} ${hexval} 2 2 +IntFmt "${output}" "%02i" "0x${output}" +!macroend + +!macro bluevalue output hexval +StrCpy ${output} ${hexval} 2 4 +IntFmt "${output}" "%02i" "0x${output}" +!macroend + +!verbose pop +!endif \ No newline at end of file diff --git a/tools/Include/FileFunc.nsh b/tools/Include/FileFunc.nsh new file mode 100644 index 0000000..f993da4 --- /dev/null +++ b/tools/Include/FileFunc.nsh @@ -0,0 +1,2012 @@ +/* +_____________________________________________________________________________ + + File Functions Header v3.4 +_____________________________________________________________________________ + + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + + See documentation for more information about the following functions. + + Usage in script: + 1. !include "FileFunc.nsh" + 2. [Section|Function] + ${FileFunction} "Param1" "Param2" "..." $var + [SectionEnd|FunctionEnd] + + + FileFunction=[Locate|GetSize|DriveSpace|GetDrives|GetTime|GetFileAttributes| + GetFileVersion|GetExeName|GetExePath|GetParameters|GetOptions| + GetOptionsS|GetRoot|GetParent|GetFileName|GetBaseName|GetFileExt| + BannerTrimPath|DirState|RefreshShellIcons] + +_____________________________________________________________________________ + + Thanks to: +_____________________________________________________________________________ + +GetSize + KiCHiK (Function "FindFiles") +DriveSpace + sunjammer (Function "CheckSpaceFree") +GetDrives + deguix (Based on his idea of Function "DetectDrives") +GetTime + Takhir (Script "StatTest") and deguix (Function "FileModifiedDate") +GetFileVersion + KiCHiK (Based on his example for command "GetDLLVersion") +GetParameters + sunjammer (Based on his Function "GetParameters") +GetRoot + KiCHiK (Based on his Function "GetRoot") +GetParent + sunjammer (Based on his Function "GetParent") +GetFileName + KiCHiK (Based on his Function "GetFileName") +GetBaseName + comperio (Based on his idea of Function "GetBaseName") +GetFileExt + opher (author) +RefreshShellIcons + jerome tremblay (author) +*/ + + +;_____________________________________________________________________________ +; +; Macros +;_____________________________________________________________________________ +; +; Change log window verbosity (default: 3=no script) +; +; Example: +; !include "FileFunc.nsh" +; !insertmacro Locate +; ${FILEFUNC_VERBOSE} 4 # all verbosity +; !insertmacro VersionCompare +; ${FILEFUNC_VERBOSE} 3 # no script + +!ifndef FILEFUNC_INCLUDED + +!verbose push 3 +!define /IfNDef _FILEFUNC_VERBOSE 3 +!verbose ${_FILEFUNC_VERBOSE} +!define FILEFUNC_VERBOSE `!insertmacro FILEFUNC_VERBOSE` + +!define FILEFUNC_INCLUDED + +!include Util.nsh + + +!macro FILEFUNC_VERBOSE _VERBOSE + !verbose push 3 + !define /ReDef _FILEFUNC_VERBOSE ${_VERBOSE} + !verbose pop +!macroend + +!macro LocateCall _PATH _OPTIONS _FUNC + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push $0 + Push `${_PATH}` + Push `${_OPTIONS}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} Locate_ + Pop $0 + !verbose pop +!macroend + +!macro GetSizeCall _PATH _OPTIONS _RESULT1 _RESULT2 _RESULT3 + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATH}` + Push `${_OPTIONS}` + ${CallArtificialFunction} GetSize_ + Pop ${_RESULT1} + Pop ${_RESULT2} + Pop ${_RESULT3} + !verbose pop +!macroend + +!macro DriveSpaceCall _DRIVE _OPTIONS _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_DRIVE}` + Push `${_OPTIONS}` + ${CallArtificialFunction} DriveSpace_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetDrivesCall _DRV _FUNC + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push $0 + Push `${_DRV}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} GetDrives_ + Pop $0 + !verbose pop +!macroend + +!macro GetTimeCall _FILE _OPTION _RESULT1 _RESULT2 _RESULT3 _RESULT4 _RESULT5 _RESULT6 _RESULT7 + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_FILE}` + Push `${_OPTION}` + ${CallArtificialFunction} GetTime_ + Pop ${_RESULT1} + Pop ${_RESULT2} + Pop ${_RESULT3} + Pop ${_RESULT4} + Pop ${_RESULT5} + Pop ${_RESULT6} + Pop ${_RESULT7} + !verbose pop +!macroend + +!macro GetFileAttributesCall _PATH _ATTR _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATH}` + Push `${_ATTR}` + ${CallArtificialFunction} GetFileAttributes_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetFileVersionCall _FILE _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_FILE}` + ${CallArtificialFunction} GetFileVersion_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetExeNameCall _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + ${CallArtificialFunction} GetExeName_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetExePathCall _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + ${CallArtificialFunction} GetExePath_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetParametersCall _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + ${CallArtificialFunction} GetParameters_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetOptionsCall _PARAMETERS _OPTION _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PARAMETERS}` + Push `${_OPTION}` + ${CallArtificialFunction} GetOptions_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetOptionsSCall _PARAMETERS _OPTION _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PARAMETERS}` + Push `${_OPTION}` + ${CallArtificialFunction} GetOptionsS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetRootCall _FULLPATH _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_FULLPATH}` + ${CallArtificialFunction} GetRoot_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetParentCall _PATHSTRING _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATHSTRING}` + ${CallArtificialFunction} GetParent_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetFileNameCall _PATHSTRING _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATHSTRING}` + ${CallArtificialFunction} GetFileName_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetBaseNameCall _FILESTRING _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_FILESTRING}` + ${CallArtificialFunction} GetBaseName_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetFileExtCall _FILESTRING _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_FILESTRING}` + ${CallArtificialFunction} GetFileExt_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro BannerTrimPathCall _PATH _LENGHT _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATH}` + Push `${_LENGHT}` + ${CallArtificialFunction} BannerTrimPath_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro DirStateCall _PATH _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PATH}` + ${CallArtificialFunction} DirState_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro RefreshShellIconsCall + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + ${CallArtificialFunction} RefreshShellIcons_ + !verbose pop +!macroend + +!define Locate `!insertmacro LocateCall` +!define un.Locate `!insertmacro LocateCall` + +!macro Locate +!macroend + +!macro un.Locate +!macroend + +!macro Locate_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R6 + Push $R7 + Push $R8 + Push $R9 + ClearErrors + + StrCpy $3 '' + StrCpy $4 '' + StrCpy $5 '' + StrCpy $6 '' + StrCpy $7 '' + StrCpy $8 0 + StrCpy $R7 '' + + StrCpy $R9 $0 1 -1 + StrCmp $R9 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + IfFileExists '$0\*.*' 0 FileFunc_Locate_error + + FileFunc_Locate_option: + StrCpy $R9 $1 1 + StrCpy $1 $1 '' 1 + StrCmp $R9 ' ' -2 + StrCmp $R9 '' FileFunc_Locate_sizeset + StrCmp $R9 '/' 0 -4 + StrCpy $9 -1 + IntOp $9 $9 + 1 + StrCpy $R9 $1 1 $9 + StrCmp $R9 '' +2 + StrCmp $R9 '/' 0 -3 + StrCpy $R8 $1 $9 + StrCpy $R8 $R8 '' 2 + StrCpy $R9 $R8 '' -1 + StrCmp $R9 ' ' 0 +3 + StrCpy $R8 $R8 -1 + goto -3 + StrCpy $R9 $1 2 + StrCpy $1 $1 '' $9 + + StrCmp $R9 'L=' 0 FileFunc_Locate_mask + StrCpy $3 $R8 + StrCmp $3 '' +6 + StrCmp $3 'FD' +5 + StrCmp $3 'F' +4 + StrCmp $3 'D' +3 + StrCmp $3 'DE' +2 + StrCmp $3 'FDE' 0 FileFunc_Locate_error + goto FileFunc_Locate_option + + FileFunc_Locate_mask: + StrCmp $R9 'M=' 0 FileFunc_Locate_size + StrCpy $4 $R8 + goto FileFunc_Locate_option + + FileFunc_Locate_size: + StrCmp $R9 'S=' 0 FileFunc_Locate_gotosubdir + StrCpy $6 $R8 + goto FileFunc_Locate_option + + FileFunc_Locate_gotosubdir: + StrCmp $R9 'G=' 0 FileFunc_Locate_banner + StrCpy $7 $R8 + StrCmp $7 '' +3 + StrCmp $7 '1' +2 + StrCmp $7 '0' 0 FileFunc_Locate_error + goto FileFunc_Locate_option + + FileFunc_Locate_banner: + StrCmp $R9 'B=' 0 FileFunc_Locate_error + StrCpy $R7 $R8 + StrCmp $R7 '' +3 + StrCmp $R7 '1' +2 + StrCmp $R7 '0' 0 FileFunc_Locate_error + goto FileFunc_Locate_option + + FileFunc_Locate_sizeset: + StrCmp $6 '' FileFunc_Locate_default + StrCpy $9 0 + StrCpy $R9 $6 1 $9 + StrCmp $R9 '' +4 + StrCmp $R9 ':' +3 + IntOp $9 $9 + 1 + goto -4 + StrCpy $5 $6 $9 + IntOp $9 $9 + 1 + StrCpy $1 $6 1 -1 + StrCpy $6 $6 -1 $9 + StrCmp $5 '' +2 + IntOp $5 $5 + 0 + StrCmp $6 '' +2 + IntOp $6 $6 + 0 + + StrCmp $1 'B' 0 +3 + StrCpy $1 1 + goto FileFunc_Locate_default + StrCmp $1 'K' 0 +3 + StrCpy $1 1024 + goto FileFunc_Locate_default + StrCmp $1 'M' 0 +3 + StrCpy $1 1048576 + goto FileFunc_Locate_default + StrCmp $1 'G' 0 FileFunc_Locate_error + StrCpy $1 1073741824 + + FileFunc_Locate_default: + StrCmp $3 '' 0 +2 + StrCpy $3 'FD' + StrCmp $4 '' 0 +2 + StrCpy $4 '*.*' + StrCmp $7 '' 0 +2 + StrCpy $7 '1' + StrCmp $R7 '' 0 +2 + StrCpy $R7 '0' + StrCpy $7 'G$7B$R7' + + StrCpy $8 1 + Push $0 + SetDetailsPrint textonly + + FileFunc_Locate_nextdir: + IntOp $8 $8 - 1 + Pop $R8 + + StrCpy $9 $7 2 2 + StrCmp $9 'B0' +3 + GetLabelAddress $9 FileFunc_Locate_findfirst + goto call + DetailPrint 'Search in: $R8' + + FileFunc_Locate_findfirst: + FindFirst $0 $R7 '$R8\$4' + IfErrors FileFunc_Locate_subdir + StrCmp $R7 '.' 0 FileFunc_Locate_dir + FindNext $0 $R7 + StrCmp $R7 '..' 0 FileFunc_Locate_dir + FindNext $0 $R7 + IfErrors 0 FileFunc_Locate_dir + FindClose $0 + goto FileFunc_Locate_subdir + + FileFunc_Locate_dir: + IfFileExists '$R8\$R7\*.*' 0 FileFunc_Locate_file + StrCpy $R6 '' + StrCmp $3 'DE' +4 + StrCmp $3 'FDE' +3 + StrCmp $3 'FD' FileFunc_Locate_precall + StrCmp $3 'F' FileFunc_Locate_findnext FileFunc_Locate_precall + FindFirst $9 $R9 '$R8\$R7\*.*' + StrCmp $R9 '.' 0 +4 + FindNext $9 $R9 + StrCmp $R9 '..' 0 +2 + FindNext $9 $R9 + FindClose $9 + IfErrors FileFunc_Locate_precall FileFunc_Locate_findnext + + FileFunc_Locate_file: + StrCmp $3 'FDE' +3 + StrCmp $3 'FD' +2 + StrCmp $3 'F' 0 FileFunc_Locate_findnext + StrCpy $R6 0 + StrCmp $5$6 '' FileFunc_Locate_precall + FileOpen $9 '$R8\$R7' r + IfErrors +3 + FileSeek $9 0 END $R6 + FileClose $9 + System::Int64Op $R6 / $1 + Pop $R6 + StrCmp $5 '' +2 + IntCmp $R6 $5 0 FileFunc_Locate_findnext + StrCmp $6 '' +2 + IntCmp $R6 $6 0 0 FileFunc_Locate_findnext + + FileFunc_Locate_precall: + StrCpy $9 0 + StrCpy $R9 '$R8\$R7' + + call: + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R7 + Push $R8 + StrCmp $9 0 +4 + StrCpy $R6 '' + StrCpy $R7 '' + StrCpy $R9 '' + Call $2 + Pop $R9 + Pop $R8 + Pop $R7 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + IfErrors 0 +3 + FindClose $0 + goto FileFunc_Locate_error + StrCmp $R9 'StopLocate' 0 +3 + FindClose $0 + goto FileFunc_Locate_clearstack + goto $9 + + FileFunc_Locate_findnext: + FindNext $0 $R7 + IfErrors 0 FileFunc_Locate_dir + FindClose $0 + + FileFunc_Locate_subdir: + StrCpy $9 $7 2 + StrCmp $9 'G0' FileFunc_Locate_end + FindFirst $0 $R7 '$R8\*.*' + StrCmp $R7 '.' 0 FileFunc_Locate_pushdir + FindNext $0 $R7 + StrCmp $R7 '..' 0 FileFunc_Locate_pushdir + FindNext $0 $R7 + IfErrors 0 FileFunc_Locate_pushdir + FindClose $0 + StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir + + FileFunc_Locate_pushdir: + IfFileExists '$R8\$R7\*.*' 0 +3 + Push '$R8\$R7' + IntOp $8 $8 + 1 + FindNext $0 $R7 + IfErrors 0 FileFunc_Locate_pushdir + FindClose $0 + StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir + + FileFunc_Locate_error: + SetErrors + + FileFunc_Locate_clearstack: + StrCmp $8 0 FileFunc_Locate_end + IntOp $8 $8 - 1 + Pop $R8 + goto FileFunc_Locate_clearstack + + FileFunc_Locate_end: + SetDetailsPrint both + Pop $R9 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!define GetSize `!insertmacro GetSizeCall` +!define un.GetSize `!insertmacro GetSizeCall` + +!macro GetSize +!macroend + +!macro un.GetSize +!macroend + +!macro GetSize_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + Push $R9 + ClearErrors + + StrCpy $R9 $0 1 -1 + StrCmp $R9 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + IfFileExists '$0\*.*' 0 FileFunc_GetSize_error + + StrCpy $3 '' + StrCpy $4 '' + StrCpy $5 '' + StrCpy $6 '' + StrCpy $8 0 + StrCpy $R3 '' + StrCpy $R4 '' + StrCpy $R5 '' + + FileFunc_GetSize_option: + StrCpy $R9 $1 1 + StrCpy $1 $1 '' 1 + StrCmp $R9 ' ' -2 + StrCmp $R9 '' FileFunc_GetSize_sizeset + StrCmp $R9 '/' 0 -4 + + StrCpy $9 -1 + IntOp $9 $9 + 1 + StrCpy $R9 $1 1 $9 + StrCmp $R9 '' +2 + StrCmp $R9 '/' 0 -3 + StrCpy $8 $1 $9 + StrCpy $8 $8 '' 2 + StrCpy $R9 $8 '' -1 + StrCmp $R9 ' ' 0 +3 + StrCpy $8 $8 -1 + goto -3 + StrCpy $R9 $1 2 + StrCpy $1 $1 '' $9 + + StrCmp $R9 'M=' 0 FileFunc_GetSize_size + StrCpy $4 $8 + goto FileFunc_GetSize_option + + FileFunc_GetSize_size: + StrCmp $R9 'S=' 0 FileFunc_GetSize_gotosubdir + StrCpy $6 $8 + goto FileFunc_GetSize_option + + FileFunc_GetSize_gotosubdir: + StrCmp $R9 'G=' 0 FileFunc_GetSize_error + StrCpy $7 $8 + StrCmp $7 '' +3 + StrCmp $7 '1' +2 + StrCmp $7 '0' 0 FileFunc_GetSize_error + goto FileFunc_GetSize_option + + FileFunc_GetSize_sizeset: + StrCmp $6 '' FileFunc_GetSize_default + StrCpy $9 0 + StrCpy $R9 $6 1 $9 + StrCmp $R9 '' +4 + StrCmp $R9 ':' +3 + IntOp $9 $9 + 1 + goto -4 + StrCpy $5 $6 $9 + IntOp $9 $9 + 1 + StrCpy $1 $6 1 -1 + StrCpy $6 $6 -1 $9 + StrCmp $5 '' +2 + IntOp $5 $5 + 0 + StrCmp $6 '' +2 + IntOp $6 $6 + 0 + + StrCmp $1 'B' 0 +4 + StrCpy $1 1 + StrCpy $2 bytes + goto FileFunc_GetSize_default + StrCmp $1 'K' 0 +4 + StrCpy $1 1024 + StrCpy $2 Kb + goto FileFunc_GetSize_default + StrCmp $1 'M' 0 +4 + StrCpy $1 1048576 + StrCpy $2 Mb + goto FileFunc_GetSize_default + StrCmp $1 'G' 0 FileFunc_GetSize_error + StrCpy $1 1073741824 + StrCpy $2 Gb + + FileFunc_GetSize_default: + StrCmp $4 '' 0 +2 + StrCpy $4 '*.*' + StrCmp $7 '' 0 +2 + StrCpy $7 '1' + + StrCpy $8 1 + Push $0 + SetDetailsPrint textonly + + FileFunc_GetSize_nextdir: + IntOp $8 $8 - 1 + Pop $R8 + FindFirst $0 $R7 '$R8\$4' + IfErrors FileFunc_GetSize_show + StrCmp $R7 '.' 0 FileFunc_GetSize_dir + FindNext $0 $R7 + StrCmp $R7 '..' 0 FileFunc_GetSize_dir + FindNext $0 $R7 + IfErrors 0 FileFunc_GetSize_dir + FindClose $0 + goto FileFunc_GetSize_show + + FileFunc_GetSize_dir: + IfFileExists '$R8\$R7\*.*' 0 FileFunc_GetSize_file + IntOp $R5 $R5 + 1 + goto FileFunc_GetSize_findnext + + FileFunc_GetSize_file: + StrCpy $R6 0 + StrCmp $5$6 '' 0 +3 + IntOp $R4 $R4 + 1 + goto FileFunc_GetSize_findnext + FileOpen $9 '$R8\$R7' r + IfErrors +3 + FileSeek $9 0 END $R6 + FileClose $9 + StrCmp $5 '' +2 + IntCmp $R6 $5 0 FileFunc_GetSize_findnext + StrCmp $6 '' +2 + IntCmp $R6 $6 0 0 FileFunc_GetSize_findnext + IntOp $R4 $R4 + 1 + System::Int64Op $R3 + $R6 + Pop $R3 + + FileFunc_GetSize_findnext: + FindNext $0 $R7 + IfErrors 0 FileFunc_GetSize_dir + FindClose $0 + + FileFunc_GetSize_show: + StrCmp $5$6 '' FileFunc_GetSize_nosize + System::Int64Op $R3 / $1 + Pop $9 + DetailPrint 'Size:$9 $2 Files:$R4 Folders:$R5' + goto FileFunc_GetSize_subdir + FileFunc_GetSize_nosize: + DetailPrint 'Files:$R4 Folders:$R5' + + FileFunc_GetSize_subdir: + StrCmp $7 0 FileFunc_GetSize_preend + FindFirst $0 $R7 '$R8\*.*' + StrCmp $R7 '.' 0 FileFunc_GetSize_pushdir + FindNext $0 $R7 + StrCmp $R7 '..' 0 FileFunc_GetSize_pushdir + FindNext $0 $R7 + IfErrors 0 FileFunc_GetSize_pushdir + FindClose $0 + StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir + + FileFunc_GetSize_pushdir: + IfFileExists '$R8\$R7\*.*' 0 +3 + Push '$R8\$R7' + IntOp $8 $8 + 1 + FindNext $0 $R7 + IfErrors 0 FileFunc_GetSize_pushdir + FindClose $0 + StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir + + FileFunc_GetSize_preend: + StrCmp $R3 '' FileFunc_GetSize_nosizeend + System::Int64Op $R3 / $1 + Pop $R3 + FileFunc_GetSize_nosizeend: + StrCpy $2 $R4 + StrCpy $1 $R5 + StrCpy $0 $R3 + goto FileFunc_GetSize_end + + FileFunc_GetSize_error: + SetErrors + StrCpy $0 '' + StrCpy $1 '' + StrCpy $2 '' + + FileFunc_GetSize_end: + SetDetailsPrint both + Pop $R9 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Exch $2 + Exch + Exch $1 + Exch 2 + Exch $0 + + !verbose pop +!macroend + +!define DriveSpace `!insertmacro DriveSpaceCall` +!define un.DriveSpace `!insertmacro DriveSpaceCall` + +!macro DriveSpace +!macroend + +!macro un.DriveSpace +!macroend + +!macro DriveSpace_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + ClearErrors + + StrCpy $2 $0 1 -1 + StrCmp $2 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + IfFileExists '$0\NUL' 0 FileFunc_DriveSpace_error + + StrCpy $5 '' + StrCpy $6 '' + + FileFunc_DriveSpace_option: + StrCpy $2 $1 1 + StrCpy $1 $1 '' 1 + StrCmp $2 ' ' -2 + StrCmp $2 '' FileFunc_DriveSpace_default + StrCmp $2 '/' 0 -4 + StrCpy $3 -1 + IntOp $3 $3 + 1 + StrCpy $2 $1 1 $3 + StrCmp $2 '' +2 + StrCmp $2 '/' 0 -3 + StrCpy $4 $1 $3 + StrCpy $4 $4 '' 2 + StrCpy $2 $4 1 -1 + StrCmp $2 ' ' 0 +3 + StrCpy $4 $4 -1 + goto -3 + StrCpy $2 $1 2 + StrCpy $1 $1 '' $3 + + StrCmp $2 'D=' 0 FileFunc_DriveSpace_unit + StrCpy $5 $4 + StrCmp $5 '' +4 + StrCmp $5 'T' +3 + StrCmp $5 'O' +2 + StrCmp $5 'F' 0 FileFunc_DriveSpace_error + goto FileFunc_DriveSpace_option + + FileFunc_DriveSpace_unit: + StrCmp $2 'S=' 0 FileFunc_DriveSpace_error + StrCpy $6 $4 + goto FileFunc_DriveSpace_option + + FileFunc_DriveSpace_default: + StrCmp $5 '' 0 +2 + StrCpy $5 'T' + StrCmp $6 '' 0 +3 + StrCpy $6 '1' + goto FileFunc_DriveSpace_getspace + + StrCmp $6 'B' 0 +3 + StrCpy $6 1 + goto FileFunc_DriveSpace_getspace + StrCmp $6 'K' 0 +3 + StrCpy $6 1024 + goto FileFunc_DriveSpace_getspace + StrCmp $6 'M' 0 +3 + StrCpy $6 1048576 + goto FileFunc_DriveSpace_getspace + StrCmp $6 'G' 0 FileFunc_DriveSpace_error + StrCpy $6 1073741824 + + FileFunc_DriveSpace_getspace: + System::Call 'kernel32::GetDiskFreeSpaceEx(t, *l, *l, *l)i(r0,.r2,.r3,.)' + + StrCmp $5 T 0 +3 + StrCpy $0 $3 + goto FileFunc_DriveSpace_getsize + StrCmp $5 O 0 +4 + System::Int64Op $3 - $2 + Pop $0 + goto FileFunc_DriveSpace_getsize + StrCmp $5 F 0 +2 + StrCpy $0 $2 + + FileFunc_DriveSpace_getsize: + System::Int64Op $0 / $6 + Pop $0 + goto FileFunc_DriveSpace_end + + FileFunc_DriveSpace_error: + SetErrors + StrCpy $0 '' + + FileFunc_DriveSpace_end: + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetDrives `!insertmacro GetDrivesCall` +!define un.GetDrives `!insertmacro GetDrivesCall` + +!macro GetDrives +!macroend + +!macro un.GetDrives +!macroend + +!macro GetDrives_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $8 + Push $9 + + System::StrAlloc 1024 + Pop $2 + System::Call 'kernel32::GetLogicalDriveStrings(i,i) i(1024, r2)' + + StrCmp $0 ALL FileFunc_GetDrives_drivestring + StrCmp $0 '' 0 FileFunc_GetDrives_typeset + StrCpy $0 ALL + goto FileFunc_GetDrives_drivestring + + FileFunc_GetDrives_typeset: + StrCpy $6 -1 + IntOp $6 $6 + 1 + StrCpy $8 $0 1 $6 + StrCmp $8$0 '' FileFunc_GetDrives_enumex + StrCmp $8 '' +2 + StrCmp $8 '+' 0 -4 + StrCpy $8 $0 $6 + IntOp $6 $6 + 1 + StrCpy $0 $0 '' $6 + + StrCmp $8 'FDD' 0 +3 + StrCpy $6 2 + goto FileFunc_GetDrives_drivestring + StrCmp $8 'HDD' 0 +3 + StrCpy $6 3 + goto FileFunc_GetDrives_drivestring + StrCmp $8 'NET' 0 +3 + StrCpy $6 4 + goto FileFunc_GetDrives_drivestring + StrCmp $8 'CDROM' 0 +3 + StrCpy $6 5 + goto FileFunc_GetDrives_drivestring + StrCmp $8 'RAM' 0 FileFunc_GetDrives_typeset + StrCpy $6 6 + + FileFunc_GetDrives_drivestring: + StrCpy $3 $2 + + FileFunc_GetDrives_enumok: + System::Call 'kernel32::lstrlen(t) i(i r3) .r4' + StrCmp $4$0 '0ALL' FileFunc_GetDrives_enumex + StrCmp $4 0 FileFunc_GetDrives_typeset + System::Call 'kernel32::GetDriveType(t) i(i r3) .r5' + + StrCmp $0 ALL +2 + StrCmp $5 $6 FileFunc_GetDrives_letter FileFunc_GetDrives_enumnext + StrCmp $5 2 0 +3 + StrCpy $8 FDD + goto FileFunc_GetDrives_letter + StrCmp $5 3 0 +3 + StrCpy $8 HDD + goto FileFunc_GetDrives_letter + StrCmp $5 4 0 +3 + StrCpy $8 NET + goto FileFunc_GetDrives_letter + StrCmp $5 5 0 +3 + StrCpy $8 CDROM + goto FileFunc_GetDrives_letter + StrCmp $5 6 0 FileFunc_GetDrives_enumex + StrCpy $8 RAM + + FileFunc_GetDrives_letter: + System::Call '*$3(&t1024 .r9)' + + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $8 + Call $1 + Pop $9 + Pop $8 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + StrCmp $9 'StopGetDrives' FileFunc_GetDrives_enumex + + FileFunc_GetDrives_enumnext: + IntOp $4 $4 * ${NSIS_CHAR_SIZE} + IntOp $3 $3 + $4 + IntOp $3 $3 + ${NSIS_CHAR_SIZE} + goto FileFunc_GetDrives_enumok + + FileFunc_GetDrives_enumex: + System::Free $2 + + Pop $9 + Pop $8 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!define GetTime `!insertmacro GetTimeCall` +!define un.GetTime `!insertmacro GetTimeCall` + +!macro GetTime +!macroend + +!macro un.GetTime +!macroend + +!macro GetTime_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + ClearErrors + + StrCmp $1 'L' FileFunc_GetTime_gettime + StrCmp $1 'A' FileFunc_GetTime_getfile + StrCmp $1 'C' FileFunc_GetTime_getfile + StrCmp $1 'M' FileFunc_GetTime_getfile + StrCmp $1 'LS' FileFunc_GetTime_gettime + StrCmp $1 'AS' FileFunc_GetTime_getfile + StrCmp $1 'CS' FileFunc_GetTime_getfile + StrCmp $1 'MS' FileFunc_GetTime_getfile + goto FileFunc_GetTime_error + + FileFunc_GetTime_getfile: + IfFileExists $0 0 FileFunc_GetTime_error + System::Call '*(i,l,l,l,i,i,i,i,&t260,&t14) p .r6' + System::Call 'kernel32::FindFirstFile(t,p)p(r0,r6) .r2' + System::Call 'kernel32::FindClose(i)i(r2)' + + FileFunc_GetTime_gettime: + System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) p .r7' + StrCmp $1 'L' 0 FileFunc_GetTime_systemtime + System::Call 'kernel32::GetLocalTime(p)i(r7)' + goto FileFunc_GetTime_convert + FileFunc_GetTime_systemtime: + StrCmp $1 'LS' 0 FileFunc_GetTime_filetime + System::Call 'kernel32::GetSystemTime(p)i(r7)' + goto FileFunc_GetTime_convert + + FileFunc_GetTime_filetime: + System::Call '*$6(i,l,l,l,i,i,i,i,&t260,&t14)p(,.r4,.r3,.r2)' + System::Free $6 + StrCmp $1 'A' 0 +3 + StrCpy $2 $3 + goto FileFunc_GetTime_tolocal + StrCmp $1 'C' 0 +3 + StrCpy $2 $4 + goto FileFunc_GetTime_tolocal + StrCmp $1 'M' FileFunc_GetTime_tolocal + + StrCmp $1 'AS' FileFunc_GetTime_tosystem + StrCmp $1 'CS' 0 +3 + StrCpy $3 $4 + goto FileFunc_GetTime_tosystem + StrCmp $1 'MS' 0 +3 + StrCpy $3 $2 + goto FileFunc_GetTime_tosystem + + FileFunc_GetTime_tolocal: + System::Call 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)' + FileFunc_GetTime_tosystem: + System::Call 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)' + + FileFunc_GetTime_convert: + System::Call '*$7(&i2.r5,&i2.r6,&i2.r4,&i2.r0,&i2.r3,&i2.r2,&i2.r1,&i2)' + System::Free $7 + + IntFmt $6 "%.2u" $6 ; Month + IntFmt $0 "%.2u" $0 ; Day + IntFmt $3 "%.2u" $3 ; Hour + IntFmt $2 "%.2u" $2 ; Minute + IntFmt $1 "%.2u" $1 ; Second + + StrCmp $4 0 0 +3 + StrCpy $4 Sunday + goto FileFunc_GetTime_end + StrCmp $4 1 0 +3 + StrCpy $4 Monday + goto FileFunc_GetTime_end + StrCmp $4 2 0 +3 + StrCpy $4 Tuesday + goto FileFunc_GetTime_end + StrCmp $4 3 0 +3 + StrCpy $4 Wednesday + goto FileFunc_GetTime_end + StrCmp $4 4 0 +3 + StrCpy $4 Thursday + goto FileFunc_GetTime_end + StrCmp $4 5 0 +3 + StrCpy $4 Friday + goto FileFunc_GetTime_end + StrCmp $4 6 0 FileFunc_GetTime_error + StrCpy $4 Saturday + goto FileFunc_GetTime_end + + FileFunc_GetTime_error: + SetErrors + StrCpy $0 '' + StrCpy $1 '' + StrCpy $2 '' + StrCpy $3 '' + StrCpy $4 '' + StrCpy $5 '' + StrCpy $6 '' + + FileFunc_GetTime_end: + Pop $7 + Exch $6 + Exch + Exch $5 + Exch 2 + Exch $4 + Exch 3 + Exch $3 + Exch 4 + Exch $2 + Exch 5 + Exch $1 + Exch 6 + Exch $0 + + !verbose pop +!macroend + +!define GetFileAttributes `!insertmacro GetFileAttributesCall` +!define un.GetFileAttributes `!insertmacro GetFileAttributesCall` + +!macro GetFileAttributes +!macroend + +!macro un.GetFileAttributes +!macroend + +!macro GetFileAttributes_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + + System::Call 'kernel32::GetFileAttributes(t r0)i .r2' + StrCmp $2 -1 FileFunc_GetFileAttributes_error + StrCpy $3 '' + + IntOp $0 $2 & 0x4000 + IntCmp $0 0 +2 + StrCpy $3 'ENCRYPTED|' + + IntOp $0 $2 & 0x2000 + IntCmp $0 0 +2 + StrCpy $3 'NOT_CONTENT_INDEXED|$3' + + IntOp $0 $2 & 0x1000 + IntCmp $0 0 +2 + StrCpy $3 'OFFLINE|$3' + + IntOp $0 $2 & 0x0800 + IntCmp $0 0 +2 + StrCpy $3 'COMPRESSED|$3' + + IntOp $0 $2 & 0x0400 + IntCmp $0 0 +2 + StrCpy $3 'REPARSE_POINT|$3' + + IntOp $0 $2 & 0x0200 + IntCmp $0 0 +2 + StrCpy $3 'SPARSE_FILE|$3' + + IntOp $0 $2 & 0x0100 + IntCmp $0 0 +2 + StrCpy $3 'TEMPORARY|$3' + + IntOp $0 $2 & 0x0080 + IntCmp $0 0 +2 + StrCpy $3 'NORMAL|$3' + + IntOp $0 $2 & 0x0040 + IntCmp $0 0 +2 + StrCpy $3 'DEVICE|$3' + + IntOp $0 $2 & 0x0020 + IntCmp $0 0 +2 + StrCpy $3 'ARCHIVE|$3' + + IntOp $0 $2 & 0x0010 + IntCmp $0 0 +2 + StrCpy $3 'DIRECTORY|$3' + + IntOp $0 $2 & 0x0004 + IntCmp $0 0 +2 + StrCpy $3 'SYSTEM|$3' + + IntOp $0 $2 & 0x0002 + IntCmp $0 0 +2 + StrCpy $3 'HIDDEN|$3' + + IntOp $0 $2 & 0x0001 + IntCmp $0 0 +2 + StrCpy $3 'READONLY|$3' + + StrCpy $0 $3 -1 + StrCmp $1 '' FileFunc_GetFileAttributes_end + StrCmp $1 'ALL' FileFunc_GetFileAttributes_end + + FileFunc_GetFileAttributes_attrcmp: + StrCpy $5 0 + IntOp $5 $5 + 1 + StrCpy $4 $1 1 $5 + StrCmp $4 '' +2 + StrCmp $4 '|' 0 -3 + StrCpy $2 $1 $5 + IntOp $5 $5 + 1 + StrCpy $1 $1 '' $5 + StrLen $3 $2 + StrCpy $5 -1 + IntOp $5 $5 + 1 + StrCpy $4 $0 $3 $5 + StrCmp $4 '' FileFunc_GetFileAttributes_notfound + StrCmp $4 $2 0 -3 + StrCmp $1 '' 0 FileFunc_GetFileAttributes_attrcmp + StrCpy $0 1 + goto FileFunc_GetFileAttributes_end + + FileFunc_GetFileAttributes_notfound: + StrCpy $0 0 + goto FileFunc_GetFileAttributes_end + + FileFunc_GetFileAttributes_error: + SetErrors + StrCpy $0 '' + + FileFunc_GetFileAttributes_end: + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetFileVersion `!insertmacro GetFileVersionCall` +!define un.GetFileVersion `!insertmacro GetFileVersionCall` + +!macro GetFileVersion +!macroend + +!macro un.GetFileVersion +!macroend + +!macro GetFileVersion_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + ClearErrors + + GetDllVersion '$0' $1 $2 + IfErrors FileFunc_GetFileVersion_error + IntOp $3 $1 >> 16 + IntOp $3 $3 & 0x0000FFFF + IntOp $4 $1 & 0x0000FFFF + IntOp $5 $2 >> 16 + IntOp $5 $5 & 0x0000FFFF + IntOp $6 $2 & 0x0000FFFF + StrCpy $0 '$3.$4.$5.$6' + goto FileFunc_GetFileVersion_end + + FileFunc_GetFileVersion_error: + SetErrors + StrCpy $0 '' + + FileFunc_GetFileVersion_end: + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetExeName `!insertmacro GetExeNameCall` +!define un.GetExeName `!insertmacro GetExeNameCall` + +!macro GetExeName +!macroend + +!macro un.GetExeName +!macroend + +!macro GetExeName_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Push $0 + Push $1 + Push $2 + System::Call 'kernel32::GetModuleFileName(p 0, t.r0, i ${NSIS_MAX_STRLEN})' + System::Call 'kernel32::GetLongPathName(t r0, t.r1, i ${NSIS_MAX_STRLEN})i.r2' + StrCmp $2 error +2 + StrCpy $0 $1 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetExePath `!insertmacro GetExePathCall` +!define un.GetExePath `!insertmacro GetExePathCall` + +!macro GetExePath +!macroend + +!macro un.GetExePath +!macroend + +!macro GetExePath_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Push $0 + Push $1 + Push $2 + StrCpy $0 $EXEDIR + System::Call 'kernel32::GetLongPathName(t r0, t.r1, i ${NSIS_MAX_STRLEN})i.r2' + StrCmp $2 error +2 + StrCpy $0 $1 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetParameters `!insertmacro GetParametersCall` +!define un.GetParameters `!insertmacro GetParametersCall` + +!macro GetParameters +!macroend + +!macro un.GetParameters +!macroend + +!macro GetParameters_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + ;cmdline-check + StrCmp $CMDLINE "" 0 +3 + Push "" + Return + + ;vars + Push $0 ;tmp + Push $1 ;length + Push $2 ;parameter offset + Push $3 ;separator + + ;length/offset + StrLen $1 $CMDLINE + StrCpy $2 2 ;start with third character + + ;separator + StrCpy $3 $CMDLINE 1 ;first character + StrCmp $3 '"' +2 + StrCpy $3 ' ' + + FileFunc_GetParameters_token: ;finding second separator + IntCmp $2 $1 FileFunc_GetParameters_strip 0 FileFunc_GetParameters_strip + StrCpy $0 $CMDLINE 1 $2 + IntOp $2 $2 + 1 + StrCmp $3 $0 0 FileFunc_GetParameters_token + + FileFunc_GetParameters_strip: ;strip white space + IntCmp $2 $1 FileFunc_GetParameters_copy 0 FileFunc_GetParameters_copy + StrCpy $0 $CMDLINE 1 $2 + StrCmp $0 ' ' 0 FileFunc_GetParameters_copy + IntOp $2 $2 + 1 + Goto FileFunc_GetParameters_strip + + FileFunc_GetParameters_copy: + StrCpy $0 $CMDLINE "" $2 + + ;strip white spaces from end + FileFunc_GetParameters_rstrip: + StrCpy $1 $0 1 -1 + StrCmp $1 ' ' 0 FileFunc_GetParameters_done + StrCpy $0 $0 -1 + Goto FileFunc_GetParameters_rstrip + + FileFunc_GetParameters_done: + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!macro GetOptionsBody _FILEFUNC_S + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + ClearErrors + + StrCpy $2 $1 '' 1 + StrCpy $1 $1 1 + StrLen $3 $2 + StrCpy $7 0 + + FileFunc_GetOptions${_FILEFUNC_S}_begin: + StrCpy $4 -1 + StrCpy $6 '' + + FileFunc_GetOptions${_FILEFUNC_S}_quote: + IntOp $4 $4 + 1 + StrCpy $5 $0 1 $4 + StrCmp${_FILEFUNC_S} $5$7 '0' FileFunc_GetOptions${_FILEFUNC_S}_notfound + StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_trimright + StrCmp${_FILEFUNC_S} $5 '"' 0 +7 + StrCmp${_FILEFUNC_S} $6 '' 0 +3 + StrCpy $6 '"' + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 '"' 0 +3 + StrCpy $6 '' + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $5 `'` 0 +7 + StrCmp${_FILEFUNC_S} $6 `` 0 +3 + StrCpy $6 `'` + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 `'` 0 +3 + StrCpy $6 `` + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $5 '`' 0 +7 + StrCmp${_FILEFUNC_S} $6 '' 0 +3 + StrCpy $6 '`' + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 '`' 0 +3 + StrCpy $6 '' + goto FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 '"' FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 `'` FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $6 '`' FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $5 $1 0 FileFunc_GetOptions${_FILEFUNC_S}_quote + StrCmp${_FILEFUNC_S} $7 0 FileFunc_GetOptions${_FILEFUNC_S}_trimleft FileFunc_GetOptions${_FILEFUNC_S}_trimright + + FileFunc_GetOptions${_FILEFUNC_S}_trimleft: + IntOp $4 $4 + 1 + StrCpy $5 $0 $3 $4 + StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_notfound + StrCmp${_FILEFUNC_S} $5 $2 0 FileFunc_GetOptions${_FILEFUNC_S}_quote + IntOp $4 $4 + $3 + StrCpy $0 $0 '' $4 + StrCpy $4 $0 1 + StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 + StrCpy $0 $0 '' 1 + goto -3 + StrCpy $7 1 + goto FileFunc_GetOptions${_FILEFUNC_S}_begin + + FileFunc_GetOptions${_FILEFUNC_S}_trimright: + StrCpy $0 $0 $4 + StrCpy $4 $0 1 -1 + StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 + StrCpy $0 $0 -1 + goto -3 + StrCpy $3 $0 1 + StrCpy $4 $0 1 -1 + StrCmp${_FILEFUNC_S} $3 $4 0 FileFunc_GetOptions${_FILEFUNC_S}_end + StrCmp${_FILEFUNC_S} $3 '"' +3 + StrCmp${_FILEFUNC_S} $3 `'` +2 + StrCmp${_FILEFUNC_S} $3 '`' 0 FileFunc_GetOptions${_FILEFUNC_S}_end + StrCpy $0 $0 -1 1 + goto FileFunc_GetOptions${_FILEFUNC_S}_end + + FileFunc_GetOptions${_FILEFUNC_S}_notfound: + SetErrors + StrCpy $0 '' + + FileFunc_GetOptions${_FILEFUNC_S}_end: + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + +!macroend + +!define GetOptions `!insertmacro GetOptionsCall` +!define un.GetOptions `!insertmacro GetOptionsCall` + +!macro GetOptions +!macroend + +!macro un.GetOptions +!macroend + +!macro GetOptions_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + !insertmacro GetOptionsBody '' + + !verbose pop +!macroend + +!define GetOptionsS `!insertmacro GetOptionsSCall` +!define un.GetOptionsS `!insertmacro GetOptionsSCall` + +!macro GetOptionsS +!macroend + +!macro un.GetOptionsS +!macroend + +!macro GetOptionsS_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + !insertmacro GetOptionsBody 'S' + + !verbose pop +!macroend + +!define GetRoot `!insertmacro GetRootCall` +!define un.GetRoot `!insertmacro GetRootCall` + +!macro GetRoot +!macroend + +!macro un.GetRoot +!macroend + +!macro GetRoot_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + Push $3 + + StrCpy $1 $0 2 + StrCmp $1 '\\' FileFunc_GetRoot_UNC + StrCpy $2 $1 1 1 + StrCmp $2 ':' 0 FileFunc_GetRoot_empty + StrCpy $0 $1 + goto FileFunc_GetRoot_end + + FileFunc_GetRoot_UNC: + StrCpy $2 1 + StrCpy $3 '' + + FileFunc_GetRoot_loop: + IntOp $2 $2 + 1 + StrCpy $1 $0 1 $2 + StrCmp $1$3 '' FileFunc_GetRoot_empty + StrCmp $1 '' +5 + StrCmp $1 '\' 0 FileFunc_GetRoot_loop + StrCmp $3 '1' +3 + StrCpy $3 '1' + goto FileFunc_GetRoot_loop + StrCpy $0 $0 $2 + StrCpy $2 $0 1 -1 + StrCmp $2 '\' 0 FileFunc_GetRoot_end + + FileFunc_GetRoot_empty: + StrCpy $0 '' + + FileFunc_GetRoot_end: + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetParent `!insertmacro GetParentCall` +!define un.GetParent `!insertmacro GetParentCall` + +!macro GetParent +!macroend + +!macro un.GetParent +!macroend + +!macro GetParent_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + + StrCpy $2 $0 1 -1 + StrCmp $2 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + + StrCpy $1 0 + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '\' +2 + StrCmp $2 '' 0 -3 + StrCpy $0 $0 $1 + + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetFileName `!insertmacro GetFileNameCall` +!define un.GetFileName `!insertmacro GetFileNameCall` + +!macro GetFileName +!macroend + +!macro un.GetFileName +!macroend + +!macro GetFileName_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + + StrCpy $2 $0 1 -1 + StrCmp $2 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + + StrCpy $1 0 + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '' FileFunc_GetFileName_end + StrCmp $2 '\' 0 -3 + IntOp $1 $1 + 1 + StrCpy $0 $0 '' $1 + + FileFunc_GetFileName_end: + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetBaseName `!insertmacro GetBaseNameCall` +!define un.GetBaseName `!insertmacro GetBaseNameCall` + +!macro GetBaseName +!macroend + +!macro un.GetBaseName +!macroend + +!macro GetBaseName_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + Push $3 + + StrCpy $1 0 + StrCpy $3 '' + + FileFunc_GetBaseName_loop: + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '' FileFunc_GetBaseName_trimpath + StrCmp $2 '\' FileFunc_GetBaseName_trimpath + StrCmp $3 'noext' FileFunc_GetBaseName_loop + StrCmp $2 '.' 0 FileFunc_GetBaseName_loop + StrCpy $0 $0 $1 + StrCpy $3 'noext' + StrCpy $1 0 + goto FileFunc_GetBaseName_loop + + FileFunc_GetBaseName_trimpath: + StrCmp $1 -1 FileFunc_GetBaseName_empty + IntOp $1 $1 + 1 + StrCpy $0 $0 '' $1 + goto FileFunc_GetBaseName_end + + FileFunc_GetBaseName_empty: + StrCpy $0 '' + + FileFunc_GetBaseName_end: + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define GetFileExt `!insertmacro GetFileExtCall` +!define un.GetFileExt `!insertmacro GetFileExtCall` + +!macro GetFileExt +!macroend + +!macro un.GetFileExt +!macroend + +!macro GetFileExt_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + + StrCpy $1 0 + + FileFunc_GetFileExt_loop: + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '' FileFunc_GetFileExt_empty + StrCmp $2 '\' FileFunc_GetFileExt_empty + StrCmp $2 '.' 0 FileFunc_GetFileExt_loop + + StrCmp $1 -1 FileFunc_GetFileExt_empty + IntOp $1 $1 + 1 + StrCpy $0 $0 '' $1 + goto FileFunc_GetFileExt_end + + FileFunc_GetFileExt_empty: + StrCpy $0 '' + + FileFunc_GetFileExt_end: + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define BannerTrimPath `!insertmacro BannerTrimPathCall` +!define un.BannerTrimPath `!insertmacro BannerTrimPathCall` + +!macro BannerTrimPath +!macroend + +!macro un.BannerTrimPath +!macroend + +!macro BannerTrimPath_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + + StrCpy $3 $1 1 -1 + IntOp $1 $1 + 0 + StrLen $2 $0 + IntCmp $2 $1 FileFunc_BannerTrimPath_end FileFunc_BannerTrimPath_end + IntOp $1 $1 - 3 + IntCmp $1 0 FileFunc_BannerTrimPath_empty FileFunc_BannerTrimPath_empty + StrCmp $3 'A' FileFunc_BannerTrimPath_A-trim + StrCmp $3 'B' FileFunc_BannerTrimPath_B-trim + StrCmp $3 'C' FileFunc_BannerTrimPath_C-trim + StrCmp $3 'D' FileFunc_BannerTrimPath_D-trim + + FileFunc_BannerTrimPath_A-trim: + StrCpy $3 $0 1 1 + StrCpy $2 0 + StrCmp $3 ':' 0 +2 + IntOp $2 $2 + 2 + + FileFunc_BannerTrimPath_loopleft: + IntOp $2 $2 + 1 + StrCpy $3 $0 1 $2 + StrCmp $2 $1 FileFunc_BannerTrimPath_C-trim + StrCmp $3 '\' 0 FileFunc_BannerTrimPath_loopleft + StrCpy $3 $0 $2 + IntOp $2 $2 - $1 + IntCmp $2 0 FileFunc_BannerTrimPath_B-trim 0 FileFunc_BannerTrimPath_B-trim + + FileFunc_BannerTrimPath_loopright: + IntOp $2 $2 + 1 + StrCpy $4 $0 1 $2 + StrCmp $2 0 FileFunc_BannerTrimPath_B-trim + StrCmp $4 '\' 0 FileFunc_BannerTrimPath_loopright + StrCpy $4 $0 '' $2 + StrCpy $0 '$3\...$4' + goto FileFunc_BannerTrimPath_end + + FileFunc_BannerTrimPath_B-trim: + StrCpy $2 $1 + IntOp $2 $2 - 1 + StrCmp $2 -1 FileFunc_BannerTrimPath_C-trim + StrCpy $3 $0 1 $2 + StrCmp $3 '\' 0 -3 + StrCpy $0 $0 $2 + StrCpy $0 '$0\...' + goto FileFunc_BannerTrimPath_end + + FileFunc_BannerTrimPath_C-trim: + StrCpy $0 $0 $1 + StrCpy $0 '$0...' + goto FileFunc_BannerTrimPath_end + + FileFunc_BannerTrimPath_D-trim: + StrCpy $3 -1 + IntOp $3 $3 - 1 + StrCmp $3 -$2 FileFunc_BannerTrimPath_C-trim + StrCpy $4 $0 1 $3 + StrCmp $4 '\' 0 -3 + StrCpy $4 $0 '' $3 + IntOp $3 $1 + $3 + IntCmp $3 2 FileFunc_BannerTrimPath_C-trim FileFunc_BannerTrimPath_C-trim + StrCpy $0 $0 $3 + StrCpy $0 '$0...$4' + goto FileFunc_BannerTrimPath_end + + FileFunc_BannerTrimPath_empty: + StrCpy $0 '' + + FileFunc_BannerTrimPath_end: + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define DirState `!insertmacro DirStateCall` +!define un.DirState `!insertmacro DirStateCall` + +!macro DirState +!macroend + +!macro un.DirState +!macroend + +!macro DirState_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + Exch $0 + Push $1 + ClearErrors + + FindFirst $1 $0 '$0\*.*' + IfErrors 0 +3 + StrCpy $0 -1 + goto FileFunc_DirState_end + StrCmp $0 '.' 0 +4 + FindNext $1 $0 + StrCmp $0 '..' 0 +2 + FindNext $1 $0 + FindClose $1 + IfErrors 0 +3 + StrCpy $0 0 + goto FileFunc_DirState_end + StrCpy $0 1 + + FileFunc_DirState_end: + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define RefreshShellIcons `!insertmacro RefreshShellIconsCall` +!define un.RefreshShellIcons `!insertmacro RefreshShellIconsCall` + +!macro RefreshShellIcons +!macroend + +!macro un.RefreshShellIcons +!macroend + +!macro RefreshShellIcons_ + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + + System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)' + + !verbose pop +!macroend + +!verbose pop +!endif diff --git a/tools/Include/InstallOptions.nsh b/tools/Include/InstallOptions.nsh new file mode 100644 index 0000000..04cd5b9 --- /dev/null +++ b/tools/Include/InstallOptions.nsh @@ -0,0 +1,244 @@ +/* + +InstallOptions.nsh +Macros and conversion functions for InstallOptions + +*/ + +!ifndef ___NSIS__INSTALL_OPTIONS__NSH___ +!define ___NSIS__INSTALL_OPTIONS__NSH___ + +!include LogicLib.nsh + +!macro INSTALLOPTIONS_FUNCTION_READ_CONVERT + !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS "" +!macroend + +!macro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT + !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS un. +!macroend + +!macro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT + !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO "" +!macroend + +!macro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT + !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO un. +!macroend + +!macro INSTALLOPTIONS_FUNCTION_NSIS2IO UNINSTALLER_FUNCPREFIX + + ; Convert an NSIS string to a form suitable for use by InstallOptions + ; Usage: + ; Push + ; Call Nsis2Io + ; Pop + + Function ${UNINSTALLER_FUNCPREFIX}Nsis2Io + + Exch $0 ; The source + Push $1 ; The output + Push $2 ; Temporary char + Push $3 ; Length + Push $4 ; Loop index + StrCpy $1 "" ; Initialise the output + + StrLen $3 $0 + IntOp $3 $3 - 1 + + ${For} $4 0 $3 + StrCpy $2 $0 1 $4 + ${If} $2 == '\' + StrCpy $2 '\\' + ${ElseIf} $2 == '$\r' + StrCpy $2 '\r' + ${ElseIf} $2 == '$\n' + StrCpy $2 '\n' + ${ElseIf} $2 == '$\t' + StrCpy $2 '\t' + ${EndIf} + StrCpy $1 $1$2 + ${Next} + + StrCpy $0 $1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + FunctionEnd + +!macroend + +!macro INSTALLOPTIONS_FUNCTION_IO2NSIS UNINSTALLER_FUNCPREFIX + + ; Convert an InstallOptions string to a form suitable for use by NSIS + ; Usage: + ; Push + ; Call Io2Nsis + ; Pop + + Function ${UNINSTALLER_FUNCPREFIX}Io2Nsis + + Exch $0 ; The source + Push $1 ; The output + Push $2 ; Temporary char + Push $3 ; Length + Push $4 ; Loop index + StrCpy $1 "" ; Initialise the output + + StrLen $3 $0 + IntOp $3 $3 - 1 + + ${For} $4 0 $3 + StrCpy $2 $0 2 $4 + ${If} $2 == '\\' + StrCpy $2 '\' + IntOp $4 $4 + 1 + ${ElseIf} $2 == '\r' + StrCpy $2 '$\r' + IntOp $4 $4 + 1 + ${ElseIf} $2 == '\n' + StrCpy $2 '$\n' + IntOp $4 $4 + 1 + ${ElseIf} $2 == '\t' + StrCpy $2 '$\t' + IntOp $4 $4 + 1 + ${EndIf} + StrCpy $2 $2 1 + StrCpy $1 $1$2 + ${Next} + + StrCpy $0 $1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + FunctionEnd + +!macroend + +!macro INSTALLOPTIONS_EXTRACT FILE + + InitPluginsDir + File "/oname=$PLUGINSDIR\${FILE}" "${FILE}" +!ifdef NSIS_UNICODE + InstallOptions::make_unicode "$PLUGINSDIR\${FILE}" +!endif + !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)" + +!macroend + +!macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME + + InitPluginsDir + File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}" +!ifdef NSIS_UNICODE + InstallOptions::make_unicode "$PLUGINSDIR\${FILENAME}" +!endif + !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)" + +!macroend + +!macro INSTALLOPTIONS_DISPLAY FILE + + Push $0 + + InstallOptions::dialog "$PLUGINSDIR\${FILE}" + Pop $0 + + Pop $0 + +!macroend + +!macro INSTALLOPTIONS_DISPLAY_RETURN FILE + + InstallOptions::dialog "$PLUGINSDIR\${FILE}" + +!macroend + +!macro INSTALLOPTIONS_INITDIALOG FILE + + InstallOptions::initDialog "$PLUGINSDIR\${FILE}" + +!macroend + +!macro INSTALLOPTIONS_SHOW + + Push $0 + + InstallOptions::show + Pop $0 + + Pop $0 + +!macroend + +!macro INSTALLOPTIONS_SHOW_RETURN + + InstallOptions::show + +!macroend + +!macro INSTALLOPTIONS_READ VAR FILE SECTION KEY + + ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" + +!macroend + +!macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE + + WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}" + +!macroend + +!macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY + + ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" + Push ${VAR} + Call Io2Nsis + Pop ${VAR} + +!macroend + +!macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY + + ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" + Push ${VAR} + Call un.Io2Nsis + Pop ${VAR} + +!macroend + +!macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE + + Push $0 + StrCpy $0 "${VALUE}" + Push $0 + Call Nsis2Io + Pop $0 + + WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0 + + Pop $0 + +!macroend + +!macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE + + Push $0 + StrCpy $0 "${VALUE}" + Push $0 + Call un.Nsis2Io + Pop $0 + + WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0 + + Pop $0 + +!macroend + +!endif # ___NSIS__INSTALL_OPTIONS__NSH___ diff --git a/tools/Include/Integration.nsh b/tools/Include/Integration.nsh new file mode 100644 index 0000000..f25c312 --- /dev/null +++ b/tools/Include/Integration.nsh @@ -0,0 +1,44 @@ +!verbose push 3 +!ifndef INTEGRATION_INCLUDED +!define INTEGRATION_INCLUDED 1 + +!include "Util.nsh" + + +!define NotifyShell_AssocChanged `System::Call 'SHELL32::SHChangeNotify(i0x8000000,i0,p0,p0)'` ; Notify the shell with SHCNE_ASSOCCHANGED + + +!define UnpinShortcut "!insertmacro UnpinShortcut " +!macro UnpinShortcut lnkpath +Push "${lnkpath}" +${CallArtificialFunction} UnpinShortcut_Implementation +!macroend +!macro UnpinShortcut_Implementation +!include "LogicLib.nsh" +!include "Win\COM.nsh" +Exch $0 +Push $1 +!insertmacro ComHlpr_CreateInProcInstance ${CLSID_StartMenuPin} ${IID_IStartMenuPinnedList} r1 "" +${If} $1 P<> 0 + System::Call 'SHELL32::SHCreateItemFromParsingName(wr0,p0,g"${IID_IShellItem}",*p0r0)' + ${If} $0 P<> 0 + ${IStartMenuPinnedList::RemoveFromList} $1 '(r0)' + ${IUnknown::Release} $0 "" + ${EndIf} + ${IUnknown::Release} $1 "" +!ifdef NSIS_IX86 | NSIS_AMD64 +${Else} + !insertmacro ComHlpr_CreateInProcInstance ${CLSID_StartMenuPin} "{ec35e37a-6579-4f3c-93cd-6e62c4ef7636}" r1 "" + ${If} $1 P<> 0 + ExecShellWait /INVOKEIDLIST "unpin" $0 ; WinXP + ${IUnknown::Release} $1 "" + ${EndIf} +!endif +${EndIf} +Pop $1 +Pop $0 +!macroend + + +!endif #!INCLUDED +!verbose pop diff --git a/tools/Include/LangFile.nsh b/tools/Include/LangFile.nsh new file mode 100644 index 0000000..767028b --- /dev/null +++ b/tools/Include/LangFile.nsh @@ -0,0 +1,191 @@ +/* + +LangFile.nsh + +Header file to create language files that can be +included with a single command. + +Copyright 2008-2023 Joost Verburg, Anders Kjersem + +* Either LANGFILE_INCLUDE or LANGFILE_INCLUDE_WITHDEFAULT + can be called from the script to include a language file. + + - LANGFILE_INCLUDE takes the language file name as parameter. + - LANGFILE_INCLUDE_WITHDEFAULT takes as additional second + parameter, the default language file to load missing strings from. + +* Language strings in the language file have the format: + ${LangFileString} LANGSTRING_NAME "Text" + +* There are two types of language header files: + + - NSIS multi-lang support; these must start with the LANGFILE macro and + provide strings for features like MUI and MultiUser. If you are adding + support for a new language to NSIS you should make a copy of English.nsh + and translate this .nsh along with the .nlf. + - Custom installer strings; these must start with the LANGFILE_EXT macro and + contain translated versions of + custom strings used in a particular installer. + This is useful if you want to put the translations for each language in + their own separate file. + +* Example: + + ; Setup.nsi + !include "MUI.nsh" + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_LANGUAGE "Danish" + !insertmacro LANGFILE_INCLUDE "DanishExtra.nsh" + !insertmacro MUI_LANGUAGE "Swedish" + !insertmacro LANGFILE_INCLUDE "SwedishExtra.nsh" + Section + MessageBox MB_OK "$(myCustomString)" + SectionEnd + + ; SwedishExtra.nsh + !insertmacro LANGFILE_EXT Swedish + ${LangFileString} myCustomString "Bork bork" + +*/ + +!ifndef LANGFILE_INCLUDED +!define LANGFILE_INCLUDED + +!macro LANGFILE_INCLUDE FILENAME + + ;Called from script: include a language file + + !ifdef LangFileString + !undef LangFileString + !endif + + !define LangFileString "!insertmacro LANGFILE_SETSTRING" + + !define LANGFILE_SETNAMES + !include "${FILENAME}" + !undef LANGFILE_SETNAMES + + ;Create language strings + !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING" + !include "${FILENAME}" + +!macroend + +!macro LANGFILE_INCLUDE_WITHDEFAULT FILENAME FILENAME_DEFAULT + + ;Called from script: include a language file + ;Obtains missing strings from a default file + + !ifdef LangFileString + !undef LangFileString + !endif + + !define LangFileString "!insertmacro LANGFILE_SETSTRING" + + !define LANGFILE_SETNAMES + !include "${FILENAME}" + !undef LANGFILE_SETNAMES + + ;Include default language for missing strings + !define LANGFILE_PRIV_INCLUDEISFALLBACK "${FILENAME_DEFAULT}" + !include "${FILENAME_DEFAULT}" + !undef LANGFILE_PRIV_INCLUDEISFALLBACK + + ;Create language strings + !define /redef LangFileString "!insertmacro LANGFILE_LANGSTRING" + !include "${FILENAME_DEFAULT}" + +!macroend + +!macro LANGFILE NLFID ENGNAME NATIVENAME NATIVEASCIINAME + + ;Start of standard NSIS language file + + ; NLFID: Must match the name of the .nlf file + ; ENGNAME: English name of language, "=" if it is the same as NLFID + ; NATIVENAME: Native name of language. (In Unicode) + ; NATIVEASCIINAME: Native name of language using only ASCII, "=" if it is the same as NATIVENAME + + ; Example: LANGFILE "Swedish" = "Svenska" = (This is the same as LANGFILE "Swedish" "Swedish" "Svenska" "Svenska") + ; For more examples, see French.nsh, Greek.nsh and PortugueseBR.nsh + + !ifdef LANGFILE_SETNAMES + + !ifdef LANGFILE_IDNAME + !undef LANGFILE_IDNAME + !endif + + !define LANGFILE_IDNAME "${NLFID}" + + ; ModernUI or the .nsi can change LANGFILE_LANGDLL_FMT if desired + !ifndef LANGFILE_LANGDLL_FMT + !ifndef NSIS_UNICODE + !define LANGFILE_LANGDLL_FMT "%ENGNAME% / %NATIVEASCIINAME%" + !endif + !define /ifndef LANGFILE_LANGDLL_FMT "%NATIVENAME%" + !endif + + !ifndef "LANGFILE_${NLFID}_NAME" + !if "${ENGNAME}" == "=" + !define /redef ENGNAME "${NLFID}" + !endif + !if "${NATIVEASCIINAME}" == "=" + !define /redef NATIVEASCIINAME "${NATIVENAME}" + !endif + + !define "LANGFILE_${NLFID}_ENGLISHNAME" "${ENGNAME}" + !ifdef NSIS_UNICODE + !define "LANGFILE_${NLFID}_NAME" "${NATIVENAME}" + !else + !define "LANGFILE_${NLFID}_NAME" "${NATIVEASCIINAME}" + !endif + + !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_LANGDLL_FMT}" %NATIVEASCIINAME% "${NATIVEASCIINAME}" + !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %NATIVENAME% "${NATIVENAME}" + !searchreplace LANGFILE_${NLFID}_LANGDLL "${LANGFILE_${NLFID}_LANGDLL}" %ENGNAME% "${ENGNAME}" + + !endif + + !endif + +!macroend + +!macro LANGFILE_EXT IDNAME + + ;Start of installer language file + + !ifdef LANGFILE_SETNAMES + + !ifdef LANGFILE_IDNAME + !undef LANGFILE_IDNAME + !endif + + !define LANGFILE_IDNAME "${IDNAME}" + + !endif + +!macroend + +!macro LANGFILE_SETSTRING NAME VALUE + + ;Set define with translated string + + !ifndef ${NAME} + !define "${NAME}" "${VALUE}" + !ifdef LANGFILE_PRIV_INCLUDEISFALLBACK + !warning 'LangString "${NAME}" for language ${LANGFILE_IDNAME} is missing, using fallback from "${LANGFILE_PRIV_INCLUDEISFALLBACK}"' + !endif + !endif + +!macroend + +!macro LANGFILE_LANGSTRING NAME DUMMY + + ;Create a language string from a define and undefine + + LangString "${NAME}" "${LANG_${LANGFILE_IDNAME}}" "${${NAME}}" + !undef "${NAME}" + +!macroend + +!endif diff --git a/tools/Include/Library.nsh b/tools/Include/Library.nsh new file mode 100644 index 0000000..ff3ee33 --- /dev/null +++ b/tools/Include/Library.nsh @@ -0,0 +1,885 @@ +# +# Library.nsh +# +# A system for the installation and uninstallation of dynamic +# link libraries (DLL) and type libraries (TLB). Using this +# system you can handle the complete setup with one single +# line of code: +# +# * File copying +# * File copying on reboot +# * Version checks +# * Registration and unregistration +# * Registration and unregistration on reboot +# * Shared DLL counting +# * Windows File Protection checks +# +# For more information, read appendix B in the documentation. +# + +!verbose push +!verbose 3 + +!ifndef LIB_INCLUDED + +!define LIB_INCLUDED + +!ifndef SHCNE_ASSOCCHANGED + !define SHCNE_ASSOCCHANGED 0x08000000 +!endif +!ifndef SHCNF_IDLIST + !define SHCNF_IDLIST 0x0000 +!endif + +!define REGTOOL_VERSION v3 +!define REGTOOL_KEY NSIS.Library.RegTool.${REGTOOL_VERSION} + +!include LogicLib.nsh +!include x64.nsh + +### GetParent macro, don't pass $1 or $2 as INPUT or OUTPUT +!macro __InstallLib_Helper_GetParent INPUT OUTPUT + + # Copied from FileFunc.nsh + + StrCpy ${OUTPUT} ${INPUT} + + Push $1 + Push $2 + + StrCpy $2 ${OUTPUT} 1 -1 + StrCmp $2 '\' 0 +3 + StrCpy ${OUTPUT} ${OUTPUT} -1 + goto -3 + + StrCpy $1 0 + IntOp $1 $1 - 1 + StrCpy $2 ${OUTPUT} 1 $1 + StrCmp $2 '\' +2 + StrCmp $2 '' 0 -3 + StrCpy ${OUTPUT} ${OUTPUT} $1 + + Pop $2 + Pop $1 + +!macroend + +### Initialize session id (GUID) +!macro __InstallLib_Helper_InitSession + + !ifndef __InstallLib_SessionGUID_Defined + + !define __InstallLib_SessionGUID_Defined + + Var /GLOBAL __INSTALLLLIB_SESSIONGUID + + !endif + + !define __InstallLib_Helper_InitSession_Label "Library_${__FILE__}${__LINE__}" + + StrCmp $__INSTALLLLIB_SESSIONGUID '' 0 "${__InstallLib_Helper_InitSession_Label}" + + System::Call 'ole32::CoCreateGuid(g .s)' + Pop $__INSTALLLLIB_SESSIONGUID + + "${__InstallLib_Helper_InitSession_Label}:" + + !undef __InstallLib_Helper_InitSession_Label + +!macroend + +### Add a RegTool entry to register after reboot +!macro __InstallLib_Helper_AddRegToolEntry mode filename tempdir + + Push $R0 + Push $R1 + Push $R2 + Push $R3 + + ;------------------------ + ;Copy the parameters + + Push "${filename}" + Push "${tempdir}" + + Pop $R2 ; temporary directory + Pop $R1 ; file name to register + + ;------------------------ + ;Initialize session id + + !insertmacro __InstallLib_Helper_InitSession + + ;------------------------ + ;Advance counter + + StrCpy $R0 0 + ReadRegDWORD $R0 HKLM "Software\${REGTOOL_KEY}\$__INSTALLLLIB_SESSIONGUID" "count" + IntOp $R0 $R0 + 1 + WriteRegDWORD HKLM "Software\${REGTOOL_KEY}\$__INSTALLLLIB_SESSIONGUID" "count" "$R0" + + ;------------------------ + ;Setup RegTool + + !if ! /FileExists "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin" + !error "Missing RegTool for ${NSIS_CPU}!" + !endif + + ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "${REGTOOL_KEY}" + StrCpy $R3 $R3 -4 1 + IfFileExists $R3 +3 + + File /oname=$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \ + "${REGTOOL_KEY}" '"$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe" /S' + + ;------------------------ + ;Add RegTool entry + + WriteRegStr HKLM "Software\${REGTOOL_KEY}\$__INSTALLLLIB_SESSIONGUID" "$R0.file" "$R1" + WriteRegStr HKLM "Software\${REGTOOL_KEY}\$__INSTALLLLIB_SESSIONGUID" "$R0.mode" "${mode}" + + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + +!macroend + +!macro __InstallLib_Helper_CmpPackedVer64 oldhi oldlo newhi newlo jeq jle jgt + + IntCmpU ${oldhi} ${newhi} "0" "${jle}" "${jgt}" + IntCmpU ${oldlo} ${newlo} "${jeq}" "${jle}" "${jgt}" + +!macroend + +### Get library version +!macro __InstallLib_Helper_GetVersion TYPE FILE + + !if "${TYPE}" == "D" + !getdllversion /NoErrors /Packed "${FILE}" LIBRARY_VERSION_ + !else if "${TYPE}" == "T" + !gettlbversion /NoErrors /Packed "${FILE}" LIBRARY_VERSION_ + !endif + + ; Emulate the old LibraryLocal defines + !ifndef LIBRARY_VERSION_HIGH + !define LIBRARY_VERSION_FILENOTFOUND + !else if "${LIBRARY_VERSION_HIGH}" == "" + !define LIBRARY_VERSION_NONE + !undef LIBRARY_VERSION_HIGH + !undef LIBRARY_VERSION_LOW + !endif + +!macroend + +### Install library +!macro InstallLib libtype shared install localfile destfile tempbasedir + + !verbose push + !verbose 3 + + Push $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + + ;------------------------ + ;Define + + !define INSTALLLIB_UNIQUE "${__FILE__}${__LINE__}" + + !define INSTALLLIB_LIBTYPE_${libtype} + !define INSTALLLIB_LIBTYPE_SET INSTALLLIB_LIBTYPE_${libtype} + !define INSTALLLIB_SHARED_${shared} + !define INSTALLLIB_SHARED_SET INSTALLLIB_SHARED_${shared} + !define INSTALLLIB_INSTALL_${install} + !define INSTALLLIB_INSTALL_SET INSTALLLIB_INSTALL_${install} + + ;------------------------ + ;Validate + + !ifndef INSTALLLIB_LIBTYPE_DLL & INSTALLLIB_LIBTYPE_REGDLL & INSTALLLIB_LIBTYPE_TLB & \ + INSTALLLIB_LIBTYPE_REGDLLTLB & INSTALLLIB_LIBTYPE_REGEXE + !error "InstallLib: Incorrect setting for parameter: libtype" + !endif + + !ifndef INSTALLLIB_INSTALL_REBOOT_PROTECTED & INSTALLLIB_INSTALL_REBOOT_NOTPROTECTED & \ + INSTALLLIB_INSTALL_NOREBOOT_PROTECTED & INSTALLLIB_INSTALL_NOREBOOT_NOTPROTECTED + !error "InstallLib: Incorrect setting for parameter: install" + !endif + + ;------------------------ + ;x64 settings + + !ifdef LIBRARY_X64 + + ${DisableX64FSRedirection} + + !endif + + ;------------------------ + ;Copy the parameters used on run-time to a variable + ;This allows the usage of variables as parameter + + StrCpy $R4 "${destfile}" + StrCpy $R5 "${tempbasedir}" + + ;------------------------ + ;Shared library count + + !ifndef INSTALLLIB_SHARED_NOTSHARED + + StrCmp ${shared} "" 0 "installlib.noshareddllincrease_${INSTALLLIB_UNIQUE}" + + !ifdef LIBRARY_X64 + + SetRegView 64 + + !endif + + ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R4 + ClearErrors + IntOp $R0 $R0 + 1 + WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R4 $R0 + + !ifdef LIBRARY_X64 + + SetRegView lastused + + !endif + + "installlib.noshareddllincrease_${INSTALLLIB_UNIQUE}:" + + !endif + + ;------------------------ + ;Check Windows File Protection + + !ifdef INSTALLLIB_INSTALL_REBOOT_PROTECTED | INSTALLLIB_INSTALL_NOREBOOT_PROTECTED + + !define LIBRARY_DEFINE_DONE_LABEL + + System::Call "sfc::SfcIsFileProtected(i 0, w R4) i.R0" + + StrCmp $R0 "error" "installlib.notprotected_${INSTALLLIB_UNIQUE}" + StrCmp $R0 "0" "installlib.notprotected_${INSTALLLIB_UNIQUE}" + + Goto "installlib.done_${INSTALLLIB_UNIQUE}" + + "installlib.notprotected_${INSTALLLIB_UNIQUE}:" + + !endif + + ;------------------------ + ;Check file + + IfFileExists $R4 0 "installlib.copy_${INSTALLLIB_UNIQUE}" + + ;------------------------ + ;Get version information + + !ifndef LIBRARY_IGNORE_VERSION + + !insertmacro __InstallLib_Helper_GetVersion D "${LOCALFILE}" + + !ifdef LIBRARY_VERSION_FILENOTFOUND + !error "InstallLib: The library ${LOCALFILE} could not be found." + !endif + + !ifndef LIBRARY_VERSION_NONE + + !define LIBRARY_DEFINE_UPGRADE_LABEL + !define LIBRARY_DEFINE_REGISTER_LABEL + + StrCpy $R0 ${LIBRARY_VERSION_HIGH} + StrCpy $R1 ${LIBRARY_VERSION_LOW} + + GetDLLVersion $R4 $R2 $R3 + + !undef LIBRARY_VERSION_HIGH + !undef LIBRARY_VERSION_LOW + + !ifndef INSTALLLIB_LIBTYPE_TLB & INSTALLLIB_LIBTYPE_REGDLLTLB + + !ifdef LIBRARY_INSTALL_EQUAL_VERSION + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.upgrade_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !else + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !endif + + !else + + !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" + + !ifdef LIBRARY_VERSION_FILENOTFOUND + !error "InstallLib: The library ${LOCALFILE} could not be found." + !endif + + !ifndef LIBRARY_VERSION_NONE + + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 0 \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + + !else + + !ifdef LIBRARY_INSTALL_EQUAL_VERSION + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.upgrade_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !else + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !endif + + !endif + + !endif + + !else + + !undef LIBRARY_VERSION_NONE + + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + + !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" + + !endif + + !endif + + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + + !ifndef LIBRARY_VERSION_NONE + + !ifndef LIBRARY_DEFINE_UPGRADE_LABEL + + !define LIBRARY_DEFINE_UPGRADE_LABEL + + !endif + + !ifndef LIBRARY_DEFINE_REGISTER_LABEL + + !define LIBRARY_DEFINE_REGISTER_LABEL + + !endif + + StrCpy $R0 ${LIBRARY_VERSION_HIGH} + StrCpy $R1 ${LIBRARY_VERSION_LOW} + + TypeLib::GetLibVersion $R4 + Pop $R3 + Pop $R2 + + !ifdef LIBRARY_INSTALL_EQUAL_VERSION + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.upgrade_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !else + !insertmacro __InstallLib_Helper_CmpPackedVer64 $R0 $R1 $R2 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + !endif + + !undef LIBRARY_VERSION_HIGH + !undef LIBRARY_VERSION_LOW + + !else + + !undef LIBRARY_VERSION_NONE + + !endif + + !endif + + !endif ;~LIBRARY_IGNORE_VERSION + + ;------------------------ + ;Upgrade + + !ifdef LIBRARY_DEFINE_UPGRADE_LABEL + + !undef LIBRARY_DEFINE_UPGRADE_LABEL + + "installlib.upgrade_${INSTALLLIB_UNIQUE}:" + + !endif + + ;------------------------ + ;Copy + + !ifdef INSTALLLIB_INSTALL_NOREBOOT_PROTECTED | INSTALLLIB_INSTALL_NOREBOOT_NOTPROTECTED + + "installlib.copy_${INSTALLLIB_UNIQUE}:" + + StrCpy $R0 $R4 + Call ":installlib.file_${INSTALLLIB_UNIQUE}" + + !else + + !ifndef LIBRARY_DEFINE_REGISTER_LABEL + + !define LIBRARY_DEFINE_REGISTER_LABEL + + !endif + + !ifndef LIBRARY_DEFINE_DONE_LABEL + + !define LIBRARY_DEFINE_DONE_LABEL + + !endif + + ClearErrors + + StrCpy $R0 $R4 + Call ":installlib.file_${INSTALLLIB_UNIQUE}" + + IfErrors 0 "installlib.register_${INSTALLLIB_UNIQUE}" + + SetOverwrite lastused + + ;------------------------ + ;Copy on reboot + + GetTempFileName $R0 $R5 + Call ":installlib.file_${INSTALLLIB_UNIQUE}" + Rename /REBOOTOK $R0 $R4 + + ;------------------------ + ;Register on reboot + + Call ":installlib.regonreboot_${INSTALLLIB_UNIQUE}" + + Goto "installlib.done_${INSTALLLIB_UNIQUE}" + + "installlib.copy_${INSTALLLIB_UNIQUE}:" + StrCpy $R0 $R4 + Call ":installlib.file_${INSTALLLIB_UNIQUE}" + + !endif + + ;------------------------ + ;Register + + !ifdef LIBRARY_DEFINE_REGISTER_LABEL + + !undef LIBRARY_DEFINE_REGISTER_LABEL + + "installlib.register_${INSTALLLIB_UNIQUE}:" + + !endif + + !ifdef INSTALLLIB_LIBTYPE_REGDLL | INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB | INSTALLLIB_LIBTYPE_REGEXE + + !ifdef INSTALLLIB_INSTALL_REBOOT_PROTECTED | INSTALLLIB_INSTALL_REBOOT_NOTPROTECTED + + IfRebootFlag 0 "installlib.regnoreboot_${INSTALLLIB_UNIQUE}" + + Call ":installlib.regonreboot_${INSTALLLIB_UNIQUE}" + + Goto "installlib.registerfinish_${INSTALLLIB_UNIQUE}" + + "installlib.regnoreboot_${INSTALLLIB_UNIQUE}:" + + !endif + + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + + TypeLib::Register $R4 + + !endif + + !ifdef INSTALLLIB_LIBTYPE_REGDLL | INSTALLLIB_LIBTYPE_REGDLLTLB + + !ifndef LIBRARY_X64 + + RegDll $R4 + + !else + + ExecWait '"$SYSDIR\regsvr32.exe" /s "$R4"' + + !endif + + !endif + + !ifdef INSTALLLIB_LIBTYPE_REGEXE + + ExecWait '"$R4" /regserver' + + !endif + + !ifdef INSTALLLIB_INSTALL_REBOOT_PROTECTED | INSTALLLIB_INSTALL_REBOOT_NOTPROTECTED + + "installlib.registerfinish_${INSTALLLIB_UNIQUE}:" + + !endif + + !endif + + !ifdef LIBRARY_SHELL_EXTENSION + + System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' + + !endif + + !ifdef LIBRARY_COM + + System::Call 'Ole32::CoFreeUnusedLibraries()' + + !endif + + ;------------------------ + ;Done + + !ifdef LIBRARY_DEFINE_DONE_LABEL + + !undef LIBRARY_DEFINE_DONE_LABEL + + "installlib.done_${INSTALLLIB_UNIQUE}:" + + !endif + + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + + ;------------------------ + ;End + + Goto "installlib.end_${INSTALLLIB_UNIQUE}" + + ;------------------------ + ;Extract + + !ifdef INSTALLLIB_INSTALL_REBOOT_PROTECTED | INSTALLLIB_INSTALL_REBOOT_NOTPROTECTED + + SetOverwrite try + + !else + + SetOverwrite on + + !endif + + "installlib.file_${INSTALLLIB_UNIQUE}:" + SetFileAttributes $R0 FILE_ATTRIBUTE_NORMAL + ClearErrors + File /oname=$R0 "${LOCALFILE}" + Return + + SetOverwrite lastused + + ;------------------------ + ;Register on reboot + + !ifdef INSTALLLIB_INSTALL_REBOOT_PROTECTED | INSTALLLIB_INSTALL_REBOOT_NOTPROTECTED + + "installlib.regonreboot_${INSTALLLIB_UNIQUE}:" + + !ifdef INSTALLLIB_LIBTYPE_REGDLL | INSTALLLIB_LIBTYPE_REGDLLTLB + !ifndef LIBRARY_X64 + !insertmacro __InstallLib_Helper_AddRegToolEntry 'D' "$R4" "$R5" + !else + !insertmacro __InstallLib_Helper_AddRegToolEntry 'DX' "$R4" "$R5" + !endif + !endif + + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + !insertmacro __InstallLib_Helper_AddRegToolEntry 'T' "$R4" "$R5" + !endif + + !ifdef INSTALLLIB_LIBTYPE_REGEXE + !insertmacro __InstallLib_Helper_AddRegToolEntry 'E' "$R4" "$R5" + !endif + + Return + + !endif + + ;------------------------ + ;End label + + "installlib.end_${INSTALLLIB_UNIQUE}:" + + !ifdef LIBRARY_X64 + + ${EnableX64FSRedirection} + + !endif + + ;------------------------ + ;Undefine + + !undef INSTALLLIB_UNIQUE + + !undef ${INSTALLLIB_LIBTYPE_SET} + !undef INSTALLLIB_LIBTYPE_SET + !undef ${INSTALLLIB_SHARED_SET} + !undef INSTALLLIB_SHARED_SET + !undef ${INSTALLLIB_INSTALL_SET} + !undef INSTALLLIB_INSTALL_SET + + !verbose pop + +!macroend + +### Uninstall library +!macro UnInstallLib libtype shared uninstall file + + !verbose push + !verbose 3 + + Push $R0 + Push $R1 + + ;------------------------ + ;Define + + !define UNINSTALLLIB_UNIQUE "${__FILE__}${__LINE__}" + + !define UNINSTALLLIB_LIBTYPE_${libtype} + !define UNINSTALLLIB_LIBTYPE_SET UNINSTALLLIB_LIBTYPE_${libtype} + !define UNINSTALLLIB_SHARED_${shared} + !define UNINSTALLLIB_SHARED_SET UNINSTALLLIB_SHARED_${shared} + !define UNINSTALLLIB_UNINSTALL_${uninstall} + !define UNINSTALLLIB_UNINSTALL_SET UNINSTALLLIB_UNINSTALL_${uninstall} + + ;------------------------ + ;Validate + + !ifndef UNINSTALLLIB_LIBTYPE_DLL & UNINSTALLLIB_LIBTYPE_REGDLL & UNINSTALLLIB_LIBTYPE_TLB & \ + UNINSTALLLIB_LIBTYPE_REGDLLTLB & UNINSTALLLIB_LIBTYPE_REGEXE + !error "UnInstallLib: Incorrect setting for parameter: libtype" + !endif + + !ifndef UNINSTALLLIB_SHARED_NOTSHARED & UNINSTALLLIB_SHARED_SHARED + !error "UnInstallLib: Incorrect setting for parameter: shared" + !endif + + !ifndef UNINSTALLLIB_UNINSTALL_NOREMOVE & UNINSTALLLIB_UNINSTALL_REBOOT_PROTECTED & \ + UNINSTALLLIB_UNINSTALL_REBOOT_NOTPROTECTED & UNINSTALLLIB_UNINSTALL_NOREBOOT_PROTECTED & \ + UNINSTALLLIB_UNINSTALL_NOREBOOT_NOTPROTECTED + !error "UnInstallLib: Incorrect setting for parameter: uninstall" + !endif + + ;------------------------ + ;x64 settings + + !ifdef LIBRARY_X64 + + ${DisableX64FSRedirection} + + !endif + + ;------------------------ + ;Copy the parameters used on run-time to a variable + ;This allows the usage of variables as parameter + + StrCpy $R1 "${file}" + + ;------------------------ + ;Shared library count + + !ifdef UNINSTALLLIB_SHARED_SHARED + + !define UNINSTALLLIB_DONE_LABEL + + !ifdef LIBRARY_X64 + + SetRegView 64 + + !endif + + ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 + StrCmp $R0 "" "uninstalllib.shareddlldone_${UNINSTALLLIB_UNIQUE}" + + IntOp $R0 $R0 - 1 + IntCmp $R0 0 "uninstalllib.shareddllremove_${UNINSTALLLIB_UNIQUE}" \ + "uninstalllib.shareddllremove_${UNINSTALLLIB_UNIQUE}" "uninstalllib.shareddllinuse_${UNINSTALLLIB_UNIQUE}" + + "uninstalllib.shareddllremove_${UNINSTALLLIB_UNIQUE}:" + DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 + !ifndef UNINSTALLLIB_SHARED_SHAREDNOREMOVE + Goto "uninstalllib.shareddlldone_${UNINSTALLLIB_UNIQUE}" + !endif + + "uninstalllib.shareddllinuse_${UNINSTALLLIB_UNIQUE}:" + WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0 + + !ifdef LIBRARY_X64 + + SetRegView lastused + + !endif + + Goto "uninstalllib.done_${UNINSTALLLIB_UNIQUE}" + + "uninstalllib.shareddlldone_${UNINSTALLLIB_UNIQUE}:" + + !ifdef LIBRARY_X64 + + SetRegView lastused + + !endif + + !endif + + ;------------------------ + ;Remove + + !ifndef UNINSTALLLIB_UNINSTALL_NOREMOVE + + ;------------------------ + ;Check Windows File Protection + + !ifdef UNINSTALLLIB_UNINSTALL_REBOOT_PROTECTED | UNINSTALLLIB_UNINSTALL_NOREBOOT_PROTECTED + + !ifndef UNINSTALLLIB_DONE_LABEL + + !define UNINSTALLLIB_DONE_LABEL + + !endif + + System::Call "sfc::SfcIsFileProtected(i 0, w $R1) i.R0" + + StrCmp $R0 "error" "uninstalllib.notprotected_${UNINSTALLLIB_UNIQUE}" + StrCmp $R0 "0" "uninstalllib.notprotected_${UNINSTALLLIB_UNIQUE}" + + Goto "uninstalllib.done_${UNINSTALLLIB_UNIQUE}" + + "uninstalllib.notprotected_${UNINSTALLLIB_UNIQUE}:" + + !endif + + ;------------------------ + ;Unregister + + !ifdef UNINSTALLLIB_LIBTYPE_REGDLL | UNINSTALLLIB_LIBTYPE_REGDLLTLB + + !ifndef LIBRARY_X64 + + UnRegDLL $R1 + + !else + + ExecWait '"$SYSDIR\regsvr32.exe" /s /u "$R1"' + + !endif + + !endif + + !ifdef UNINSTALLLIB_LIBTYPE_REGEXE + + ExecWait '"$R1" /unregserver' + + !endif + + !ifdef UNINSTALLLIB_LIBTYPE_TLB | UNINSTALLLIB_LIBTYPE_REGDLLTLB + + TypeLib::UnRegister $R1 + + !endif + + !ifdef LIBRARY_SHELL_EXTENSION + + System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' + + !endif + + !ifdef LIBRARY_COM + + System::Call 'Ole32::CoFreeUnusedLibraries()' + + !endif + + ;------------------------ + ;Delete + + Delete $R1 + + !ifdef UNINSTALLLIB_UNINSTALL_REBOOT_PROTECTED | UNINSTALLLIB_UNINSTALL_REBOOT_NOTPROTECTED + + ${If} ${FileExists} $R1 + # File is in use, can't just delete. + # Move file to another location before using Delete /REBOOTOK. This way, if + # the user installs a new version of the DLL, it won't be deleted after + # reboot. See bug #1097642 for more information on this. + + # Try moving to $TEMP. + GetTempFileName $R0 + Delete $R0 + Rename $R1 $R0 + + ${If} ${FileExists} $R1 + # Still here, delete temporary file, in case the file was copied + # and not deleted. This happens when moving from network drives, + # for example. + Delete $R0 + + # Try moving to directory containing the file. + !insertmacro __InstallLib_Helper_GetParent $R1 $R0 + GetTempFileName $R0 $R0 + Delete $R0 + Rename $R1 $R0 + + ${If} ${FileExists} $R1 + # Still here, delete temporary file. + Delete $R0 + + # Give up moving, simply Delete /REBOOTOK the file. + StrCpy $R0 $R1 + ${EndIf} + ${EndIf} + + # Delete the moved file. + Delete /REBOOTOK $R0 + ${EndIf} + + !endif + + !endif + + ;------------------------ + ;Done + + !ifdef UNINSTALLLIB_DONE_LABEL + + !undef UNINSTALLLIB_DONE_LABEL + + "uninstalllib.done_${UNINSTALLLIB_UNIQUE}:" + + !endif + + !ifdef LIBRARY_X64 + + ${EnableX64FSRedirection} + + !endif + + Pop $R1 + Pop $R0 + + ;------------------------ + ;Undefine + + !undef UNINSTALLLIB_UNIQUE + + !undef ${UNINSTALLLIB_LIBTYPE_SET} + !undef UNINSTALLLIB_LIBTYPE_SET + !undef ${UNINSTALLLIB_SHARED_SET} + !undef UNINSTALLLIB_SHARED_SET + !undef ${UNINSTALLLIB_UNINSTALL_SET} + !undef UNINSTALLLIB_UNINSTALL_SET + + !verbose pop + +!macroend + +!endif + +!verbose pop diff --git a/tools/Include/LogicLib.nsh b/tools/Include/LogicLib.nsh new file mode 100644 index 0000000..c338852 --- /dev/null +++ b/tools/Include/LogicLib.nsh @@ -0,0 +1,899 @@ +; NSIS LOGIC LIBRARY - LogicLib.nsh +; Version 2.6 - 08/12/2007 +; By dselkirk@hotmail.com +; and eccles@users.sf.net +; with IfNot support added by Message +; +; Questions/Comments - +; See http://forums.winamp.com/showthread.php?s=&postid=1116241 +; +; Description: +; Provides the use of various logic statements within NSIS. +; +; Usage: +; The following "statements" are available: +; If|IfNot|Unless..{ElseIf|ElseIfNot|ElseUnless}..[Else]..EndIf|EndUnless +; - Conditionally executes a block of statements, depending on the value +; of an expression. IfNot and Unless are equivalent and +; interchangeable, as are ElseIfNot and ElseUnless. +; AndIf|AndIfNot|AndUnless|OrIf|OrIfNot|OrUnless +; - Adds any number of extra conditions to If, IfNot, Unless, ElseIf, +; ElseIfNot and ElseUnless statements. +; IfThen|IfNotThen..|..| +; - Conditionally executes an inline statement, depending on the value +; of an expression. +; IfCmd..||..| +; - Conditionally executes an inline statement, depending on a true +; value of the provided NSIS function. +; Select..{Case[2|3|4|5]}..[CaseElse|Default]..EndSelect +; - Executes one of several blocks of statements, depending on the value +; of an expression. +; Switch..{Case|CaseElse|Default}..EndSwitch +; - Jumps to one of several labels, depending on the value of an +; expression. +; Do[While|Until]..{ExitDo|Continue|Break}..Loop[While|Until] +; - Repeats a block of statements until stopped, or depending on the +; value of an expression. +; While..{ExitWhile|Continue|Break}..EndWhile +; - An alias for DoWhile..Loop (for backwards-compatibility) +; For[Each]..{ExitFor|Continue|Break}..Next +; - Repeats a block of statements varying the value of a variable. +; +; The following "expressions" are available: +; Standard (built-in) string tests (which are case-insensitive): +; a == b; a != b +; Additional case-insensitive string tests (using System.dll): +; a S< b; a S>= b; a S> b; a S<= b +; Case-sensitive string tests: +; a S== b; a S!= b +; Standard (built-in) signed integer tests: +; a = b; a <> b; a < b; a >= b; a > b; a <= b; a & b +; Standard (built-in) unsigned integer tests: +; a U< b; a U>= b; a U> b; a U<= b +; 64-bit integer tests (using System.dll): +; a L= b; a L<> b; a L< b; a L>= b; a L> b; a L<= b +; ptrdiff_t integer tests +; a P= b; a P<> b; a P< b; a P>= b; a P> b; a P<= b +; size_t integer tests +; a Z= b; a Z<> b; a Z< b; a Z>= b; a Z> b; a Z<= b +; Built-in NSIS flag tests: +; ${Abort}; ${Errors}; ${RebootFlag}; ${Silent}; ${RtlLanguage}; +; ${ShellVarContextAll} +; Built-in NSIS other tests: +; ${FileExists} a +; Any conditional NSIS instruction test: +; ${Cmd} a +; Section flag tests: +; ${SectionIsSelected} a; ${SectionIsSectionGroup} a; +; ${SectionIsSectionGroupEnd} a; ${SectionIsBold} a; +; ${SectionIsReadOnly} a; ${SectionIsExpanded} a; +; ${SectionIsPartiallySelected} a +; Additional tests: +; HK RegKeyIsEmpty SubKey +; +; Examples: +; See LogicLib.nsi in the Examples folder for lots of example usage. + +!verbose push +!verbose 3 +!ifndef LOGICLIB_VERBOSITY + !define LOGICLIB_VERBOSITY 3 +!endif +!define _LOGICLIB_VERBOSITY ${LOGICLIB_VERBOSITY} +!undef LOGICLIB_VERBOSITY +!verbose ${_LOGICLIB_VERBOSITY} + +!ifndef LOGICLIB + !define LOGICLIB + !define | "'" + !define || "' '" + !define LOGICLIB_COUNTER 0 + + !include Sections.nsh + + !macro _LOGICLIB_TEMP + !ifndef _LOGICLIB_TEMP + !define _LOGICLIB_TEMP + Var /GLOBAL _LOGICLIB_TEMP ; Temporary variable to aid the more elaborate logic tests + !endif + !macroend + + !macro LogicLib_JumpToBranch _Jump _Skip + !if `${_Jump}${_Skip}` != `` + StrCmp "" "" `${_Jump}` ${_Skip} + !endif + !macroend + + !macro _IncreaseCounter + !define /redef /math LOGICLIB_COUNTER `${LOGICLIB_COUNTER}` + 1 + !macroend + + !macro _PushLogic + !insertmacro _PushScope Logic _LogicLib_Label_${LOGICLIB_COUNTER} + !insertmacro _IncreaseCounter + !macroend + + !macro _PopLogic + !insertmacro _PopScope Logic + !macroend + + !macro _PushScope Type label + !ifdef _${Type} ; If we already have a statement + !define _Cur${Type} ${_${Type}} + !undef _${Type} + !define _${Type} ${label} + !define ${_${Type}}Prev${Type} ${_Cur${Type}} ; Save the current logic + !undef _Cur${Type} + !else + !define _${Type} ${label} ; Initialise for first statement + !endif + !macroend + + !macro _PopScope Type + !ifndef _${Type} + !error "Cannot use _Pop${Type} without a preceding _Push${Type}" + !endif + !ifdef ${_${Type}}Prev${Type} ; If a previous statement was active then restore it + !define _Cur${Type} ${_${Type}} + !undef _${Type} + !define _${Type} ${${_Cur${Type}}Prev${Type}} + !undef ${_Cur${Type}}Prev${Type} + !undef _Cur${Type} + !else + !undef _${Type} + !endif + !macroend + + !macro _LogicLib_AlwaysTrue _a _b _t _f + !insertmacro LogicLib_JumpToBranch `${_t}` `${_f}` + !macroend + !macro _LogicLib_AlwaysFalse _a _b _t _f + !insertmacro LogicLib_JumpToBranch `${_f}` `${_t}` + !macroend + + ; String tests + !macro _== _a _b _t _f + StrCmp `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + + !macro _!= _a _b _t _f + !insertmacro _== `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + ; Case-sensitive string tests + !macro _S== _a _b _t _f + StrCmpS `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + + !macro _S!= _a _b _t _f + !insertmacro _S== `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + ; Extra string tests (cannot do these case-sensitively - I tried and lstrcmp still ignored the case) + !macro _StrCmpI _a _b _e _l _m + !insertmacro _LOGICLIB_TEMP + System::Call `kernel32::lstrcmpi(ts, ts) i.s` `${_a}` `${_b}` + Pop $_LOGICLIB_TEMP + IntCmp $_LOGICLIB_TEMP 0 `${_e}` `${_l}` `${_m}` + !macroend + + !macro _S< _a _b _t _f + !insertmacro _StrCmpI `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` + !macroend + + !macro _S>= _a _b _t _f + !insertmacro _S< `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _S> _a _b _t _f + !insertmacro _StrCmpI `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` + !macroend + + !macro _S<= _a _b _t _f + !insertmacro _S> `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + ; Integer tests + !macro _= _a _b _t _f + IntCmp `${_a}` `${_b}` `${_t}` `${_f}` `${_f}` + !macroend + + !macro _<> _a _b _t _f + !insertmacro _= `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _< _a _b _t _f + IntCmp `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` + !macroend + + !macro _>= _a _b _t _f + !insertmacro _< `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _> _a _b _t _f + IntCmp `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` + !macroend + + !macro _<= _a _b _t _f + !insertmacro _> `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _& _a _b _t _f + !insertmacro _LOGICLIB_TEMP + IntOp $_LOGICLIB_TEMP `${_a}` & `${_b}` + !insertmacro _<> $_LOGICLIB_TEMP 0 `${_t}` `${_f}` + !macroend + + ; Unsigned integer tests (NB: no need for extra equality tests) + !macro _U< _a _b _t _f + IntCmpU `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` + !macroend + + !macro _U>= _a _b _t _f + !insertmacro _U< `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _U> _a _b _t _f + IntCmpU `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` + !macroend + + !macro _U<= _a _b _t _f + !insertmacro _U> `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + ; Int64 tests + !macro _Int64Cmp _a _o _b _t _f + !insertmacro _LOGICLIB_TEMP + System::Int64Op `${_a}` `${_o}` `${_b}` + Pop $_LOGICLIB_TEMP + !insertmacro _= $_LOGICLIB_TEMP 0 `${_f}` `${_t}` + !macroend + + !macro _L= _a _b _t _f + !insertmacro _Int64Cmp `${_a}` = `${_b}` `${_t}` `${_f}` + !macroend + + !macro _L<> _a _b _t _f + !insertmacro _L= `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _L< _a _b _t _f + !insertmacro _Int64Cmp `${_a}` < `${_b}` `${_t}` `${_f}` + !macroend + + !macro _L>= _a _b _t _f + !insertmacro _L< `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + !macro _L> _a _b _t _f + !insertmacro _Int64Cmp `${_a}` > `${_b}` `${_t}` `${_f}` + !macroend + + !macro _L<= _a _b _t _f + !insertmacro _L> `${_a}` `${_b}` `${_f}` `${_t}` + !macroend + + ; ptrdiff_t & size_t tests + !macro LogicLib_PtrDiffTest _o _a _b _t _f + !if "${NSIS_PTR_SIZE}" <= 4 + !insertmacro _${_o} `${_a}` `${_b}` `${_t}` `${_f}` + !else + !insertmacro _L${_o} `${_a}` `${_b}` `${_t}` `${_f}` + !endif + !macroend + !macro _P= _a _b _t _f + !insertmacro LogicLib_PtrDiffTest = `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _P<> _a _b _t _f + !insertmacro LogicLib_PtrDiffTest <> `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _P< _a _b _t _f + !insertmacro LogicLib_PtrDiffTest < `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _P>= _a _b _t _f + !insertmacro LogicLib_PtrDiffTest >= `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _P> _a _b _t _f + !insertmacro LogicLib_PtrDiffTest > `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _P<= _a _b _t _f + !insertmacro LogicLib_PtrDiffTest <= `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !include Util.nsh + !macro _Z= _a _b _t _f + !insertmacro LogicLib_PtrDiffTest = `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _Z<> _a _b _t _f + !insertmacro LogicLib_PtrDiffTest <> `${_a}` `${_b}` `${_t}` `${_f}` + !macroend + !macro _Z< _a _b _t _f + !insertmacro IntPtrCmpU `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` + !macroend + !macro _Z>= _a _b _t _f + !insertmacro IntPtrCmpU `${_a}` `${_b}` `${_t}` `${_f}` `${_t}` + !macroend + !macro _Z> _a _b _t _f + !insertmacro IntPtrCmpU `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` + !macroend + !macro _Z<= _a _b _t _f + !insertmacro IntPtrCmpU `${_a}` `${_b}` `${_t}` `${_t}` `${_f}` + !macroend + + ; Flag tests + !macro _Abort _a _b _t _f + IfAbort `${_t}` `${_f}` + !macroend + !define Abort `"" Abort ""` + + !macro _Errors _a _b _t _f + IfErrors `${_t}` `${_f}` + !macroend + !define Errors `"" Errors ""` + + !macro _FileExists _a _b _t _f + IfFileExists `${_b}` `${_t}` `${_f}` + !macroend + !define FileExists `"" FileExists` + + !macro _RebootFlag _a _b _t _f + IfRebootFlag `${_t}` `${_f}` + !macroend + !define RebootFlag `"" RebootFlag ""` + + !macro _Silent _a _b _t _f + IfSilent `${_t}` `${_f}` + !macroend + !define Silent `"" Silent ""` + + !macro _ShellVarContextAll _a _b _t _f + IfShellVarContextAll `${_t}` `${_f}` + !macroend + !define ShellVarContextAll `"" ShellVarContextAll ""` + + !macro _RtlLanguage _a _b _t _f + IfRtlLanguage `${_t}` `${_f}` + !macroend + !define RtlLanguage `"" RtlLanguage ""` + + !macro _AltRegView _a _b _t _f + IfAltRegView `${_t}` `${_f}` + !macroend + !define AltRegView `"" AltRegView ""` + + !macro _RegKeyIsEmpty _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ClearErrors + EnumRegValue $_LOGICLIB_TEMP ${_a} `${_b}` "" + !if `${_f}` != `` + IfErrors "" `${_f}` ; Skip calls to EnumRegKey and _== if possible + !else + IfErrors +3 + StrCpy $_LOGICLIB_TEMP "1" ; The default value is also named "", make sure we don't mistake it as empty + Goto +2 + !endif + EnumRegKey $_LOGICLIB_TEMP ${_a} `${_b}` "" + !insertmacro _== $_LOGICLIB_TEMP "" `${_t}` `${_f}` + !macroend + !define RegKeyIsEmpty `RegKeyIsEmpty` + + ; "Any instruction" test + !macro _Cmd _a _b _t _f + !define _t=${_t} + !ifdef _t= ; If no true label then make one + !define __t _LogicLib_Label_${LOGICLIB_COUNTER} + !insertmacro _IncreaseCounter + !else + !define __t ${_t} + !endif + ${_b} ${__t} + !define _f=${_f} + !ifndef _f= ; If a false label then go there + Goto ${_f} + !endif + !undef _f=${_f} + !ifdef _t= ; If we made our own true label then place it + ${__t}: + !endif + !undef __t + !undef _t=${_t} + !macroend + !define Cmd `"" Cmd` + + ; Section flag test + !macro _SectionFlagIsSet _a _b _t _f + !insertmacro _LOGICLIB_TEMP + SectionGetFlags `${_b}` $_LOGICLIB_TEMP + IntOp $_LOGICLIB_TEMP $_LOGICLIB_TEMP & `${_a}` + !insertmacro _= $_LOGICLIB_TEMP `${_a}` `${_t}` `${_f}` + !macroend + !define SectionIsSelected `${SF_SELECTED} SectionFlagIsSet` + !define SectionIsSubSection `${SF_SUBSEC} SectionFlagIsSet` + !define SectionIsSubSectionEnd `${SF_SUBSECEND} SectionFlagIsSet` + !define SectionIsSectionGroup `${SF_SECGRP} SectionFlagIsSet` + !define SectionIsSectionGroupEnd `${SF_SECGRPEND} SectionFlagIsSet` + !define SectionIsBold `${SF_BOLD} SectionFlagIsSet` + !define SectionIsReadOnly `${SF_RO} SectionFlagIsSet` + !define SectionIsExpanded `${SF_EXPAND} SectionFlagIsSet` + !define SectionIsPartiallySelected `${SF_PSELECTED} SectionFlagIsSet` + + !define IfCmd `!insertmacro _IfThen "" Cmd ${|}` + + !macro _If _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !insertmacro _PushLogic + !define ${_Logic}If + !define ${_Logic}Else _LogicLib_ElseLabel_${LOGICLIB_COUNTER} ; Get a label for the Else + !insertmacro _IncreaseCounter + !define _c=${_c} + !ifdef _c=true ; If is true + !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" + !endif + !undef _c=${_c} + !verbose pop + !macroend + !define If `!insertmacro _If true` + !define Unless `!insertmacro _If false` + !define IfNot `!insertmacro _If false` + + !macro _And _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}If + !error "Cannot use And without a preceding If or IfNot/Unless" + !endif + !ifndef ${_Logic}Else + !error "Cannot use And following an Else" + !endif + !define _c=${_c} + !ifdef _c=true ; If is true + !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" + !endif + !undef _c=${_c} + !verbose pop + !macroend + !define AndIf `!insertmacro _And true` + !define AndUnless `!insertmacro _And false` + !define AndIfNot `!insertmacro _And false` + + !macro _Or _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}If + !error "Cannot use Or without a preceding If or IfNot/Unless" + !endif + !ifndef ${_Logic}Else + !error "Cannot use Or following an Else" + !endif + !define _label _LogicLib_Label_${LOGICLIB_COUNTER} ; Skip this test as we already + !insertmacro _IncreaseCounter + Goto ${_label} ; have a successful result + ${${_Logic}Else}: ; Place the Else label + !undef ${_Logic}Else ; and remove it + !define ${_Logic}Else _LogicLib_ElseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new If + !insertmacro _IncreaseCounter + !define _c=${_c} + !ifdef _c=true ; If is true + !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" + !endif + !undef _c=${_c} + ${_label}: + !undef _label + !verbose pop + !macroend + !define OrIf `!insertmacro _Or true` + !define OrUnless `!insertmacro _Or false` + !define OrIfNot `!insertmacro _Or false` + + !macro _Else + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}If + !error "Cannot use Else without a preceding If or IfNot/Unless" + !endif + !ifndef ${_Logic}Else + !error "Cannot use Else following an Else" + !endif + !ifndef ${_Logic}EndIf ; First Else for this If? + !define ${_Logic}EndIf _LogicLib_EndIfLabel_${LOGICLIB_COUNTER} ; Get a label for the EndIf + !insertmacro _IncreaseCounter + !endif + Goto ${${_Logic}EndIf} ; Go to the EndIf + ${${_Logic}Else}: ; Place the Else label + !undef ${_Logic}Else ; and remove it + !verbose pop + !macroend + !define Else `!insertmacro _Else` + + !macro _ElseIf _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${Else} ; Perform the Else + !define ${_Logic}Else _LogicLib_ElseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new If + !insertmacro _IncreaseCounter + !define _c=${_c} + !ifdef _c=true ; If is true + !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" + !endif + !undef _c=${_c} + !verbose pop + !macroend + !define ElseIf `!insertmacro _ElseIf true` + !define ElseUnless `!insertmacro _ElseIf false` + !define ElseIfNot `!insertmacro _ElseIf false` + + !macro _EndIf _n + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}If + !error "Cannot use End${_n} without a preceding If or IfNot/Unless" + !endif + !ifdef ${_Logic}Else + ${${_Logic}Else}: ; Place the Else label + !undef ${_Logic}Else ; and remove it + !endif + !ifdef ${_Logic}EndIf + ${${_Logic}EndIf}: ; Place the EndIf + !undef ${_Logic}EndIf ; and remove it + !endif + !undef ${_Logic}If + !insertmacro _PopLogic + !verbose pop + !macroend + !define EndIf `!insertmacro _EndIf If` + !define EndUnless `!insertmacro _EndIf Unless` + + !macro _IfThen _a _o _b _t + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${If} `${_a}` `${_o}` `${_b}` + ${_t} + ${EndIf} + !verbose pop + !macroend + !define IfThen `!insertmacro _IfThen` + + !macro _IfNotThen _a _o _b _t + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${IfNot} `${_a}` `${_o}` `${_b}` + ${_t} + ${EndIf} + !verbose pop + !macroend + !define IfNotThen `!insertmacro _IfNotThen` + + !macro _ForEach _v _f _t _o _s + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + StrCpy "${_v}" "${_f}" ; Assign the initial value + Goto +2 ; Skip the loop expression for the first iteration + !define _DoLoopExpression `IntOp "${_v}" "${_v}" "${_o}" "${_s}"` ; Define the loop expression + !define _o=${_o} + !ifdef _o=+ ; Check the loop expression operator + !define __o > ; to determine the correct loop condition + !else ifdef _o=- + !define __o < + !else + !error "Unsupported ForEach step operator (must be + or -)" + !endif + !undef _o=${_o} + !insertmacro _Do For false `${_v}` `${__o}` `${_t}` ; Let Do do the rest + !undef __o + !verbose pop + !macroend + !define ForEach `!insertmacro _ForEach` + + !macro _For _v _f _t + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${ForEach} `${_v}` `${_f}` `${_t}` + 1 ; Pass on to ForEach + !verbose pop + !macroend + !define For `!insertmacro _For` + + !define ExitFor `!insertmacro _Goto ExitFor For` + + !define Next `!insertmacro _Loop For Next "" "" "" ""` + + !define While `!insertmacro _Do While true` + + !define ExitWhile `!insertmacro _Goto ExitWhile While` + + !define EndWhile `!insertmacro _Loop While EndWhile "" "" "" ""` + + !macro _Do _n _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !insertmacro _PushLogic + !define ${_Logic}${_n} _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the start of the loop + !insertmacro _IncreaseCounter + ${${_Logic}${_n}}: + !insertmacro _PushScope Exit${_n} _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the end of the loop + !insertmacro _IncreaseCounter + !insertmacro _PushScope Break ${_Exit${_n}} ; Break goes to the end of the loop + !ifdef _DoLoopExpression + ${_DoLoopExpression} ; Special extra parameter for inserting code + !undef _DoLoopExpression ; between the Continue label and the loop condition + !endif + !define _c=${_c} + !ifdef _c= ; No starting condition + !insertmacro _PushScope Continue _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for Continue at the end of the loop + !insertmacro _IncreaseCounter + !else + !insertmacro _PushScope Continue ${${_Logic}${_n}} ; Continue goes to the start of the loop + !ifdef _c=true ; If is true + !insertmacro _${_o} `${_a}` `${_b}` "" ${_Exit${_n}} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${_Exit${_n}} "" + !endif + !endif + !undef _c=${_c} + !define ${_Logic}Condition ${_c} ; Remember the condition used + !verbose pop + !macroend + !define Do `!insertmacro _Do Do "" "" "" ""` + !define DoWhile `!insertmacro _Do Do true` + !define DoUntil `!insertmacro _Do Do false` + + !macro _Goto _n _s + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _${_n} + !error "Cannot use ${_n} without a preceding ${_s}" + !endif + Goto ${_${_n}} + !verbose pop + !macroend + !define ExitDo `!insertmacro _Goto ExitDo Do` + + !macro _Loop _n _e _c _a _o _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}${_n} + !error "Cannot use ${_e} without a preceding ${_n}" + !endif + !define _c=${${_Logic}Condition} + !ifdef _c= ; If Do had no condition place the Continue label + ${_Continue}: + !endif + !undef _c=${${_Logic}Condition} + !define _c=${_c} + !ifdef _c= ; No ending condition + Goto ${${_Logic}${_n}} + !else ifdef _c=true ; If condition is true + !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}${_n}} ${_Exit${_n}} + !else ; If condition is false + !insertmacro _${_o} `${_a}` `${_b}` ${_Exit${_n}} ${${_Logic}${_n}} + !endif + !undef _c=${_c} + Goto ${_Continue} ; Just to ensure it is referenced at least once + Goto ${_Exit${_n}} ; Just to ensure it is referenced at least once + ${_Exit${_n}}: ; Place the loop exit point + !undef ${_Logic}Condition + !insertmacro _PopScope Continue + !insertmacro _PopScope Break + !insertmacro _PopScope Exit${_n} + !undef ${_Logic}${_n} + !insertmacro _PopLogic + !verbose pop + !macroend + !define Loop `!insertmacro _Loop Do Loop "" "" "" ""` + !define LoopWhile `!insertmacro _Loop Do LoopWhile true` + !define LoopUntil `!insertmacro _Loop Do LoopUntil false` + + !define Continue `!insertmacro _Goto Continue "For or Do or While"` + !define Break `!insertmacro _Goto Break "For or Do or While"` + + !macro _Select _a + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !insertmacro _PushLogic + !define ${_Logic}Select `${_a}` ; Remember the left hand side of the comparison + !verbose pop + !macroend + !define Select `!insertmacro _Select` + + !macro _Select_CaseElse + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}Select + !error "Cannot use Case without a preceding Select" + !endif + !ifdef ${_Logic}EndSelect ; This is set only after the first case + !ifndef ${_Logic}Else + !error "Cannot use Case following a CaseElse" + !endif + Goto ${${_Logic}EndSelect} ; Go to EndSelect (Ends the previous Case) + !define /IfNDef _LogicLib_EndSelectLabelUsed_${_Logic} + ${${_Logic}Else}: ; Place the Else label + !undef ${_Logic}Else ; and remove it + !else + !define ${_Logic}EndSelect _LogicLib_EndSelectLabel_${LOGICLIB_COUNTER} ; Get a label for the EndSelect + !insertmacro _IncreaseCounter + !endif + !verbose pop + !macroend + !define CaseElse `!insertmacro _CaseElse` + !define Case_Else `!insertmacro _CaseElse` ; Compatibility with 2.2 and earlier + !define Default `!insertmacro _CaseElse` ; For the C-minded + + !macro _Select_Case _a + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${CaseElse} ; Perform the CaseElse + !define ${_Logic}Else _LogicLib_NextSelectCaseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case + !insertmacro _IncreaseCounter + !insertmacro _== `${${_Logic}Select}` `${_a}` "" ${${_Logic}Else} + !verbose pop + !macroend + !define Case `!insertmacro _Case` + + !macro _Case2 _a _b + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${CaseElse} ; Perform the CaseElse + !define ${_Logic}Else _LogicLib_NextSelectCaseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case + !insertmacro _IncreaseCounter + !insertmacro _== `${${_Logic}Select}` `${_a}` +2 "" + !insertmacro _== `${${_Logic}Select}` `${_b}` "" ${${_Logic}Else} + !verbose pop + !macroend + !define Case2 `!insertmacro _Case2` + + !macro _Case3 _a _b _c + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${CaseElse} ; Perform the CaseElse + !define ${_Logic}Else _LogicLib_NextSelectCaseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case + !insertmacro _IncreaseCounter + !insertmacro _== `${${_Logic}Select}` `${_a}` +3 "" + !insertmacro _== `${${_Logic}Select}` `${_b}` +2 "" + !insertmacro _== `${${_Logic}Select}` `${_c}` "" ${${_Logic}Else} + !verbose pop + !macroend + !define Case3 `!insertmacro _Case3` + + !macro _Case4 _a _b _c _d + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${CaseElse} ; Perform the CaseElse + !define ${_Logic}Else _LogicLib_NextSelectCaseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case + !insertmacro _IncreaseCounter + !insertmacro _== `${${_Logic}Select}` `${_a}` +4 "" + !insertmacro _== `${${_Logic}Select}` `${_b}` +3 "" + !insertmacro _== `${${_Logic}Select}` `${_c}` +2 "" + !insertmacro _== `${${_Logic}Select}` `${_d}` "" ${${_Logic}Else} + !verbose pop + !macroend + !define Case4 `!insertmacro _Case4` + + !macro _Case5 _a _b _c _d _e + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + ${CaseElse} ; Perform the CaseElse + !define ${_Logic}Else _LogicLib_NextSelectCaseLabel_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case + !insertmacro _IncreaseCounter + !insertmacro _== `${${_Logic}Select}` `${_a}` +5 "" + !insertmacro _== `${${_Logic}Select}` `${_b}` +4 "" + !insertmacro _== `${${_Logic}Select}` `${_c}` +3 "" + !insertmacro _== `${${_Logic}Select}` `${_d}` +2 "" + !insertmacro _== `${${_Logic}Select}` `${_e}` "" ${${_Logic}Else} + !verbose pop + !macroend + !define Case5 `!insertmacro _Case5` + + !macro _EndSelect + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}Select + !error "Cannot use EndSelect without a preceding Select" + !endif + !ifdef ${_Logic}Else + ${${_Logic}Else}: ; Place the Else label + !undef ${_Logic}Else ; and remove it + !endif + !ifdef ${_Logic}EndSelect ; This won't be set if there weren't any cases + !ifdef _LogicLib_EndSelectLabelUsed_${_Logic} ; There is no jump to ${${_Logic}EndSelect}: if there is only one Case + ${${_Logic}EndSelect}: ; Place the EndSelect + !undef _LogicLib_EndSelectLabelUsed_${_Logic} + !endif + !undef ${_Logic}EndSelect ; and remove it + !endif + !undef ${_Logic}Select + !insertmacro _PopLogic + !verbose pop + !macroend + !define EndSelect `!insertmacro _EndSelect` + + !macro _Switch _a + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !insertmacro _PushLogic + !insertmacro _PushScope Switch ${_Logic} ; Keep a separate stack for switch data + !insertmacro _PushScope Break _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for beyond the end of the switch + !insertmacro _IncreaseCounter + !define ${_Switch}Var `${_a}` ; Remember the left hand side of the comparison + !tempfile ${_Switch}Tmp ; Create a temporary file + !if "${NSIS_CHAR_SIZE}" > 1 + !appendfile /CHARSET=UTF8SIG "${${_Switch}Tmp}" "" ; Make sure the file uses Unicode + !endif + !define ${_Logic}Switch _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the end of the switch + !insertmacro _IncreaseCounter + Goto ${${_Logic}Switch} ; and go there + !verbose pop + !macroend + !define Switch `!insertmacro _Switch` + + !macro _Case _a + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifdef _Logic & ${_Logic}Select ; Check for an active Select + !insertmacro _Select_Case `${_a}` + !else ifndef _Switch ; If not then check for an active Switch + !error "Cannot use Case without a preceding Select or Switch" + !else + !define _label _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for this case, + !insertmacro _IncreaseCounter + ${_label}: ; place it and add it's check to the temp file + !appendfile "${${_Switch}Tmp}" `!insertmacro _== $\`${${_Switch}Var}$\` $\`${_a}$\` ${_label} ""$\n` + !undef _label + !endif + !verbose pop + !macroend + + !macro _CaseElse + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifdef _Logic & ${_Logic}Select ; Check for an active Select + !insertmacro _Select_CaseElse + !else ifndef _Switch ; If not then check for an active Switch + !error "Cannot use Case without a preceding Select or Switch" + !else ifdef ${_Switch}Else ; Already had a default case? + !error "Cannot use CaseElse following a CaseElse" + !else + !define ${_Switch}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the default case, + !insertmacro _IncreaseCounter + ${${_Switch}Else}: ; and place it + !endif + !verbose pop + !macroend + + !macro _EndSwitch + !verbose push + !verbose ${LOGICLIB_VERBOSITY} + !ifndef _Logic | ${_Logic}Switch + !error "Cannot use EndSwitch without a preceding Switch" + !endif + Goto ${_Break} ; Skip the jump table + ${${_Logic}Switch}: ; Place the end of the switch + !undef ${_Logic}Switch + !include "${${_Switch}Tmp}" ; Include the jump table + !delfile "${${_Switch}Tmp}" ; and clear it up + !ifdef ${_Switch}Else ; Was there a default case? + Goto ${${_Switch}Else} ; then go there if all else fails + !undef ${_Switch}Else + !endif + !undef ${_Switch}Tmp + !undef ${_Switch}Var + ${_Break}: ; Place the break label + !insertmacro _PopScope Break + !insertmacro _PopScope Switch + !insertmacro _PopLogic + !verbose pop + !macroend + !define EndSwitch `!insertmacro _EndSwitch` + +!endif ; LOGICLIB +!verbose 3 +!define LOGICLIB_VERBOSITY ${_LOGICLIB_VERBOSITY} +!undef _LOGICLIB_VERBOSITY +!verbose pop diff --git a/tools/Include/MUI.nsh b/tools/Include/MUI.nsh new file mode 100644 index 0000000..c2b2a71 --- /dev/null +++ b/tools/Include/MUI.nsh @@ -0,0 +1 @@ +!include "${NSISDIR}\Contrib\Modern UI\System.nsh" \ No newline at end of file diff --git a/tools/Include/MUI2.nsh b/tools/Include/MUI2.nsh new file mode 100644 index 0000000..0e76adb --- /dev/null +++ b/tools/Include/MUI2.nsh @@ -0,0 +1 @@ +!include "${NSISDIR}\Contrib\Modern UI 2\MUI2.nsh" \ No newline at end of file diff --git a/tools/Include/Memento.nsh b/tools/Include/Memento.nsh new file mode 100644 index 0000000..3381c85 --- /dev/null +++ b/tools/Include/Memento.nsh @@ -0,0 +1,553 @@ +!verbose push +!verbose 3 + +!include LogicLib.nsh +!include Sections.nsh + +!ifndef ___MEMENTO_NSH___ +!define ___MEMENTO_NSH___ + +##################################### +### Memento ### +##################################### + +/* + +Memento is a set of macros that allow installers to remember user selection +across separate runs of the installer. Currently, it can remember the state +of sections and mark new sections as bold. In the future, it'll integrate +InstallOptions and maybe even the Modern UI. + +A usage example can be found in `Examples\Memento.nsi`. + +*/ + +##################################### +### Usage Instructions ### +##################################### + +/* + +1. Declare usage of Memento by including Memento.nsh at the top of the script. + + !include Memento.nsh + +2. Define MEMENTO_REGISTRY_ROOT and MEMENTO_REGISTRY_KEY with the a registry key + where sections' state should be saved. + + !define MEMENTO_REGISTRY_ROOT HKLM + !define MEMENTO_REGISTRY_KEY \ + Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram + +3. Replace Section with ${MementoSection} and SectionEnd with ${MementoSectionEnd} + for sections that whose state should be remembered by Memento. + + For sections that should be unselected by default, use ${MementoSection}'s + brother - ${MementoUnselectedSection}. + + Sections that don't already have an identifier must be assigned one. + + Section identifiers must stay the same across different versions of the + installer or their state will be forgotten. + +4. Use ${MementoSectionDone} after the last ${MementoSection}. + +5. Add a call to ${MementoSectionRestore} to .onInit to restore the state + of all sections from the registry. + + Function .onInit + + ${MementoSectionRestore} + + FunctionEnd + +6. Add a call to ${MementoSectionSave} to .onInstSuccess to save the state + of all sections to the registry. + + Function .onInstSuccess + + ${MementoSectionSave} + + FunctionEnd + +7. Tattoo the location of the chosen registry key on your arm. + +*/ + +##################################### +### User API ### +##################################### + +; +; ${MementoSection} +; +; Defines a section whose state is remembered by Memento. +; +; Usage is similar to Section. +; +; ${MementoSection} "name" "some_id" +; + +!define MementoSection "!insertmacro MementoSection" + +; +; ${MementoSectionEnd} +; +; Ends a section previously opened using ${MementoSection}. +; +; Usage is similar to SectionEnd. +; +; ${MementoSection} "name" "some_id" +; # some code... +; ${MementoSectionEnd} +; + +; +; ${MementoUnselectedSection} +; +; Defines a section whose state is remembered by Memento and is +; unselected by default. +; +; Usage is similar to Section with the /o switch. +; +; ${MementoUnselectedSection} "name" "some_id" +; + +!define MementoUnselectedSection "!insertmacro MementoUnselectedSection" + +; +; ${MementoSectionEnd} +; +; Ends a section previously opened using ${MementoSection}. +; +; Usage is similar to SectionEnd. +; +; ${MementoSection} "name" "some_id" +; # some code... +; ${MementoSectionEnd} +; + +!define MementoSectionEnd "!insertmacro MementoSectionEnd" + +; +; ${MementoSectionDone} +; +; Used after all ${MementoSection} have been set. +; +; ${MementoSection} "name1" "some_id1" +; # some code... +; ${MementoSectionEnd} +; +; ${MementoSection} "name2" "some_id2" +; # some code... +; ${MementoSectionEnd} +; +; ${MementoSection} "name3" "some_id3" +; # some code... +; ${MementoSectionEnd} +; +; ${MementoSectionDone} +; + +!define MementoSectionDone "!insertmacro MementoSectionDone" + +; +; ${MementoSectionRestore} +; +; Restores the state of all Memento sections from the registry. +; +; Commonly used in .onInit. +; +; Function .onInit +; +; ${MementoSectionRestore} +; +; FunctionEnd +; + +!define MementoSectionRestore "!insertmacro MementoSectionRestore" + +; +; ${MementoSectionSave} +; +; Saves the state of all Memento sections to the registry. +; +; Commonly used in .onInstSuccess. +; +; Function .onInstSuccess +; +; ${MementoSectionSave} +; +; FunctionEnd +; + +!define MementoSectionSave "!insertmacro MementoSectionSave" + +; +; MementoSection +; +; Replaceable macros that allow custom storage methods to be used. +; + +!ifmacrondef MementoSectionReadInt +!define __MementoSectionStdRegReadWrite + +!macro MementoSectionReadInt outvar name +ReadRegDWord ${outvar} ${MEMENTO_REGISTRY_ROOT} `${MEMENTO_REGISTRY_KEY}` `MementoSection${name}` +!macroend + +!macro MementoSectionWriteInt name val +WriteRegDWord ${MEMENTO_REGISTRY_ROOT} `${MEMENTO_REGISTRY_KEY}` `MementoSection${name}` `${val}` +!macroend + +!macro MementoSectionReadMarker outvar name +ReadRegStr ${outvar} ${MEMENTO_REGISTRY_ROOT} `${MEMENTO_REGISTRY_KEY}` `MementoSection${name}` +!macroend + +!macro MementoSectionWriteMarker name +WriteRegStr ${MEMENTO_REGISTRY_ROOT} `${MEMENTO_REGISTRY_KEY}` `MementoSection${name}` `` +!macroend + +!endif + +##################################### +### Internal Defines ### +##################################### + +!define __MementoSectionIndex 1 + +##################################### +### Internal Macros ### +##################################### + +!macro __MementoCheckSettings + + !ifdef __MementoSectionStdRegReadWrite + !ifndef MEMENTO_REGISTRY_ROOT | MEMENTO_REGISTRY_KEY + + !error "MEMENTO_REGISTRY_ROOT and MEMENTO_REGISTRY_KEY must be defined before using any of Memento's macros" + + !endif + !endif + +!macroend + +!macro __MementoSection flags name id + + !insertmacro __MementoCheckSettings + + !ifndef __MementoSectionIndex + + !error "MementoSectionDone already used!" + + !endif + + !define __MementoSectionLastSectionId `${id}` + + !verbose pop + + Section ${flags} `${name}` `${id}` + + !verbose push + !verbose 3 + +!macroend + +##################################### +### User Macros ### +##################################### + +!macro MementoSection name id + + !verbose push + !verbose 3 + + !insertmacro __MementoSection "" `${name}` `${id}` + + !verbose pop + +!macroend + +!macro MementoUnselectedSection name id + + !verbose push + !verbose 3 + + !insertmacro __MementoSection /o `${name}` `${id}` + + !define __MementoSectionUnselected + + !verbose pop + +!macroend + +!macro MementoSectionEnd + + SectionEnd + + !verbose push + !verbose 3 + + !insertmacro __MementoCheckSettings + + !ifndef __MementoSectionIndex + + !error "MementoSectionDone already used!" + + !endif + + !define /MATH __MementoSectionIndexNext \ + ${__MementoSectionIndex} + 1 + + Function __MementoSectionMarkNew${__MementoSectionIndex} + + ClearErrors + !insertmacro MementoSectionReadInt $0 `_${__MementoSectionLastSectionId}` + + ${If} ${Errors} + + !insertmacro SetSectionFlag `${${__MementoSectionLastSectionId}}` ${SF_BOLD} + + ${EndIf} + + GetFunctionAddress $0 __MementoSectionMarkNew${__MementoSectionIndexNext} + Goto $0 + + FunctionEnd + + Function __MementoSectionRestoreStatus${__MementoSectionIndex} + + ClearErrors + !insertmacro MementoSectionReadInt $0 `_${__MementoSectionLastSectionId}` + + !ifndef __MementoSectionUnselected + + ${If} ${Errors} + ${OrIf} $0 != 0 + + !insertmacro SelectSection `${${__MementoSectionLastSectionId}}` + + ${Else} + + !insertmacro UnselectSection `${${__MementoSectionLastSectionId}}` + + ${EndIf} + + !else + + !undef __MementoSectionUnselected + + ${If} ${Errors} + ${OrIf} $0 == 0 + + !insertmacro UnselectSection `${${__MementoSectionLastSectionId}}` + + ${Else} + + !insertmacro SelectSection `${${__MementoSectionLastSectionId}}` + + ${EndIf} + + !endif + + GetFunctionAddress $0 __MementoSectionRestoreStatus${__MementoSectionIndexNext} + Goto $0 + + FunctionEnd + + Function __MementoSectionSaveStatus${__MementoSectionIndex} + + ${If} ${SectionIsSelected} `${${__MementoSectionLastSectionId}}` + + !insertmacro MementoSectionWriteInt `_${__MementoSectionLastSectionId}` 1 + + ${Else} + + !insertmacro MementoSectionWriteInt `_${__MementoSectionLastSectionId}` 0 + + ${EndIf} + + GetFunctionAddress $0 __MementoSectionSaveStatus${__MementoSectionIndexNext} + Goto $0 + + FunctionEnd + + !undef __MementoSectionIndex + !define __MementoSectionIndex ${__MementoSectionIndexNext} + !undef __MementoSectionIndexNext + + !undef __MementoSectionLastSectionId + + !verbose pop + +!macroend + +!macro MementoSectionDone + + !verbose push + !verbose 3 + + !insertmacro __MementoCheckSettings + + Function __MementoSectionMarkNew${__MementoSectionIndex} + FunctionEnd + + Function __MementoSectionRestoreStatus${__MementoSectionIndex} + FunctionEnd + + Function __MementoSectionSaveStatus${__MementoSectionIndex} + FunctionEnd + + !undef __MementoSectionIndex + + !verbose pop + +!macroend + +!macro MementoSectionRestore + + !verbose push + !verbose 3 + + !insertmacro __MementoCheckSettings + + Push $0 + Push $1 + Push $2 + Push $3 + + # check for first usage + + ClearErrors + !insertmacro MementoSectionReadMarker $0 `Used` + + ${If} ${Errors} + + # use script defaults on first run + Goto done + + ${EndIf} + + # mark new components in bold + + Call __MementoSectionMarkNew1 + + # mark section groups in bold + + StrCpy $0 0 + StrCpy $1 "" + StrCpy $2 "" + StrCpy $3 "" + + loop: + + ClearErrors + + ${If} ${SectionIsBold} $0 + + ${If} $1 != "" + + !insertmacro SetSectionFlag $1 ${SF_BOLD} + + ${EndIf} + + ${If} $2 != "" + + !insertmacro SetSectionFlag $2 ${SF_BOLD} + + ${EndIf} + + ${If} $3 != "" + + !insertmacro SetSectionFlag $3 ${SF_BOLD} + + ${EndIf} + + ${ElseIf} ${Errors} + + Goto loop_end + + ${EndIf} + + ${If} ${SectionIsSectionGroup} $0 + + ${If} $1 == "" + + StrCpy $1 $0 + + ${ElseIf} $2 == "" + + StrCpy $2 $0 + + ${ElseIf} $3 == "" + + StrCpy $3 $0 + + ${EndIf} + + ${EndIf} + + ${If} ${SectionIsSectionGroupEnd} $0 + + ${If} $3 != "" + + StrCpy $3 "" + + ${ElseIf} $2 != "" + + StrCpy $2 "" + + ${ElseIf} $1 != "" + + StrCpy $1 "" + + ${EndIf} + + ${EndIf} + + IntOp $0 $0 + 1 + + Goto loop + loop_end: + + # restore sections' status + + Call __MementoSectionRestoreStatus1 + + # all done + + done: + + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop + +!macroend + +!macro MementoSectionSave + + !verbose push + !verbose 3 + + !insertmacro __MementoCheckSettings + + Push $0 + + !insertmacro MementoSectionWriteMarker `Used` + + Call __MementoSectionSaveStatus1 + + Pop $0 + + !verbose pop + +!macroend + + + +!endif # ___MEMENTO_NSH___ + +!verbose pop diff --git a/tools/Include/MultiUser.nsh b/tools/Include/MultiUser.nsh new file mode 100644 index 0000000..7c59c73 --- /dev/null +++ b/tools/Include/MultiUser.nsh @@ -0,0 +1,505 @@ +/* + +MultiUser.nsh + +Installer configuration for multi-user Windows environments + +Copyright 2008-2023 Joost Verburg + +*/ + +!ifndef MULTIUSER_INCLUDED +!define MULTIUSER_INCLUDED 20210216 +!verbose push 3 + +;Standard NSIS header files + +!ifdef MULTIUSER_MUI + !include MUI2.nsh +!endif +!include LogicLib.nsh +!include WinVer.nsh +!include FileFunc.nsh + +!if ${NSIS_PTR_SIZE} > 4 +!define /IfNDef MULTIUSER_MINWIN 0x501 +!else +!define /IfNDef MULTIUSER_MINWIN 0x400 +!endif + +;Variables + +Var MultiUser.Privileges +Var MultiUser.InstallMode + +;Command line installation mode setting + +!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE + !include StrFunc.nsh + ${Using:StrFunc} StrStr + !ifndef MULTIUSER_NOUNINSTALL + ${Using:StrFunc} UnStrStr + !endif + + Var MultiUser.Parameters + Var MultiUser.Result +!endif + +;Installation folder stored in registry + +!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME + Var MultiUser.InstDir +!endif + +!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME + Var MultiUser.DefaultKeyValue +!endif + +;Windows Vista UAC setting + +!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin + RequestExecutionLevel admin + !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS +!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power + RequestExecutionLevel admin + !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS +!else if "${MULTIUSER_EXECUTIONLEVEL}" == Highest + RequestExecutionLevel highest + !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS +!else + RequestExecutionLevel user + !ifndef MULTIUSER_EXECUTIONLEVEL + !warning "MULTIUSER_EXECUTIONLEVEL not set!" + !endif +!endif + +/* + +Install modes + +*/ + +!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX + + ;Install mode initialization - per-machine + + ${ifnot} ${IsNT} + ${orif} $MultiUser.Privileges == "Admin" + ${orif} $MultiUser.Privileges == "Power" + + StrCpy $MultiUser.InstallMode AllUsers + + SetShellVarContext all + + !if "${UNINSTALLER_PREFIX}" != UN + ;Set default installation location for installer + !ifdef MULTIUSER_INSTALLMODE_INSTDIR + !ifdef MULTIUSER_USE_PROGRAMFILES64 + StrCpy $INSTDIR "$PROGRAMFILES64\${MULTIUSER_INSTALLMODE_INSTDIR}" + !else + StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" + !endif + !endif + !endif + + !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME + + ReadRegStr $MultiUser.InstDir HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" + + ${if} $MultiUser.InstDir != "" + StrCpy $INSTDIR $MultiUser.InstDir + ${endif} + + !endif + + !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION + Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}" + !endif + + ${endif} + +!macroend + +!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX + + ;Install mode initialization - per-user + + !if ${MULTIUSER_MINWIN} < 0x500 + ${if} ${IsNT} + !endif + + StrCpy $MultiUser.InstallMode CurrentUser + SetShellVarContext current + + !if "${UNINSTALLER_PREFIX}" != UN + ;Set default installation location for installer + !ifdef MULTIUSER_INSTALLMODE_INSTDIR + !if ${MULTIUSER_MINWIN} < 0x490 + ${if} ${AtLeastWin2000} + !endif + GetKnownFolderPath $INSTDIR {5CD7AEE2-2219-4A67-B85D-6C9CE15660CB} ; FOLDERID_UserProgramFiles + StrCmp $INSTDIR "" 0 +2 + StrCpy $INSTDIR "$LocalAppData\Programs" ; Fallback directory + StrCpy $INSTDIR "$INSTDIR\${MULTIUSER_INSTALLMODE_INSTDIR}" + !if ${MULTIUSER_MINWIN} < 0x490 + ${else} + StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" + ${endif} + !endif + !endif + !endif + + !ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME + ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" + ${if} $MultiUser.InstDir != "" + StrCpy $INSTDIR $MultiUser.InstDir + ${endif} + !endif + + !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION + Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}" + !endif + + !if ${MULTIUSER_MINWIN} < 0x500 + ${endif} + !endif + +!macroend + +Function MultiUser.InstallMode.AllUsers + !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS "" "" +FunctionEnd + +Function MultiUser.InstallMode.CurrentUser + !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER "" "" +FunctionEnd + +!ifndef MULTIUSER_NOUNINSTALL + +Function un.MultiUser.InstallMode.AllUsers + !insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un +FunctionEnd + +Function un.MultiUser.InstallMode.CurrentUser + !insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un +FunctionEnd + +!endif + +/* + +Installer/uninstaller initialization + +*/ + +!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX + + !ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT + Call "${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT}" + !else + Quit + !endif + +!macroend + +!macro MULTIUSER_INIT_TEXTS UNINSTALLER_PREFIX + + !if "${UNINSTALLER_PREFIX}" == "" + !define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^SetupCaption)" + !else + !define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^Name)" + !endif + + !define /IfNDef MULTIUSER_INIT_TEXT_ADMINREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires administrator privileges." + !define /IfNDef MULTIUSER_INIT_TEXT_POWERREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires at least Power User privileges." + !define /IfNDef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this computer." + + !undef MULTIUSER_TMPSTR_CAPTION + +!macroend + +!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX + + ;Installer initialization - check privileges and set install mode + + !insertmacro MULTIUSER_INIT_TEXTS "${UNINSTALLER_PREFIX}" + + UserInfo::GetAccountType + Pop $MultiUser.Privileges + + !if ${MULTIUSER_MINWIN} < 0x500 + ${if} ${IsNT} + !endif + + ;Check privileges + + !if "${MULTIUSER_EXECUTIONLEVEL}" == Admin + + ${if} $MultiUser.Privileges != "Admin" + MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}" + !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}" + ${endif} + + !else if "${MULTIUSER_EXECUTIONLEVEL}" == Power + + ${if} $MultiUser.Privileges != "Power" + ${andif} $MultiUser.Privileges != "Admin" + ${if} ${AtMostWinXP} + MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_POWERREQUIRED}" + ${else} + MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}" + ${endif} + !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}" + ${endif} + + !endif + + !ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS + + ;Default to per-machine installation if possible + + ${if} $MultiUser.Privileges == "Admin" + ${orif} $MultiUser.Privileges == "Power" + !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers + !else + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser + !endif + + !ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME + + ;Set installation mode to setting from a previous installation + + !ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER + ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" + ${if} $MultiUser.DefaultKeyValue == "" + ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" + ${if} $MultiUser.DefaultKeyValue != "" + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser + ${endif} + ${endif} + !else + ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" + ${if} $MultiUser.DefaultKeyValue == "" + ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" + ${if} $MultiUser.DefaultKeyValue != "" + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers + ${endif} + ${endif} + !endif + + !endif + + ${else} + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser + ${endif} + + !else + + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser + + !endif + + !ifdef MULTIUSER_INSTALLMODE_COMMANDLINE + + ;Check for install mode setting on command line + + ${${UNINSTALLER_FUNCPREFIX}GetParameters} $MultiUser.Parameters + + ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/CurrentUser" + + ${if} $MultiUser.Result != "" + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser + ${endif} + + ${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/AllUsers" + + ${if} $MultiUser.Result != "" + ${if} $MultiUser.Privileges == "Admin" + ${orif} $MultiUser.Privileges == "Power" + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers + ${else} + MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE}" + !insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}" + ${endif} + ${endif} + + !endif + + !if ${MULTIUSER_MINWIN} < 0x500 + ${else} + + ;Not running Windows NT, per-user installation not supported + Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers + + ${endif} + !endif + +!macroend + +!macro MULTIUSER_INIT + !verbose push 3 + !ifdef __UNINSTALL__ + !insertmacro MULTIUSER_UNINIT + !else + !insertmacro MULTIUSER_INIT_CHECKS "" "" + !endif + !verbose pop +!macroend + +!ifndef MULTIUSER_NOUNINSTALL +!macro MULTIUSER_UNINIT + !verbose push 3 + !insertmacro MULTIUSER_INIT_CHECKS Un un. + !verbose pop +!macroend +!endif + +/* + +Mode selection page + +*/ + +!macro MULTIUSER_PAGE_FUNCTION_CUSTOM TYPE + !ifmacrodef MUI_PAGE_FUNCTION_CUSTOM + !insertmacro MUI_PAGE_FUNCTION_CUSTOM "${TYPE}" + !endif + !ifdef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE} + Call "${MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE}}" + !undef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE} + !endif +!macroend + +!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE + + !ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE + !define MULTIUSER_INSTALLMODEPAGE_INTERFACE + Var MultiUser.InstallModePage + + Var MultiUser.InstallModePage.Text + + Var MultiUser.InstallModePage.AllUsers + Var MultiUser.InstallModePage.CurrentUser + + !endif + +!macroend + +!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE UNPREFIX UNIQUEID + + !define /ReDef MULTIUSER_${UNPREFIX}INSTALLMODEPAGE "" ; Unlock strings in the language file(s) + !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE + + !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)" + !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)" + !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)" + + PageEx custom + + PageCallbacks MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID} + + !define /IfNDef MULTIUSER_INSTALLMODEPAGE_CAPTION " " + Caption "${MULTIUSER_INSTALLMODEPAGE_CAPTION}" + + PageExEnd + + !insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID} + + !undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP + !undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS + !undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER + +!macroend + +!macro MULTIUSER_PAGE_INSTALLMODE + + !verbose push 3 + + !ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS + !error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest." + !endif + + !ifmacrodef MUI_PAGE_INIT + !insertmacro MUI_PAGE_INIT + !endif + !insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE "" ${__COUNTER__} + + !verbose pop + +!macroend + +!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE + + !include nsDialogs.nsh + + Function "${PRE}" + + !if ${MULTIUSER_MINWIN} < 0x500 + ${ifnot} ${IsNT} + Abort + ${endif} + !endif + + ${if} $MultiUser.Privileges != "Power" + ${andif} $MultiUser.Privileges != "Admin" + Abort + ${endif} + + !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM PRE + !ifmacrodef MUI_HEADER_TEXT_PAGE + !insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE) + !endif + + nsDialogs::Create 1018 + Pop $MultiUser.InstallModePage + + ${NSD_CreateLabel} 0 2u 100% 42u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}" + Pop $MultiUser.InstallModePage.Text + + ${NSD_CreateRadioButton} 15u 50u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}" + Pop $MultiUser.InstallModePage.AllUsers + + !ifdef MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME + !ifdef NOSYSTEMCALLS + ReadEnvStr $0 USERNAME + !else + System::Call 'ADVAPI32::GetUserName(t""r0,*i${NSIS_MAX_STRLEN})' + !endif + StrCmp $0 "" +2 + StrCpy $0 " ($0)" + ${NSD_CreateRadioButton} 15u 70u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}$0" + !else + ${NSD_CreateRadioButton} 15u 70u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}" + !endif + Pop $MultiUser.InstallModePage.CurrentUser + + ${if} $MultiUser.InstallMode == "AllUsers" + SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0 + ${else} + SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0 + ${endif} + + !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM SHOW + nsDialogs::Show + !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM DESTROYED + + FunctionEnd + + Function "${LEAVE}" + SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $0 + + ${if} $0 = ${BST_CHECKED} + Call MultiUser.InstallMode.AllUsers + ${else} + Call MultiUser.InstallMode.CurrentUser + ${endif} + + !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM LEAVE + FunctionEnd + +!macroend + + +!verbose pop +!endif diff --git a/tools/Include/Sections.nsh b/tools/Include/Sections.nsh new file mode 100644 index 0000000..7ae9f68 --- /dev/null +++ b/tools/Include/Sections.nsh @@ -0,0 +1,310 @@ +; Sections.nsh +; +; Defines and macros for section control +; +; Include in your script using: +; !include "Sections.nsh" + +;-------------------------------- + +!ifndef SECTIONS_INCLUDED + +!define SECTIONS_INCLUDED + +;-------------------------------- + +; Generic section defines + +# section or section group is selected +!define SF_SELECTED 1 +# section group +!define SF_SECGRP 2 +!define SF_SUBSEC 2 # deprecated +# section group end marker +!define SF_SECGRPEND 4 +!define SF_SUBSECEND 4 # deprecated +# bold text (Section !blah) +!define SF_BOLD 8 +# read only (SectionIn RO) +!define SF_RO 16 +# expanded section group (SectionGroup /e blah) +!define SF_EXPAND 32 +# section group is partially selected +!define SF_PSELECTED 64 # internal +# internal +!define SF_TOGGLED 128 # internal +!define SF_NAMECHG 256 # internal + +# mask to toggle off the selected flag +!define SECTION_OFF 0xFFFFFFFE + +;-------------------------------- + +; Select / unselect / reserve section + +!macro SelectSection SECTION + + Push $0 + Push $1 + StrCpy $1 "${SECTION}" + SectionGetFlags $1 $0 + IntOp $0 $0 | ${SF_SELECTED} + SectionSetFlags $1 $0 + Pop $1 + Pop $0 + +!macroend + +!macro UnselectSection SECTION + + Push $0 + Push $1 + StrCpy $1 "${SECTION}" + SectionGetFlags $1 $0 + IntOp $0 $0 & ${SECTION_OFF} + SectionSetFlags $1 $0 + Pop $1 + Pop $0 + +!macroend + +; If section selected, will unselect, if unselected, will select + +!macro ReverseSection SECTION + + Push $0 + Push $1 + StrCpy $1 "${SECTION}" + SectionGetFlags $1 $0 + IntOp $0 $0 ^ ${SF_SELECTED} + SectionSetFlags $1 $0 + Pop $1 + Pop $0 + +!macroend + +;-------------------------------- + +; Macros for mutually exclusive section selection +; Written by Tim Gallagher +; +; See one-section.nsi for an example of usage + +; Starts the Radio Button Block +; You should pass a variable that keeps the selected section +; as the first parameter for this macro. This variable should +; be initialized to the default section's index. +; +; As this macro uses $R0 and $R1 you can't use those two as the +; variable which will keep the selected section. + +!macro StartRadioButtons var + + !define StartRadioButtons_Var "${var}" + + Push $R0 + + SectionGetFlags "${StartRadioButtons_Var}" $R0 + IntOp $R0 $R0 & ${SECTION_OFF} + SectionSetFlags "${StartRadioButtons_Var}" $R0 + + Push $R1 + + StrCpy $R1 "${StartRadioButtons_Var}" + +!macroend + +; A radio button + +!macro RadioButton SECTION_NAME + + SectionGetFlags ${SECTION_NAME} $R0 + IntOp $R0 $R0 & ${SF_SELECTED} + IntCmp $R0 ${SF_SELECTED} 0 +2 +2 + StrCpy "${StartRadioButtons_Var}" ${SECTION_NAME} + +!macroend + +; Ends the radio button block + +!macro EndRadioButtons + + StrCmp $R1 "${StartRadioButtons_Var}" 0 +4 ; selection hasn't changed + SectionGetFlags "${StartRadioButtons_Var}" $R0 + IntOp $R0 $R0 | ${SF_SELECTED} + SectionSetFlags "${StartRadioButtons_Var}" $R0 + + Pop $R1 + Pop $R0 + + !undef StartRadioButtons_Var + +!macroend + +;-------------------------------- + +; These are two macros you can use to set a Section in an InstType +; or clear it from an InstType. +; +; Written by Robert Kehl +; +; For details, see https://nsis.sourceforge.io/wiki/SetSectionInInstType%2C_ClearSectionInInstType +; +; Use the defines below for the WANTED_INSTTYPE parameter. + +!define INSTTYPE_1 1 +!define INSTTYPE_2 2 +!define INSTTYPE_3 4 +!define INSTTYPE_4 8 +!define INSTTYPE_5 16 +!define INSTTYPE_6 32 +!define INSTTYPE_7 64 +!define INSTTYPE_8 128 +!define INSTTYPE_9 256 +!define INSTTYPE_10 512 +!define INSTTYPE_11 1024 +!define INSTTYPE_12 2048 +!define INSTTYPE_13 4096 +!define INSTTYPE_14 8192 +!define INSTTYPE_15 16384 +!define INSTTYPE_16 32768 +!define INSTTYPE_17 65536 +!define INSTTYPE_18 131072 +!define INSTTYPE_19 262144 +!define INSTTYPE_20 524288 +!define INSTTYPE_21 1048576 +!define INSTTYPE_22 2097152 +!define INSTTYPE_23 4194304 +!define INSTTYPE_24 8388608 +!define INSTTYPE_25 16777216 +!define INSTTYPE_26 33554432 +!define INSTTYPE_27 67108864 +!define INSTTYPE_28 134217728 +!define INSTTYPE_29 268435456 +!define INSTTYPE_30 536870912 +!define INSTTYPE_31 1073741824 +!define INSTTYPE_32 2147483648 + +!macro SetSectionInInstType SECTION_NAME WANTED_INSTTYPE + + Push $0 + Push $1 + StrCpy $1 "${SECTION_NAME}" + SectionGetInstTypes $1 $0 + IntOp $0 $0 | ${WANTED_INSTTYPE} + SectionSetInstTypes $1 $0 + Pop $1 + Pop $0 + +!macroend + +!macro ClearSectionInInstType SECTION_NAME WANTED_INSTTYPE + + Push $0 + Push $1 + Push $2 + StrCpy $2 "${SECTION_NAME}" + SectionGetInstTypes $2 $0 + StrCpy $1 ${WANTED_INSTTYPE} + IntOp $1 $1 ~ + IntOp $0 $0 & $1 + SectionSetInstTypes $2 $0 + Pop $2 + Pop $1 + Pop $0 + +!macroend + +;-------------------------------- + +; Set / clear / check bits in a section's flags +; Written by derekrprice + +; Set one or more bits in a sections's flags + +!macro SetSectionFlag SECTION BITS + + Push $R0 + Push $R1 + StrCpy $R1 "${SECTION}" + SectionGetFlags $R1 $R0 + IntOp $R0 $R0 | "${BITS}" + SectionSetFlags $R1 $R0 + Pop $R1 + Pop $R0 + +!macroend + +; Clear one or more bits in section's flags + +!macro ClearSectionFlag SECTION BITS + + Push $R0 + Push $R1 + Push $R2 + StrCpy $R2 "${SECTION}" + SectionGetFlags $R2 $R0 + IntOp $R1 "${BITS}" ~ + IntOp $R0 $R0 & $R1 + SectionSetFlags $R2 $R0 + Pop $R2 + Pop $R1 + Pop $R0 + +!macroend + +; Check if one or more bits in section's flags are set +; If they are, jump to JUMPIFSET +; If not, jump to JUMPIFNOTSET + +!macro SectionFlagIsSet SECTION BITS JUMPIFSET JUMPIFNOTSET + Push $R0 + SectionGetFlags "${SECTION}" $R0 + IntOp $R0 $R0 & "${BITS}" + IntCmp $R0 "${BITS}" +3 + Pop $R0 + StrCmp "" "${JUMPIFNOTSET}" +3 "${JUMPIFNOTSET}" + Pop $R0 + Goto "${JUMPIFSET}" +!macroend + +;-------------------------------- + +; Removes a section by unselecting and hiding it + +!macro RemoveSection SECTION + + Push $R0 + Push $R1 + StrCpy $R1 `${SECTION}` + SectionGetFlags $R1 $R0 + IntOp $R0 $R0 & ${SECTION_OFF} + SectionSetFlags $R1 $R0 + SectionSetText $R1 `` + Pop $R1 + Pop $R0 + +!macroend + +; Undoes the RemoveSection action + +!macro UnremoveSection SECTION SECTION_TEXT + + Push $R0 + Push $R1 + Push $R2 + StrCpy $R1 `${SECTION}` + StrCpy $R2 `${SECTION_TEXT}` + SectionGetFlags $R1 $R0 + IntOp $R0 $R0 | ${SF_SELECTED} + SectionSetFlags $R1 $R0 + SectionSetText $R1 $R2 + Pop $R2 + Pop $R1 + Pop $R0 + +!macroend + +;-------------------------------- + +!endif \ No newline at end of file diff --git a/tools/Include/StrFunc.nsh b/tools/Include/StrFunc.nsh new file mode 100644 index 0000000..b0448c0 --- /dev/null +++ b/tools/Include/StrFunc.nsh @@ -0,0 +1,1627 @@ +/* +o-----------------------------------------------------------------------------o +|String Functions Header File 1.10 | +(-----------------------------------------------------------------------------) +| By deguix / A Header file for NSIS 2.01 | +| -------------------------------| +| | +| This header file contains NSIS functions for string manipulation. | +| ---------| +| !include "StrFunc.nsh" / Example | +| ${Using:StrFunc} StrRep -----------| +| | +| Section | +| ${StrRep} $0 "Hello world!" "world" "everyone" | +| MessageBox mb_ok $0 | +| SectionEnd | +| | +o-----------------------------------------------------------------------------o +*/ + +!verbose push 3 +!define /IfNDef STRFUNC_VERBOSITY 3 +!define /IfNDef _STRFUNC_VERBOSITY ${STRFUNC_VERBOSITY} +!define /IfNDef _STRFUNC_CREDITVERBOSITY ${STRFUNC_VERBOSITY} +!undef STRFUNC_VERBOSITY +!verbose ${_STRFUNC_VERBOSITY} + +!include LogicLib.nsh + +!ifndef STRFUNC + + !define /IfNDef FALSE 0 + !define /IfNDef TRUE 1 + + ;Header File Identification + + !define STRFUNC `String Functions Header File` + ;define STRFUNC_SHORT `StrFunc` + !define STRFUNC_CREDITS `2004 Diego Pedroso` + + ;Header File Version + + !define STRFUNC_VERMAJ 1 + !define STRFUNC_VERMED 10 + ;!define STRFUNC_VERMIN 0 + ;!define STRFUNC_VERBLD 0 + + !define STRFUNC_VER `${STRFUNC_VERMAJ}.${STRFUNC_VERMED}` + + ;Header File Init Message Prefix and Postfix + + !define STRFUNC_INITMSGPRE `----------------------------------------------------------------------$\r$\n` + !define STRFUNC_INITMSGPOST `$\r$\n----------------------------------------------------------------------$\r$\n` + + ;Header File Init Message + + !verbose push ${_STRFUNC_CREDITVERBOSITY} + !echo `${STRFUNC_INITMSGPRE}NSIS ${STRFUNC} ${STRFUNC_VER} - Copyright ${STRFUNC_CREDITS}${STRFUNC_INITMSGPOST}` + !verbose pop + + ;Header File Function Macros + + !ifdef STRFUNC_USECALLARTIFICIALFUNCTION + !include Util.nsh + !endif + + !define "Using:StrFunc" `!insertmacro STRFUNC_USING ` + !macro STRFUNC_USING Name + !if "${STRFUNC_VERBOSITY}" > 4 + !verbose push 4 + !endif + !ifndef ${Name}_INCLUDED + !ifndef STRFUNC_USECALLARTIFICIALFUNCTION + ${${Name}} ; Invoke !insertmacro STRFUNC_MAKEFUNC + !endif + !endif + !if "${STRFUNC_VERBOSITY}" > 4 + !verbose pop + !endif + !macroend + + !macro STRFUNC_FUNCLIST_INSERT Name + !ifdef StrFunc_List + !define /ReDef StrFunc_List `${StrFunc_List}|${Name}` + !else + !define StrFunc_List `${Name}` + !endif + !macroend + + !macro STRFUNC_DEFFUNC Name List TypeList + !insertmacro STRFUNC_FUNCLIST_INSERT ${Name} + !define `${Name}_List` `${List}` + !define `${Name}_TypeList` `${TypeList}` + !ifdef STRFUNC_USECALLARTIFICIALFUNCTION + !define `${Name}` `!insertmacro STRFUNC_CALL_${Name} "" ` + !define `Un${Name}` `!insertmacro STRFUNC_CALL_${Name} Un ` + !else + !define `${Name}` `!insertmacro STRFUNC_MAKEFUNC ${Name} "" #` + !define `Un${Name}` `!insertmacro STRFUNC_MAKEFUNC ${Name} Un #` + !endif + !macroend + + !macro STRFUNC_MAKEFUNC basename un + !ifndef __GLOBAL__ + !error "You forgot ${U+24}{Using:StrFunc} ${un}${basename}" + !endif + !insertmacro STRFUNC_MAKEFUNC_${basename} + !macroend + + !macro STRFUNC_BEGINFUNC basename un credits + !verbose push ${_STRFUNC_CREDITVERBOSITY} + !echo `${U+24}{${un}${basename}} - Copyright ${credits}` + !verbose pop + !define /IfNDef ${un}${basename}_INCLUDED + !ifndef STRFUNC_USECALLARTIFICIALFUNCTION + !define /ReDef ${un}${basename} `!insertmacro STRFUNC_CALL_${basename} "${un}" ` + !if "${un}" != "" + Function un.${basename} + !else + Function ${basename} + !endif + !endif + !macroend + !macro STRFUNC_ENDFUNC + !ifndef STRFUNC_USECALLARTIFICIALFUNCTION + FunctionEnd + !endif + !macroend + + !macro STRFUNC_CALL basename un + !ifdef STRFUNC_USECALLARTIFICIALFUNCTION + ${CallArtificialFunction} STRFUNC_MAKEFUNC_${basename} + !else + !if "${un}" != "" + Call un.${basename} + !else + Call ${basename} + !endif + !endif + !macroend + + + ############################################################################ + # StrCase + !insertmacro STRFUNC_DEFFUNC StrCase `ResultVar|String|Type` `Output|Text|Option U L T S <>` + + !macro STRFUNC_CALL_StrCase un ResultVar String Type + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrCase} "${ResultVar}" "${String}" "${Type}"` + !verbose 2 + Push `${String}` + Push `${Type}` + !insertmacro STRFUNC_CALL StrCase "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrCase + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Dave Laundon` + /*After this point: + ------------------------------------------ + $0 = String (input) + $1 = Type (input) + $2 = StrLength (temp) + $3 = StartChar (temp) + $4 = EndChar (temp) + $5 = ResultStr (temp) + $6 = CurrentChar (temp) + $7 = LastChar (temp) + $8 = Temp (temp)*/ + + ;Get input from user + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + + ;Initialize variables + StrCpy $2 "" + StrCpy $3 "" + StrCpy $4 "" + StrCpy $5 "" + StrCpy $6 "" + StrCpy $7 "" + StrCpy $8 "" + + ;Upper and lower cases are simple to use + ${If} $1 == "U" + + ;Upper Case System: + ;------------------ + ; Convert all characters to upper case. + + System::Call "User32::CharUpper(t r0 r5)i" + Goto StrCase_End + ${ElseIf} $1 == "L" + + ;Lower Case System: + ;------------------ + ; Convert all characters to lower case. + + System::Call "User32::CharLower(t r0 r5)i" + Goto StrCase_End + ${EndIf} + + ;For the rest of cases: + ;Get "String" length + StrLen $2 $0 + + ;Make a loop until the end of "String" + ${For} $3 0 $2 + ;Add 1 to "EndChar" counter also + IntOp $4 $3 + 1 + + # Step 1: Detect one character at a time + + ;Remove characters before "StartChar" except when + ;"StartChar" is the first character of "String" + ${If} $3 <> 0 + StrCpy $6 $0 `` $3 + ${EndIf} + + ;Remove characters after "EndChar" except when + ;"EndChar" is the last character of "String" + ${If} $4 <> $2 + ${If} $3 = 0 + StrCpy $6 $0 1 + ${Else} + StrCpy $6 $6 1 + ${EndIf} + ${EndIf} + + # Step 2: Convert to the advanced case user chose: + + ${If} $1 == "T" + + ;Title Case System: + ;------------------ + ; Convert all characters after a non-alphabetic character to upper case. + ; Else convert to lower case. + + ;Use "IsCharAlpha" for the job + System::Call "*(&t1 r7) p .r8" + System::Call "*$8(&i1 .r7)" + System::Free $8 + System::Call "user32::IsCharAlpha(i r7) i .r8" + + ;Verify "IsCharAlpha" result and convert the character + ${If} $8 = 0 + System::Call "User32::CharUpper(t r6 r6)i" + ${Else} + System::Call "User32::CharLower(t r6 r6)i" + ${EndIf} + ${ElseIf} $1 == "S" + + ;Sentence Case System: + ;------------------ + ; Convert all characters after a ".", "!" or "?" character to upper case. + ; Else convert to lower case. Spaces or tabs after these marks are ignored. + + ;Detect current characters and ignore if necessary + ${If} $6 == " " + ${OrIf} $6 == "$\t" + Goto IgnoreLetter + ${EndIf} + + ;Detect last characters and convert + ${If} $7 == "." + ${OrIf} $7 == "!" + ${OrIf} $7 == "?" + ${OrIf} $7 == "" + System::Call "User32::CharUpper(t r6 r6)i" + ${Else} + System::Call "User32::CharLower(t r6 r6)i" + ${EndIf} + ${ElseIf} $1 == "<>" + + ;Switch Case System: + ;------------------ + ; Switch all characters cases to their inverse case. + + ;Use "IsCharUpper" for the job + System::Call "*(&t1 r6) p .r8" + System::Call "*$8(&i1 .r7)" + System::Free $8 + System::Call "user32::IsCharUpper(i r7) i .r8" + + ;Verify "IsCharUpper" result and convert the character + ${If} $8 = 0 + System::Call "User32::CharUpper(t r6 r6)i" + ${Else} + System::Call "User32::CharLower(t r6 r6)i" + ${EndIf} + ${EndIf} + + ;Write the character to "LastChar" + StrCpy $7 $6 + + IgnoreLetter: + ;Add this character to "ResultStr" + StrCpy $5 `$5$6` + ${Next} + + StrCase_End: + + /*After this point: + ------------------------------------------ + $0 = OutVar (output)*/ + + ; Copy "ResultStr" to "OutVar" + StrCpy $0 $5 + + ;Return output to user + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrClb + !insertmacro STRFUNC_DEFFUNC StrClb `ResultVar|String|Action` `Output|Text|Option > < <>` + + !macro STRFUNC_CALL_StrClb un ResultVar String Action + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrClb} "${ResultVar}" "${String}" "${Action}"` + !verbose 2 + Push `${String}` + Push `${Action}` + !insertmacro STRFUNC_CALL StrClb "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrClb + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Nik Medved` + + /*After this point: + ------------------------------------------ + $0 = String (input) + $1 = Action (input) + $2 = Lock/Unlock (temp) + $3 = Temp (temp) + $4 = Temp2 (temp)*/ + + ;Get input from user + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + + StrCpy $2 "" + StrCpy $3 "" + StrCpy $4 "" + + ;Open the clipboard to do the operations the user chose (kichik's fix) + System::Call 'user32::OpenClipboard(p $HWNDPARENT)' + + ${If} $1 == ">" ;Set + + ;Step 1: Clear the clipboard + System::Call 'user32::EmptyClipboard()' + + ;Step 2: Allocate global heap + StrLen $2 $0 + IntOp $2 $2 + 1 + !if "${NSIS_CHAR_SIZE}" > 1 + IntOp $2 $2 * ${NSIS_CHAR_SIZE} + !endif + System::Call 'kernel32::GlobalAlloc(i 2, i r2) p.r2' + + ;Step 3: Lock the handle + System::Call 'kernel32::GlobalLock(p r2) i.r3' + + ;Step 4: Copy the text to locked clipboard buffer + System::Call 'kernel32::lstrcpy(p r3, t r0)' + + ;Step 5: Unlock the handle again + System::Call 'kernel32::GlobalUnlock(p r2)' + + ;Step 6: Set the information to the clipboard + !if "${NSIS_CHAR_SIZE}" > 1 + System::Call 'user32::SetClipboardData(i 13, p r2)' + !else + System::Call 'user32::SetClipboardData(i 1, p r2)' + !endif + + StrCpy $0 "" + + ${ElseIf} $1 == "<" ;Get + + ;Step 1: Get clipboard data + !if "${NSIS_CHAR_SIZE}" > 1 + System::Call 'user32::GetClipboardData(i 13)p.r2' + !else + System::Call 'user32::GetClipboardData(i 1)p.r2' + !endif + + ;Step 2: Lock and copy data (kichik's fix) + System::Call 'kernel32::GlobalLock(p r2) t .r0' + + ;Step 3: Unlock (kichik's fix) + System::Call 'kernel32::GlobalUnlock(p r2)' + + ${ElseIf} $1 == "<>" ;Swap + + ;Step 1: Get clipboard data + !if "${NSIS_CHAR_SIZE}" > 1 + System::Call 'user32::GetClipboardData(i 13)p.r2' + !else + System::Call 'user32::GetClipboardData(i 1)p.r2' + !endif + + ;Step 2: Lock and copy data (kichik's fix) + System::Call 'kernel32::GlobalLock(p r2) t .r4' + + ;Step 3: Unlock (kichik's fix) + System::Call 'kernel32::GlobalUnlock(p r2)' + + ;Step 4: Clear the clipboard + System::Call 'user32::EmptyClipboard()' + + ;Step 5: Allocate global heap + StrLen $2 $0 + IntOp $2 $2 + 1 + !if "${NSIS_CHAR_SIZE}" > 1 + IntOp $2 $2 * ${NSIS_CHAR_SIZE} + !endif + System::Call 'kernel32::GlobalAlloc(i 2, i r2) p.r2' + + ;Step 6: Lock the handle + System::Call 'kernel32::GlobalLock(p r2) i.r3' + + ;Step 7: Copy the text to locked clipboard buffer + System::Call 'kernel32::lstrcpy(p r3, t r0)' + + ;Step 8: Unlock the handle again + System::Call 'kernel32::GlobalUnlock(p r2)' + + ;Step 9: Set the information to the clipboard + !if "${NSIS_CHAR_SIZE}" > 1 + System::Call 'user32::SetClipboardData(i 13, p r2)' + !else + System::Call 'user32::SetClipboardData(i 1, p r2)' + !endif + + StrCpy $0 $4 + ${Else} ;Clear + + ;Step 1: Clear the clipboard + System::Call 'user32::EmptyClipboard()' + + StrCpy $0 "" + ${EndIf} + + ;Close the clipboard + System::Call 'user32::CloseClipboard()' + + /*After this point: + ------------------------------------------ + $0 = OutVar (output)*/ + + ;Return result to user + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrIOToNSIS + !insertmacro STRFUNC_DEFFUNC StrIOToNSIS `ResultVar|String` `Output|Text` + + !macro STRFUNC_CALL_StrIOToNSIS un ResultVar String + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrIOToNSIS} "${ResultVar}" "${String}"` + !verbose 2 + Push `${String}` + !insertmacro STRFUNC_CALL StrIOToNSIS "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrIOToNSIS + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 "bluenet" - Based on functions by Amir Szekely, Joost Verburg, Dave Laundon and Diego Pedroso` + + /*After this point: + ------------------------------------------ + $R0 = String (input/output) + $R1 = StartCharPos (temp) + $R2 = StrLen (temp) + $R3 = TempStr (temp) + $R4 = TempRepStr (temp)*/ + + ;Get input from user + Exch $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + + ;Get "String" length + StrLen $R2 $R0 + + ;Loop until "String" end is reached + ${For} $R1 0 $R2 + ;Get the next "String" characters + StrCpy $R3 $R0 2 $R1 + + ;Detect if current character is: + ${If} $R3 == "\\" ;Back-slash + StrCpy $R4 "\" + ${ElseIf} $R3 == "\r" ;Carriage return + StrCpy $R4 "$\r" + ${ElseIf} $R3 == "\n" ;Line feed + StrCpy $R4 "$\n" + ${ElseIf} $R3 == "\t" ;Tab + StrCpy $R4 "$\t" + ${Else} ;Anything else + StrCpy $R4 "" + ${EndIf} + + ;Detect if "TempRepStr" is not empty + ${If} $R4 != "" + ;Replace the old characters with the new one + StrCpy $R3 $R0 $R1 + IntOp $R1 $R1 + 2 + StrCpy $R0 $R0 "" $R1 + StrCpy $R0 "$R3$R4$R0" + IntOp $R2 $R2 - 1 ;Decrease "StrLen" + IntOp $R1 $R1 - 2 ;Go back to the next character + ${EndIf} + ${Next} + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + !macroend + + ############################################################################ + # StrLoc + !insertmacro STRFUNC_DEFFUNC StrLoc `ResultVar|String|StrToSearchFor|CounterDirection` `Output|Text|Text|Option > <` + + !macro STRFUNC_CALL_StrLoc un ResultVar String StrToSearchFor OffsetDirection + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrLoc} "${ResultVar}" "${String}" "${StrToSearchFor}" "${OffsetDirection}"` + !verbose 2 + Push `${String}` + Push `${StrToSearchFor}` + Push `${OffsetDirection}` + !insertmacro STRFUNC_CALL StrLoc "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrLoc + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Ximon Eighteen` + + /*After this point: + ------------------------------------------ + $R0 = OffsetDirection (input) + $R1 = StrToSearch (input) + $R2 = String (input) + $R3 = StrToSearchLen (temp) + $R4 = StrLen (temp) + $R5 = StartCharPos (temp) + $R6 = TempStr (temp)*/ + + ;Get input from user + Exch $R0 + Exch + Exch $R1 + Exch 2 + Exch $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + + ;Get "String" and "StrToSearch" length + StrLen $R3 $R1 + StrLen $R4 $R2 + ;Start "StartCharPos" counter + StrCpy $R5 0 + + ;Loop until "StrToSearch" is found or "String" reaches its end + ${Do} + ;Remove everything before and after the searched part ("TempStr") + StrCpy $R6 $R2 $R3 $R5 + + ;Compare "TempStr" with "StrToSearch" + ${If} $R6 == $R1 + ${If} $R0 == `<` + IntOp $R6 $R3 + $R5 + IntOp $R0 $R4 - $R6 + ${Else} + StrCpy $R0 $R5 + ${EndIf} + ${ExitDo} + ${EndIf} + ;If not "StrToSearch", this could be "String" end + ${If} $R5 >= $R4 + StrCpy $R0 `` + ${ExitDo} + ${EndIf} + ;If not, continue the loop + IntOp $R5 $R5 + 1 + ${Loop} + + ;Return output to user + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Exch + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrNSISToIO + !insertmacro STRFUNC_DEFFUNC StrNSISToIO `ResultVar|String` `Output|Text` + + !macro STRFUNC_CALL_StrNSISToIO un ResultVar String + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrNSISToIO} "${ResultVar}" "${String}"` + !verbose 2 + Push `${String}` + !insertmacro STRFUNC_CALL StrNSISToIO "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrNSISToIO + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 "bluenet" - Based on functions by Amir Szekely, Joost Verburg, Dave Laundon and Diego Pedroso` + + /*After this point: + ------------------------------------------ + $R0 = String (input/output) + $R1 = StartCharPos (temp) + $R2 = StrLen (temp) + $R3 = TempStr (temp) + $R4 = TempRepStr (temp)*/ + + ;Get input from user + Exch $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + + ;Get "String" length + StrLen $R2 $R0 + + ;Loop until "String" end is reached + ${For} $R1 0 $R2 + ;Get the next "String" character + StrCpy $R3 $R0 1 $R1 + + ;Detect if current character is: + ${If} $R3 == "$\r" ;Back-slash + StrCpy $R4 "\r" + ${ElseIf} $R3 == "$\n" ;Carriage return + StrCpy $R4 "\n" + ${ElseIf} $R3 == "$\t" ;Line feed + StrCpy $R4 "\t" + ${ElseIf} $R3 == "\" ;Tab + StrCpy $R4 "\\" + ${Else} ;Anything else + StrCpy $R4 "" + ${EndIf} + + ;Detect if "TempRepStr" is not empty + ${If} $R4 != "" + ;Replace the old character with the new ones + StrCpy $R3 $R0 $R1 + IntOp $R1 $R1 + 1 + StrCpy $R0 $R0 "" $R1 + StrCpy $R0 "$R3$R4$R0" + IntOp $R2 $R2 + 1 ;Increase "StrLen" + ${EndIf} + ${Next} + + ;Return output to user + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + !macroend + + ############################################################################ + # StrRep + !insertmacro STRFUNC_DEFFUNC StrRep `ResultVar|String|StrToReplace|ReplacementString` `Output|Text|Text|Text` + + !macro STRFUNC_CALL_StrRep un ResultVar String StringToReplace ReplacementString + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrRep} "${ResultVar}" "${String}" "${StringToReplace}" "${ReplacementString}"` + !verbose 2 + Push `${String}` + Push `${StringToReplace}` + Push `${ReplacementString}` + !insertmacro STRFUNC_CALL StrRep "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrRep + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Hendri Adriaens` + + /*After this point: + ------------------------------------------ + $R0 = ReplacementString (input) + $R1 = StrToSearch (input) + $R2 = String (input) + $R3 = RepStrLen (temp) + $R4 = StrToSearchLen (temp) + $R5 = StrLen (temp) + $R6 = StartCharPos (temp) + $R7 = TempStrL (temp) + $R8 = TempStrR (temp)*/ + + ;Get input from user + Exch $R0 + Exch + Exch $R1 + Exch + Exch 2 + Exch $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + + ;Return "String" if "StrToSearch" is "" + ${IfThen} $R1 == "" ${|} Goto Done ${|} + + ;Get "ReplacementString", "String" and "StrToSearch" length + StrLen $R3 $R0 + StrLen $R4 $R1 + StrLen $R5 $R2 + ;Start "StartCharPos" counter + StrCpy $R6 0 + + ;Loop until "StrToSearch" is found or "String" reaches its end + ${Do} + ;Remove everything before and after the searched part ("TempStrL") + StrCpy $R7 $R2 $R4 $R6 + + ;Compare "TempStrL" with "StrToSearch" + ${If} $R7 == $R1 + ;Split "String" to replace the string wanted + StrCpy $R7 $R2 $R6 ;TempStrL + + ;Calc: "StartCharPos" + "StrToSearchLen" = EndCharPos + IntOp $R8 $R6 + $R4 + + StrCpy $R8 $R2 "" $R8 ;TempStrR + + ;Insert the new string between the two separated parts of "String" + StrCpy $R2 $R7$R0$R8 + ;Now calculate the new "StrLen" and "StartCharPos" + StrLen $R5 $R2 + IntOp $R6 $R6 + $R3 + ${Continue} + ${EndIf} + + ;If not "StrToSearch", this could be "String" end + ${IfThen} $R6 >= $R5 ${|} ${ExitDo} ${|} + ;If not, continue the loop + IntOp $R6 $R6 + 1 + ${Loop} + + Done: + + /*After this point: + ------------------------------------------ + $R0 = OutVar (output)*/ + + ;Return output to user + StrCpy $R0 $R2 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrSort + !insertmacro STRFUNC_DEFFUNC StrSort `ResultVar|String|CenterStr|LeftStr|RightStr|IncludeLeftStr|IncludeCenterStr|IncludeRightStr` `Output|Text|Text|Text|Text|Option 1 0|Option 1 0|Option 1 0` + + !macro STRFUNC_CALL_StrSort un ResultVar String CenterStr LeftStr RightStr IncludeCenterStr IncludeLeftStr IncludeRightStr + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrSort} "${ResultVar}" "${String}" "${CenterStr}" "${LeftStr}" "${RightStr}" "${IncludeCenterStr}" "${IncludeLeftStr}" "${IncludeRightStr}"` + !verbose 2 + Push `${String}` + Push `${CenterStr}` + Push `${LeftStr}` + Push `${RightStr}` + Push `${IncludeCenterStr}` + Push `${IncludeLeftStr}` + Push `${IncludeRightStr}` + !insertmacro STRFUNC_CALL StrSort "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrSort + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Stuart Welch` + + /*After this point: + ------------------------------------------ + $R0 = String (input) + $R1 = LeftStr (input) + $R2 = CenterStr (input) + $R3 = RightStr (input) + $R4 = IncludeLeftStr (input) + $R5 = IncludeCenterStr (input) + $R6 = IncludeRightStr (input) + + $0 = StrLen (temp) + $1 = LeftStrLen (temp) + $2 = CenterStrLen (temp) + $3 = RightStrLen (temp) + $4 = StartPos (temp) + $5 = EndPos (temp) + $6 = StartCharPos (temp) + $7 = EndCharPos (temp) + $8 = TempStr (temp)*/ + + ;Get input from user + Exch $R6 + Exch + Exch $R5 + Exch + Exch 2 + Exch $R4 + Exch 2 + Exch 3 + Exch $R3 + Exch 3 + Exch 4 + Exch $R2 + Exch 4 + Exch 5 + Exch $R1 + Exch 5 + Exch 6 + Exch $R0 + Exch 6 + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + + ;Parameter defaults + ${IfThen} $R4 == `` ${|} StrCpy $R4 `1` ${|} + ${IfThen} $R5 == `` ${|} StrCpy $R5 `1` ${|} + ${IfThen} $R6 == `` ${|} StrCpy $R6 `1` ${|} + + ;Get "String", "CenterStr", "LeftStr" and "RightStr" length + StrLen $0 $R0 + StrLen $1 $R1 + StrLen $2 $R2 + StrLen $3 $R3 + ;Start "StartCharPos" counter + StrCpy $6 0 + ;Start "EndCharPos" counter based on "CenterStr" length + IntOp $7 $6 + $2 + + ;Loop until "CenterStr" is found or "String" reaches its end + ${Do} + ;Remove everything before and after the searched part ("TempStr") + StrCpy $8 $R0 $2 $6 + + ;Compare "TempStr" with "CenterStr" + ${IfThen} $8 == $R2 ${|} ${ExitDo} ${|} + ;If not, this could be "String" end + ${IfThen} $7 >= $0 ${|} Goto Done ${|} + ;If not, continue the loop + IntOp $6 $6 + 1 + IntOp $7 $7 + 1 + ${Loop} + + # "CenterStr" was found + + ;Remove "CenterStr" from "String" if the user wants + ${If} $R5 = ${FALSE} + StrCpy $8 $R0 $6 + StrCpy $R0 $R0 `` $7 + StrCpy $R0 $8$R0 + ${EndIf} + + ;"StartPos" and "EndPos" will record "CenterStr" coordinates for now + StrCpy $4 $6 + StrCpy $5 $7 + ;"StartCharPos" and "EndCharPos" should be before "CenterStr" + IntOp $6 $6 - $1 + IntOp $7 $6 + $1 + + ;Loop until "LeftStr" is found or "String" reaches its start + ${Do} + ;Remove everything before and after the searched part ("TempStr") + StrCpy $8 $R0 $1 $6 + + ;If "LeftStr" is empty + ${If} $R1 == `` + StrCpy $6 0 + StrCpy $7 0 + ${ExitDo} + ${EndIf} + + ;Compare "TempStr" with "LeftStr" + ${IfThen} $8 == $R1 ${|} ${ExitDo} ${|} + ;If not, this could be "String" start + ${IfThen} $6 <= 0 ${|} ${ExitDo} ${|} + ;If not, continue the loop + IntOp $6 $6 - 1 + IntOp $7 $7 - 1 + ${Loop} + + # "LeftStr" is found or "String" start was reached + + ;Remove "LeftStr" from "String" if the user wants + ${If} $R4 = ${FALSE} + IntOp $6 $6 + $1 + ${EndIf} + + ;Record "LeftStr" first character position on "TempStr" (temporarily) + StrCpy $8 $6 + + ;"StartCharPos" and "EndCharPos" should be after "CenterStr" + ${If} $R5 = ${FALSE} + StrCpy $6 $4 + ${Else} + IntOp $6 $4 + $2 + ${EndIf} + IntOp $7 $6 + $3 + + ;Record "LeftStr" first character position on "StartPos" + StrCpy $4 $8 + + ;Loop until "RightStr" is found or "String" reaches its end + ${Do} + ;Remove everything before and after the searched part ("TempStr") + StrCpy $8 $R0 $3 $6 + + ;If "RightStr" is empty + ${If} $R3 == `` + StrCpy $6 $0 + StrCpy $7 $0 + ${ExitDo} + ${EndIf} + + ;Compare "TempStr" with "RightStr" + ${IfThen} $8 == $R3 ${|} ${ExitDo} ${|} + ;If not, this could be "String" end + ${IfThen} $7 >= $0 ${|} ${ExitDo} ${|} + ;If not, continue the loop + IntOp $6 $6 + 1 + IntOp $7 $7 + 1 + ${Loop} + + ;Remove "RightStr" from "String" if the user wants + ${If} $R6 = ${FALSE} + IntOp $7 $7 - $3 + ${EndIf} + + ;Record "RightStr" last character position on "StartPos" + StrCpy $5 $7 + + ;As the positionment is relative... + IntOp $5 $5 - $4 + + ;Write the string and finish the job + StrCpy $R0 $R0 $5 $4 + Goto +2 + + Done: + StrCpy $R0 `` + + /*After this point: + ------------------------------------------ + $R0 = OutVar (output)*/ + + ;Return output to user + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrStr + !insertmacro STRFUNC_DEFFUNC StrStr `ResultVar|String|StrToSearchFor` `Output|Text|Text` + + !macro STRFUNC_CALL_StrStr un ResultVar String StrToSearchFor + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrStr} "${ResultVar}" "${String}" "${StrToSearchFor}"` + !verbose 2 + Push `${String}` + Push `${StrToSearchFor}` + !insertmacro STRFUNC_CALL StrStr "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrStr + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Ximon Eighteen` + + /*After this point: + ------------------------------------------ + $R0 = StrToSearch (input) + $R1 = String (input) + $R2 = StrToSearchLen (temp) + $R3 = StrLen (temp) + $R4 = StartCharPos (temp) + $R5 = TempStr (temp)*/ + + ;Get input from user + Exch $R0 + Exch + Exch $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + + ;Get "String" and "StrToSearch" length + StrLen $R2 $R0 + StrLen $R3 $R1 + ;Start "StartCharPos" counter + StrCpy $R4 0 + + ;Loop until "StrToSearch" is found or "String" reaches its end + ${Do} + ;Remove everything before and after the searched part ("TempStr") + StrCpy $R5 $R1 $R2 $R4 + + ;Compare "TempStr" with "StrToSearch" + ${IfThen} $R5 == $R0 ${|} ${ExitDo} ${|} + ;If not "StrToSearch", this could be "String" end + ${IfThen} $R4 >= $R3 ${|} ${ExitDo} ${|} + ;If not, continue the loop + IntOp $R4 $R4 + 1 + ${Loop} + + /*After this point: + ------------------------------------------ + $R0 = OutVar (output)*/ + + ;Remove part before "StrToSearch" on "String" (if there has one) + StrCpy $R0 $R1 `` $R4 + + ;Return output to user + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrStrAdv + !insertmacro STRFUNC_DEFFUNC StrStrAdv `ResultVar|String|StrToSearchFor|SearchDirection|ResultStrDirection|DisplayStrToSearch|Loops|CaseSensitive` `Output|Text|Text|Option > <|Option > <|Option 1 0|Text|Option 0 1` + + !macro STRFUNC_CALL_StrStrAdv un ResultVar String StrToSearchFor SearchDirection ResultStrDirection DisplayStrToSearch Loops CaseSensitive + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrStrAdv} "${ResultVar}" "${String}" "${StrToSearchFor}" "${SearchDirection}" "${ResultStrDirection}" "${DisplayStrToSearch}" "${Loops}" "${CaseSensitive}"` + !verbose 2 + Push `${String}` + Push `${StrToSearchFor}` + Push `${SearchDirection}` + Push `${ResultStrDirection}` + Push `${DisplayStrToSearch}` + Push `${Loops}` + Push `${CaseSensitive}` + !insertmacro STRFUNC_CALL StrStrAdv "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrStrAdv + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2003-2004 Diego Pedroso` + + /*After this point: + ------------------------------------------ + $0 = String (input) + $1 = StringToSearch (input) + $2 = DirectionOfSearch (input) + $3 = DirectionOfReturn (input) + $4 = ShowStrToSearch (input) + $5 = NumLoops (input) + $6 = CaseSensitive (input) + $7 = StringLength (temp) + $8 = StrToSearchLength (temp) + $9 = CurrentLoop (temp) + $R0 = EndCharPos (temp) + $R1 = StartCharPos (temp) + $R2 = OutVar (output) + $R3 = Temp (temp)*/ + + ;Get input from user + + Exch $6 + Exch + Exch $5 + Exch + Exch 2 + Exch $4 + Exch 2 + Exch 3 + Exch $3 + Exch 3 + Exch 4 + Exch $2 + Exch 4 + Exch 5 + Exch $1 + Exch 5 + Exch 6 + Exch $0 + Exch 6 + Push $7 + Push $8 + Push $9 + Push $R3 + Push $R2 + Push $R1 + Push $R0 + + ; Clean $R0-$R3 variables + StrCpy $R0 "" + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + + ; Verify if we have the correct values on the variables + ${If} $0 == `` + SetErrors ;AdvStrStr_StrToSearch not found + Goto AdvStrStr_End + ${EndIf} + + ${If} $1 == `` + SetErrors ;No text to search + Goto AdvStrStr_End + ${EndIf} + + ${If} $2 != < + StrCpy $2 > + ${EndIf} + + ${If} $3 != < + StrCpy $3 > + ${EndIf} + + ${If} $4 <> 0 + StrCpy $4 1 + ${EndIf} + + ${If} $5 <= 0 + StrCpy $5 0 + ${EndIf} + + ${If} $6 <> 1 + StrCpy $6 0 + ${EndIf} + + ; Find "AdvStrStr_String" length + StrLen $7 $0 + + ; Then find "AdvStrStr_StrToSearch" length + StrLen $8 $1 + + ; Now set up basic variables + + ${If} $2 == < + IntOp $R1 $7 - $8 + StrCpy $R2 $7 + ${Else} + StrCpy $R1 0 + StrCpy $R2 $8 + ${EndIf} + + StrCpy $9 0 ; First loop + + ;Let's begin the search + + ${Do} + ; Step 1: If the starting or ending numbers are negative + ; or more than AdvStrStr_StringLen, we return + ; error + + ${If} $R1 < 0 + StrCpy $R1 `` + StrCpy $R2 `` + StrCpy $R3 `` + SetErrors ;AdvStrStr_StrToSearch not found + Goto AdvStrStr_End + ${ElseIf} $R2 > $7 + StrCpy $R1 `` + StrCpy $R2 `` + StrCpy $R3 `` + SetErrors ;AdvStrStr_StrToSearch not found + Goto AdvStrStr_End + ${EndIf} + + ; Step 2: Start the search depending on + ; AdvStrStr_DirectionOfSearch. Chop down not needed + ; characters. + + ${If} $R1 <> 0 + StrCpy $R3 $0 `` $R1 + ${EndIf} + + ${If} $R2 <> $7 + ${If} $R1 = 0 + StrCpy $R3 $0 $8 + ${Else} + StrCpy $R3 $R3 $8 + ${EndIf} + ${EndIf} + + ; Step 3: Make sure that's the string we want + + ; Case-Sensitive Support <- Use "AdvStrStr_Temp" + ; variable because it won't be used anymore + + ${If} $6 == 1 + System::Call `kernel32::lstrcmp(ts, ts) i.s` `$R3` `$1` + Pop $R3 + ${If} $R3 = 0 + StrCpy $R3 1 ; Continue + ${Else} + StrCpy $R3 0 ; Break + ${EndIf} + ${Else} + ${If} $R3 == $1 + StrCpy $R3 1 ; Continue + ${Else} + StrCpy $R3 0 ; Break + ${EndIf} + ${EndIf} + + ; After the comparasion, confirm that it is the + ; value we want. + + ${If} $R3 = 1 + + ;We found it, return except if the user has set up to + ;search for another one: + ${If} $9 >= $5 + + ;Now, let's see if the user wants + ;AdvStrStr_StrToSearch to appear: + ${If} $4 == 0 + ;Return depends on AdvStrStr_DirectionOfReturn + ${If} $3 == < + ; RTL + StrCpy $R0 $0 $R1 + ${Else} + ; LTR + StrCpy $R0 $0 `` $R2 + ${EndIf} + ${Break} + ${Else} + ;Return depends on AdvStrStr_DirectionOfReturn + ${If} $3 == < + ; RTL + StrCpy $R0 $0 $R2 + ${Else} + ; LTR + StrCpy $R0 $0 `` $R1 + ${EndIf} + ${Break} + ${EndIf} + ${Else} + ;If the user wants to have more loops, let's do it so! + IntOp $9 $9 + 1 + + ${If} $2 == < + IntOp $R1 $R1 - 1 + IntOp $R2 $R2 - 1 + ${Else} + IntOp $R1 $R1 + 1 + IntOp $R2 $R2 + 1 + ${EndIf} + ${EndIf} + ${Else} + ; Step 4: We didn't find it, so do steps 1 thru 3 again + + ${If} $2 == < + IntOp $R1 $R1 - 1 + IntOp $R2 $R2 - 1 + ${Else} + IntOp $R1 $R1 + 1 + IntOp $R2 $R2 + 1 + ${EndIf} + ${EndIf} + ${Loop} + + AdvStrStr_End: + + ;Add 1 to AdvStrStr_EndCharPos to be supportable + ;by "StrCpy" + + IntOp $R2 $R2 - 1 + + ;Return output to user + + Exch $R0 + Exch + Pop $R1 + Exch + Pop $R2 + Exch + Pop $R3 + Exch + Pop $9 + Exch + Pop $8 + Exch + Pop $7 + Exch + Pop $6 + Exch + Pop $5 + Exch + Pop $4 + Exch + Pop $3 + Exch + Pop $2 + Exch + Pop $1 + Exch + Pop $0 + + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrTok + !insertmacro STRFUNC_DEFFUNC StrTok `ResultVar|String|Separators|ResultPart|SkipEmptyParts` `Output|Text|Text|Mixed L|Option 1 0` + + !macro STRFUNC_CALL_StrTok un ResultVar String Separators ResultPart SkipEmptyParts + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrTok} "${ResultVar}" "${String}" "${Separators}" "${ResultPart}" "${SkipEmptyParts}"` + !verbose 2 + Push `${String}` + Push `${Separators}` + Push `${ResultPart}` + Push `${SkipEmptyParts}` + !insertmacro STRFUNC_CALL StrTok "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrTok + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by "bigmac666"` + /*After this point: + ------------------------------------------ + $0 = SkipEmptyParts (input) + $1 = ResultPart (input) + $2 = Separators (input) + $3 = String (input) + $4 = StrToSearchLen (temp) + $5 = StrLen (temp) + $6 = StartCharPos (temp) + $7 = TempStr (temp) + $8 = CurrentLoop + $9 = CurrentSepChar + $R0 = CurrentSepCharNum + */ + + ;Get input from user + Exch $0 + Exch + Exch $1 + Exch + Exch 2 + Exch $2 + Exch 2 + Exch 3 + Exch $3 + Exch 3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R0 + + ;Parameter defaults + ${IfThen} $2 == `` ${|} StrCpy $2 `|` ${|} + ${IfThen} $1 == `` ${|} StrCpy $1 `L` ${|} + ${IfThen} $0 == `` ${|} StrCpy $0 `0` ${|} + + ;Get "String" and "StrToSearch" length + StrLen $4 $2 + StrLen $5 $3 + ;Start "StartCharPos" and "ResultPart" counters + StrCpy $6 0 + StrCpy $8 -1 + + ;Loop until "ResultPart" is met, "StrToSearch" is found or + ;"String" reaches its end + ResultPartLoop: ;"CurrentLoop" Loop + + ;Increase "CurrentLoop" counter + IntOp $8 $8 + 1 + + StrSearchLoop: + ${Do} ;"String" Loop + ;Remove everything before and after the searched part ("TempStr") + StrCpy $7 $3 1 $6 + + ;Verify if it's the "String" end + ${If} $6 >= $5 + ;If "CurrentLoop" is what the user wants, remove the part + ;after "TempStr" and itself and get out of here + ${If} $8 == $1 + ${OrIf} $1 == `L` + StrCpy $3 $3 $6 + ${Else} ;If not, empty "String" and get out of here + StrCpy $3 `` + ${EndIf} + StrCpy $R0 `End` + ${ExitDo} + ${EndIf} + + ;Start "CurrentSepCharNum" counter (for "Separators" Loop) + StrCpy $R0 0 + + ${Do} ;"Separators" Loop + ;Use one "Separators" character at a time + ${If} $R0 <> 0 + StrCpy $9 $2 1 $R0 + ${Else} + StrCpy $9 $2 1 + ${EndIf} + + ;Go to the next "String" char if it's "Separators" end + ${IfThen} $R0 >= $4 ${|} ${ExitDo} ${|} + + ;Or, if "TempStr" equals "CurrentSepChar", then... + ${If} $7 == $9 + StrCpy $7 $3 $6 + + ;If "String" is empty because this result part doesn't + ;contain data, verify if "SkipEmptyParts" is activated, + ;so we don't return the output to user yet + + ${If} $7 == `` + ${AndIf} $0 = ${TRUE} + IntOp $6 $6 + 1 + StrCpy $3 $3 `` $6 + StrCpy $6 0 + Goto StrSearchLoop + ${ElseIf} $8 == $1 + StrCpy $3 $3 $6 + StrCpy $R0 "End" + ${ExitDo} + ${EndIf} ;If not, go to the next result part + IntOp $6 $6 + 1 + StrCpy $3 $3 `` $6 + StrCpy $6 0 + Goto ResultPartLoop + ${EndIf} + + ;Increase "CurrentSepCharNum" counter + IntOp $R0 $R0 + 1 + ${Loop} + ${IfThen} $R0 == "End" ${|} ${ExitDo} ${|} + + ;Increase "StartCharPos" counter + IntOp $6 $6 + 1 + ${Loop} + + /*After this point: + ------------------------------------------ + $3 = OutVar (output)*/ + + ;Return output to user + + Pop $R0 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $0 + Pop $1 + Pop $2 + Exch $3 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + # StrTrimNewLines + !insertmacro STRFUNC_DEFFUNC StrTrimNewLines `ResultVar|String` `Output|Text` + + !macro STRFUNC_CALL_StrTrimNewLines un ResultVar String + !verbose push ${STRFUNC_VERBOSITY} + !echo `${U+24}{${un}StrTrimNewLines} "${ResultVar}" "${String}"` + !verbose 2 + Push `${String}` + !insertmacro STRFUNC_CALL StrTrimNewLines "${un}" + Pop ${ResultVar} + !verbose pop + !macroend + + !macro STRFUNC_MAKEFUNC_StrTrimNewLines + !insertmacro STRFUNC_BEGINFUNC ${basename} `${un}` `2004 Diego Pedroso - Based on functions by Ximon Eighteen` + + /*After this point: + ------------------------------------------ + $R0 = String (input) + $R1 = TrimCounter (temp) + $R2 = Temp (temp)*/ + + ;Get input from user + Exch $R0 + Push $R1 + Push $R2 + + ;Initialize trim counter + StrCpy $R1 0 + + loop: + ;Subtract to get "String"'s last characters + IntOp $R1 $R1 - 1 + + ;Verify if they are either $\r or $\n + StrCpy $R2 $R0 1 $R1 + ${If} $R2 == `$\r` + ${OrIf} $R2 == `$\n` + Goto loop + ${EndIf} + + ;Trim characters (if needed) + IntOp $R1 $R1 + 1 + ${If} $R1 < 0 + StrCpy $R0 $R0 $R1 + ${EndIf} + + /*After this point: + ------------------------------------------ + $R0 = OutVar (output)*/ + + ;Return output to user + Pop $R2 + Pop $R1 + Exch $R0 + !insertmacro STRFUNC_ENDFUNC + + !macroend + + ############################################################################ + +!endif +!verbose 3 +!define STRFUNC_VERBOSITY ${_STRFUNC_VERBOSITY} +!undef _STRFUNC_VERBOSITY +!verbose pop diff --git a/tools/Include/TextFunc.nsh b/tools/Include/TextFunc.nsh new file mode 100644 index 0000000..230835b --- /dev/null +++ b/tools/Include/TextFunc.nsh @@ -0,0 +1,1211 @@ +/* +_____________________________________________________________________________ + + Text Functions Header v2.4 +_____________________________________________________________________________ + + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + + See documentation for more information about the following functions. + + Usage in script: + 1. !include "TextFunc.nsh" + 2. [Section|Function] + ${TextFunction} "File" "..." $var + [SectionEnd|FunctionEnd] + + + TextFunction=[LineFind|LineRead|FileReadFromEnd|LineSum|FileJoin| + TextCompare|TextCompareS|ConfigRead|ConfigReadS| + ConfigWrite|ConfigWriteS|FileRecode|TrimNewLines] + +_____________________________________________________________________________ + + Thanks to: +_____________________________________________________________________________ + +LineRead + Afrow UK (Based on his idea of Function "ReadFileLine") +LineSum + Afrow UK (Based on his idea of Function "LineCount") +FileJoin + Afrow UK (Based on his idea of Function "JoinFiles") +ConfigRead + vbgunz (His idea) +ConfigWrite + vbgunz (His idea) +TrimNewLines + sunjammer (Based on his Function "TrimNewLines") +*/ + + +;_____________________________________________________________________________ +; +; Macros +;_____________________________________________________________________________ +; +; Change log window verbosity (default: 3=no script) +; +; Example: +; !include "TextFunc.nsh" +; !insertmacro LineFind +; ${TEXTFUNC_VERBOSE} 4 # all verbosity +; !insertmacro LineSum +; ${TEXTFUNC_VERBOSE} 3 # no script + +!ifndef TEXTFUNC_INCLUDED + +!verbose push 3 +!define /IfNDef _TEXTFUNC_VERBOSE 3 +!verbose ${_TEXTFUNC_VERBOSE} +!define TEXTFUNC_VERBOSE `!insertmacro TEXTFUNC_VERBOSE` + +!define TEXTFUNC_INCLUDED + +!include FileFunc.nsh +!include Util.nsh + + +!macro TEXTFUNC_VERBOSE _VERBOSE + !verbose push 3 + !define /ReDef _TEXTFUNC_VERBOSE ${_VERBOSE} + !verbose pop +!macroend + +!macro LineFindCall _INPUT _OUTPUT _RANGE _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_INPUT}` + Push `${_OUTPUT}` + Push `${_RANGE}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} LineFind_ + Pop $0 + !verbose pop +!macroend + +!macro LineReadCall _FILE _NUMBER _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_NUMBER}` + ${CallArtificialFunction} LineRead_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro FileReadFromEndCall _FILE _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_FILE}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} FileReadFromEnd_ + Pop $0 + !verbose pop +!macroend + +!macro LineSumCall _FILE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + ${CallArtificialFunction} LineSum_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro FileJoinCall _FILE1 _FILE2 _FILE3 + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE1}` + Push `${_FILE2}` + Push `${_FILE3}` + ${CallArtificialFunction} FileJoin_ + !verbose pop +!macroend + +!macro TextCompareCall _FILE1 _FILE2 _OPTION _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_FILE1}` + Push `${_FILE2}` + Push `${_OPTION}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} TextCompare_ + Pop $0 + !verbose pop +!macroend + +!macro TextCompareSCall _FILE1 _FILE2 _OPTION _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_FILE1}` + Push `${_FILE2}` + Push `${_OPTION}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + ${CallArtificialFunction} TextCompareS_ + Pop $0 + !verbose pop +!macroend + +!macro ConfigReadCall _FILE _ENTRY _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + ${CallArtificialFunction} ConfigRead_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro ConfigReadSCall _FILE _ENTRY _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + ${CallArtificialFunction} ConfigReadS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro ConfigWriteCall _FILE _ENTRY _VALUE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Push `${_VALUE}` + ${CallArtificialFunction} ConfigWrite_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro ConfigWriteSCall _FILE _ENTRY _VALUE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Push `${_VALUE}` + ${CallArtificialFunction} ConfigWriteS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro FileRecodeCall _FILE _FORMAT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_FORMAT}` + ${CallArtificialFunction} FileRecode_ + !verbose pop +!macroend + +!macro TrimNewLinesCall _FILE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + ${CallArtificialFunction} TrimNewLines_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro _TextFunc_TempFileForFile _FILE _RESULT + # XXX replace with GetParent + Push `${_FILE}` + Exch $0 + Push $1 + Push $2 + + StrCpy $2 $0 1 -1 + StrCmp $2 '\' 0 +3 + StrCpy $0 $0 -1 + goto -3 + + StrCpy $1 0 + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '\' +2 + StrCmp $2 '' 0 -3 + StrCpy $0 $0 $1 + + Pop $2 + Pop $1 + Exch $0 + Pop ${_RESULT} + # XXX + StrCmp ${_RESULT} "" 0 +2 + StrCpy ${_RESULT} $EXEDIR + GetTempFileName ${_RESULT} ${_RESULT} + StrCmp ${_RESULT} "" 0 +2 + GetTempFileName ${_RESULT} + ClearErrors +!macroend + +!define LineFind `!insertmacro LineFindCall` +!define un.LineFind `!insertmacro LineFindCall` + +!macro LineFind +!macroend + +!macro un.LineFind +!macroend + +!macro LineFind_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $3 + Exch + Exch $2 + Exch + Exch 2 + Exch $1 + Exch 2 + Exch 3 + Exch $0 + Exch 3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + Push $R9 + ClearErrors + + IfFileExists '$0' 0 TextFunc_LineFind_error + StrCmp $1 '/NUL' TextFunc_LineFind_begin + StrCpy $8 0 + IntOp $8 $8 - 1 + StrCpy $9 $1 1 $8 + StrCmp $9 \ +2 + StrCmp $9 '' +3 -3 + StrCpy $9 $1 $8 + IfFileExists '$9\*.*' 0 TextFunc_LineFind_error + + TextFunc_LineFind_begin: + StrCpy $4 1 + StrCpy $5 -1 + StrCpy $6 0 + StrCpy $7 0 + StrCpy $R4 '' + StrCpy $R6 '' + StrCpy $R7 '' + StrCpy $R8 0 + + StrCpy $8 $2 1 + StrCmp $8 '{' 0 TextFunc_LineFind_delspaces + StrCpy $2 $2 '' 1 + StrCpy $8 $2 1 -1 + StrCmp $8 '}' 0 TextFunc_LineFind_delspaces + StrCpy $2 $2 -1 + StrCpy $R6 TextFunc_LineFind_cut + + TextFunc_LineFind_delspaces: + StrCpy $8 $2 1 + StrCmp $8 ' ' 0 +3 + StrCpy $2 $2 '' 1 + goto -3 + StrCmp $2$7 '0' TextFunc_LineFind_file + StrCpy $4 '' + StrCpy $5 '' + StrCmp $2 '' TextFunc_LineFind_writechk + + TextFunc_LineFind_range: + StrCpy $8 0 + StrCpy $9 $2 1 $8 + StrCmp $9 '' +5 + StrCmp $9 ' ' +4 + StrCmp $9 ':' +3 + IntOp $8 $8 + 1 + goto -5 + StrCpy $5 $2 $8 + IntOp $5 $5 + 0 + IntOp $8 $8 + 1 + StrCpy $2 $2 '' $8 + StrCmp $4 '' 0 +2 + StrCpy $4 $5 + StrCmp $9 ':' TextFunc_LineFind_range + + IntCmp $4 0 0 +2 + IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp + StrCmp $R7 '' 0 TextFunc_LineFind_minus2plus + StrCpy $R7 0 + FileOpen $8 $0 r + FileRead $8 $9 + IfErrors +3 + IntOp $R7 $R7 + 1 + Goto -3 + FileClose $8 + + TextFunc_LineFind_minus2plus: + IntCmp $4 0 +5 0 +5 + IntOp $4 $R7 + $4 + IntOp $4 $4 + 1 + IntCmp $4 0 +2 0 +2 + StrCpy $4 0 + IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp + IntOp $5 $R7 + $5 + IntOp $5 $5 + 1 + TextFunc_LineFind_growthcmp: + IntCmp $4 $5 TextFunc_LineFind_goto TextFunc_LineFind_goto + StrCpy $5 $4 + TextFunc_LineFind_goto: + goto $7 + + TextFunc_LineFind_file: + StrCmp $1 '/NUL' TextFunc_LineFind_notemp + !insertmacro _TextFunc_TempFileForFile $1 $R4 + Push $R4 + FileOpen $R4 $R4 w + TextFunc_LineFind_notemp: + FileOpen $R5 $0 r + IfErrors TextFunc_LineFind_preerror + + TextFunc_LineFind_loop: + IntOp $R8 $R8 + 1 + FileRead $R5 $R9 + IfErrors TextFunc_LineFind_handleclose + + TextFunc_LineFind_cmp: + StrCmp $2$4$5 '' TextFunc_LineFind_writechk + IntCmp $4 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_writechk + StrCmp $5 -1 TextFunc_LineFind_call + IntCmp $5 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_call + + GetLabelAddress $7 TextFunc_LineFind_cmp + goto TextFunc_LineFind_delspaces + + TextFunc_LineFind_call: + StrCpy $7 $R9 + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + StrCpy $R6 '$4:$5' + StrCmp $R7 '' +3 + IntOp $R7 $R8 - $R7 + IntOp $R7 $R7 - 1 + Call $3 + Pop $9 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + IfErrors TextFunc_LineFind_preerror + StrCmp $9 'StopLineFind' 0 +3 + IntOp $6 $6 + 1 + goto TextFunc_LineFind_handleclose + StrCmp $1 '/NUL' TextFunc_LineFind_loop + StrCmp $9 'SkipWrite' 0 +3 + IntOp $6 $6 + 1 + goto TextFunc_LineFind_loop + StrCmp $7 $R9 TextFunc_LineFind_write + IntOp $6 $6 + 1 + goto TextFunc_LineFind_write + + TextFunc_LineFind_writechk: + StrCmp $1 '/NUL' TextFunc_LineFind_loop + StrCmp $R6 TextFunc_LineFind_cut 0 TextFunc_LineFind_write + IntOp $6 $6 + 1 + goto TextFunc_LineFind_loop + + TextFunc_LineFind_write: + FileWrite $R4 $R9 + goto TextFunc_LineFind_loop + + TextFunc_LineFind_preerror: + SetErrors + + TextFunc_LineFind_handleclose: + StrCmp $1 '/NUL' +3 + FileClose $R4 + Pop $R4 + FileClose $R5 + IfErrors TextFunc_LineFind_error + + StrCmp $1 '/NUL' TextFunc_LineFind_end + StrCmp $1 '' 0 +2 + StrCpy $1 $0 + StrCmp $6 0 0 TextFunc_LineFind_rename + FileOpen $7 $0 r + FileSeek $7 0 END $8 + FileClose $7 + FileOpen $7 $R4 r + FileSeek $7 0 END $9 + FileClose $7 + IntCmp $8 $9 0 TextFunc_LineFind_rename + Delete $R4 + StrCmp $1 $0 TextFunc_LineFind_end + CopyFiles /SILENT $0 $1 + goto TextFunc_LineFind_end + + TextFunc_LineFind_rename: + Delete '$EXEDIR\$1' + Rename $R4 '$EXEDIR\$1' + IfErrors 0 TextFunc_LineFind_end + Delete $1 + Rename $R4 $1 + IfErrors 0 TextFunc_LineFind_end + + TextFunc_LineFind_error: + SetErrors + + TextFunc_LineFind_end: + Pop $R9 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!define LineRead `!insertmacro LineReadCall` +!define un.LineRead `!insertmacro LineReadCall` + +!macro LineRead +!macroend + +!macro un.LineRead +!macroend + +!macro LineRead_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + ClearErrors + + IfFileExists $0 0 TextFunc_LineRead_error + IntOp $1 $1 + 0 + IntCmp $1 0 TextFunc_LineRead_error 0 TextFunc_LineRead_plus + StrCpy $4 0 + FileOpen $2 $0 r + IfErrors TextFunc_LineRead_error + FileRead $2 $3 + IfErrors +3 + IntOp $4 $4 + 1 + Goto -3 + FileClose $2 + IntOp $1 $4 + $1 + IntOp $1 $1 + 1 + IntCmp $1 0 TextFunc_LineRead_error TextFunc_LineRead_error + + TextFunc_LineRead_plus: + FileOpen $2 $0 r + IfErrors TextFunc_LineRead_error + StrCpy $3 0 + IntOp $3 $3 + 1 + FileRead $2 $0 + IfErrors +4 + StrCmp $3 $1 0 -3 + FileClose $2 + goto TextFunc_LineRead_end + FileClose $2 + + TextFunc_LineRead_error: + SetErrors + StrCpy $0 '' + + TextFunc_LineRead_end: + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define FileReadFromEnd `!insertmacro FileReadFromEndCall` +!define un.FileReadFromEnd `!insertmacro FileReadFromEndCall` + +!macro FileReadFromEnd +!macroend + +!macro un.FileReadFromEnd +!macroend + +!macro FileReadFromEnd_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $7 + Push $8 + Push $9 + ClearErrors + + StrCpy $7 -1 + StrCpy $8 0 + IfFileExists $0 0 TextFunc_FileReadFromEnd_error + FileOpen $0 $0 r + IfErrors TextFunc_FileReadFromEnd_error + FileRead $0 $9 + IfErrors +4 + Push $9 + IntOp $8 $8 + 1 + goto -4 + FileClose $0 + + TextFunc_FileReadFromEnd_nextline: + StrCmp $8 0 TextFunc_FileReadFromEnd_end + Pop $9 + Push $1 + Push $7 + Push $8 + Call $1 + Pop $0 + Pop $8 + Pop $7 + Pop $1 + IntOp $7 $7 - 1 + IntOp $8 $8 - 1 + IfErrors TextFunc_FileReadFromEnd_error + StrCmp $0 'StopFileReadFromEnd' TextFunc_FileReadFromEnd_clearstack TextFunc_FileReadFromEnd_nextline + + TextFunc_FileReadFromEnd_error: + SetErrors + + TextFunc_FileReadFromEnd_clearstack: + StrCmp $8 0 TextFunc_FileReadFromEnd_end + Pop $9 + IntOp $8 $8 - 1 + goto TextFunc_FileReadFromEnd_clearstack + + TextFunc_FileReadFromEnd_end: + Pop $9 + Pop $8 + Pop $7 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!define LineSum `!insertmacro LineSumCall` +!define un.LineSum `!insertmacro LineSumCall` + +!macro LineSum +!macroend + +!macro un.LineSum +!macroend + +!macro LineSum_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + ClearErrors + + IfFileExists $0 0 TextFunc_LineSum_error + StrCpy $2 0 + FileOpen $0 $0 r + IfErrors TextFunc_LineSum_error + FileRead $0 $1 + IfErrors +3 + IntOp $2 $2 + 1 + Goto -3 + FileClose $0 + StrCpy $0 $2 + goto TextFunc_LineSum_end + + TextFunc_LineSum_error: + SetErrors + StrCpy $0 '' + + TextFunc_LineSum_end: + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define FileJoin `!insertmacro FileJoinCall` +!define un.FileJoin `!insertmacro FileJoinCall` + +!macro FileJoin +!macroend + +!macro un.FileJoin +!macroend + +!macro FileJoin_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Push $3 + Push $4 + Push $5 + ClearErrors + + IfFileExists $0 0 TextFunc_FileJoin_error + IfFileExists $1 0 TextFunc_FileJoin_error + StrCpy $3 0 + IntOp $3 $3 - 1 + StrCpy $4 $2 1 $3 + StrCmp $4 \ +2 + StrCmp $4 '' +3 -3 + StrCpy $4 $2 $3 + IfFileExists '$4\*.*' 0 TextFunc_FileJoin_error + + StrCmp $2 $0 0 +2 + StrCpy $2 '' + StrCmp $2 '' 0 +3 + StrCpy $4 $0 + Goto TextFunc_FileJoin_notemp + !insertmacro _TextFunc_TempFileForFile $2 $4 + CopyFiles /SILENT $0 $4 + TextFunc_FileJoin_notemp: + FileOpen $3 $4 a + IfErrors TextFunc_FileJoin_error + FileSeek $3 -1 END + FileRead $3 $5 + StrCmp $5 '$\r' +3 + StrCmp $5 '$\n' +2 + FileWrite $3 '$\r$\n' + + ;FileWrite $3 '$\r$\n--Divider--$\r$\n' + + FileOpen $0 $1 r + IfErrors TextFunc_FileJoin_error + FileRead $0 $5 + IfErrors +3 + FileWrite $3 $5 + goto -3 + FileClose $0 + FileClose $3 + StrCmp $2 '' TextFunc_FileJoin_end + Delete '$EXEDIR\$2' + Rename $4 '$EXEDIR\$2' + IfErrors 0 TextFunc_FileJoin_end + Delete $2 + Rename $4 $2 + IfErrors 0 TextFunc_FileJoin_end + + TextFunc_FileJoin_error: + SetErrors + + TextFunc_FileJoin_end: + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!macro TextCompareBody _TEXTFUNC_S + Exch $3 + Exch + Exch $2 + Exch + Exch 2 + Exch $1 + Exch 2 + Exch 3 + Exch $0 + Exch 3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + ClearErrors + + IfFileExists $0 0 TextFunc_TextCompare${_TEXTFUNC_S}_error + IfFileExists $1 0 TextFunc_TextCompare${_TEXTFUNC_S}_error + StrCmp $2 'FastDiff' +5 + StrCmp $2 'FastEqual' +4 + StrCmp $2 'SlowDiff' +3 + StrCmp $2 'SlowEqual' +2 + goto TextFunc_TextCompare${_TEXTFUNC_S}_error + + FileOpen $4 $0 r + IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error + FileOpen $5 $1 r + IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error + SetDetailsPrint textonly + + StrCpy $6 0 + StrCpy $8 0 + + TextFunc_TextCompare${_TEXTFUNC_S}_nextline: + StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_fast + IntOp $8 $8 + 1 + FileRead $4 $9 + IfErrors 0 +4 + FileClose $4 + StrCpy $4 '' + StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_end + StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_fast + StrCmp $2 'FastEqual' TextFunc_TextCompare${_TEXTFUNC_S}_fast TextFunc_TextCompare${_TEXTFUNC_S}_slow + + TextFunc_TextCompare${_TEXTFUNC_S}_fast: + StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_call + IntOp $6 $6 + 1 + FileRead $5 $7 + IfErrors 0 +5 + FileClose $5 + StrCpy $5 '' + StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_end + StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_close + StrCmp $2 'FastDiff' 0 +2 + StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_call + StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline + + TextFunc_TextCompare${_TEXTFUNC_S}_slow: + StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_close + StrCpy $6 '' + DetailPrint '$8. $9' + FileSeek $5 0 + + TextFunc_TextCompare${_TEXTFUNC_S}_slownext: + FileRead $5 $7 + IfErrors 0 +2 + StrCmp $2 'SlowDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline + StrCmp $2 'SlowDiff' 0 +2 + StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_slownext + IntOp $6 $6 + 1 + StrCmp${_TEXTFUNC_S} $7 $9 0 TextFunc_TextCompare${_TEXTFUNC_S}_slownext + + TextFunc_TextCompare${_TEXTFUNC_S}_call: + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Call $3 + Pop $0 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + StrCmp $0 'StopTextCompare' 0 TextFunc_TextCompare${_TEXTFUNC_S}_nextline + + TextFunc_TextCompare${_TEXTFUNC_S}_close: + FileClose $4 + FileClose $5 + goto TextFunc_TextCompare${_TEXTFUNC_S}_end + + TextFunc_TextCompare${_TEXTFUNC_S}_error: + SetErrors + + TextFunc_TextCompare${_TEXTFUNC_S}_end: + SetDetailsPrint both + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 +!macroend + +!define TextCompare `!insertmacro TextCompareCall` +!define un.TextCompare `!insertmacro TextCompareCall` + +!macro TextCompare +!macroend + +!macro un.TextCompare +!macroend + +!macro TextCompare_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro TextCompareBody '' + + !verbose pop +!macroend + +!define TextCompareS `!insertmacro TextCompareSCall` +!define un.TextCompareS `!insertmacro TextCompareSCall` + +!macro TextCompareS +!macroend + +!macro un.TextCompareS +!macroend + +!macro TextCompareS_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro TextCompareBody 'S' + + !verbose pop +!macroend + +!macro ConfigReadBody _TEXTFUNC_S + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + ClearErrors + + FileOpen $2 $0 r + IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error + StrLen $0 $1 + StrCmp${_TEXTFUNC_S} $0 0 TextFunc_ConfigRead${_TEXTFUNC_S}_error + + TextFunc_ConfigRead${_TEXTFUNC_S}_readnext: + FileRead $2 $3 + IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error + StrCpy $4 $3 $0 + StrCmp${_TEXTFUNC_S} $4 $1 0 TextFunc_ConfigRead${_TEXTFUNC_S}_readnext + StrCpy $0 $3 '' $0 + StrCpy $4 $0 1 -1 + StrCmp${_TEXTFUNC_S} $4 '$\r' +2 + StrCmp${_TEXTFUNC_S} $4 '$\n' 0 TextFunc_ConfigRead${_TEXTFUNC_S}_close + StrCpy $0 $0 -1 + goto -4 + + TextFunc_ConfigRead${_TEXTFUNC_S}_error: + SetErrors + StrCpy $0 '' + + TextFunc_ConfigRead${_TEXTFUNC_S}_close: + FileClose $2 + + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 +!macroend + +!define ConfigRead `!insertmacro ConfigReadCall` +!define un.ConfigRead `!insertmacro ConfigReadCall` + +!macro ConfigRead +!macroend + +!macro un.ConfigRead +!macroend + +!macro ConfigRead_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro ConfigReadBody '' + + !verbose pop +!macroend + +!define ConfigReadS `!insertmacro ConfigReadSCall` +!define un.ConfigReadS `!insertmacro ConfigReadSCall` + +!macro ConfigReadS +!macroend + +!macro un.ConfigReadS +!macroend + +!macro ConfigReadS_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro ConfigReadBody 'S' + + !verbose pop +!macroend + +!macro ConfigWriteBody _TEXTFUNC_S + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Push $3 + Push $4 + Push $5 + Push $6 + ClearErrors + + IfFileExists $0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_error + FileOpen $3 $0 a + IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_error + + StrLen $0 $1 + StrCmp${_TEXTFUNC_S} $0 0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext + StrCpy $0 '' + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close + + TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext: + FileRead $3 $4 + IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_add + StrCpy $5 $4 $0 + StrCmp${_TEXTFUNC_S} $5 $1 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext + + StrCpy $5 0 + IntOp $5 $5 - 1 + StrCpy $6 $4 1 $5 + StrCmp${_TEXTFUNC_S} $6 '$\r' -2 + StrCmp${_TEXTFUNC_S} $6 '$\n' -3 + StrCpy $6 $4 + StrCmp${_TEXTFUNC_S} $5 -1 +3 + IntOp $5 $5 + 1 + StrCpy $6 $4 $5 + + StrCmp${_TEXTFUNC_S} $2 '' TextFunc_ConfigWrite${_TEXTFUNC_S}_change + StrCmp${_TEXTFUNC_S} $6 '$1$2' 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_change + StrCpy $0 SAME + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close + + TextFunc_ConfigWrite${_TEXTFUNC_S}_change: + FileSeek $3 0 CUR $5 + StrLen $4 $4 + IntOp $4 $5 - $4 + FileSeek $3 0 END $6 + IntOp $6 $6 - $5 + + System::Alloc $6 + Pop $0 + FileSeek $3 $5 SET + System::Call 'kernel32::ReadFile(p r3, p r0, i $6, t.,)' + FileSeek $3 $4 SET + StrCmp${_TEXTFUNC_S} $2 '' +2 + FileWrite $3 '$1$2$\r$\n' + System::Call 'kernel32::WriteFile(p r3, p r0, i $6, t.,)' + System::Call 'kernel32::SetEndOfFile(p r3)' + System::Free $0 + StrCmp${_TEXTFUNC_S} $2 '' +3 + StrCpy $0 CHANGED + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close + StrCpy $0 DELETED + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close + + TextFunc_ConfigWrite${_TEXTFUNC_S}_add: + StrCmp${_TEXTFUNC_S} $2 '' 0 +3 + StrCpy $0 SAME + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close + FileSeek $3 -1 END + FileRead $3 $4 + IfErrors +4 + StrCmp${_TEXTFUNC_S} $4 '$\r' +3 + StrCmp${_TEXTFUNC_S} $4 '$\n' +2 + FileWrite $3 '$\r$\n' + FileWrite $3 '$1$2$\r$\n' + StrCpy $0 ADDED + + TextFunc_ConfigWrite${_TEXTFUNC_S}_close: + FileClose $3 + goto TextFunc_ConfigWrite${_TEXTFUNC_S}_end + + TextFunc_ConfigWrite${_TEXTFUNC_S}_error: + SetErrors + StrCpy $0 '' + + TextFunc_ConfigWrite${_TEXTFUNC_S}_end: + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 +!macroend + +!define ConfigWrite `!insertmacro ConfigWriteCall` +!define un.ConfigWrite `!insertmacro ConfigWriteCall` + +!macro ConfigWrite +!macroend + +!macro un.ConfigWrite +!macroend + +!macro ConfigWrite_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro ConfigWriteBody '' + + !verbose pop +!macroend + +!define ConfigWriteS `!insertmacro ConfigWriteSCall` +!define un.ConfigWriteS `!insertmacro ConfigWriteSCall` + +!macro ConfigWriteS +!macroend + +!macro un.ConfigWriteS +!macroend + +!macro ConfigWriteS_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + !insertmacro ConfigWriteBody 'S' + + !verbose pop +!macroend + +!define FileRecode `!insertmacro FileRecodeCall` +!define un.FileRecode `!insertmacro FileRecodeCall` + +!macro FileRecode +!macroend + +!macro un.FileRecode +!macroend + +!macro FileRecode_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + + IfFileExists $0 0 TextFunc_FileRecode_error + StrCmp $1 OemToChar +2 + StrCmp $1 CharToOem 0 TextFunc_FileRecode_error + + FileOpen $2 $0 a + FileSeek $2 0 END $3 + System::Alloc $3 + Pop $4 + FileSeek $2 0 SET + System::Call 'kernel32::ReadFile(p r2, p r4, i $3, t.,)' + System::Call 'user32::$1Buff(p r4, p r4, i $3)' + FileSeek $2 0 SET + System::Call 'kernel32::WriteFile(p r2, p r4, i $3, t.,)' + System::Free $4 + FileClose $2 + goto TextFunc_FileRecode_end + + TextFunc_FileRecode_error: + SetErrors + + TextFunc_FileRecode_end: + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + + !verbose pop +!macroend + +!define TrimNewLines `!insertmacro TrimNewLinesCall` +!define un.TrimNewLines `!insertmacro TrimNewLinesCall` + +!macro TrimNewLines +!macroend + +!macro un.TrimNewLines +!macroend + +!macro TrimNewLines_ + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + + Exch $0 + Push $1 + Push $2 + + StrCpy $1 0 + IntOp $1 $1 - 1 + StrCpy $2 $0 1 $1 + StrCmp $2 '$\r' -2 + StrCmp $2 '$\n' -3 + StrCmp $1 -1 +3 + IntOp $1 $1 + 1 + StrCpy $0 $0 $1 + + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!verbose pop +!endif diff --git a/tools/Include/UpgradeDLL.nsh b/tools/Include/UpgradeDLL.nsh new file mode 100644 index 0000000..cfb2947 --- /dev/null +++ b/tools/Include/UpgradeDLL.nsh @@ -0,0 +1,207 @@ +/* + +NOTE: +----- +This macro is provided for backwards compatibility with NSIS 2.0 scripts. +It's recommended you update your scripts to use the new Library.nsh macros. + + +Macro - Upgrade DLL File +Written by Joost Verburg +------------------------ + +Parameters: +LOCALFILE Location of the new DLL file (on the compiler system) +DESTFILE Location of the DLL file that should be upgraded (on the user's system) +TEMPBASEDIR Directory on the user's system to store a temporary file when the system has + to be rebooted. + For Win9x/ME support, this should be on the same volume as DESTFILE. + The Windows temp directory could be located on any volume, so you cannot use + this directory. + +Define UPGRADEDLL_NOREGISTER if you want to upgrade a DLL that does not have to be registered. + +Notes: + +* If you want to support Windows 9x/ME, you can only use short filenames (8.3). + +* This macro uses the GetDLLVersionLocal command to retrieve the version of local libraries. + This command is only supported when compiling on a Windows system. + +------------------------ + +Example: + +!insertmacro UpgradeDLL "dllname.dll" "$SYSDIR\dllname.dll" "$SYSDIR" + +*/ + +!ifndef UPGRADEDLL_INCLUDED + +!define UPGRADEDLL_INCLUDED + +!macro __UpgradeDLL_Helper_AddRegToolEntry mode filename tempdir + + Push $R0 + Push $R1 + Push $R2 + Push $R3 + + ;------------------------ + ;Copy the parameters + + Push "${filename}" + Push "${tempdir}" + + Pop $R2 ; temporary directory + Pop $R1 ; file name to register + + ;------------------------ + ;Advance counter + + StrCpy $R0 0 + ReadRegDWORD $R0 HKLM "Software\NSIS.Library.RegTool.v3\UpgradeDLLSession" "count" + IntOp $R0 $R0 + 1 + WriteRegDWORD HKLM "Software\NSIS.Library.RegTool.v3\UpgradeDLLSession" "count" "$R0" + + ;------------------------ + ;Setup RegTool + + !if ! /FileExists "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin" + !error "Missing RegTool for ${NSIS_CPU}!" + !endif + + ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "NSIS.Library.RegTool.v3" + StrCpy $R3 $R3 -4 1 + IfFileExists $R3 +3 + + File /oname=$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \ + "NSIS.Library.RegTool.v3" '"$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe" /S' + + ;------------------------ + ;Add RegTool entry + + WriteRegStr HKLM "Software\NSIS.Library.RegTool.v3\UpgradeDLLSession" "$R0.file" "$R1" + WriteRegStr HKLM "Software\NSIS.Library.RegTool.v3\UpgradeDLLSession" "$R0.mode" "${mode}" + + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + +!macroend + +!macro UpgradeDLL LOCALFILE DESTFILE TEMPBASEDIR + + Push $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + + !define UPGRADEDLL_UNIQUE "${__FILE__}${__LINE__}" + + SetOverwrite try + + ;------------------------ + ;Copy the macro parameters to a run-time to a variable, + ;this allows the usage of variables as parameter + + StrCpy $R4 "${DESTFILE}" + StrCpy $R5 "${TEMPBASEDIR}" + + ;------------------------ + ;Get version information + + IfFileExists $R4 0 "upgradedll.copy_${UPGRADEDLL_UNIQUE}" + + ClearErrors + GetDLLVersionLocal "${LOCALFILE}" $R0 $R1 + GetDLLVersion $R4 $R2 $R3 + IfErrors "upgradedll.upgrade_${UPGRADEDLL_UNIQUE}" + + IntCmpU $R0 $R2 0 "upgradedll.done_${UPGRADEDLL_UNIQUE}" "upgradedll.upgrade_${UPGRADEDLL_UNIQUE}" + IntCmpU $R1 $R3 "upgradedll.done_${UPGRADEDLL_UNIQUE}" "upgradedll.done_${UPGRADEDLL_UNIQUE}" \ + "upgradedll.upgrade_${UPGRADEDLL_UNIQUE}" + + ;------------------------ + ;Upgrade + + "upgradedll.upgrade_${UPGRADEDLL_UNIQUE}:" + !ifndef UPGRADEDLL_NOREGISTER + ;Unregister the DLL + UnRegDLL $R4 + !endif + + ;------------------------ + ;Copy + + ClearErrors + StrCpy $R0 $R4 + Call ":upgradedll.file_${UPGRADEDLL_UNIQUE}" + IfErrors 0 "upgradedll.noreboot_${UPGRADEDLL_UNIQUE}" + + ;------------------------ + ;Copy on reboot + + GetTempFileName $R0 $R5 + Call ":upgradedll.file_${UPGRADEDLL_UNIQUE}" + Rename /REBOOTOK $R0 $R4 + + ;------------------------ + ;Register on reboot + + !insertmacro __UpgradeDLL_Helper_AddRegToolEntry 'D' $R4 $R5 + + Goto "upgradedll.done_${UPGRADEDLL_UNIQUE}" + + ;------------------------ + ;DLL does not exist + + "upgradedll.copy_${UPGRADEDLL_UNIQUE}:" + StrCpy $R0 $R4 + Call ":upgradedll.file_${UPGRADEDLL_UNIQUE}" + + ;------------------------ + ;Register + + "upgradedll.noreboot_${UPGRADEDLL_UNIQUE}:" + !ifndef UPGRADEDLL_NOREGISTER + RegDLL $R4 + !endif + + ;------------------------ + ;Done + + "upgradedll.done_${UPGRADEDLL_UNIQUE}:" + + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + + ;------------------------ + ;End + + Goto "upgradedll.end_${UPGRADEDLL_UNIQUE}" + + ;------------------------ + ;Extract + + "upgradedll.file_${UPGRADEDLL_UNIQUE}:" + File /oname=$R0 "${LOCALFILE}" + Return + + "upgradedll.end_${UPGRADEDLL_UNIQUE}:" + + SetOverwrite lastused + + !undef UPGRADEDLL_UNIQUE + +!macroend + +!endif diff --git a/tools/Include/Util.nsh b/tools/Include/Util.nsh new file mode 100644 index 0000000..30d03a5 --- /dev/null +++ b/tools/Include/Util.nsh @@ -0,0 +1,184 @@ +; --------------------- +; Util.nsh +; --------------------- +; +; Voodoo macros to make end-user usage easier. This may be documented someday. + +!verbose push 3 +!ifndef ___UTIL__NSH___ +!define ___UTIL__NSH___ + +# CallArtificialFunction, see WinVer.nsh and *Func.nsh for usage examples +!macro CallArtificialFunctionHelper TYPE NAME + !verbose pop + Call :.${NAME}${TYPE} + !ifndef ${NAME}${TYPE}_DEFINED + !verbose push 2 + Goto ${NAME}${TYPE}_DONE + !define ${NAME}${TYPE}_DEFINED + !verbose pop + .${NAME}${TYPE}: + !insertmacro ${NAME} + Return + ${NAME}${TYPE}_DONE: + !endif + !verbose push 2 +!macroend + +!macro CallArtificialFunction NAME + !verbose push 2 + !ifdef __UNINSTALL__ + !insertmacro CallArtificialFunctionHelper uninst ${NAME} + !else + !insertmacro CallArtificialFunctionHelper inst ${NAME} + !endif + !verbose pop +!macroend +!define CallArtificialFunction `!insertmacro CallArtificialFunction` + +!macro CallArtificialFunction2 NAME ; Retained for v2.4x..v3.0b0 compatibility + ${CallArtificialFunction} ${NAME} +!macroend +!define CallArtificialFunction2 `!insertmacro CallArtificialFunction` + + +!define Int32Op '!insertmacro Int32Op ' +!define Int64Op '!insertmacro Int64Op ' +!define IntPtrOp '!insertmacro IntPtrOp ' +!macro Int32Op r a o b +IntOp `${r}` `${a}` `${o}` ${b} +!macroend +!macro Int64Op r a o b +!echo "Int64Op ${r}=${a}${o}${b}" +!verbose push 2 +System::Int64Op `${a}` `${o}` ${b} +Pop ${r} +!verbose pop +!macroend +!macro IntPtrOp r a o b +IntPtrOp `${r}` `${a}` `${o}` `${b}` +!macroend + +!define Int32Cmp '!insertmacro Int32Cmp ' +!define Int64Cmp '!insertmacro Int64Cmp ' +!define IntPtrCmp '!insertmacro IntPtrCmp ' +!macro Int32Cmp a b jeek jles jgtr +IntCmp `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!macroend +!macro Int64Cmp a b jeek jles jgtr +!if ${NSIS_PTR_SIZE} <= 4 +!ifmacrondef _LOGICLIB_TEMP +!include LogicLib.nsh +!endif +!echo "Int64Cmp ${a}:${b} =${jeek}, <${jles}, >${jgtr}" +!verbose push 2 +${IfThen} ${a} L= ${b} ${|} Goto ${jeek} ${|} +!insertmacro _L< ${a} ${b} `${jles}` `${jgtr}` +!verbose pop +!else +Int64Cmp `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!endif +!macroend +!macro IntPtrCmp a b jeek jles jgtr +IntPtrCmp `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!macroend + +!define Int32CmpU '!insertmacro Int32CmpU ' +!define Int64CmpU '!insertmacro Int64CmpU ' +!define IntPtrCmpU '!insertmacro IntPtrCmpU ' +!macro Int32CmpU a b jeek jles jgtr +IntCmpU `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!macroend +!macro Int64CmpUHelper +; This macro performs "$_LOGICLIB_TEMP = a < b ? -1 : a > b ? 1 : 0" but System::Int64Op does not support unsigned operations so we have to perform multiple steps +!ifmacrondef _LOGICLIB_TEMP +!include LogicLib.nsh +!endif +!insertmacro _LOGICLIB_TEMP +Exch $2 ; b +Exch +Exch $1 ; a +; if (a == b) return 0; +; if (a < 0) +; { +; if (b >= 0) return 1 +; } +; else +; { +; if (b < 0) return -1 +; } +; return a < b ? -1 : 1 +System::Int64Op $1 ^ $2 ; Using xor so $_LOGICLIB_TEMP ends up as 0 when they are equal +Pop $_LOGICLIB_TEMP +StrCmp $_LOGICLIB_TEMP 0 ret ; NOTE: Must use StrCmp, IntCmp fails on "0x8000000000000001 Z> 1" +System::Int64Op $1 < 0 +Pop $_LOGICLIB_TEMP +StrCmp $_LOGICLIB_TEMP 0 checkNegOther +System::Int64Op $2 < 0 ; System::Int64Op does not support the >= operator so we invert the operation +Pop $_LOGICLIB_TEMP +StrCmp $_LOGICLIB_TEMP 0 retPos finalCmp +retPos: +StrCpy $_LOGICLIB_TEMP "1" +Goto ret +checkNegOther: +System::Int64Op $2 < 0 +Pop $_LOGICLIB_TEMP +StrCmp $_LOGICLIB_TEMP 0 finalCmp retNeg +retNeg: +StrCpy $_LOGICLIB_TEMP "-1" +Goto ret +finalCmp: +System::Int64Op $1 < $2 +Pop $_LOGICLIB_TEMP +StrCmp $_LOGICLIB_TEMP 0 retPos retNeg +ret: +Pop $1 +Pop $2 +!macroend +!macro Int64CmpU a b jeek jles jgtr +!if ${NSIS_PTR_SIZE} <= 4 +!echo "Int64CmpU ${a}:${b} =${jeek}, <${jles}, >${jgtr}" +!verbose push 2 +Push `${a}` +Push `${b}` +!insertmacro CallArtificialFunction Int64CmpUHelper +IntCmp $_LOGICLIB_TEMP 0 `${jeek}` `${jles}` `${jgtr}` +!verbose pop +!else +Int64CmpU `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!endif +!macroend +!macro IntPtrCmpU a b jeek jles jgtr +IntPtrCmpU `${a}` `${b}` `${jeek}` `${jles}` `${jgtr}` +!macroend + + +!define MakeARPInstallDate "!insertmacro MakeARPInstallDate " +!macro MakeARPInstallDate _outvar +System::Call 'KERNEL32::GetDateFormat(i0x409,i0,p0,t"yyyyMMdd",t.s,i${NSIS_MAX_STRLEN})' +Pop ${_outvar} +!macroend + + +!define /IfNDef SPI_GETHIGHCONTRAST 0x42 +!define /IfNDef HCF_HIGHCONTRASTON 0x01 +!define /IfNDef /math SYSSIZEOF_HIGHCONTRAST 8 + ${NSIS_PTR_SIZE} +!define IsHighContrastModeActive '"" IsHighContrastModeActive ""' +!macro _IsHighContrastModeActive _lhs _rhs _t _f +!ifmacrondef _LOGICLIB_TEMP +!include LogicLib.nsh +!endif +!insertmacro _LOGICLIB_TEMP +Push $1 +System::Call '*(i${SYSSIZEOF_HIGHCONTRAST},i0,p)p.r1' +System::Call 'USER32::SystemParametersInfo(i${SPI_GETHIGHCONTRAST},i${SYSSIZEOF_HIGHCONTRAST},pr1,i0)' +System::Call '*$1(i,i.s)' +Pop $_LOGICLIB_TEMP +System::Free $1 +Pop $1 +!insertmacro _& $_LOGICLIB_TEMP ${HCF_HIGHCONTRASTON} `${_t}` `${_f}` +!macroend + + +!endif # !___UTIL__NSH___ +!verbose pop diff --git a/tools/Include/VB6RunTime.nsh b/tools/Include/VB6RunTime.nsh new file mode 100644 index 0000000..7ad2fc2 --- /dev/null +++ b/tools/Include/VB6RunTime.nsh @@ -0,0 +1,90 @@ +/* + +VB6RunTime.nsh + +Setup of Visual Basic 6.0 run-time files, including the Oleaut32.dll security update + +Copyright 2008-2023 Joost Verburg + +To obtain the run-time files, download and extract +https://nsis.sourceforge.io/vb6runtime.zip + +Script code for installation: + +!insertmacro InstallVB6RunTime FOLDER ALREADY_INSTALLED + +in which FOLDER is the location of the run-time files and ALREADY_INSTALLED is the +name of a variable that is empty when the application is installed for the first time +and non-empty otherwise + +Script code for uninstallation: + +!insertmacro UnInstallVB6RunTime + +Remarks: + +* You may have to install additional files for such Visual Basic application to work, + such as OCX files for user interface controls. + +* Installation of the run-time files requires Administrator or Power User privileges. + Use the Multi-User header file to verify whether these privileges are available. + +* Add a Modern UI finish page or another check (see IfRebootFlag in the NSIS Users + Manual) to allow the user to restart the computer when necessary. + +*/ + +!ifndef VB6_INCLUDED +!define VB6_INCLUDED +!verbose push +!verbose 3 + +!include Library.nsh +!include WinVer.nsh + +!macro VB6RunTimeInstall FOLDER ALREADY_INSTALLED + + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR" + + ;The files below will only be installed on Win9x/NT4 + + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR" + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR" + !insertmacro InstallLib DLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR" + !insertmacro InstallLib TLB "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR" + + Push $R0 + + ${if} ${IsNT} + ${if} ${IsWinNT4} + ReadRegStr $R0 HKLM "System\CurrentControlSet\Control" "ProductOptions" + ${if} $R0 == "Terminal Server" + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4TS\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR" + ${else} + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR" + ${endif} + ${endif} + ${else} + ;No Oleaut32.dll with the security update has been released for Windows 9x. + ;The NT4 version is used because NT4 and Win9x used to share the same 2.40 version + ;and version 2.40.4519.0 is reported to work fine on Win9x. + !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR" + ${endif} + + Pop $R0 + +!macroend + +!macro VB6RunTimeUnInstall + + !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll" + !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll" + !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll" + !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll" + !insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll" + !insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb" + +!macroend + +!verbose pop +!endif diff --git a/tools/Include/VPatchLib.nsh b/tools/Include/VPatchLib.nsh new file mode 100644 index 0000000..1e01bc8 --- /dev/null +++ b/tools/Include/VPatchLib.nsh @@ -0,0 +1,47 @@ +; PatchLib v3.0 +; ============= +; +; Library with macro for use with VPatch (DLL version) in NSIS 2.0.5+ +; Created by Koen van de Sande + +!include LogicLib.nsh + +!macro VPatchFile PATCHDATA SOURCEFILE TEMPFILE + + Push $1 + Push $2 + Push $3 + Push $4 + + Push ${SOURCEFILE} + Push ${TEMPFILE} + + Pop $2 # temp file + Pop $3 # source file + + InitPluginsDir + GetTempFileName $1 $PLUGINSDIR + File /oname=$1 ${PATCHDATA} + + vpatch::vpatchfile $1 $3 $2 + Pop $4 + DetailPrint $4 + + StrCpy $4 $4 2 + ${Unless} $4 == "OK" + SetErrors + ${EndIf} + + ${If} ${FileExists} $2 + Delete $3 + Rename /REBOOTOK $2 $3 + ${EndIf} + + Delete $1 + + Pop $4 + Pop $3 + Pop $2 + Pop $1 + +!macroend diff --git a/tools/Include/Win/COM.nsh b/tools/Include/Win/COM.nsh new file mode 100644 index 0000000..3b2a011 --- /dev/null +++ b/tools/Include/Win/COM.nsh @@ -0,0 +1,392 @@ +/* +------------- + COM.nsh +------------- + +COM defines and helper macros + +; Example usage: +!include LogicLib.nsh +!include Win\COM.nsh +!include Win\Propkey.nsh +!insertmacro ComHlpr_CreateInProcInstance ${CLSID_ShellLink} ${IID_IShellLink} r0 "" +${If} $0 P<> 0 + ${IShellLink::SetPath} $0 '("%COMSPEC%").r1' + ${IShellLink::SetArguments} $0 '("/k echo HelloWorld").r2' + ${If} $1 = 0 + ${AndIf} $2 = 0 + ${IUnknown::QueryInterface} $0 '("${IID_IPropertyStore}",.r1)' + ${If} $1 P<> 0 + System::Call '*${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_StartPinOption})p.r2' + System::Call '*${SYSSTRUCT_PROPVARIANT}(${VT_UI4},,&i4 ${APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL})p.r3' + ${IPropertyStore::SetValue} $1 '($2,$3)' + + ; Reuse the PROPERTYKEY & PROPVARIANT buffers to set another property + System::Call '*$2${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_ExcludeFromShowInNewInstall})' + System::Call '*$3${SYSSTRUCT_PROPVARIANT}(${VT_BOOL},,&i2 ${VARIANT_TRUE})' + ${IPropertyStore::SetValue} $1 '($2,$3)' + + System::Free $2 + System::Free $3 + ${IPropertyStore::Commit} $1 "" + ${IUnknown::Release} $1 "" + ${EndIf} + ${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)' + ${If} $1 P<> 0 + ${IPersistFile::Save} $1 '("$SMPrograms\nsis_test.lnk",1)' + ${IUnknown::Release} $1 "" + ${EndIf} + ${EndIf} + ${IUnknown::Release} $0 "" +${EndIf} + +*/ + + +!ifndef __WIN_COM__INC +!define __WIN_COM__INC ${NSIS_CHAR_SIZE} +!verbose push +!verbose 3 + +!define /ifndef STGM_READ 0 +!define /ifndef STGM_WRITE 1 +!define /ifndef STGM_READWRITE 2 +!define /ifndef STGM_SHARE_DENY_NONE 0x00000040 +!define /ifndef STGM_SHARE_DENY_READ 0x00000030 +!define /ifndef STGM_SHARE_DENY_WRITE 0x00000020 +!define /ifndef STGM_SHARE_EXCLUSIVE 0x00000010 +!define /ifndef STGM_PRIORITY 0x00040000 +!define /ifndef STGM_CREATE 0x00001000 +!define /ifndef STGM_CONVERT 0x00020000 +!define /ifndef STGM_FAILIFTHERE 0 +!define /ifndef STGM_DELETEONRELEASE 0x04000000 + +!define /ifndef CLSCTX_INPROC_SERVER 0x1 +!define /ifndef CLSCTX_INPROC_HANDLER 0x2 +!define /ifndef CLSCTX_LOCAL_SERVER 0x4 +!define /ifndef CLSCTX_REMOTE_SERVER 0x10 +!define /ifndef CLSCTX_ACTIVATE_32_BIT_SERVER 0x40000 +!define /ifndef CLSCTX_ACTIVATE_64_BIT_SERVER 0x80000 +!define /ifndef CLSCTX_ENABLE_CLOAKING 0x100000 + +!define NSISCOMCALL "!insertmacro NSISCOMCALL " +!macro NSISCOMCALL vtblidx decl ptr params +!if ${NSIS_CHAR_SIZE} <> ${__WIN_COM__INC} +; Warn if QueryInterface() for IID_IShellLink etc will return the wrong interface +!warning "NSIS_CHAR_SIZE changed, existing defines and macros might not work correctly!" +!endif +System::Call `${ptr}->${vtblidx}${decl}${params}` +!macroend +!define NSISCOMIFACEDECL "!insertmacro NSISCOMIFACEDECL " +!macro NSISCOMIFACEDECL iface method vtblidx decl +!define ${iface}::${method} `${NSISCOMCALL} ${vtblidx} ${decl} ` +!macroend + +!macro ComHlpr_CreateInstance clsid iid sysoutvarIFacePtr sysret +System::Call 'OLE32::CoCreateInstance(g"${clsid}",i0,i23,g"${iid}",*p.${sysoutvarIFacePtr})i${sysret}' +!macroend +!macro ComHlpr_CreateInProcInstance clsid iid sysoutvarIFacePtr sysret +System::Call 'OLE32::CoCreateInstance(g"${clsid}",i0,i${CLSCTX_INPROC_SERVER},g"${iid}",*p.${sysoutvarIFacePtr})i${sysret}' +!macroend + +!macro ComHlpr_SafeRelease _p +${If} ${_p} P<> 0 + ${IUnknown::Release} ${_p} "" +${EndIf} +!macroend +!macro ComHlpr_SafeReleaseAndNull _p +${If} ${_p} P<> 0 + ${IUnknown::Release} ${_p} "" + StrCpy ${_p} 0 +${EndIf} +!macroend + + +!ifndef IID_IUnknown +!define IID_IUnknown {00000000-0000-0000-C000-000000000046} +${NSISCOMIFACEDECL}IUnknown QueryInterface 0 (g,*p)i +${NSISCOMIFACEDECL}IUnknown AddRef 1 ()i +${NSISCOMIFACEDECL}IUnknown Release 2 ()i +!endif + +!ifndef IID_IPersist +!define IID_IPersist {0000010c-0000-0000-C000-000000000046} +${NSISCOMIFACEDECL}IPersist GetClassID 3 (g)i +!endif + +!ifndef IID_IPersistStream +!define IID_IPersistStream {00000109-0000-0000-C000-000000000046} ; IPersist> +${NSISCOMIFACEDECL}IPersistStream IsDirty 4 ()i +${NSISCOMIFACEDECL}IPersistStream Load 5 (p,i)i +${NSISCOMIFACEDECL}IPersistStream Save 6 (p,i)i +${NSISCOMIFACEDECL}IPersistStream GetSizeMax 7 (*l)i +!endif +!ifndef IID_IPersistStreamInit +!define IID_IPersistStreamInit {7FD52380-4E07-101B-AE2D-08002B2EC713} ; IPersist> +${NSISCOMIFACEDECL}IPersistStreamInit IsDirty 4 ()i +${NSISCOMIFACEDECL}IPersistStreamInit Load 5 (p,i)i +${NSISCOMIFACEDECL}IPersistStreamInit Save 6 (p,i)i +${NSISCOMIFACEDECL}IPersistStreamInit GetSizeMax 7 (*l)i +${NSISCOMIFACEDECL}IPersistStreamInit InitNew 8 ()i +!endif + +!ifndef IID_IPersistFile +!define IID_IPersistFile {0000010b-0000-0000-C000-000000000046} ; IPersist> +${NSISCOMIFACEDECL}IPersistFile IsDirty 4 ()i +${NSISCOMIFACEDECL}IPersistFile Load 5 (w,i)i +${NSISCOMIFACEDECL}IPersistFile Save 6 (w,i)i +${NSISCOMIFACEDECL}IPersistFile SaveCompleted 7 (w)i +${NSISCOMIFACEDECL}IPersistFile GetCurFile 8 (*w)i +!endif + +!ifndef CLSID_ShellLink +!define CLSID_ShellLink {00021401-0000-0000-c000-000000000046} +!endif +!ifndef IID_IShellLink +!define IID_IShellLinkA {000214ee-0000-0000-c000-000000000046} +!define IID_IShellLinkW {000214f9-0000-0000-c000-000000000046} +!ifdef NSIS_UNICODE +!define IID_IShellLink ${IID_IShellLinkW} +!else +!define IID_IShellLink ${IID_IShellLinkA} +!endif +${NSISCOMIFACEDECL}IShellLink GetPath 3 (t,i,p,i)i +${NSISCOMIFACEDECL}IShellLink GetIDList 4 (*p)i +${NSISCOMIFACEDECL}IShellLink SetIDList 5 (p)i +${NSISCOMIFACEDECL}IShellLink GetDescription 6 (t,i)i +${NSISCOMIFACEDECL}IShellLink SetDescription 7 (t)i +${NSISCOMIFACEDECL}IShellLink GetWorkingDirectory 8 (t,i)i +${NSISCOMIFACEDECL}IShellLink SetWorkingDirectory 9 (t)i +${NSISCOMIFACEDECL}IShellLink GetArguments 10 (t,i)i +${NSISCOMIFACEDECL}IShellLink SetArguments 11 (t)i +${NSISCOMIFACEDECL}IShellLink GetHotkey 12 (*i0)i +${NSISCOMIFACEDECL}IShellLink SetHotkey 13 (&i2)i +${NSISCOMIFACEDECL}IShellLink GetShowCmd 14 (*i)i +${NSISCOMIFACEDECL}IShellLink SetShowCmd 15 (i)i +${NSISCOMIFACEDECL}IShellLink GetIconLocation 16 (t,i,*i)i +${NSISCOMIFACEDECL}IShellLink SetIconLocation 17 (t,i)i +${NSISCOMIFACEDECL}IShellLink SetRelativePath 18 (t,i)i +${NSISCOMIFACEDECL}IShellLink Resolve 19 (p,i)i +${NSISCOMIFACEDECL}IShellLink SetPath 20 (t)i +!endif + +!ifndef IID_IShellLinkDataList +!define IID_IShellLinkDataList {45e2b4ae-b1c3-11d0-b92f-00a0c90312e1} +${NSISCOMIFACEDECL}IShellLinkDataList AddDataBlock 3 (p)i +${NSISCOMIFACEDECL}IShellLinkDataList CopyDataBlock 4 (i,*p)i +${NSISCOMIFACEDECL}IShellLinkDataList RemoveDataBlock 5 (i)i +${NSISCOMIFACEDECL}IShellLinkDataList GetFlags 6 (*i)i +${NSISCOMIFACEDECL}IShellLinkDataList SetFlags 7 (i)i +!endif +!define /ifndef EXP_SZ_LINK_SIG 0xA0000001 +!define /ifndef NT_CONSOLE_PROPS_SIG 0xA0000002 +!define /ifndef NT_FE_CONSOLE_PROPS_SIG 0xA0000004 +!define /ifndef EXP_SPECIAL_FOLDER_SIG 0xA0000005 +!define /ifndef EXP_DARWIN_ID_SIG 0xA0000006 +!define /ifndef EXP_SZ_ICON_SIG 0xA0000007 +!define /ifndef EXP_PROPERTYSTORAGE_SIG 0xA0000009 +;SHELL_LINK_DATA_FLAGS +!define /ifndef SLDF_HAS_ID_LIST 0x00000001 +!define /ifndef SLDF_HAS_LINK_INFO 0x00000002 +!define /ifndef SLDF_HAS_NAME 0x00000004 +!define /ifndef SLDF_HAS_RELPATH 0x00000008 +!define /ifndef SLDF_HAS_WORKINGDIR 0x00000010 +!define /ifndef SLDF_HAS_ARGS 0x00000020 +!define /ifndef SLDF_HAS_ICONLOCATION 0x00000040 +!define /ifndef SLDF_UNICODE 0x00000080 +!define /ifndef SLDF_FORCE_NO_LINKINFO 0x00000100 +!define /ifndef SLDF_HAS_EXP_SZ 0x00000200 +!define /ifndef SLDF_RUN_IN_SEPARATE 0x00000400 +!define /ifndef SLDF_HAS_LOGO3ID 0x00000800 +!define /ifndef SLDF_HAS_DARWINID 0x00001000 +!define /ifndef SLDF_RUNAS_USER 0x00002000 +!define /ifndef SLDF_HAS_EXP_ICON_SZ 0x00004000 +!define /ifndef SLDF_NO_PIDL_ALIAS 0x00008000 +!define /ifndef SLDF_FORCE_UNCNAME 0x00010000 +!define /ifndef SLDF_RUN_WITH_SHIMLAYER 0x00020000 +!define /ifndef SLDF_FORCE_NO_LINKTRACK 0x00040000 ;[Vista+] +!define /ifndef SLDF_ENABLE_TARGET_METADATA 0x00080000 +!define /ifndef SLDF_DISABLE_LINK_PATH_TRACKING 0x00100000 ;[Seven+] +!define /ifndef SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING 0x00200000 +!define /ifndef SLDF_NO_KF_ALIAS 0x00400000 +!define /ifndef SLDF_ALLOW_LINK_TO_LINK 0x00800000 +!define /ifndef SLDF_UNALIAS_ON_SAVE 0x01000000 +!define /ifndef SLDF_PREFER_ENVIRONMENT_PATH 0x02000000 +!define /ifndef SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET 0x04000000 +!define /ifndef SLDF_PERSIST_VOLUME_ID_RELATIVE 0x08000000 ;[Eight+] + +!ifndef IID_IShellItem +!define IID_IShellItem {43826d1e-e718-42ee-bc55-a1e261c37bfe} +${NSISCOMIFACEDECL}IShellItem BindToHandler 3 (p,g,g,*p)i +${NSISCOMIFACEDECL}IShellItem GetParent 4 (*p)i +${NSISCOMIFACEDECL}IShellItem GetDisplayName 5 (i,*p)i +${NSISCOMIFACEDECL}IShellItem GetAttributes 6 (i,*i)i +${NSISCOMIFACEDECL}IShellItem Compare 7 (p,i,*i)i +!endif + +!ifndef CLSID_StartMenuPin +!define CLSID_StartMenuPin {a2a9545d-a0c2-42b4-9708-a0b2badd77c8} +!endif +!ifndef IID_IStartMenuPinnedList +!define IID_IStartMenuPinnedList {4CD19ADA-25A5-4A32-B3B7-347BEE5BE36B} +${NSISCOMIFACEDECL}IStartMenuPinnedList RemoveFromList 3 (p)i +!endif + +!ifndef CLSID_ApplicationDestinations +!define CLSID_ApplicationDestinations {86c14003-4d6b-4ef3-a7b4-0506663b2e68} +!endif +!ifndef IID_IApplicationDestinations +!define IID_IApplicationDestinations {12337D35-94C6-48A0-BCE7-6A9C69D4D600} ;[Seven+] +${NSISCOMIFACEDECL}IApplicationDestinations SetAppID 3 (w)i +${NSISCOMIFACEDECL}IApplicationDestinations RemoveDestination 4 (p)i ; IShellItem or IShellLink +${NSISCOMIFACEDECL}IApplicationDestinations RemoveAllDestinations 5 ()i +!endif + +!ifndef CLSID_DestinationList +!define CLSID_DestinationList {77f10cf0-3db5-4966-b520-b7c54fd35ed6} +!endif +!ifndef IID_ICustomDestinationList +!define IID_ICustomDestinationList {6332debf-87b5-4670-90c0-5e57b408a49e} ;[Seven+] +${NSISCOMIFACEDECL}ICustomDestinationList SetAppID 3 (w)i +${NSISCOMIFACEDECL}ICustomDestinationList BeginList 4 (*i,g,*p)i ; IObjectArray or IEnumObjects +${NSISCOMIFACEDECL}ICustomDestinationList AppendCategory 5 (w,p)i ; IObjectArray* +${NSISCOMIFACEDECL}ICustomDestinationList AppendKnownCategory 6 (i)i +${NSISCOMIFACEDECL}ICustomDestinationList AddUserTasks 7 (p)i ; IObjectArray* +${NSISCOMIFACEDECL}ICustomDestinationList CommitList 8 ()i +${NSISCOMIFACEDECL}ICustomDestinationList GetRemovedDestinations 9 (g,*p)i ; IObjectCollection +${NSISCOMIFACEDECL}ICustomDestinationList DeleteList 10 (w)i +${NSISCOMIFACEDECL}ICustomDestinationList AbortList 11 ()i +!endif + +!ifndef CLSID_EnumerableObjectCollection +!define CLSID_EnumerableObjectCollection {2d3468c1-36a7-43b6-ac24-d3f02fd9607a} +!endif +!ifndef IID_IObjectArray +!define IID_IObjectArray {92CA9DCD-5622-4bba-A805-5E9F541BD8C9} +${NSISCOMIFACEDECL}IObjectArray GetCount 3 (*i)i +${NSISCOMIFACEDECL}IObjectArray GetAt 4 (i,g,*p)i +!endif + +!ifndef IID_IObjectCollection +!define IID_IObjectCollection {5632b1a4-e38a-400a-928a-d4cd63230295} ; IObjectArray> +${NSISCOMIFACEDECL}IObjectCollection AddObject 5 (p)i ; IUnknown* +${NSISCOMIFACEDECL}IObjectCollection AddFromArray 6 (p)i ; IObjectArray* +${NSISCOMIFACEDECL}IObjectCollection RemoveObjectAt 7 (i)i +${NSISCOMIFACEDECL}IObjectCollection Clear 8 ()i +!endif + +!ifndef IID_IEnumObjects +!define IID_IEnumObjects {2c1c7e2e-2d0e-4059-831e-1e6f82335c2e} +${NSISCOMIFACEDECL}IEnumObjects Next 3 (i,g,*p,*i)i +${NSISCOMIFACEDECL}IEnumObjects Skip 4 (i)i +${NSISCOMIFACEDECL}IEnumObjects Reset 5 ()i +${NSISCOMIFACEDECL}IEnumObjects Clone 6 (*p)i +!endif + +!ifndef IID_IEnumUnknown +!define IID_IEnumUnknown {00000100-0000-0000-C000-000000000046} +${NSISCOMIFACEDECL}IEnumUnknown Next 3 (i,*p,*i)i +${NSISCOMIFACEDECL}IEnumUnknown Skip 4 (i)i +${NSISCOMIFACEDECL}IEnumUnknown Reset 5 ()i +${NSISCOMIFACEDECL}IEnumUnknown Clone 6 (*p)i +!endif + +!ifndef IID_IPropertyStore +!define IID_IPropertyStore {886D8EEB-8CF2-4446-8D02-CDBA1DBDCF99} +${NSISCOMIFACEDECL}IPropertyStore GetCount 3 (*i)i +${NSISCOMIFACEDECL}IPropertyStore GetAt 4 (i,p)i +${NSISCOMIFACEDECL}IPropertyStore GetValue 5 (p,p)i +${NSISCOMIFACEDECL}IPropertyStore SetValue 6 (p,p)i +${NSISCOMIFACEDECL}IPropertyStore Commit 7 ()i +!endif + +!ifndef IID_IPropertyStorage +!define IID_IPropertyStorage {00000138-0000-0000-C000-000000000046} +${NSISCOMIFACEDECL}IPropertyStorage ReadMultiple 3 (i,p,p)i +${NSISCOMIFACEDECL}IPropertyStorage WriteMultiple 4 (i,p,p,i)i +${NSISCOMIFACEDECL}IPropertyStorage DeleteMultiple 5 (i,p)i +${NSISCOMIFACEDECL}IPropertyStorage ReadPropertyNames 6 (p,p)i +${NSISCOMIFACEDECL}IPropertyStorage WritePropertyNames 7 (i,p,p)i +${NSISCOMIFACEDECL}IPropertyStorage DeletePropertyNames 8 (i,p)i +${NSISCOMIFACEDECL}IPropertyStorage Commit 9 (i)i ; Note: Some implementations might return E_NOTIMPL +${NSISCOMIFACEDECL}IPropertyStorage Revert 10 ()i +${NSISCOMIFACEDECL}IPropertyStorage Enum 11 (*p)i +${NSISCOMIFACEDECL}IPropertyStorage SetTimes 12 (p,p,p)i +${NSISCOMIFACEDECL}IPropertyStorage SetClass 13 (g)i +${NSISCOMIFACEDECL}IPropertyStorage Stat 14 (p)i +!endif + +!ifndef IID_IPropertySetStorage +!define IID_IPropertySetStorage {0000013A-0000-0000-C000-000000000046} +${NSISCOMIFACEDECL}IPropertySetStorage Create 3 (g,g,i,i,*p)i +${NSISCOMIFACEDECL}IPropertySetStorage Open 4 (g,i,*p)i +${NSISCOMIFACEDECL}IPropertySetStorage Delete 5 (g)i +${NSISCOMIFACEDECL}IPropertySetStorage Enum 6 (*p)i +!endif + +!ifndef CLSID_ApplicationAssociationRegistration +!define CLSID_ApplicationAssociationRegistration {591209c7-767b-42b2-9fba-44ee4615f2c7} +!endif +!ifndef IID_IApplicationAssociationRegistration +!define IID_IApplicationAssociationRegistration {4e530b0a-e611-4c77-a3ac-9031d022281b} ;[Vista+] +${NSISCOMIFACEDECL}IApplicationAssociationRegistration QueryCurrentDefault 3 (w,i,i,*p)i +${NSISCOMIFACEDECL}IApplicationAssociationRegistration QueryAppIsDefault 4 (w,i,i,w,*i)i +${NSISCOMIFACEDECL}IApplicationAssociationRegistration QueryAppIsDefaultAll 5 (i,w,*i)i +${NSISCOMIFACEDECL}IApplicationAssociationRegistration SetAppAsDefault 6 (w,w,i)i +${NSISCOMIFACEDECL}IApplicationAssociationRegistration SetAppAsDefaultAll 7 (w)i +${NSISCOMIFACEDECL}IApplicationAssociationRegistration ClearUserAssociations 8 ()i +!endif +!ifndef CLSID_ApplicationAssociationRegistrationUI +!define CLSID_ApplicationAssociationRegistrationUI {1968106d-f3b5-44cf-890e-116fcb9ecef1} +!endif +!ifndef IID_IApplicationAssociationRegistrationUI +!define IID_IApplicationAssociationRegistrationUI {1f76a169-f994-40ac-8fc8-0959e8874710} ;[Vista+] +${NSISCOMIFACEDECL}IApplicationAssociationRegistrationUI LaunchAdvancedAssociationUI 3 (w)i +!endif + +!ifndef CLSID_GameExplorer +!define CLSID_GameExplorer {9A5EA990-3034-4D6F-9128-01F3C61022BC} +!endif +!ifndef IID_IGameExplorer +!define IID_IGameExplorer {E7B2FB72-D728-49B3-A5F2-18EBF5F1349E} ;[Vista+] +${NSISCOMIFACEDECL}IGameExplorer AddGame 3 (p,p,i,g)i +${NSISCOMIFACEDECL}IGameExplorer RemoveGame 4 (i,i,i,i)i ; The parameter is a GUID, not REFGUID so the 'g' type cannot be used! +${NSISCOMIFACEDECL}IGameExplorer UpdateGame 5 (i,i,i,i)i +${NSISCOMIFACEDECL}IGameExplorer VerifyAccess 6 (p,*i)i +!endif +!define /ifndef GIS_NOT_INSTALLED 1 +!define /ifndef GIS_CURRENT_USER 2 +!define /ifndef GIS_ALL_USERS 3 +!ifndef IID_IGameExplorer2 +!define IID_IGameExplorer2 {86874AA7-A1ED-450d-A7EB-B89E20B2FFF3} ;[Seven+] +${NSISCOMIFACEDECL}IGameExplorer2 InstallGame 3 (w,w,i)i +${NSISCOMIFACEDECL}IGameExplorer2 UninstallGame 4 (w)i +${NSISCOMIFACEDECL}IGameExplorer2 CheckAccess 5 (w,*i)i +!endif +!ifndef CLSID_GameStatistics +!define CLSID_GameStatistics {DBC85A2C-C0DC-4961-B6E2-D28B62C11AD4} +!endif +!ifndef IID_IGameStatisticsMgr +!define IID_IGameStatisticsMgr {AFF3EA11-E70E-407d-95DD-35E612C41CE2} ;[Seven+] +${NSISCOMIFACEDECL}IGameStatisticsMgr GetGameStatistics 3 (w,i,*i,*p)i +${NSISCOMIFACEDECL}IGameStatisticsMgr RemoveGameStatistics 4 (w)i +!endif + +!ifndef CLSID_InternetShortcut +!define CLSID_InternetShortcut {FBF23B40-E3F0-101B-8488-00AA003E56F8} +!endif +!ifndef IID_IUniformResourceLocator +!define IID_IUniformResourceLocatorA {FBF23B80-E3F0-101B-8488-00AA003E56F8} +!define IID_IUniformResourceLocatorW {CABB0DA0-DA57-11CF-9974-0020AFD79762} +!ifdef NSIS_UNICODE +!define IID_IUniformResourceLocator ${IID_IUniformResourceLocatorW} +!else +!define IID_IUniformResourceLocator ${IID_IUniformResourceLocatorA} +!endif +${NSISCOMIFACEDECL}IUniformResourceLocator SetURL 3 (t,i)i +${NSISCOMIFACEDECL}IUniformResourceLocator GetURL 4 (*p)i +${NSISCOMIFACEDECL}IUniformResourceLocator InvokeCommand 5 (p)i +!endif + +!verbose pop +!endif /* __WIN_COM__INC */ diff --git a/tools/Include/Win/Propkey.nsh b/tools/Include/Win/Propkey.nsh new file mode 100644 index 0000000..6d61d9a --- /dev/null +++ b/tools/Include/Win/Propkey.nsh @@ -0,0 +1,216 @@ +!ifndef __WIN_PROPKEY__INC +!define __WIN_PROPKEY__INC +!verbose push +!verbose 3 + + +/************************************************** +WTypes.h +**************************************************/ +;NOTE: This list is incomplete +!define VT_EMPTY 0 +!define VT_NULL 1 +!define VT_I2 2 +!define VT_I4 3 +!define VT_BSTR 8 +!define VT_BOOL 11 +!define VT_I1 16 +!define VT_UI1 17 +!define VT_UI2 18 +!define VT_UI4 19 +!define VT_I8 20 +!define VT_UI8 21 +!define VT_INT 22 +!define VT_UINT 23 +!define VT_HRESULT 25 +!define VT_PTR 26 +!define VT_SAFEARRAY 27 +!define VT_LPSTR 30 ; SHStrDupA +!define VT_LPWSTR 31 ; SHStrDupW +!define VT_FILETIME 64 +!define VT_STREAM 66 +!define VT_CLSID 72 ; Pointer to CoTaskMem allocated GUID +!define VT_TYPEMASK 0xFFF +!define VT_VECTOR 0x1000 +!define VT_ARRAY 0x2000 +!define VT_BYREF 0x4000 + +!define /ifndef VARIANT_TRUE -1 +!define /ifndef VARIANT_FALSE 0 + +!define SYSSIZEOF_PROPERTYKEY 20 +!define SYSSTRUCT_PROPERTYKEY (&g16,&i4) ;System.dll is buggy when it comes to g and forces us to specify the size + +!define STGC_DEFAULT 0 +!define STGC_OVERWRITE 1 +!define STGC_ONLYIFCURRENT 2 +!define STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 4 +!define STGC_CONSOLIDATE 8 + + +/************************************************** +OAIdl.h +**************************************************/ +!if "${NSIS_PTR_SIZE}" > 4 +!define SYSSIZEOF_VARIANT 24 +!define SYSSTRUCT_VARIANT (&i2,&i6,&i8,&i8) +!else +!define SYSSIZEOF_VARIANT 16 +!define SYSSTRUCT_VARIANT (&i2,&i6,&i8) +!endif + + +/************************************************** +PropIdl.h +**************************************************/ +!if "${NSIS_PTR_SIZE}" > 4 +!define SYSSIZEOF_PROPVARIANT 24 +!define SYSSTRUCT_PROPVARIANT (&i2,&i6,&i8,&i8) +!else +!define SYSSIZEOF_PROPVARIANT 16 +!define SYSSTRUCT_PROPVARIANT (&i2,&i6,&i8) +!endif + +!define PRSPEC_LPWSTR 0 +!define PRSPEC_PROPID 1 +!define SYSSTRUCT_PROPSPEC (p,p) + + +/************************************************** +Propkey.h +**************************************************/ +!define PKEY_AppUserModel_RelaunchCommand '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",2' ; VT_LPWSTR (SHGetPropertyStoreForWindow) +!define PKEY_AppUserModel_RelaunchIconResource '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",3' ; VT_LPWSTR (SHGetPropertyStoreForWindow, optional. Path to icon or module, with resource ID or index.) +!define PKEY_AppUserModel_RelaunchDisplayNameResource '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",4' ; VT_LPWSTR (SHGetPropertyStoreForWindow. @ style indirect resource string or a plain string.) +!define PKEY_AppUserModel_ID '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",5' ; VT_LPWSTR +!define PKEY_AppUserModel_IsDestListSeparator '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",6' ; VT_BOOL +!define PKEY_AppUserModel_ExcludeFromShowInNewInstall '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",8' ; VT_BOOL +!define PKEY_AppUserModel_PreventPinning '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",9' ; VT_BOOL +!define PKEY_AppUserModel_IsDualMode '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",11' ; [Eight+] VT_BOOL +!define APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL 1 +!define APPUSERMODEL_STARTPINOPTION_USERPINNED 2 +!define PKEY_AppUserModel_StartPinOption '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",12' ; [Eight+] VT_UI4 +!define PKEY_AppUserModel_ToastActivatorCLSID '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",26' ; [10FU1507+] VT_CLSID +!define PKEY_EdgeGesture_DisableTouchWhenFullscreen '"{32CE38B2-2C9A-41B1-9BC5-B3784394AA44}",2' ; [Eight+] VT_BOOL (SHGetPropertyStoreForWindow) + + +/************************************************** +ShlGuid.h & ShlObj.h +**************************************************/ +!define FMTID_Intshcut {000214A0-0000-0000-C000-000000000046} +!define PID_IS_URL 2 ; VT_LPWSTR +!define PID_IS_HOTKEY 6 ; VT_UI2 +!define PID_IS_ICONINDEX 8 ; VT_I4 +!define PID_IS_ICONFILE 9 ; VT_LPWSTR +!define PKEY_Intshcut_Url '"${FMTID_Intshcut}",${PID_IS_URL}' ; Undocumented +!define FMTID_InternetSite {000214A1-0000-0000-C000-000000000046} +!define PID_INTSITE_LASTVISIT 4 ; VT_FILETIME +!define PID_INTSITE_VISITCOUNT 6 ; VT_UI4 + + +/************************************************** +Helper macros +**************************************************/ +!define V_GetVT '!insertmacro V_GetVT ' +!macro V_GetVT pPV sysdst +System::Call '*${pPV}(&i2.${sysdst})' +!macroend +!define V_SetVT '!insertmacro V_SetVT ' +!macro V_SetVT pPV syssrc +System::Call '*${pPV}(&i2 ${syssrc})' +!macroend +!macro V_GetHelper sysvaltyp pPV sysdst +System::Call '*${pPV}(l,${sysvaltyp}.${sysdst})' +!macroend +!macro V_GenericSetHelper sysvaltyp pPV VT syssrc +!if "${VT}" != "" ; Setting the VT is optional + System::Call '*${pPV}(&i2 ${VT},&i6,${sysvaltyp}${syssrc})' +!else + System::Call '*${pPV}(l,${sysvaltyp}${syssrc})' +!endif +!macroend +!macro V_SpecificSetHelper VT sysvaltyp pPV syssrc +System::Call '*${pPV}(&i2 ${VT},&i6,${sysvaltyp}${syssrc})' +!macroend +!macro Make_V_GetterSetter name sysvaltyp setsep +!define V_Get${name} '!insertmacro V_GetHelper "${sysvaltyp}" ' +!ifdef VT_${name} + !define V_Set${name} '!insertmacro V_SpecificSetHelper ${VT_${name}} "${sysvaltyp}${setsep}" ' +!else + !define V_Set${name} '!insertmacro V_GenericSetHelper "${sysvaltyp}${setsep}" ' +!endif +!macroend +!insertmacro Make_V_GetterSetter Int8 "&i1" " " ; Generic +!insertmacro Make_V_GetterSetter Int16 "&i2" " " ; Generic +!insertmacro Make_V_GetterSetter Int32 "i" "" ; Generic +!insertmacro Make_V_GetterSetter Int64 "l" "" ; Generic +!insertmacro Make_V_GetterSetter Pointer "p" "" ; Generic +!insertmacro Make_V_GetterSetter I4 "i" " " +!insertmacro Make_V_GetterSetter BOOL "&i2" " " +!insertmacro Make_V_GetterSetter FILETIME "l" "" + +!macro VariantInit pV +${V_SetVT} ${pV} ${VT_EMPTY} +!macroend +!macro VariantClear pV +System::Call 'OLEAUT32::#9(p${pV})' +!macroend +!macro VariantCopy pDstV pSrcV sysretHR +System::Call 'OLEAUT32::#10(p${pDstV},p${pSrcV})i.${sysretHR}' ; (Frees the destination variant before it copies the source) +!macroend +!macro VariantCopyInd pDstV pSrcV sysretHR +System::Call 'OLEAUT32::#11(p${pDstV},p${pSrcV})i.${sysretHR}' ; (Frees the destination variant before it copies the source) +!macroend +!macro VariantChangeType pDstV pSrcV Flags VT sysretHR +System::Call 'OLEAUT32::#12(p${pDstV},p${pSrcV},i${Flags},i${VT})i.${sysretHR}' ; (Might free the destination on success) +!macroend + + +!macro PropVariantClear pPV +System::Call 'OLE32::PropVariantClear(p${pPV})' ; WinNT4.SP0+, Win98+, IE4+ +!macroend +!macro PropVariantCopy pDstPV pSrcPV sysretHR +System::Call 'OLE32::PropVariantCopy(p${pDstPV},p${pSrcPV})i.${sysretHR}' ; WinNT4.SP0+, Win98+, IE4+ (Does NOT free the destination before it copies the source) +!macroend +!macro PropVariantChangeType pDstPV pSrcPV VT sysretHR +!ifdef NSIS_ARM | NSIS_ARM32 | NSIS_ARMNT | NSIS_ARM64 + System::Call 'PROPSYS::PropVariantChangeType(p${pDstPV},p${pSrcPV},i0,i${VT})i.${sysretHR}' +!else + Push "${VT}" + Push ${pSrcPV} + Push ${pDstPV} + !include Util.nsh + ${CallArtificialFunction} TryPropVariantChangeType + System::Call 'KERNEL32::SetLastError(is${sysretHR})' ; A hack to move the result from the stack to somewhere with System variable syntax +!endif +!macroend +!macro TryPropVariantChangeType +System::Store S +System::Call 'PROPSYS::PropVariantChangeType(psr1,psr2,i0,isr3)i.r0' ; Vista+ (Source and destination cannot be the same address) +StrCmp $0 error "" done +System::Call 'OLE32::PropVariantChangeType(pr1,pr2,i0,i0,ir3})i.r0' ; 2000+ (Source and destination cannot be the same address) +!if ${NSIS_PTR_SIZE} < 8 + StrCmp $0 error "" done + !insertmacro VariantChangeType $1 $2 0 $3 r0 ; This is not really correct but there is no PROPVARIANT support on these platforms. Might free the destination! +!endif +done: +Push $0 +System::Store L +!macroend + + +!macro IPropertyStorage_ReadPropById pPS ID pPV sysoutHR +System::Call '*(p${PRSPEC_PROPID},p${ID})p.s' +${IPropertyStorage::ReadMultiple} ${pPS} '(1,pss,p${pPV})${sysoutHR}' +System::Free +!macroend + +!macro IPropertyStorage_WritePropById pPS ID pPV sysoutHR +System::Call '*(p${PRSPEC_PROPID},p${ID})p.s' +${IPropertyStorage::WriteMultiple} ${pPS} '(1,pss,p${pPV},2)${sysoutHR}' +System::Free +!macroend + + +!verbose pop +!endif /* __WIN_PROPKEY__INC */ diff --git a/tools/Include/Win/RestartManager.nsh b/tools/Include/Win/RestartManager.nsh new file mode 100644 index 0000000..6557b7d --- /dev/null +++ b/tools/Include/Win/RestartManager.nsh @@ -0,0 +1,117 @@ +!ifndef __WIN_RESTARTMANAGER__INC +!define __WIN_RESTARTMANAGER__INC 1 + +/************************************************** +WinBase.h +**************************************************/ +!define /IfNDef RESTART_MAX_CMD_LINE 1024 + +!define /IfNDef RESTART_NO_CRASH 1 +!define /IfNDef RESTART_NO_HANG 2 +!define /IfNDef RESTART_NO_PATCH 4 +!define /IfNDef RESTART_NO_REBOOT 8 ; Do not restart the process when the system is rebooted due to patch installations + +!define /IfNDef RECOVERY_DEFAULT_PING_INTERVAL 5000 +!define /IfNDef /math RECOVERY_MAX_PING_INTERVAL 5000 * 60 + + +/************************************************** +RestartManager.h +**************************************************/ +!define RM_SESSION_KEY_LEN 16 +!define CCH_RM_SESSION_KEY 32 +!define CCH_RM_MAX_APP_NAME 255 +!define CCH_RM_MAX_SVC_NAME 63 +!define RM_INVALID_TS_SESSION -1 +!define RM_INVALID_PROCESS -1 + +!define RmUnknownApp 0 +!define RmMainWindow 1 +!define RmOtherWindow 2 +!define RmService 3 +!define RmExplorer 4 +!define RmConsole 5 +!define RmCritical 1000 ; Application is critical system process where a reboot is required to restart + +!define RmForceShutdown 0x1 ; Force unresponsive applications and services to shut down after the timeout period +!define RmShutdownOnlyRegistered 0x10 ; Only shutdown apps if all apps registered for restart (RegisterApplicationRestart) + +!define RmStatusUnknown 0 +!define RmStatusRunning 1 +!define RmStatusStopped 2 ; Application stopped by Restart Manager +!define RmStatusStoppedOther 4 +!define RmStatusRestarted 8 +!define RmStatusErrorOnStop 0x10 +!define RmStatusErrorOnRestart 0x20 +!define RmStatusShutdownMasked 0x40 +!define RmStatusRestartMasked 0x80 + +!define RmRebootReasonNone 0 +!define RmRebootReasonPermissionDenied 1 +!define RmRebootReasonSessionMismatch 2 +!define RmRebootReasonCriticalProcess 4 +!define RmRebootReasonCriticalService 8 +!define RmRebootReasonDetectedSelf 0x10 + + +!define SYSSIZEOF_RM_UNIQUE_PROCESS 12 +!define SYSSTRUCT_RM_UNIQUE_PROCESS (i,l) + + +!include LogicLib.nsh +!include Util.nsh + + +!macro RestartManager_StartSession outvarhandle +System::Call 'RSTRTMGR::RmStartSession(*i-1s, i0, w)i.s' +Pop ${outvarhandle} +${If} ${outvarhandle} <> 0 +${OrIf} ${outvarhandle} == error + Pop ${outvarhandle} + Push "" +${EndIf} +Pop ${outvarhandle} +!macroend + +!macro RestartManager_EndSession handle +System::Call 'RSTRTMGR::RmEndSession(i${handle})' +!macroend + +!macro RestartManager_RegisterFile handle path +System::Call 'RSTRTMGR::RmRegisterResources(i${handle},i1,*ws,i0,p0,i0,p0)i.r0' "${path}" +!macroend + +!macro RestartManager_Shutdown handle +System::Call 'RSTRTMGR::RmShutdown(i${handle}, i${RmForceShutdown}, p0)' +!macroend + +!macro RestartManager_Restart handle +System::Call 'RSTRTMGR::RmRestart(i${handle}, i0, p0)' +!macroend + + +!macro RestartManager_ShutdownFile fullpath outvar_errcode +Push "${fullpath}" +!insertmacro CallArtificialFunction RestartManager_ShutdownFileImp +Pop ${outvar_errcode} +!macroend +!macro RestartManager_ShutdownFileImp +Exch $1 +Push $0 +System::Call 'RSTRTMGR::RmStartSession(*i-1s, i0, w)i.r0' +${If} $0 == error + Pop $0 + StrCpy $0 1150 +${Else} + System::Call 'RSTRTMGR::RmRegisterResources(isr1,i1,*wr1,i0,p0,i0,p0)i.r0' + ${If} $0 = 0 + System::Call 'RSTRTMGR::RmShutdown(ir1, i${RmForceShutdown}, p0)i.r0' + ${EndIf} + System::Call 'RSTRTMGR::RmEndSession(ir1)' +${EndIf} +Exch +Pop $1 +Exch $0 +!macroend + +!endif ;~ Include guard diff --git a/tools/Include/Win/WinDef.nsh b/tools/Include/Win/WinDef.nsh new file mode 100644 index 0000000..a91d685 --- /dev/null +++ b/tools/Include/Win/WinDef.nsh @@ -0,0 +1,67 @@ +!ifndef __WIN_WINDEF__INC +!define __WIN_WINDEF__INC +!verbose push +!verbose 3 +!ifndef __WIN_NOINC_WINDEF + + +!define /ifndef MAX_PATH 260 +#define NULL 0 + + +!macro _Win_MINMAX _intcmp _j1 _j2 _outvar _a _b +${_intcmp} "${_a}" "${_b}" ${_j1} ${_j1} ${_j2} +StrCpy ${_outvar} "${_a}" +goto +2 +StrCpy ${_outvar} "${_b}" +!macroend +!ifndef __WIN_MS_NOMINMAX & min & max & min_u & max_u +!define min "!insertmacro _Win_MINMAX IntCmp +1 +3 " +!define max "!insertmacro _Win_MINMAX IntCmp +3 +1 " +!define min_u "!insertmacro _Win_MINMAX IntCmpU +1 +3 " +!define max_u "!insertmacro _Win_MINMAX IntCmpU +3 +1 " +!endif + +!macro _Win_LOBYTE _outvar _in +IntOp ${_outvar} "${_in}" & 0xFF +!macroend +!define LOBYTE "!insertmacro _Win_LOBYTE " + +!macro _Win_HIBYTE _outvar _in +IntOp ${_outvar} "${_in}" >> 8 +${LOBYTE} ${_outvar} ${_outvar} +!macroend +!define HIBYTE "!insertmacro _Win_HIBYTE " + +!macro _Win_LOWORD _outvar _in +IntOp ${_outvar} "${_in}" & 0xFFFF +!macroend +!define LOWORD "!insertmacro _Win_LOWORD " + +!macro _Win_HIWORD _outvar _in +IntOp ${_outvar} "${_in}" >>> 16 +!macroend +!define HIWORD "!insertmacro _Win_HIWORD " + +!macro _Win_MAKEWORD _outvar _tmpvar _lo _hi +${LOBYTE} ${_outvar} "${_hi}" +${LOBYTE} ${_tmpvar} "${_lo}" +IntOp ${_outvar} ${_outvar} << 8 +IntOp ${_outvar} ${_outvar} | ${_tmpvar} +!macroend +!define MAKEWORD "!insertmacro _Win_MAKEWORD " + +!macro _Win_MAKELONG32 _outvar _tmpvar _wlo _whi +${LOWORD} ${_outvar} "${_wlo}" +IntOp ${_tmpvar} "${_whi}" << 16 +IntOp ${_outvar} ${_outvar} | ${_tmpvar} +!macroend +!define MAKELONG "!insertmacro _Win_MAKELONG32 " +!define MAKEWPARAM "${MAKELONG}" +!define MAKELPARAM "${MAKELONG}" +!define MAKELRESULT "${MAKELONG}" + + +!endif /* __WIN_NOINC_WINDEF */ +!verbose pop +!endif /* __WIN_WINDEF__INC */ \ No newline at end of file diff --git a/tools/Include/Win/WinError.nsh b/tools/Include/Win/WinError.nsh new file mode 100644 index 0000000..16b0ecf --- /dev/null +++ b/tools/Include/Win/WinError.nsh @@ -0,0 +1,155 @@ +!ifndef __WIN_WINERROR__INC +!define __WIN_WINERROR__INC +!verbose push +!verbose 3 + +!ifndef __WIN_NOINC_WINERROR +#define NO_ERROR 0 +!define ERROR_SUCCESS 0 +!define ERROR_INVALID_FUNCTION 1 +!define ERROR_FILE_NOT_FOUND 2 +!define ERROR_PATH_NOT_FOUND 3 +!define ERROR_TOO_MANY_OPEN_FILES 4 +!define ERROR_ACCESS_DENIED 5 +!define ERROR_INVALID_HANDLE 6 +!define ERROR_ARENA_TRASHED 7 +!define ERROR_NOT_ENOUGH_MEMORY 8 +!define ERROR_INVALID_BLOCK 9 +!define ERROR_BAD_ENVIRONMENT 10 +!define ERROR_BAD_FORMAT 11 +!define ERROR_INVALID_ACCESS 12 +!define ERROR_INVALID_DATA 13 +!define ERROR_OUTOFMEMORY 14 +!define ERROR_INVALID_DRIVE 15 +!define ERROR_CURRENT_DIRECTORY 16 +!define ERROR_NOT_SAME_DEVICE 17 +!define ERROR_NO_MORE_FILES 18 +!define ERROR_WRITE_PROTECT 19 +!define ERROR_BAD_UNIT 20 +!define ERROR_NOT_READY 21 +!define ERROR_BAD_COMMAND 22 +!define ERROR_CRC 23 +!define ERROR_BAD_LENGTH 24 +!define ERROR_SEEK 25 +!define ERROR_NOT_DOS_DISK 26 +!define ERROR_SECTOR_NOT_FOUND 27 +!define ERROR_OUT_OF_PAPER 28 +!define ERROR_WRITE_FAULT 29 +!define ERROR_READ_FAULT 30 +!define ERROR_GEN_FAILURE 31 +!define ERROR_SHARING_VIOLATION 32 +!define ERROR_LOCK_VIOLATION 33 +!define ERROR_WRONG_DISK 34 +!define ERROR_SHARING_BUFFER_EXCEEDED 36 +!define ERROR_HANDLE_EOF 38 +!define ERROR_HANDLE_DISK_FULL 39 +!define ERROR_NOT_SUPPORTED 50 +!define ERROR_CANNOT_MAKE 82 ; "The directory or file cannot be created" +!define ERROR_INVALID_PARAMETER 87 +!define ERROR_DISK_FULL 112 +!define ERROR_CALL_NOT_IMPLEMENTED 120 ; "This function is not supported on this system" +!define ERROR_INSUFFICIENT_BUFFER 122 +!define ERROR_INVALID_NAME 123 ; "The filename, directory name, or volume label syntax is incorrect" +!define ERROR_MOD_NOT_FOUND 126 ; "The specified module could not be found" +!define ERROR_BAD_ARGUMENTS 160 +!define ERROR_BAD_PATHNAME 161 +!define ERROR_LOCK_FAILED 167 ; "Unable to lock a region of a file" +!define ERROR_BUSY 170 ; "The requested resource is in use" +!define ERROR_ALREADY_EXISTS 183 ; "Cannot create a file when that file already exists" +!define ERROR_FILENAME_EXCED_RANGE 206 ; "The filename or extension is too long" +!define ERROR_EXE_MACHINE_TYPE_MISMATCH 216 ; "This version of %1 is not compatible with the version of Windows you're running" +!define ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT 308 +!define ERROR_DATA_CHECKSUM_ERROR 323 +!define ERROR_ELEVATION_REQUIRED 740 +!define ERROR_SERVICE_DOES_NOT_EXIST 1060 +!define ERROR_NO_MEDIA_IN_DRIVE 1112 +!define ERROR_NO_UNICODE_TRANSLATION 1113 +!define ERROR_DLL_INIT_FAILED 1114 +!define ERROR_SHUTDOWN_IN_PROGRESS 1115 +!define ERROR_OLD_WIN_VERSION 1150 ; "The specified program requires a newer version of Windows" +!define ERROR_APP_WRONG_OS 1151 ; "The specified program is not a Windows or MS-DOS program" +!define ERROR_SINGLE_INSTANCE_APP 1152 ; "Cannot start more than one instance of the specified program" +!define ERROR_RMODE_APP 1153 ; "The specified program was written for an earlier version of Windows" +!define ERROR_INVALID_DLL 1154 +!define ERROR_NO_ASSOCIATION 1155 +!define ERROR_DDE_FAIL 1156 +!define ERROR_DLL_NOT_FOUND 1157 +!define ERROR_NOT_FOUND 1168 ; "Element not found" +!define ERROR_NO_MATCH 1169 ; "There was no match for the specified key in the index" +!define ERROR_NO_VOLUME_ID 1173 +!define ERROR_UNABLE_TO_REMOVE_REPLACED 1175 ; "Unable to remove the file to be replaced" +!define ERROR_UNABLE_TO_MOVE_REPLACEMENT 1176 +!define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 1177 +!define ERROR_SHUTDOWN_IS_SCHEDULED 1190 +!define ERROR_SHUTDOWN_USERS_LOGGED_ON 1191 ; "The system shutdown cannot be initiated because there are other users logged on to the computer" +!define ERROR_NO_NETWORK 1222 +!define ERROR_CANCELLED 1223 ; "The operation was canceled by the user" +!define ERROR_RETRY 1237 +!define ERROR_SERVICE_NOT_FOUND 1243 +!define ERROR_NOT_AUTHENTICATED 1244 +!define ERROR_UNIDENTIFIED_ERROR 1287 +!define ERROR_PRIVILEGE_NOT_HELD 1314 +!define ERROR_LOGON_FAILURE 1326 ; "The user name or password is incorrect" +!define ERROR_INTERNAL_ERROR 1359 ; "An internal error occurred" +!define ERROR_FILE_CORRUPT 1392 ; "The file or directory is corrupted and unreadable" +!define ERROR_INVALID_WINDOW_HANDLE 1400 ; "Invalid window handle" +!define ERROR_INVALID_INDEX 1413 +!define ERROR_TIMEOUT 1460 +!define ERROR_SYMLINK_NOT_SUPPORTED 1464 +!define ERROR_XML_PARSE_ERROR 1465 +!define ERROR_RESTART_APPLICATION 1467 ; "This application must be restarted" +!define ERROR_INSTALL_USEREXIT 1602 ; "User cancelled installation" +!define ERROR_INSTALL_FAILURE 1603 ; "Fatal error during installation" +!define ERROR_INSTALL_SUSPEND 1604 ; "Installation suspended, incomplete" +!define ERROR_UNKNOWN_PRODUCT 1605 ; "This action is only valid for products that are currently installed" +!define ERROR_BAD_CONFIGURATION 1610 +!define ERROR_INSTALL_SOURCE_ABSENT 1612 +!define ERROR_PRODUCT_UNINSTALLED 1614 +!define ERROR_INSTALL_ALREADY_RUNNING 1618 ; "Another installation is already in progress. Complete that installation before proceeding with this install." +!define ERROR_INSTALL_PACKAGE_INVALID 1620 +!define ERROR_INSTALL_LOG_FAILURE 1622 +!define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623 +!define ERROR_FUNCTION_FAILED 1627 +!define ERROR_DATATYPE_MISMATCH 1629 +!define ERROR_UNSUPPORTED_TYPE 1630 +!define ERROR_INSTALL_TEMP_UNWRITABLE 1632 ; "The Temp folder is on a drive that is full or is inaccessible" +!define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633 ; "This installation package is not supported by this processor type. Contact your product vendor." +!define ERROR_PRODUCT_VERSION 1638 ; "Another version of this product is already installed" +!define ERROR_SUCCESS_REBOOT_INITIATED 1641 ; "The requested operation completed successfully. The system will be restarted so the changes can take effect." +!define ERROR_INSTALL_REJECTED 1654 ; "The app that you are trying to run is not supported on this version of Windows" +!define ERROR_TAG_NOT_FOUND 2012 +!define ERROR_BAD_USERNAME 2202 ; "The user name or group name parameter is invalid" +!define ERROR_SUCCESS_REBOOT_REQUIRED 3010 +!define ERROR_SUCCESS_RESTART_REQUIRED 3011 +!define ERROR_INSTALL_INVALID_PACKAGE 15602 +!define ERROR_INSTALL_OUT_OF_DISK_SPACE 15604 +!define ERROR_INSTALL_CANCEL 15608 ; "User cancelled the install request" +!define ERROR_INSTALL_FAILED 15609 +!define ERROR_REMOVE_FAILED 15610 +!define ERROR_NEEDS_REMEDIATION 15612 ; "The application cannot be started. Try reinstalling the application to fix the problem." + +!define SEVERITY_SUCCESS 0 +!define SEVERITY_ERROR 1 +!define FACILITY_STORAGE 3 +!define FACILITY_WIN32 7 +!define FACILITY_SECURITY 9 +!define FACILITY_SETUPAPI 15 +!define FACILITY_SXS 23 +!define /IfNDef S_OK 0 +!define /IfNDef S_FALSE 1 +!define E_UNEXPECTED 0x8000FFFF +!define E_NOTIMPL 0x80004001 +!define E_OUTOFMEMORY 0x8007000E +!define E_INVALIDARG 0x80070057 +!define E_NOINTERFACE 0x80004002 +!define E_POINTER 0x80004003 +!define E_HANDLE 0x80070006 +!define E_ABORT 0x80004004 +!define E_FAIL 0x80004005 +!define E_ACCESSDENIED 0x80070005 +!define E_PENDING 0x8000000A + +!endif /* __WIN_NOINC_WINERROR */ + +!verbose pop +!endif /* __WIN_WINERROR__INC */ diff --git a/tools/Include/Win/WinNT.nsh b/tools/Include/Win/WinNT.nsh new file mode 100644 index 0000000..09e9aaf --- /dev/null +++ b/tools/Include/Win/WinNT.nsh @@ -0,0 +1,224 @@ +!ifndef __WIN_WINNT__INC +!define __WIN_WINNT__INC +!verbose push +!verbose 3 +!ifndef __WIN_NOINC_WINNT + + +#define MINCHAR 0x80 +#define MAXCHAR 0x7f +!define MINSHORT 0x8000 +!define MAXSHORT 0x7fff +!define MINLONG 0x80000000 +!define MAXLONG 0x7fffffff +!define MAXBYTE 0xff +!define MAXWORD 0xffff +!define MAXDWORD 0xffffffff + +!ifndef WIN32_NO_STATUS +!define STATUS_WAIT_0 0x00000000 +!define STATUS_ABANDONED_WAIT_0 0x00000080 +!define STATUS_USER_APC 0x000000C0 +!define STATUS_TIMEOUT 0x00000102 +!define STATUS_PENDING 0x00000103 +!define DBG_EXCEPTION_HANDLED 0x00010001 +!define DBG_CONTINUE 0x00010002 +!define STATUS_SEGMENT_NOTIFICATION 0x40000005 +!define DBG_TERMINATE_THREAD 0x40010003 +!define DBG_TERMINATE_PROCESS 0x40010004 +!define DBG_CONTROL_C 0x40010005 +!define DBG_CONTROL_BREAK 0x40010008 +!define DBG_COMMAND_EXCEPTION 0x40010009 +!define STATUS_GUARD_PAGE_VIOLATION 0x80000001 +!define STATUS_DATATYPE_MISALIGNMENT 0x80000002 +!define STATUS_BREAKPOINT 0x80000003 +!define STATUS_SINGLE_STEP 0x80000004 +!define DBG_EXCEPTION_NOT_HANDLED 0x80010001 +!define STATUS_ACCESS_VIOLATION 0xC0000005 +!define STATUS_IN_PAGE_ERROR 0xC0000006 +!define STATUS_INVALID_HANDLE 0xC0000008 +!define STATUS_NO_MEMORY 0xC0000017 +!define STATUS_ILLEGAL_INSTRUCTION 0xC000001D +!define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025 +!define STATUS_INVALID_DISPOSITION 0xC0000026 +!define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C +!define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D +!define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E +!define STATUS_FLOAT_INEXACT_RESULT 0xC000008F +!define STATUS_FLOAT_INVALID_OPERATION 0xC0000090 +!define STATUS_FLOAT_OVERFLOW 0xC0000091 +!define STATUS_FLOAT_STACK_CHECK 0xC0000092 +!define STATUS_FLOAT_UNDERFLOW 0xC0000093 +!define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094 +!define STATUS_INTEGER_OVERFLOW 0xC0000095 +!define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096 +!define STATUS_STACK_OVERFLOW 0xC00000FD +!define STATUS_CONTROL_C_EXIT 0xC000013A +!define STATUS_FLOAT_MULTIPLE_FAULTS 0xC00002B4 +!define STATUS_FLOAT_MULTIPLE_TRAPS 0xC00002B5 +!define STATUS_REG_NAT_CONSUMPTION 0xC00002C9 +!define STATUS_SXS_EARLY_DEACTIVATION 0xC015000F +!define STATUS_SXS_INVALID_DEACTIVATION 0xC0150010 +!endif /*WIN32_NO_STATUS*/ + +#define MAXIMUM_WAIT_OBJECTS 64 + +!define DELETE 0x00010000 +!define READ_CONTROL 0x00020000 +!define WRITE_DAC 0x00040000 +!define WRITE_OWNER 0x00080000 +!define SYNCHRONIZE 0x00100000 +!define STANDARD_RIGHTS_REQUIRED 0x000F0000 +!define STANDARD_RIGHTS_READ ${READ_CONTROL} +!define STANDARD_RIGHTS_WRITE ${READ_CONTROL} +!define STANDARD_RIGHTS_EXECUTE ${READ_CONTROL} +!define STANDARD_RIGHTS_ALL 0x001F0000 +!define SPECIFIC_RIGHTS_ALL 0x0000FFFF +!define ACCESS_SYSTEM_SECURITY 0x01000000 +!define MAXIMUM_ALLOWED 0x02000000 +!define GENERIC_READ 0x80000000 +!define GENERIC_WRITE 0x40000000 +!define GENERIC_EXECUTE 0x20000000 +!define GENERIC_ALL 0x10000000 + +!define SE_PRIVILEGE_ENABLED_BY_DEFAULT 0x00000001 +!define SE_PRIVILEGE_ENABLED 0x00000002 +!define SE_PRIVILEGE_REMOVED 0x00000004 +!define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000 + +!define SE_CREATE_TOKEN_NAME "SeCreateTokenPrivilege" +!define SE_ASSIGNPRIMARYTOKEN_NAME "SeAssignPrimaryTokenPrivilege" +!define SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege" +!define SE_INCREASE_QUOTA_NAME "SeIncreaseQuotaPrivilege" +!define SE_UNSOLICITED_INPUT_NAME "SeUnsolicitedInputPrivilege" +!define SE_MACHINE_ACCOUNT_NAME "SeMachineAccountPrivilege" +!define SE_TCB_NAME "SeTcbPrivilege" +!define SE_SECURITY_NAME "SeSecurityPrivilege" +!define SE_TAKE_OWNERSHIP_NAME "SeTakeOwnershipPrivilege" +!define SE_LOAD_DRIVER_NAME "SeLoadDriverPrivilege" +!define SE_SYSTEM_PROFILE_NAME "SeSystemProfilePrivilege" +!define SE_SYSTEMTIME_NAME "SeSystemtimePrivilege" +!define SE_PROF_SINGLE_PROCESS_NAME "SeProfileSingleProcessPrivilege" +!define SE_INC_BASE_PRIORITY_NAME "SeIncreaseBasePriorityPrivilege" +!define SE_CREATE_PAGEFILE_NAME "SeCreatePagefilePrivilege" +!define SE_CREATE_PERMANENT_NAME "SeCreatePermanentPrivilege" +!define SE_BACKUP_NAME "SeBackupPrivilege" +!define SE_RESTORE_NAME "SeRestorePrivilege" +!define SE_SHUTDOWN_NAME "SeShutdownPrivilege" +!define SE_DEBUG_NAME "SeDebugPrivilege" +!define SE_AUDIT_NAME "SeAuditPrivilege" +!define SE_SYSTEM_ENVIRONMENT_NAME "SeSystemEnvironmentPrivilege" +!define SE_CHANGE_NOTIFY_NAME "SeChangeNotifyPrivilege" +!define SE_REMOTE_SHUTDOWN_NAME "SeRemoteShutdownPrivilege" +!define SE_UNDOCK_NAME "SeUndockPrivilege" +!define SE_SYNC_AGENT_NAME "SeSyncAgentPrivilege" +!define SE_ENABLE_DELEGATION_NAME "SeEnableDelegationPrivilege" +!define SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege" +!define SE_IMPERSONATE_NAME "SeImpersonatePrivilege" +!define SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege" + +!define TOKEN_ASSIGN_PRIMARY 0x0001 +!define TOKEN_DUPLICATE 0x0002 +!define TOKEN_IMPERSONATE 0x0004 +!define TOKEN_QUERY 0x0008 +!define TOKEN_QUERY_SOURCE 0x0010 +!define TOKEN_ADJUST_PRIVILEGES 0x0020 +!define TOKEN_ADJUST_GROUPS 0x0040 +!define TOKEN_ADJUST_DEFAULT 0x0080 +!define TOKEN_ADJUST_SESSIONID 0x0100 +!define TOKEN_ALL_ACCESS_P 0xF00FF +!define /math TOKEN_ALL_ACCESS ${TOKEN_ALL_ACCESS_P} | ${TOKEN_ADJUST_SESSIONID} +!define /math TOKEN_READ ${STANDARD_RIGHTS_READ} | ${TOKEN_QUERY} +!define TOKEN_WRITE 0x200E0 ;(STANDARD_RIGHTS_WRITE|TOKEN_ADJUST_PRIVILEGES|TOKEN_ADJUST_GROUPS|TOKEN_ADJUST_DEFAULT) +!define TOKEN_EXECUTE ${STANDARD_RIGHTS_EXECUTE} + +!define PROCESS_TERMINATE 0x0001 +!define PROCESS_CREATE_THREAD 0x0002 +!define PROCESS_SET_SESSIONID 0x0004 +!define PROCESS_VM_OPERATION 0x0008 +!define PROCESS_VM_READ 0x0010 +!define PROCESS_VM_WRITE 0x0020 +!define PROCESS_DUP_HANDLE 0x0040 +!define PROCESS_CREATE_PROCESS 0x0080 +!define PROCESS_SET_QUOTA 0x0100 +!define PROCESS_SET_INFORMATION 0x0200 +!define PROCESS_QUERY_INFORMATION 0x0400 +!define PROCESS_SUSPEND_RESUME 0x0800 +!define PROCESS_ALL_ACCESS 0x1F0FFF ;(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF) +!define THREAD_TERMINATE 0x0001 +!define THREAD_SUSPEND_RESUME 0x0002 +!define THREAD_GET_CONTEXT 0x0008 +!define THREAD_SET_CONTEXT 0x0010 +!define THREAD_SET_INFORMATION 0x0020 +!define THREAD_QUERY_INFORMATION 0x0040 +!define THREAD_SET_THREAD_TOKEN 0x0080 +!define THREAD_IMPERSONATE 0x0100 +!define THREAD_DIRECT_IMPERSONATION 0x0200 +!define THREAD_ALL_ACCESS 0x1F03FF ;(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF) +!define JOB_OBJECT_ASSIGN_PROCESS 0x0001 +!define JOB_OBJECT_SET_ATTRIBUTES 0x0002 +!define JOB_OBJECT_QUERY 0x0004 +!define JOB_OBJECT_TERMINATE 0x0008 +!define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 0x0010 +!define JOB_OBJECT_ALL_ACCESS 0x1F001F ;(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F ) +!define EVENT_MODIFY_STATE 0x0002 +!define EVENT_ALL_ACCESS 0x1F0003 ;(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +!define MUTANT_QUERY_STATE 0x0001 +!define MUTANT_ALL_ACCESS 0x1F0001 ;(STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE) + +!define FILE_SHARE_READ 0x00000001 +!define FILE_SHARE_WRITE 0x00000002 +!define FILE_SHARE_DELETE 0x00000004 +!define FILE_ATTRIBUTE_READONLY 0x00000001 +!define FILE_ATTRIBUTE_HIDDEN 0x00000002 +!define FILE_ATTRIBUTE_SYSTEM 0x00000004 +!define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +!define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +!define FILE_ATTRIBUTE_DEVICE 0x00000040 +!define FILE_ATTRIBUTE_NORMAL 0x00000080 +!define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +!define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +!define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +!define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +!define FILE_ATTRIBUTE_OFFLINE 0x00001000 +!define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +!define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 + +!define DUPLICATE_CLOSE_SOURCE 0x00000001 +!define DUPLICATE_SAME_ACCESS 0x00000002 + +!define /ifndef VER_PLATFORM_WIN32s 0 +!define /ifndef VER_PLATFORM_WIN32_WINDOWS 1 +!define /ifndef VER_PLATFORM_WIN32_NT 2 + +!ifndef REG_SZ & NSIS_WINDOWS__NO_REGTYPES +!define REG_NONE 0 +!define REG_SZ 1 +!define REG_EXPAND_SZ 2 +!define REG_BINARY 3 +!define REG_DWORD 4 +!define REG_DWORD_LITTLE_ENDIAN 4 +!define REG_DWORD_BIG_ENDIAN 5 +!define REG_LINK 6 +!define REG_MULTI_SZ 7 +!endif + +!define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF +!define PROCESSOR_ARCHITECTURE_INTEL 0 ; x86 +!define PROCESSOR_ARCHITECTURE_ARM 5 +!define PROCESSOR_ARCHITECTURE_IA64 6 ; Itanium +!define PROCESSOR_ARCHITECTURE_AMD64 9 ; x86-64/x64 +!define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 +!define PROCESSOR_ARCHITECTURE_ARM64 12 +!define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13 + +!define IMAGE_FILE_MACHINE_UNKNOWN 0 +!define IMAGE_FILE_MACHINE_I386 332 ; x86 +!define IMAGE_FILE_MACHINE_ARMNT 452 +!define IMAGE_FILE_MACHINE_IA64 512 ; Itanium +!define IMAGE_FILE_MACHINE_AMD64 34404 ; x86-64/x64 +!define IMAGE_FILE_MACHINE_ARM64 43620 + +!endif /* __WIN_NOINC_WINNT */ +!verbose pop +!endif /* __WIN_WINNT__INC */ \ No newline at end of file diff --git a/tools/Include/Win/WinUser.nsh b/tools/Include/Win/WinUser.nsh new file mode 100644 index 0000000..50a9921 --- /dev/null +++ b/tools/Include/Win/WinUser.nsh @@ -0,0 +1,199 @@ +!ifndef __WIN_WINUSER__INC +!define __WIN_WINUSER__INC +!verbose push +!verbose 3 +!ifndef __WIN_MS_NOUSER & __WIN_NOINC_WINUSER + +!ifndef __WIN_MS_NOVIRTUALKEYCODES +!define VK_LBUTTON 0x01 +!define VK_RBUTTON 0x02 +!define VK_CANCEL 0x03 +!define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */ +!define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */ +!define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */ +!define VK_BACK 0x08 +!define VK_TAB 0x09 +!define VK_CLEAR 0x0C +!define VK_RETURN 0x0D +!define VK_SHIFT 0x10 +!define VK_CONTROL 0x11 +!define VK_MENU 0x12 +!define VK_PAUSE 0x13 +!define VK_CAPITAL 0x14 +!define VK_ESCAPE 0x1B +!define VK_CONVERT 0x1C +!define VK_NONCONVERT 0x1D +!define VK_ACCEPT 0x1E +!define VK_MODECHANGE 0x1F +!define VK_SPACE 0x20 +!define VK_PRIOR 0x21 +!define VK_NEXT 0x22 +!define VK_END 0x23 +!define VK_HOME 0x24 +!define VK_LEFT 0x25 +!define VK_UP 0x26 +!define VK_RIGHT 0x27 +!define VK_DOWN 0x28 +!define VK_SELECT 0x29 +!define VK_PRINT 0x2A +!define VK_EXECUTE 0x2B +!define VK_SNAPSHOT 0x2C +!define VK_INSERT 0x2D +!define VK_DELETE 0x2E +!define VK_HELP 0x2F +; VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) +; VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) +!define VK_LWIN 0x5B +!define VK_RWIN 0x5C +!define VK_APPS 0x5D +!define VK_SLEEP 0x5F +!define VK_NUMPAD0 0x60 +!define VK_NUMPAD1 0x61 +!define VK_NUMPAD2 0x62 +!define VK_NUMPAD3 0x63 +!define VK_NUMPAD4 0x64 +!define VK_NUMPAD5 0x65 +!define VK_NUMPAD6 0x66 +!define VK_NUMPAD7 0x67 +!define VK_NUMPAD8 0x68 +!define VK_NUMPAD9 0x69 +!define VK_MULTIPLY 0x6A +!define VK_ADD 0x6B +!define VK_SEPARATOR 0x6C +!define VK_SUBTRACT 0x6D +!define VK_DECIMAL 0x6E +!define VK_DIVIDE 0x6F +!define VK_F1 0x70 +!define VK_F2 0x71 +!define VK_F3 0x72 +!define VK_F4 0x73 +!define VK_F5 0x74 +!define VK_F6 0x75 +!define VK_F7 0x76 +!define VK_F8 0x77 +!define VK_F9 0x78 +!define VK_F10 0x79 +!define VK_F11 0x7A +!define VK_F12 0x7B +!define VK_NUMLOCK 0x90 +!define VK_SCROLL 0x91 +!define VK_OEM_NEC_EQUAL 0x92 ; '=' key on numpad +!define VK_LSHIFT 0xA0 +!define VK_RSHIFT 0xA1 +!define VK_LCONTROL 0xA2 +!define VK_RCONTROL 0xA3 +!define VK_LMENU 0xA4 +!define VK_RMENU 0xA5 +!endif + +!ifndef __WIN_MS_NOWINOFFSETS +!define /ifndef GWL_STYLE -16 +!define /ifndef GWL_EXSTYLE -20 +!define /ifndef GWLP_WNDPROC -4 +!define /ifndef GWLP_HINSTANCE -6 +!define /ifndef GWLP_HWNDPARENT -8 +!define /ifndef GWLP_USERDATA -21 +!define /ifndef GWLP_ID -12 +!define DWLP_MSGRESULT 0 +!define /math DWLP_DLGPROC ${DWLP_MSGRESULT} + ${NSIS_PTR_SIZE} ;DWLP_MSGRESULT + sizeof(LRESULT) +!define /math DWLP_USER ${DWLP_DLGPROC} + ${NSIS_PTR_SIZE} ;DWLP_DLGPROC + sizeof(DLGPROC) +!endif + +!ifndef __WIN_MS_NONCMESSAGES +!define HTERROR -2 +!define HTTRANSPARENT -1 +!define HTNOWHERE 0 +!define HTCLIENT 1 +!define HTCAPTION 2 +!define HTSYSMENU 3 +!define HTGROWBOX 4 +!define HTSIZE ${HTGROWBOX} +!define HTMENU 5 +!define HTHSCROLL 6 +!define HTVSCROLL 7 +!define HTMINBUTTON 8 +!define HTMAXBUTTON 9 +!define HTLEFT 10 +!define HTRIGHT 11 +!define HTTOP 12 +!define HTTOPLEFT 13 +!define HTTOPRIGHT 14 +!define HTBOTTOM 15 +!define HTBOTTOMLEFT 16 +!define HTBOTTOMRIGHT 17 +!define HTBORDER 18 +!define HTREDUCE ${HTMINBUTTON} +!define HTZOOM ${HTMAXBUTTON} +!define HTSIZEFIRST ${HTLEFT} +!define HTSIZELAST ${HTBOTTOMRIGHT} +!define HTOBJECT 19 +!define HTCLOSE 20 +!define HTHELP 21 +!endif + +!ifndef __WIN_MS_NOSYSCOMMANDS +!define SC_SIZE 0xF000 +!define SC_MOVE 0xF010 +!define SC_MINIMIZE 0xF020 +!define SC_MAXIMIZE 0xF030 +!define SC_NEXTWINDOW 0xF040 +!define SC_PREVWINDOW 0xF050 +!define SC_CLOSE 0xF060 +!define SC_VSCROLL 0xF070 +!define SC_HSCROLL 0xF080 +!define SC_MOUSEMENU 0xF090 +!define SC_KEYMENU 0xF100 +!define SC_ARRANGE 0xF110 +!define SC_RESTORE 0xF120 +!define SC_TASKLIST 0xF130 +!define SC_SCREENSAVE 0xF140 +!define SC_HOTKEY 0xF150 +!define SC_DEFAULT 0xF160 +!define SC_MONITORPOWER 0xF170 +!define SC_CONTEXTHELP 0xF180 +!define SC_SEPARATOR 0xF00F +!endif + +!define /ifndef IDC_ARROW 32512 +!define /ifndef IDC_IBEAM 32513 +!define /ifndef IDC_WAIT 32514 +!define /ifndef IDC_CROSS 32515 +!define /ifndef IDC_UPARROW 32516 +!define /ifndef IDC_SIZE 32640 +!define /ifndef IDC_ICON 32641 +!define /ifndef IDC_SIZENWSE 32642 +!define /ifndef IDC_SIZENESW 32643 +!define /ifndef IDC_SIZEWE 32644 +!define /ifndef IDC_SIZENS 32645 +!define /ifndef IDC_SIZEALL 32646 +!define /ifndef IDC_NO 32648 +!define /ifndef IDC_HAND 32649 +!define /ifndef IDC_APPSTARTING 32650 +!define /ifndef IDC_HELP 32651 + +!define /ifndef IMAGE_BITMAP 0 +!define /ifndef IMAGE_ICON 1 +!define /ifndef IMAGE_CURSOR 2 +!define /ifndef IMAGE_ENHMETAFILE 3 + +!define /ifndef LR_DEFAULTCOLOR 0x0000 +!define /ifndef LR_MONOCHROME 0x0001 +!define /ifndef LR_COLOR 0x0002 +!define /ifndef LR_COPYRETURNORG 0x0004 +!define /ifndef LR_COPYDELETEORG 0x0008 +!define /ifndef LR_LOADFROMFILE 0x0010 +!define /ifndef LR_LOADTRANSPARENT 0x0020 +!define /ifndef LR_DEFAULTSIZE 0x0040 +!define /ifndef LR_VGACOLOR 0x0080 +!define /ifndef LR_LOADMAP3DCOLORS 0x1000 +!define /ifndef LR_CREATEDIBSECTION 0x2000 +!define /ifndef LR_COPYFROMRESOURCE 0x4000 +!define /ifndef LR_SHARED 0x8000 + +!define GA_PARENT 1 +!define GA_ROOT 2 +!define GA_ROOTOWNER 3 + +!endif /* __WIN_MS_NOUSER & __WIN_NOINC_WINUSER */ +!verbose pop +!endif /* __WIN_WINUSER__INC */ \ No newline at end of file diff --git a/tools/Include/WinCore.nsh b/tools/Include/WinCore.nsh new file mode 100644 index 0000000..2a14314 --- /dev/null +++ b/tools/Include/WinCore.nsh @@ -0,0 +1,263 @@ +/* + +WinCore.nsh & Win\*.nsh - Collection of common windows defines + +!define __WIN_NOINC_xxx to exclude a windows header file +!define __WIN_MS_xxx to exclude specific things (The original #ifdef xxx checks can be found in the official Microsoft headers) + +*/ + +!ifndef __WIN_WINDOWS__INC +!define __WIN_WINDOWS__INC +!verbose push +!verbose 3 + + + +!include Win\WinDef.nsh +!include Win\WinError.nsh +!include Win\WinNT.nsh +!include Win\WinUser.nsh + +!ifndef __WIN_MS_NOWINMESSAGES +!include WinMessages.nsh +!endif + + + + + +/************************************************** +WinBase.h +**************************************************/ +!ifndef __WIN_NOINC_WINBASE +!define /ifndef INVALID_HANDLE_VALUE -1 +!define /ifndef INVALID_FILE_SIZE 0xFFFFFFFF +!define /ifndef INVALID_SET_FILE_POINTER -1 +!define /ifndef INVALID_FILE_ATTRIBUTES -1 + +!define WAIT_FAILED 0xFFFFFFFF +!define WAIT_OBJECT_0 0 ;((STATUS_WAIT_0 ) + 0 ) + +!define WAIT_ABANDONED 0x80 ;((STATUS_ABANDONED_WAIT_0 ) + 0 ) +!define WAIT_ABANDONED_0 0x80 ;((STATUS_ABANDONED_WAIT_0 ) + 0 ) + +!define DRIVE_UNKNOWN 0 +!define DRIVE_NO_ROOT_DIR 1 +!define DRIVE_REMOVABLE 2 +!define DRIVE_FIXED 3 +!define DRIVE_REMOTE 4 +!define DRIVE_CDROM 5 +!define DRIVE_RAMDISK 6 + +!define FILE_TYPE_UNKNOWN 0x0000 +!define FILE_TYPE_DISK 0x0001 +!define FILE_TYPE_CHAR 0x0002 +!define FILE_TYPE_PIPE 0x0003 +!define FILE_TYPE_REMOTE 0x8000 + +!define STD_INPUT_HANDLE -10 +!define STD_OUTPUT_HANDLE -11 +!define STD_ERROR_HANDLE -12 + +#define IGNORE 0 ; Ignore signal +!define INFINITE 0xFFFFFFFF ; Infinite timeout + +!endif /* __WIN_NOINC_WINBASE */ + + + + + +/************************************************** +WinGDI.h +**************************************************/ +!ifndef __WIN_MS_NOGDI & __WIN_NOINC_WINGDI +!define HORZRES 8 +!define VERTRES 10 +!define BITSPIXEL 12 +!define LOGPIXELSX 88 +!define LOGPIXELSY 90 +!define COLORRES 108 +!define VREFRESH 116 +!define DESKTOPVERTRES 117 +!define DESKTOPHORZRES 118 +!endif /* __WIN_MS_NOGDI & __WIN_NOINC_WINGDI */ + + + + + +/************************************************** +WinReg.h +**************************************************/ +!ifndef __WIN_NOINC_WINREG +!ifndef __WIN_NOHKEY & HKEY_CLASSES_ROOT & HKEY_CURRENT_USER & HKEY_LOCAL_MACHINE & HKEY_USERS +!define HKEY_CLASSES_ROOT 0x80000000 +!define HKEY_CURRENT_USER 0x80000001 +!define HKEY_LOCAL_MACHINE 0x80000002 +!define HKEY_USERS 0x80000003 +!define HKEY_PERFORMANCE_DATA 0x80000004 +!define HKEY_PERFORMANCE_TEXT 0x80000050 +!define HKEY_PERFORMANCE_NLSTEXT 0x80000060 +!define HKEY_CURRENT_CONFIG 0x80000005 +!define HKEY_DYN_DATA 0x80000006 +!ifndef __WIN_NOSHORTHKEY & HKCR & HKCU & HKLM +!define HKCR ${HKEY_CLASSES_ROOT} +!define HKCU ${HKEY_CURRENT_USER} +!define HKLM ${HKEY_LOCAL_MACHINE} +!endif +!endif +!endif /* __WIN_NOINC_WINREG */ + + + + + +/************************************************** +WindowsX.h +**************************************************/ +!ifndef __WIN_NOINC_WINDOWSX +!ifndef GET_X_LPARAM & GET_Y_LPARAM +!macro _Win_GET_X_LPARAM _outvar _in +IntOp ${_outvar} "${_in}" << 16 ;We can't just use LOWORD, we need to keep the sign, +IntOp ${_outvar} ${_outvar} >> 16 ;so we let NSIS sign extend for us +!macroend +!define GET_X_LPARAM "!insertmacro _Win_GET_X_LPARAM " +!macro _Win_GET_Y_LPARAM _outvar _in +IntOp ${_outvar} "${_in}" >> 16 +!macroend +!define GET_Y_LPARAM "!insertmacro _Win_GET_Y_LPARAM " +!endif +!endif /* __WIN_NOINC_WINDOWSX */ + + + + + +/************************************************** +ShlObj.h +**************************************************/ +!ifndef __WIN_NOINC_SHLOBJ +!ifndef __WIN_NOSHELLFOLDERCSIDL +!define CSIDL_DESKTOP 0x0000 +!define CSIDL_INTERNET 0x0001 ;Internet Explorer (icon on desktop) +!define CSIDL_PROGRAMS 0x0002 ;Start Menu\Programs +!define CSIDL_CONTROLS 0x0003 ;My Computer\Control Panel +!define CSIDL_PRINTERS 0x0004 ;My Computer\Printers +!define CSIDL_PERSONAL 0x0005 ;My Documents +!define CSIDL_FAVORITES 0x0006 ;\Favorites +!define CSIDL_STARTUP 0x0007 ;Start Menu\Programs\Startup +!define CSIDL_RECENT 0x0008 ;\Recent +!define CSIDL_SENDTO 0x0009 ;\SendTo +!define CSIDL_BITBUCKET 0x000a ;\Recycle Bin +!define CSIDL_STARTMENU 0x000b ;\Start Menu +!define CSIDL_MYDOCUMENTS 0x000c ;logical "My Documents" desktop icon +!define CSIDL_MYMUSIC 0x000d ;"My Music" folder +!define CSIDL_MYVIDEO 0x000e ;"My Videos" folder +!define CSIDL_DESKTOPDIRECTORY 0x0010 ;\Desktop +!define CSIDL_DRIVES 0x0011 ;My Computer +!define CSIDL_NETWORK 0x0012 ;Network Neighborhood +!define CSIDL_NETHOOD 0x0013 ;\nethood +!define CSIDL_FONTS 0x0014 ;windows\fonts +!define CSIDL_TEMPLATES 0x0015 +!define CSIDL_COMMON_STARTMENU 0x0016 ;All Users\Start Menu +!define CSIDL_COMMON_PROGRAMS 0x0017 ;All Users\Start Menu\Programs +!define CSIDL_COMMON_STARTUP 0x0018 ;All Users\Startup +!define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 ;All Users\Desktop +!define CSIDL_APPDATA 0x001a ;\Application Data +!define CSIDL_PRINTHOOD 0x001b ;\PrintHood +!define CSIDL_LOCAL_APPDATA 0x001c ;\Local Settings\Application Data (non roaming) +!define CSIDL_ALTSTARTUP 0x001d ;non localized startup +!define CSIDL_COMMON_ALTSTARTUP 0x001e ;non localized common startup +!define CSIDL_COMMON_FAVORITES 0x001f +!define CSIDL_INTERNET_CACHE 0x0020 +!define CSIDL_COOKIES 0x0021 +!define CSIDL_HISTORY 0x0022 +!define CSIDL_COMMON_APPDATA 0x0023 ;All Users\Application Data +!define CSIDL_WINDOWS 0x0024 ;GetWindowsDirectory +!define CSIDL_SYSTEM 0x0025 ;GetSystemDirectory +!define CSIDL_PROGRAM_FILES 0x0026 ;C:\Program Files +!define CSIDL_MYPICTURES 0x0027 +!define CSIDL_PROFILE 0x0028 ;USERPROFILE +!define CSIDL_SYSTEMX86 0x0029 ;x86 system directory on RISC +!define CSIDL_PROGRAM_FILESX86 0x002a ;x86 C:\Program Files on RISC +!define CSIDL_PROGRAM_FILES_COMMON 0x002b ;C:\Program Files\Common +!define CSIDL_PROGRAM_FILES_COMMONX86 0x002c ;x86 Program Files\Common on RISC +!define CSIDL_COMMON_TEMPLATES 0x002d ;All Users\Templates +!define CSIDL_COMMON_DOCUMENTS 0x002e ;All Users\Documents +!define CSIDL_COMMON_ADMINTOOLS 0x002f ;All Users\Start Menu\Programs\Administrative Tools +!define CSIDL_ADMINTOOLS 0x0030 ;\Start Menu\Programs\Administrative Tools +!define CSIDL_CONNECTIONS 0x0031 ;Network and Dial-up Connections +!define CSIDL_COMMON_MUSIC 0x0035 ;All Users\My Music +!define CSIDL_COMMON_PICTURES 0x0036 ;All Users\My Pictures +!define CSIDL_COMMON_VIDEO 0x0037 ;All Users\My Video +!define CSIDL_RESOURCES 0x0038 ;Resource Directory +!define CSIDL_RESOURCES_LOCALIZED 0x0039 ;Localized Resource Directory +!define CSIDL_COMMON_OEM_LINKS 0x003a ;Links to All Users OEM specific apps +!define CSIDL_CDBURN_AREA 0x003b ;USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning +!define CSIDL_COMPUTERSNEARME 0x003d ;Computers Near Me (computered from Workgroup membership) +!define CSIDL_FLAG_CREATE 0x8000 ;combine with CSIDL_ value to force folder creation in SHGetFolderPath() +!define CSIDL_FLAG_DONT_VERIFY 0x4000 ;combine with CSIDL_ value to return an unverified folder path +!define CSIDL_FLAG_NO_ALIAS 0x1000 ;combine with CSIDL_ value to insure non-alias versions of the pidl +!define CSIDL_FLAG_PER_USER_INIT 0x0800 ;combine with CSIDL_ value to indicate per-user init (eg. upgrade) +!define CSIDL_FLAG_MASK 0xFF00 +!endif /* __WIN_NOSHELLFOLDERCSIDL */ +!endif /* __WIN_NOINC_SHLOBJ */ + + + + + +/************************************************** +Shobjidl.h +**************************************************/ +!ifndef __WIN_NOINC_SHOBJIDL +; ASSOCIATIONLEVEL +!define AL_MACHINE 0 +!define AL_EFFECTIVE 1 +!define AL_USER 2 + +; ASSOCIATIONTYPE +!define AT_FILEEXTENSION 0 +!define AT_URLPROTOCOL 1 +!define AT_STARTMENUCLIENT 2 +!define AT_MIMETYPE 3 +!endif /* __WIN_NOINC_SHOBJIDL */ + + + + + +/************************************************** +ShlGuid.h +**************************************************/ +!ifndef __WIN_NOINC_SHLGUID +!define FOLDERID_Public {DFDF76A2-C82A-4D63-906A-5644AC457385} ; Vista+ Fixed=%SystemDrive%\Users\Public +!define FOLDERID_Games {CAC52C1A-B53D-4edc-92D7-6B2E8AC19434} ; Vista+ && < 10 (1803) Virtual +!define FOLDERID_SavedGames {4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4} ; Vista+ PerUser=%USERPROFILE%\Saved Games +!define FOLDERID_GameTasks {054FAE61-4DD8-4787-80B6-090220C4B700} ; Vista+ PerUser=%LOCALAPPDATA%\Microsoft\Windows\GameExplorer +!define FOLDERID_PublicGameTasks {DEBF2536-E1A8-4c59-B6A2-414586476AEA} ; Vista+ Common=%ALLUSERSPROFILE%\Microsoft\Windows\GameExplorer +!define FOLDERID_Contacts {56784854-C6CB-462b-8169-88E350ACB882} ; Vista+ PerUser=%USERPROFILE%\Contacts +!define FOLDERID_Downloads {374DE290-123F-4565-9164-39C4925E467B} ; Vista+ PerUser=%USERPROFILE%\Downloads +!define FOLDERID_PublicDownloads {3D644C9B-1FB8-4f30-9B45-F670235F79C0} ; Vista+ Common=%PUBLIC%\Downloads +!define FOLDERID_UserProfiles {0762D272-C50A-4BB0-A382-697DCD729B80} ; Vista+ Fixed=%SystemDrive%\Users +!define FOLDERID_UserProgramFiles {5CD7AEE2-2219-4A67-B85D-6C9CE15660CB} ; 7+ PerUser=%LOCALAPPDATA%\Programs +!define FOLDERID_UserProgramFilesCommon {BCBD3057-CA5C-4622-B42D-BC56DB0AE516} ; 7+ PerUser=%LOCALAPPDATA%\Programs\Common +!define FOLDERID_PublicLibraries {48DAF80B-E6CF-4F4E-B800-0E69D84EE384} ; 7+ Common=%ALLUSERSPROFILE%\Microsoft\Windows\Libraries +!define FOLDERID_UserPinned {9E3995AB-1F9C-4F13-B827-48B24B6C7174} ; 7+ PerUser=%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned +!define FOLDERID_ImplicitAppShortcuts {BCB5256F-79F6-4CEE-B725-DC34E402FD46} ; 7+ PerUser=%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts +!define FOLDERID_DeviceMetadataStore {5CE4A5E9-E4EB-479D-B89F-130C02886155} ; 7+ Common=%ALLUSERSPROFILE%\Microsoft\Windows\DeviceMetadataStore +!define FOLDERID_ApplicationShortcuts {A3918781-E5F2-4890-B3D9-A7E54332328C} ; 8.0+ PerUser=%LOCALAPPDATA%\Microsoft\Windows\Application Shortcuts +!define FOLDERID_RoamingTiles {00BCFC5A-ED94-4e48-96A1-3F6217F21990} ; 8.0+ PerUser=%LOCALAPPDATA%\Microsoft\Windows\RoamingTiles +!define FOLDERID_RoamedTileImages {AAA8D5A5-F1D6-4259-BAA8-78E7EF60835E} ; 8.0+ PerUser=%LOCALAPPDATA%\Microsoft\Windows\RoamedTileImages +!define FOLDERID_PublicUserTiles {0482af6c-08f1-4c34-8c90-e17ec98b1e17} ; 8.0+ Common=%PUBLIC%\AccountPictures +!define FOLDERID_AccountPictures {008ca0b1-55b4-4c56-b8a8-4de4b299d3be} ; 8.0+ PerUser=%APPDATA%\Microsoft\Windows\AccountPictures +!define FOLDERID_Screenshots {b7bede81-df94-4682-a7d8-57a52620b86f} ; 8.0+ PerUser=%USERPROFILE%\Pictures\Screenshots +!define FOLDERID_SkyDrive {A52BBA46-E9E1-435f-B3D9-28DAA648C0F6} ; 8.1+ PerUser=%USERPROFILE%\OneDrive +!define FOLDERID_AppDataProgramData {559D40A3-A036-40FA-AF61-84CB430A4D34} ; 10 (1709)+ PerUser=%LOCALAPPDATA%\ProgramData +!endif /* __WIN_NOINC_SHLGUID */ + + +!verbose pop +!endif /* __WIN_WINDOWS__INC */ \ No newline at end of file diff --git a/tools/Include/WinMessages.nsh b/tools/Include/WinMessages.nsh new file mode 100644 index 0000000..47d09dc --- /dev/null +++ b/tools/Include/WinMessages.nsh @@ -0,0 +1,890 @@ +/* +_____________________________________________________________________________ + + List of common Windows Messages +_____________________________________________________________________________ + + 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + + +Usage example: +--------------------------------------------------- +Name "Output" +OutFile "Output.exe" + +!include "WinMessages.nsh" + +Section + FindWindow $0 '#32770' '' $HWNDPARENT + GetDlgItem $1 $0 1027 + SendMessage $1 ${WM_SETTEXT} 0 'STR:MyText' +SectionEnd +--------------------------------------------------- + + +Prefix Message category +------------------------- +SW ShowWindow Commands +CCM Generic Common Control +BM Button control +CB Combo box control +EM Edit control +LB List box control +WM General window +ABM Application desktop toolbar +DBT Device +DM Default push button control +HDM Header control +LVM List view control +SB Status bar window +SBM Scroll bar control +STM Static control +TCM Tab control +PBM Progress bar +ACM Animation control +TBM Track bar +UDM Up-down control +HKM Hot key control +IPM IP address control +NCM Network address control +----------------------------------- + +NOT included messages (WM_USER + X) +----------------------------------- +CBEM Extended combo box control +CDM Common dialog box +DL Drag list box +PGM Pager control +PSM Property sheet +RB Rebar control +TB Toolbar +TTM Tooltip control +TVM Tree-view control +----------------------------------- +*/ + + +!ifndef WINMESSAGES_INCLUDED +!define WINMESSAGES_INCLUDED +!verbose push +!verbose 3 + +!define _NSIS_DEFAW '!insertmacro _NSIS_DEFAW ' +!macro _NSIS_DEFAW d +!ifdef NSIS_UNICODE +!define ${d} "${${d}W}" +!else +!define ${d} "${${d}A}" +!endif +!macroend + +!define HWND_BROADCAST 0xFFFF + +#ShowWindow Commands# +!define SW_HIDE 0 +!define SW_SHOWNORMAL 1 +!define SW_NORMAL 1 +!define SW_SHOWMINIMIZED 2 +!define SW_SHOWMAXIMIZED 3 +!define SW_MAXIMIZE 3 +!define SW_SHOWNOACTIVATE 4 +!define SW_SHOW 5 +!define SW_MINIMIZE 6 +!define SW_SHOWMINNOACTIVE 7 +!define SW_SHOWNA 8 +!define SW_RESTORE 9 +!define SW_SHOWDEFAULT 10 +!define SW_FORCEMINIMIZE 11 +!define SW_MAX 11 + +#Generic Common Control Messages# +!define CCM_FIRST 0x2000 +!define /math CCM_SETBKCOLOR ${CCM_FIRST} + 0x1 ; IE4 +!define /math CCM_SETUNICODEFORMAT ${CCM_FIRST} + 0x5 +!define /math CCM_GETUNICODEFORMAT ${CCM_FIRST} + 0x6 +!define /math CCM_SETVERSION ${CCM_FIRST} + 0x7 ; IE5 +!define /math CCM_GETVERSION ${CCM_FIRST} + 0x8 +!define /math CCM_SETWINDOWTHEME ${CCM_FIRST} + 0xB ; WinXP +!define /math CCM_DPISCALE ${CCM_FIRST} + 0xC +!define WM_USER 0x400 + +!define CCS_TOP 1 +!define CCS_BOTTOM 3 +!define CCS_NODIVIDER 64 +!define CCS_LEFT 129 +!define CCS_RIGHT 131 + +!define I_IMAGENONE -2 + +#Button Control Messages# +!define BM_CLICK 0x00F5 +!define BM_GETCHECK 0x00F0 +!define BM_GETIMAGE 0x00F6 +!define BM_GETSTATE 0x00F2 +!define BM_SETCHECK 0x00F1 +!define BM_SETIMAGE 0x00F7 +!define BM_SETSTATE 0x00F3 +!define BM_SETSTYLE 0x00F4 +!define BCM_SETSHIELD 0x160C ; WinVista + ComCtl32 v6 + +!define BST_UNCHECKED 0 +!define BST_CHECKED 1 +!define BST_INDETERMINATE 2 +!define BST_PUSHED 4 +!define BST_FOCUS 8 + +#Combo Box Messages# +!define CB_ADDSTRING 0x0143 +!define CB_DELETESTRING 0x0144 +!define CB_DIR 0x0145 +!define CB_FINDSTRING 0x014C +!define CB_FINDSTRINGEXACT 0x0158 +!define CB_GETCOUNT 0x0146 +!define CB_GETCURSEL 0x0147 +!define CB_GETDROPPEDCONTROLRECT 0x0152 +!define CB_GETDROPPEDSTATE 0x0157 +!define CB_GETDROPPEDWIDTH 0x015f +!define CB_GETEDITSEL 0x0140 +!define CB_GETEXTENDEDUI 0x0156 +!define CB_GETHORIZONTALEXTENT 0x015d +!define CB_GETITEMDATA 0x0150 +!define CB_GETITEMHEIGHT 0x0154 +!define CB_GETLBTEXT 0x0148 +!define CB_GETLBTEXTLEN 0x0149 +!define CB_GETLOCALE 0x015A +!define CB_GETTOPINDEX 0x015b +!define CB_INITSTORAGE 0x0161 +!define CB_INSERTSTRING 0x014A +!define CB_LIMITTEXT 0x0141 +!define CB_MSGMAX 0x015B # 0x0162 0x0163 +!define CB_MULTIPLEADDSTRING 0x0163 +!define CB_RESETCONTENT 0x014B +!define CB_SELECTSTRING 0x014D +!define CB_SETCURSEL 0x014E +!define CB_SETDROPPEDWIDTH 0x0160 +!define CB_SETEDITSEL 0x0142 +!define CB_SETEXTENDEDUI 0x0155 +!define CB_SETHORIZONTALEXTENT 0x015e +!define CB_SETITEMDATA 0x0151 +!define CB_SETITEMHEIGHT 0x0153 +!define CB_SETLOCALE 0x0159 +!define CB_SETTOPINDEX 0x015c +!define CB_SHOWDROPDOWN 0x014F +!define CBM_FIRST 0x1700 ; Vista+ +!define /math CB_SETMINVISIBLE ${CBM_FIRST} + 1 +!define /math CB_GETMINVISIBLE ${CBM_FIRST} + 2 +!define /math CB_SETCUEBANNER ${CBM_FIRST} + 3 +!define /math CB_GETCUEBANNER ${CBM_FIRST} + 4 + +!define CB_ERR -1 + +#Edit Control Messages# +!define EM_CANUNDO 0x00C6 +!define EM_CHARFROMPOS 0x00D7 +!define EM_EMPTYUNDOBUFFER 0x00CD +!define EM_FMTLINES 0x00C8 +!define EM_GETFIRSTVISIBLELINE 0x00CE +!define EM_GETHANDLE 0x00BD +!define EM_GETIMESTATUS 0x00D9 +!define EM_GETLIMITTEXT 0x00D5 +!define EM_GETLINE 0x00C4 +!define EM_GETLINECOUNT 0x00BA +!define EM_GETMARGINS 0x00D4 +!define EM_GETMODIFY 0x00B8 +!define EM_GETPASSWORDCHAR 0x00D2 +!define EM_GETRECT 0x00B2 +!define EM_GETSEL 0x00B0 +!define EM_GETTHUMB 0x00BE +!define EM_GETWORDBREAKPROC 0x00D1 +!define EM_LIMITTEXT 0x00C5 +!define EM_LINEFROMCHAR 0x00C9 +!define EM_LINEINDEX 0x00BB +!define EM_LINELENGTH 0x00C1 +!define EM_LINESCROLL 0x00B6 +!define EM_POSFROMCHAR 0x00D6 +!define EM_REPLACESEL 0x00C2 +!define EM_SCROLL 0x00B5 +!define EM_SCROLLCARET 0x00B7 +!define EM_SETHANDLE 0x00BC +!define EM_SETIMESTATUS 0x00D8 +!define EM_SETLIMITTEXT 0x00C5 # Same as EM_LIMITTEXT +!define EM_SETMARGINS 0x00D3 +!define EM_SETMODIFY 0x00B9 +!define EM_SETPASSWORDCHAR 0x00CC +!define EM_SETREADONLY 0x00CF +!define EM_SETRECT 0x00B3 +!define EM_SETRECTNP 0x00B4 +!define EM_SETSEL 0x00B1 +!define EM_SETTABSTOPS 0x00CB +!define EM_SETWORDBREAKPROC 0x00D0 +!define EM_UNDO 0x00C7 +!define ECM_FIRST 0x1500 ; CC6+ +!define /math EM_SETCUEBANNER ${ECM_FIRST} + 1 + +#RichEdit Messages# +!define /math EM_EXGETSEL ${WM_USER} + 52 +!define /math EM_EXLIMITTEXT ${WM_USER} + 53 +!define /math EM_EXLINEFROMCHAR ${WM_USER} + 54 +!define /math EM_GETEVENTMASK ${WM_USER} + 59 +!define /math EM_GETOLEINTERFACE ${WM_USER} + 60 +!define /math EM_HIDESELECTION ${WM_USER} + 63 +!define /math EM_SETBKGNDCOLOR ${WM_USER} + 67 +!define /math EM_SETEVENTMASK ${WM_USER} + 69 +!define /math EM_STREAMIN ${WM_USER} + 73 +!define /math EM_STREAMOUT ${WM_USER} + 74 +!define /math EM_GETTEXTRANGE ${WM_USER} + 75 +!define /math EM_SETOPTIONS ${WM_USER} + 77 +!define /math EM_GETOPTIONS ${WM_USER} + 78 +!define /math EM_SETUNDOLIMIT ${WM_USER} + 82 ; v2+ +!define /math EM_AUTOURLDETECT ${WM_USER} + 91 +!define /Math EM_SETTEXTEX ${WM_USER} + 97 ; v3+ +!define /math EM_SETEDITSTYLE ${WM_USER} + 204 +!define /math EM_SETFONTSIZE ${WM_USER} + 223 + +!define EN_MSGFILTER 0x0700 +!define EN_SELCHANGE 0x0702 +!define EN_LINK 0x070b + +!define ENM_NONE 0x00000000 +!define ENM_CHANGE 0x00000001 +!define ENM_UPDATE 0x00000002 +!define ENM_SCROLL 0x00000004 +!define ENM_SCROLLEVENTS 0x00000008 +!define ENM_KEYEVENTS 0x00010000 +!define ENM_MOUSEEVENTS 0x00020000 +!define ENM_SELCHANGE 0x00080000 +!define ENM_LINK 0x04000000 ; v2+ + +#Listbox Messages# +!define LB_ADDFILE 0x0196 +!define LB_ADDSTRING 0x0180 +!define LB_DELETESTRING 0x0182 +!define LB_DIR 0x018D +!define LB_FINDSTRING 0x018F +!define LB_FINDSTRINGEXACT 0x01A2 +!define LB_GETANCHORINDEX 0x019D +!define LB_GETCARETINDEX 0x019F +!define LB_GETCOUNT 0x018B +!define LB_GETCURSEL 0x0188 +!define LB_GETHORIZONTALEXTENT 0x0193 +!define LB_GETITEMDATA 0x0199 +!define LB_GETITEMHEIGHT 0x01A1 +!define LB_GETITEMRECT 0x0198 +!define LB_GETLOCALE 0x01A6 +!define LB_GETSEL 0x0187 +!define LB_GETSELCOUNT 0x0190 +!define LB_GETSELITEMS 0x0191 +!define LB_GETTEXT 0x0189 +!define LB_GETTEXTLEN 0x018A +!define LB_GETTOPINDEX 0x018E +!define LB_INITSTORAGE 0x01A8 +!define LB_INSERTSTRING 0x0181 +!define LB_ITEMFROMPOINT 0x01A9 +!define LB_MSGMAX 0x01A8 # 0x01B0 0x01B1 +!define LB_MULTIPLEADDSTRING 0x01B1 +!define LB_RESETCONTENT 0x0184 +!define LB_SELECTSTRING 0x018C +!define LB_SELITEMRANGE 0x019B +!define LB_SELITEMRANGEEX 0x0183 +!define LB_SETANCHORINDEX 0x019C +!define LB_SETCARETINDEX 0x019E +!define LB_SETCOLUMNWIDTH 0x0195 +!define LB_SETCOUNT 0x01A7 +!define LB_SETCURSEL 0x0186 +!define LB_SETHORIZONTALEXTENT 0x0194 +!define LB_SETITEMDATA 0x019A +!define LB_SETITEMHEIGHT 0x01A0 +!define LB_SETLOCALE 0x01A5 +!define LB_SETSEL 0x0185 +!define LB_SETTABSTOPS 0x0192 +!define LB_SETTOPINDEX 0x0197 + +!define LB_ERR -1 + +#Window Messages# +!define WM_ACTIVATE 0x0006 +!define WM_ACTIVATEAPP 0x001C +!define WM_AFXFIRST 0x0360 +!define WM_AFXLAST 0x037F +!define WM_APP 0x8000 +!define WM_APPCOMMAND 0x0319 +!define WM_ASKCBFORMATNAME 0x030C +!define WM_CANCELJOURNAL 0x004B +!define WM_CANCELMODE 0x001F +!define WM_CAPTURECHANGED 0x0215 +!define WM_CHANGECBCHAIN 0x030D +!define WM_CHANGEUISTATE 0x0127 +!define WM_CHAR 0x0102 +!define WM_CHARTOITEM 0x002F +!define WM_CHILDACTIVATE 0x0022 +!define WM_CLEAR 0x0303 +!define WM_CLOSE 0x0010 +!define WM_COMMAND 0x0111 +!define WM_COMMNOTIFY 0x0044 # no longer supported +!define WM_COMPACTING 0x0041 +!define WM_COMPAREITEM 0x0039 +!define WM_CONTEXTMENU 0x007B +!define WM_CONVERTREQUESTEX 0x108 +!define WM_COPY 0x0301 +!define WM_COPYDATA 0x004A +!define WM_CREATE 0x0001 +!define WM_CTLCOLOR 0x0019 +!define WM_CTLCOLORBTN 0x0135 +!define WM_CTLCOLORDLG 0x0136 +!define WM_CTLCOLOREDIT 0x0133 +!define WM_CTLCOLORLISTBOX 0x0134 +!define WM_CTLCOLORMSGBOX 0x0132 +!define WM_CTLCOLORSCROLLBAR 0x0137 +!define WM_CTLCOLORSTATIC 0x0138 +!define WM_CUT 0x0300 +!define WM_DDE_FIRST 0x3E0 +!define WM_DEADCHAR 0x0103 +!define WM_DELETEITEM 0x002D +!define WM_DESTROY 0x0002 +!define WM_DESTROYCLIPBOARD 0x0307 +!define WM_DEVICECHANGE 0x0219 +!define WM_DEVMODECHANGE 0x001B +!define WM_DISPLAYCHANGE 0x007E +!define WM_DRAWCLIPBOARD 0x0308 +!define WM_DRAWITEM 0x002B +!define WM_DROPFILES 0x0233 +!define WM_ENABLE 0x000A +!define WM_ENDSESSION 0x0016 +!define WM_ENTERIDLE 0x0121 +!define WM_ENTERMENULOOP 0x0211 +!define WM_ENTERSIZEMOVE 0x0231 +!define WM_ERASEBKGND 0x0014 +!define WM_EXITMENULOOP 0x0212 +!define WM_EXITSIZEMOVE 0x0232 +!define WM_FONTCHANGE 0x001D +!define WM_GETDLGCODE 0x0087 +!define WM_GETFONT 0x0031 +!define WM_GETHOTKEY 0x0033 +!define WM_GETICON 0x007F +!define WM_GETMINMAXINFO 0x0024 +!define WM_GETOBJECT 0x003D +!define WM_GETTEXT 0x000D +!define WM_GETTEXTLENGTH 0x000E +!define WM_HANDHELDFIRST 0x0358 +!define WM_HANDHELDLAST 0x035F +!define WM_HELP 0x0053 +!define WM_HOTKEY 0x0312 +!define WM_HSCROLL 0x0114 +!define WM_HSCROLLCLIPBOARD 0x030E +!define WM_ICONERASEBKGND 0x0027 +!define WM_IME_CHAR 0x0286 +!define WM_IME_COMPOSITION 0x010F +!define WM_IME_COMPOSITIONFULL 0x0284 +!define WM_IME_CONTROL 0x0283 +!define WM_IME_ENDCOMPOSITION 0x010E +!define WM_IME_KEYDOWN 0x0290 +!define WM_IME_KEYLAST 0x010F +!define WM_IME_KEYUP 0x0291 +!define WM_IME_NOTIFY 0x0282 +!define WM_IME_REQUEST 0x0288 +!define WM_IME_SELECT 0x0285 +!define WM_IME_SETCONTEXT 0x0281 +!define WM_IME_STARTCOMPOSITION 0x010D +!define WM_INITDIALOG 0x0110 +!define WM_INITMENU 0x0116 +!define WM_INITMENUPOPUP 0x0117 +!define WM_INPUT 0x00FF +!define WM_INPUTLANGCHANGE 0x0051 +!define WM_INPUTLANGCHANGEREQUEST 0x0050 +!define WM_KEYDOWN 0x0100 +!define WM_KEYFIRST 0x0100 +!define WM_KEYLAST 0x0108 +!define WM_KEYUP 0x0101 +!define WM_KILLFOCUS 0x0008 +!define WM_LBUTTONDBLCLK 0x0203 +!define WM_LBUTTONDOWN 0x0201 +!define WM_LBUTTONUP 0x0202 +!define WM_MBUTTONDBLCLK 0x0209 +!define WM_MBUTTONDOWN 0x0207 +!define WM_MBUTTONUP 0x0208 +!define WM_MDIACTIVATE 0x0222 +!define WM_MDICASCADE 0x0227 +!define WM_MDICREATE 0x0220 +!define WM_MDIDESTROY 0x0221 +!define WM_MDIGETACTIVE 0x0229 +!define WM_MDIICONARRANGE 0x0228 +!define WM_MDIMAXIMIZE 0x0225 +!define WM_MDINEXT 0x0224 +!define WM_MDIREFRESHMENU 0x0234 +!define WM_MDIRESTORE 0x0223 +!define WM_MDISETMENU 0x0230 +!define WM_MDITILE 0x0226 +!define WM_MEASUREITEM 0x002C +!define WM_MENUCHAR 0x0120 +!define WM_MENUCOMMAND 0x0126 +!define WM_MENUDRAG 0x0123 +!define WM_MENUGETOBJECT 0x0124 +!define WM_MENURBUTTONUP 0x0122 +!define WM_MENUSELECT 0x011F +!define WM_MOUSEACTIVATE 0x0021 +!define WM_MOUSEFIRST 0x0200 +!define WM_MOUSEHOVER 0x02A1 +!define WM_MOUSELAST 0x0209 # 0x020A 0x020D +!define WM_MOUSELEAVE 0x02A3 +!define WM_MOUSEMOVE 0x0200 +!define WM_MOUSEWHEEL 0x020A +!define WM_MOVE 0x0003 +!define WM_MOVING 0x0216 +!define WM_NCACTIVATE 0x0086 +!define WM_NCCALCSIZE 0x0083 +!define WM_NCCREATE 0x0081 +!define WM_NCDESTROY 0x0082 +!define WM_NCHITTEST 0x0084 +!define WM_NCLBUTTONDBLCLK 0x00A3 +!define WM_NCLBUTTONDOWN 0x00A1 +!define WM_NCLBUTTONUP 0x00A2 +!define WM_NCMBUTTONDBLCLK 0x00A9 +!define WM_NCMBUTTONDOWN 0x00A7 +!define WM_NCMBUTTONUP 0x00A8 +!define WM_NCMOUSEHOVER 0x02A0 +!define WM_NCMOUSELEAVE 0x02A2 +!define WM_NCMOUSEMOVE 0x00A0 +!define WM_NCPAINT 0x0085 +!define WM_NCRBUTTONDBLCLK 0x00A6 +!define WM_NCRBUTTONDOWN 0x00A4 +!define WM_NCRBUTTONUP 0x00A5 +!define WM_NCXBUTTONDBLCLK 0x00AD +!define WM_NCXBUTTONDOWN 0x00AB +!define WM_NCXBUTTONUP 0x00AC +!define WM_NEXTDLGCTL 0x0028 +!define WM_NEXTMENU 0x0213 +!define WM_NOTIFY 0x004E +!define WM_NOTIFYFORMAT 0x0055 +!define WM_NULL 0x0000 +!define WM_PAINT 0x000F +!define WM_PAINTCLIPBOARD 0x0309 +!define WM_PAINTICON 0x0026 +!define WM_PALETTECHANGED 0x0311 +!define WM_PALETTEISCHANGING 0x0310 +!define WM_PARENTNOTIFY 0x0210 +!define WM_PASTE 0x0302 +!define WM_PENWINFIRST 0x0380 +!define WM_PENWINLAST 0x038F +!define WM_POWER 0x0048 +!define WM_POWERBROADCAST 0x0218 +!define WM_PRINT 0x0317 +!define WM_PRINTCLIENT 0x0318 +!define WM_QUERYDRAGICON 0x0037 +!define WM_QUERYENDSESSION 0x0011 +!define WM_QUERYNEWPALETTE 0x030F +!define WM_QUERYOPEN 0x0013 +!define WM_QUERYUISTATE 0x0129 +!define WM_QUEUESYNC 0x0023 +!define WM_QUIT 0x0012 +!define WM_RBUTTONDBLCLK 0x0206 +!define WM_RBUTTONDOWN 0x0204 +!define WM_RBUTTONUP 0x0205 +!define WM_RASDIALEVENT 0xCCCD +!define WM_RENDERALLFORMATS 0x0306 +!define WM_RENDERFORMAT 0x0305 +!define WM_SETCURSOR 0x0020 +!define WM_SETFOCUS 0x0007 +!define WM_SETFONT 0x0030 +!define WM_SETHOTKEY 0x0032 +!define WM_SETICON 0x0080 +!define WM_SETREDRAW 0x000B +!define WM_SETTEXT 0x000C +!define WM_SETTINGCHANGE 0x001A # Same as WM_WININICHANGE +!define WM_SHOWWINDOW 0x0018 +!define WM_SIZE 0x0005 +!define WM_SIZECLIPBOARD 0x030B +!define WM_SIZING 0x0214 +!define WM_SPOOLERSTATUS 0x002A +!define WM_STYLECHANGED 0x007D +!define WM_STYLECHANGING 0x007C +!define WM_SYNCPAINT 0x0088 +!define WM_SYSCHAR 0x0106 +!define WM_SYSCOLORCHANGE 0x0015 +!define WM_SYSCOMMAND 0x0112 +!define WM_SYSDEADCHAR 0x0107 +!define WM_SYSKEYDOWN 0x0104 +!define WM_SYSKEYUP 0x0105 +!define WM_TABLET_FIRST 0x02C0 +!define WM_TABLET_LAST 0x02DF +!define WM_THEMECHANGED 0x031A +!define WM_TCARD 0x0052 +!define WM_TIMECHANGE 0x001E +!define WM_TIMER 0x0113 +!define WM_UNDO 0x0304 +!define WM_UNICHAR 0x0109 +!define WM_UNINITMENUPOPUP 0x0125 +!define WM_UPDATEUISTATE 0x0128 +!define WM_USERCHANGED 0x0054 +!define WM_VKEYTOITEM 0x002E +!define WM_VSCROLL 0x0115 +!define WM_VSCROLLCLIPBOARD 0x030A +!define WM_WINDOWPOSCHANGED 0x0047 +!define WM_WINDOWPOSCHANGING 0x0046 +!define WM_WININICHANGE 0x001A +!define WM_WTSSESSION_CHANGE 0x02B1 +!define WM_XBUTTONDBLCLK 0x020D +!define WM_XBUTTONDOWN 0x020B +!define WM_XBUTTONUP 0x020C + + +#Application desktop toolbar# +!define ABM_ACTIVATE 0x00000006 # lParam == TRUE/FALSE means activate/deactivate +!define ABM_GETAUTOHIDEBAR 0x00000007 +!define ABM_GETSTATE 0x00000004 +!define ABM_GETTASKBARPOS 0x00000005 +!define ABM_NEW 0x00000000 +!define ABM_QUERYPOS 0x00000002 +!define ABM_REMOVE 0x00000001 +!define ABM_SETAUTOHIDEBAR 0x00000008 # This can fail, you MUST check the result +!define ABM_SETPOS 0x00000003 +!define ABM_WINDOWPOSCHANGED 0x0000009 + +#Device# +!define DBT_APPYBEGIN 0x0000 +!define DBT_APPYEND 0x0001 +!define DBT_CONFIGCHANGECANCELED 0x0019 +!define DBT_CONFIGCHANGED 0x0018 +!define DBT_CONFIGMGAPI32 0x0022 +!define DBT_CONFIGMGPRIVATE 0x7FFF +!define DBT_CUSTOMEVENT 0x8006 # User-defined event +!define DBT_DEVICEARRIVAL 0x8000 # System detected a new device +!define DBT_DEVICEQUERYREMOVE 0x8001 # Wants to remove, may fail +!define DBT_DEVICEQUERYREMOVEFAILED 0x8002 # Removal aborted +!define DBT_DEVICEREMOVECOMPLETE 0x8004 # Device is gone +!define DBT_DEVICEREMOVEPENDING 0x8003 # About to remove, still avail. +!define DBT_DEVICETYPESPECIFIC 0x8005 # Type specific event +!define DBT_DEVNODES_CHANGED 0x0007 +!define DBT_DEVTYP_DEVICEINTERFACE 0x00000005 # Device interface class +!define DBT_DEVTYP_DEVNODE 0x00000001 # Devnode number +!define DBT_DEVTYP_HANDLE 0x00000006 # File system handle +!define DBT_DEVTYP_NET 0x00000004 # Network resource +!define DBT_DEVTYP_OEM 0x00000000 # Oem-defined device type +!define DBT_DEVTYP_PORT 0x00000003 # Serial, parallel +!define DBT_DEVTYP_VOLUME 0x00000002 # Logical volume +!define DBT_LOW_DISK_SPACE 0x0048 +!define DBT_MONITORCHANGE 0x001B +!define DBT_NO_DISK_SPACE 0x0047 +!define DBT_QUERYCHANGECONFIG 0x0017 +!define DBT_SHELLLOGGEDON 0x0020 +!define DBT_USERDEFINED 0xFFFF +!define DBT_VOLLOCKLOCKFAILED 0x8043 +!define DBT_VOLLOCKLOCKRELEASED 0x8045 +!define DBT_VOLLOCKLOCKTAKEN 0x8042 +!define DBT_VOLLOCKQUERYLOCK 0x8041 +!define DBT_VOLLOCKQUERYUNLOCK 0x8044 +!define DBT_VOLLOCKUNLOCKFAILED 0x8046 +!define DBT_VPOWERDAPI 0x8100 # VPOWERD API for Win95 +!define DBT_VXDINITCOMPLETE 0x0023 + +#Default push button control# +!define DM_BITSPERPEL 0x00040000 +!define DM_COLLATE 0x00008000 +!define DM_COLOR 0x00000800 +!define DM_COPIES 0x00000100 +!define DM_DEFAULTSOURCE 0x00000200 +!define DM_DISPLAYFLAGS 0x00200000 +!define DM_DISPLAYFREQUENCY 0x00400000 +!define DM_DITHERTYPE 0x04000000 +!define DM_DUPLEX 0x00001000 +!define DM_FORMNAME 0x00010000 +!define DM_GRAYSCALE 0x00000001 # This flag is no longer valid +!define DM_ICMINTENT 0x01000000 +!define DM_ICMMETHOD 0x00800000 +!define DM_INTERLACED 0x00000002 # This flag is no longer valid +!define DM_LOGPIXELS 0x00020000 +!define DM_MEDIATYPE 0x02000000 +!define DM_NUP 0x00000040 +!define DM_ORIENTATION 0x00000001 +!define DM_PANNINGHEIGHT 0x10000000 +!define DM_PANNINGWIDTH 0x08000000 +!define DM_PAPERLENGTH 0x00000004 +!define DM_PAPERSIZE 0x00000002 +!define DM_PAPERWIDTH 0x00000008 +!define DM_PELSHEIGHT 0x00100000 +!define DM_PELSWIDTH 0x00080000 +!define DM_POSITION 0x00000020 +!define DM_PRINTQUALITY 0x00000400 +!define DM_SCALE 0x00000010 +!define DM_SPECVERSION 0x0320 # 0x0400 0x0401 +!define DM_TTOPTION 0x00004000 +!define DM_YRESOLUTION 0x00002000 + +#Header control# +!define HDM_FIRST 0x1200 + +#List view control# +!define LVS_SINGLESEL 4 +!define LVS_SHOWSELALWAYS 8 +!define LVS_SORTASCENDING 0x10 +!define LVS_SORTDESCENDING 0x20 +!define LVS_SHAREIMAGELISTS 0x40 +!define LVS_EDITLABELS 0x200 +!define LVS_NOSCROLL 0x2000 +!define LVS_NOCOLUMNHEADER 0x4000 +!define LVS_NOSORTHEADER 0x8000 +!define LVS_ICON 0 +!define LVS_REPORT 1 +!define LVS_SMALLICON 2 +!define LVS_LIST 3 +!define LVS_EX_CHECKBOXES 4 +!define LVS_EX_FULLROWSELECT 0x20 +!define LVS_EX_INFOTIP 0x400 +!define LVS_EX_LABELTIP 0x4000 +!define LVS_EX_DOUBLEBUFFER 0x10000 +!define LVIF_TEXT 1 +!define LVIF_IMAGE 2 +!define LVIF_PARAM 4 +!define LVIF_STATE 8 +!define LVIS_STATEIMAGEMASK 0xF000 +!define LVCF_FMT 1 +!define LVCF_WIDTH 2 +!define LVCF_TEXT 4 +!define LVCF_SUBITEM 8 +!define SYSSTRUCT_LVITEM_V1 (i,i,i,i,&i${NSIS_PTR_SIZE},t,i,i,p) +!define SYSSTRUCT_LVITEM_V2 (i,i,i,i,&i${NSIS_PTR_SIZE},t,i,i,p,i) ; IE3 +!define SYSSTRUCT_LVITEM_V3 (i,i,i,i,&i${NSIS_PTR_SIZE},t,i,i,p,i,i,i,i) ; WinXP + ComCtl32 v6 +!define SYSSTRUCT_LVITEM_V4 (i,i,i,i,&i${NSIS_PTR_SIZE},t,i,i,p,i,i,i,i,i,i) ; WinVista + ComCtl32 v6 +!define LVSCW_AUTOSIZE -1 +!define LVSCW_AUTOSIZE_USEHEADER -2 +!define LVM_FIRST 0x00001000 +!define /math LVM_GETIMAGELIST ${LVM_FIRST} + 2 +!define /math LVM_SETIMAGELIST ${LVM_FIRST} + 3 +!define /math LVM_GETITEMCOUNT ${LVM_FIRST} + 4 +!define /math LVM_GETITEMA ${LVM_FIRST} + 5 +!define /math LVM_SETITEMA ${LVM_FIRST} + 6 +!define /math LVM_INSERTITEMA ${LVM_FIRST} + 7 +!define /math LVM_DELETEITEM ${LVM_FIRST} + 8 +!define /math LVM_DELETEALLITEMS ${LVM_FIRST} + 9 +!define /math LVM_INSERTCOLUMNA ${LVM_FIRST} + 27 +!define /math LVM_SETCOLUMNWIDTH ${LVM_FIRST} + 30 +!define /math LVM_SETITEMSTATE ${LVM_FIRST} + 43 +!define /math LVM_GETITEMSTATE ${LVM_FIRST} + 44 +!define /math LVM_GETITEMTEXTA ${LVM_FIRST} + 45 +!define /math LVM_SETITEMTEXTA ${LVM_FIRST} + 46 +!define /math LVM_SETITEMCOUNT ${LVM_FIRST} + 47 +!define /math LVM_SORTITEMS ${LVM_FIRST} + 48 +!define /math LVM_SETEXTENDEDLISTVIEWSTYLE ${LVM_FIRST} + 54 +!define /math LVM_GETEXTENDEDLISTVIEWSTYLE ${LVM_FIRST} + 55 +!define /math LVM_GETITEMW ${LVM_FIRST} + 75 +!define /math LVM_SETITEMW ${LVM_FIRST} + 76 +!define /math LVM_INSERTITEMW ${LVM_FIRST} + 77 +!define /math LVM_INSERTCOLUMNW ${LVM_FIRST} + 97 +!define /math LVM_GETITEMTEXTW ${LVM_FIRST} + 115 +!define /math LVM_SETITEMTEXTW ${LVM_FIRST} + 116 +!define /math LVM_SETSELECTEDCOLUMN ${LVM_FIRST} + 140 +${_NSIS_DEFAW} LVM_GETITEM +${_NSIS_DEFAW} LVM_SETITEM +${_NSIS_DEFAW} LVM_INSERTITEM +${_NSIS_DEFAW} LVM_INSERTCOLUMN +${_NSIS_DEFAW} LVM_GETITEMTEXT +${_NSIS_DEFAW} LVM_SETITEMTEXT + +#Status bar window# +!define SB_SIMPLEID 0x00ff + +#Scroll bar control# +!define SBM_ENABLE_ARROWS 0x00E4 # Not in win3.1 +!define SBM_GETPOS 0x00E1 # Not in win3.1 +!define SBM_GETRANGE 0x00E3 # Not in win3.1 +!define SBM_GETSCROLLINFO 0x00EA +!define SBM_SETPOS 0x00E0 # Not in win3.1 +!define SBM_SETRANGE 0x00E2 # Not in win3.1 +!define SBM_SETRANGEREDRAW 0x00E6 # Not in win3.1 +!define SBM_SETSCROLLINFO 0x00E9 + +#Static control# +!define STM_SETICON 0x0170 +!define STM_GETICON 0x0171 +!define STM_SETIMAGE 0x0172 +!define STM_GETIMAGE 0x0173 +!define STM_MSGMAX 0x0174 + +#Tab control# +!define TCS_SCROLLOPPOSITE 0x0001 +!define TCIF_TEXT 1 +!define TCIF_PARAM 8 +!define SYSSTRUCT_TCITEM (i,i,&i${NSIS_PTR_SIZE},t,i,i,p) +!define TCM_FIRST 0x1300 +!define /math TCM_INSERTITEMA ${TCM_FIRST} + 7 +!define /math TCM_GETCURSEL ${TCM_FIRST} + 11 +!define /math TCM_ADJUSTRECT ${TCM_FIRST} + 40 +!define /math TCM_INSERTITEMW ${TCM_FIRST} + 62 +!define TCN_SELCHANGE -551 +!define TCN_SELCHANGING -552 +${_NSIS_DEFAW} TCM_INSERTITEM + +#Progress bar control# +!define PBM_SETRANGE 0x401 +!define PBM_SETPOS 0x402 +!define PBM_DELTAPOS 0x403 +!define PBM_SETSTEP 0x404 +!define PBM_STEPIT 0x405 +!define PBM_SETRANGE32 0x406 ; IE3 + ComCtl32 v4.70 +!define PBM_GETRANGE 0x407 +!define PBM_GETPOS 0x408 +!define PBM_SETBARCOLOR 0x409 ; IE4 + ComCtl32 v4.71 +!define PBM_SETBKCOLOR ${CCM_SETBKCOLOR} +!define PBM_SETMARQUEE 0x40A ; WinXP + ComCtl32 v6 +!define PBM_GETSTEP 0x40D ; WinVista +!define PBM_GETBKCOLOR 0x40E +!define PBM_GETBARCOLOR 0x40F +!define PBM_SETSTATE 0x410 +!define PBM_GETSTATE 0x411 + +!define PBST_NORMAL 1 +!define PBST_ERROR 2 +!define PBST_PAUSED 3 + +#Animation control# +!define /math ACM_OPENA ${WM_USER} + 100 +!define /math ACM_PLAY ${WM_USER} + 101 +!define /math ACM_STOP ${WM_USER} + 102 +!define /math ACM_OPENW ${WM_USER} + 103 +${_NSIS_DEFAW} ACM_OPEN + +#TrackBar control# +!define /math TBM_GETPOS ${WM_USER} + 0 +!define /math TBM_GETRANGEMIN ${WM_USER} + 1 +!define /math TBM_GETRANGEMAX ${WM_USER} + 2 +!define /math TBM_GETTIC ${WM_USER} + 3 +!define /math TBM_SETTIC ${WM_USER} + 4 +!define /math TBM_SETPOS ${WM_USER} + 5 +!define /math TBM_SETRANGE ${WM_USER} + 6 +!define /math TBM_SETRANGEMIN ${WM_USER} + 7 +!define /math TBM_SETRANGEMAX ${WM_USER} + 8 +!define /math TBM_CLEARTICS ${WM_USER} + 9 +!define /math TBM_SETSEL ${WM_USER} + 10 +!define /math TBM_SETSELSTART ${WM_USER} + 11 +!define /math TBM_SETSELEND ${WM_USER} + 12 +!define /math TBM_GETPTICS ${WM_USER} + 14 +!define /math TBM_GETTICPOS ${WM_USER} + 15 +!define /math TBM_GETNUMTICS ${WM_USER} + 16 +!define /math TBM_GETSELSTART ${WM_USER} + 17 +!define /math TBM_GETSELEND ${WM_USER} + 18 +!define /math TBM_CLEARSEL ${WM_USER} + 19 +!define /math TBM_SETTICFREQ ${WM_USER} + 20 ; TBS_AUTOTICKS required +!define /math TBM_SETPAGESIZE ${WM_USER} + 21 +!define /math TBM_GETPAGESIZE ${WM_USER} + 22 +!define /math TBM_SETLINESIZE ${WM_USER} + 23 +!define /math TBM_GETLINESIZE ${WM_USER} + 24 +!define /math TBM_GETTHUMBRECT ${WM_USER} + 25 +!define /math TBM_GETCHANNELRECT ${WM_USER} + 26 +!define /math TBM_SETTHUMBLENGTH ${WM_USER} + 27 +!define /math TBM_GETTHUMBLENGTH ${WM_USER} + 28 +!define /math TBM_SETTOOLTIPS ${WM_USER} + 29 ; IE3 +!define /math TBM_GETTOOLTIPS ${WM_USER} + 30 ; IE3 +!define /math TBM_SETTIPSIDE ${WM_USER} + 31 ; IE3 +!define /math TBM_SETBUDDY ${WM_USER} + 32 ; IE3 +!define /math TBM_GETBUDDY ${WM_USER} + 33 ; IE3 +!define TBM_SETUNICODEFORMAT ${CCM_SETUNICODEFORMAT} ; IE4 +!define TBM_GETUNICODEFORMAT ${CCM_GETUNICODEFORMAT} ; IE4 +!define /math TBM_SETPOSNOTIFY ${WM_USER} + 34 ; 7? + +#UpDown controls# +!define /math UDM_SETRANGE ${WM_USER} + 101 +!define /math UDM_GETRANGE ${WM_USER} + 102 +!define /math UDM_SETPOS ${WM_USER} + 103 +!define /math UDM_GETPOS ${WM_USER} + 104 +!define /math UDM_SETBUDDY ${WM_USER} + 105 +!define /math UDM_GETBUDDY ${WM_USER} + 106 +!define /math UDM_SETACCEL ${WM_USER} + 107 +!define /math UDM_GETACCEL ${WM_USER} + 108 +!define /math UDM_SETBASE ${WM_USER} + 109 +!define /math UDM_GETBASE ${WM_USER} + 110 +!define /math UDM_SETRANGE32 ${WM_USER} + 111 ; IE4 +!define /math UDM_GETRANGE32 ${WM_USER} + 112 ; IE4 +!define UDM_SETUNICODEFORMAT ${CCM_SETUNICODEFORMAT} ; IE4 +!define UDM_GETUNICODEFORMAT ${CCM_GETUNICODEFORMAT} ; IE4 +!define /math UDM_SETPOS32 ${WM_USER} + 113 ; IE5 +!define /math UDM_GETPOS32 ${WM_USER} + 114 ; IE5 + +#HotKey control# +!define /math HKM_SETHOTKEY ${WM_USER} + 1 +!define /math HKM_GETHOTKEY ${WM_USER} + 2 +!define /math HKM_SETRULES ${WM_USER} + 3 +!define /IfNDef HOTKEYF_SHIFT 0x01 +!define /IfNDef HOTKEYF_CONTROL 0x02 +!define /IfNDef HOTKEYF_ALT 0x04 +!define /IfNDef HOTKEYF_EXT 0x08 +!define HKCOMB_NONE 0x01 +!define HKCOMB_S 0x02 +!define HKCOMB_C 0x04 +!define HKCOMB_A 0x08 +!define HKCOMB_SC 0x10 +!define HKCOMB_SA 0x20 +!define HKCOMB_CA 0x40 +!define HKCOMB_SCA 0x80 + +#IPAddress control# +!define /math IPM_CLEARADDRESS ${WM_USER} + 100 +!define /math IPM_SETADDRESS ${WM_USER} + 101 +!define /math IPM_GETADDRESS ${WM_USER} + 102 +!define /math IPM_SETRANGE ${WM_USER} + 103 +!define /math IPM_SETFOCUS ${WM_USER} + 104 +!define /math IPM_ISBLANK ${WM_USER} + 105 + +#NetworkAddress control# +!define /math NCM_GETADDRESS ${WM_USER} + 1 ; Vista+ +!define /math NCM_SETALLOWTYPE ${WM_USER} + 2 +!define /math NCM_GETALLOWTYPE ${WM_USER} + 3 +!define /math NCM_DISPLAYERRORTIP ${WM_USER} + 4 + +#Month calendar control# +!define MCM_FIRST 0x1000 +!define /math MCM_GETCURSEL ${MCM_FIRST} + 1 +!define /math MCM_SETCURSEL ${MCM_FIRST} + 2 +!define /math MCM_GETMAXSELCOUNT ${MCM_FIRST} + 3 +!define /math MCM_SETMAXSELCOUNT ${MCM_FIRST} + 4 +!define /math MCM_GETSELRANGE ${MCM_FIRST} + 5 +!define /math MCM_SETSELRANGE ${MCM_FIRST} + 6 +!define /math MCM_GETMONTHRANGE ${MCM_FIRST} + 7 +!define /math MCM_SETDAYSTATE ${MCM_FIRST} + 8 +!define /math MCM_GETMINREQRECT ${MCM_FIRST} + 9 +!define /math MCM_SETCOLOR ${MCM_FIRST} + 10 +!define /math MCM_GETCOLOR ${MCM_FIRST} + 11 +!define /math MCM_SETTODAY ${MCM_FIRST} + 12 +!define /math MCM_GETTODAY ${MCM_FIRST} + 13 +!define /math MCM_HITTEST ${MCM_FIRST} + 14 +!define /math MCM_SETFIRSTDAYOFWEEK ${MCM_FIRST} + 15 +!define /math MCM_GETFIRSTDAYOFWEEK ${MCM_FIRST} + 16 +!define /math MCM_GETRANGE ${MCM_FIRST} + 17 +!define /math MCM_SETRANGE ${MCM_FIRST} + 18 +!define /math MCM_GETMONTHDELTA ${MCM_FIRST} + 19 +!define /math MCM_SETMONTHDELTA ${MCM_FIRST} + 20 +!define /math MCM_GETMAXTODAYWIDTH ${MCM_FIRST} + 21 +!define MCM_SETUNICODEFORMAT ${CCM_SETUNICODEFORMAT} ; IE4+ +!define MCM_GETUNICODEFORMAT ${CCM_SETUNICODEFORMAT} ; IE4+ +!define /math MCM_GETCURRENTVIEW ${MCM_FIRST} + 22 ; Vista+ +!define /math MCM_GETCALENDARCOUNT ${MCM_FIRST} + 23 +!define /math MCM_GETCALENDARGRIDINFO ${MCM_FIRST} + 24 +!define /math MCM_GETCALID ${MCM_FIRST} + 27 +!define /math MCM_SETCALID ${MCM_FIRST} + 28 +!define /math MCM_SIZERECTTOMIN ${MCM_FIRST} + 29 +!define /math MCM_SETCALENDARBORDER ${MCM_FIRST} + 30 +!define /math MCM_GETCALENDARBORDER ${MCM_FIRST} + 31 +!define /math MCM_SETCURRENTVIEW ${MCM_FIRST} + 32 +!define MCN_SELCHANGE -749 +!define MCN_GETDAYSTATE -747 +!define MCN_SELECT -746 +!define MCN_VIEWCHANGE -750 ; Vista+? + +#DateTime control# +!define DTM_FIRST 0x1000 +!define /math DTM_GETSYSTEMTIME ${DTM_FIRST} + 1 +!define /math DTM_SETSYSTEMTIME ${DTM_FIRST} + 2 +!define /math DTM_SETFORMATA ${DTM_FIRST} + 5 +!define /math DTM_SETFORMATW ${DTM_FIRST} + 50 +${_NSIS_DEFAW} DTM_SETFORMAT +!define /math DTM_GETMONTHCAL ${DTM_FIRST} + 8 +!define /math DTM_SETMCFONT ${DTM_FIRST} + 9 ; IE4+? +!define /math DTM_GETMCFONT ${DTM_FIRST} + 10 ; IE4+? +!define /math DTM_SETMCSTYLE ${DTM_FIRST} + 11 ; Vista+? +!define /math DTM_GETMCSTYLE ${DTM_FIRST} + 12 ; Vista+? +!define /math DTM_CLOSEMONTHCAL ${DTM_FIRST} + 13 ; Vista+? +!define DTN_DATETIMECHANGE -759 +!define /IfNDef GDT_ERROR -1 +!define /IfNDef GDT_VALID 0 +!define /IfNDef GDT_NONE 1 + +!verbose pop +!endif diff --git a/tools/Include/WinVer.nsh b/tools/Include/WinVer.nsh new file mode 100644 index 0000000..32564ed --- /dev/null +++ b/tools/Include/WinVer.nsh @@ -0,0 +1,703 @@ +; --------------------- +; WinVer.nsh +; --------------------- +; +; LogicLib extensions for handling Windows versions and service packs. +; +; IsNT checks if the installer is running on Windows NT family (NT4, 2000, XP, etc.) +; +; ${If} ${IsNT} +; DetailPrint "Running on NT. Installing Unicode enabled application." +; ${Else} +; DetailPrint "Not running on NT. Installing ANSI application." +; ${EndIf} +; +; IsServerOS checks if the installer is running on a server version of Windows (2000, 2003, 2008, etc.) +; IsDomainController checks if the server is a domain controller +; +; AtLeastWin checks if the installer is running on Windows version at least as specified. +; IsWin checks if the installer is running on Windows version exactly as specified. +; AtMostWin checks if the installer is running on Windows version at most as specified. +; AtLeastBuild checks if the installer is running on a Windows version with a minimum build number. +; AtMostBuild checks if the installer is running on a Windows version with a maximum build number. +; AtLeastWaaS and AtMostWaaS checks Windows 10 "friendly names" against the build number. +; +; can be replaced with the following values: +; +; 95 +; 98 +; ME +; +; NT4 +; 2000 +; XP +; 2003 +; Vista +; 2008 +; 7 +; 2008R2 +; 8 +; 2012 +; 8.1 +; 2012R2 +; 10 +; 11 +; +; Note: Windows 8.1 and later will be detected as Windows 8 unless ManifestSupportedOS is set correctly! +; +; AtLeastServicePack checks if the installer is running on Windows service pack version at least as specified. +; IsServicePack checks if the installer is running on Windows service pack version exactly as specified. +; AtMostServicePack checks if the installer is running on Windows service version pack at most as specified. +; +; Usage examples: +; +; ${If} ${IsNT} +; DetailPrint "Running on NT family." +; DetailPrint "Surely not running on 95, 98 or ME." +; ${AndIf} ${AtLeastWinNT4} +; DetailPrint "Running on NT4 or better. Could even be 2003." +; ${EndIf} +; +; ${If} ${AtLeastWinXP} +; DetailPrint "Running on XP or better." +; ${EndIf} +; +; ${If} ${IsWin2000} +; DetailPrint "Running on 2000." +; ${EndIf} +; +; ${If} ${IsWin2000} +; ${AndIf} ${AtLeastServicePack} 3 +; ${OrIf} ${AtLeastWinXP} +; DetailPrint "Running Win2000 SP3 or above" +; ${EndIf} +; +; ${If} ${AtMostWinXP} +; DetailPrint "Running on XP or older. Surely not running on Vista. Maybe 98, or even 95." +; ${EndIf} +; +; Warning: +; +; Windows 95 and NT both use the same version number. To avoid getting NT4 misidentified +; as Windows 95 and vice-versa or 98 as a version higher than NT4, always use IsNT to +; check if running on the NT family. +; +; ${If} ${AtLeastWin95} +; ${AndIf} ${AtMostWinME} +; DetailPrint "Running 95, 98 or ME." +; DetailPrint "Actually, maybe it's NT4?" +; ${If} ${IsNT} +; DetailPrint "Yes, it's NT4! oops..." +; ${Else} +; DetailPrint "Nope, not NT4. phew..." +; ${EndIf} +; ${EndIf} +; +; +; Other useful extensions are: +; +; * IsWin2003R2 +; * IsStarterEdition +; * OSHasMediaCenter +; * OSHasTabletSupport +; + +!verbose push +!verbose 3 + +!ifndef ___WINVER__NSH___ +!define ___WINVER__NSH___ + +!include LogicLib.nsh +!include Util.nsh + +# masks for our variables + +!define _WINVER_VERXBIT 0x00000001 ; Used to boost $__WINVERV +!define _WINVER_MASKVMAJ 0x7F000000 ; $__WINVERV mask +!define _WINVER_MASKVMIN 0x00FF0000 ; $__WINVERV mask +!define _WINVER_NTMASK 0x7FFFFFFF ; $__WINVERV mask used by AtMost/AtLeast +!define _WINVER_NTBIT 0x80000000 ; $__WINVERV bit used by Is and $__WINVERSP bit used by IsNT +!define _WINVER_NTSRVBIT 0x40000000 ; $__WINVERSP bit for !VER_NT_WORKSTATION +!define _WINVER_NTDCBIT 0x20000000 ; $__WINVERSP bit for VER_NT_DOMAIN_CONTROLLER +!define _WINVER_MASKVBLD 0x0000FFFF ; $__WINVERSP mask for OS build number +!define _WINVER_MASKSP 0x000F0000 ; $__WINVERSP mask for OS service pack + +# possible variable values for different versions + +!define WINVER_95_NT 0x04000000 ;4.00.0950 +!define WINVER_95 0x04000000 ;4.00.0950 +!define WINVER_98_NT 0x040a0000 ;4.10.1998 +!define WINVER_98 0x040a0000 ;4.10.1998 +;define WINVER_98SE 0x040a0000 ;4.10.2222 +!define WINVER_ME_NT 0x045a0000 ;4.90.3000 +!define WINVER_ME 0x045a0000 ;4.90.3000 +;define WINVER_NT3.51 ;3.51.1057 +!define WINVER_NT4_NT 0x84000000 ;4.00.1381 +!define WINVER_NT4 0x04000000 ;4.00.1381 +!define WINVER_2000_NT 0x85000000 ;5.00.2195 +!define WINVER_2000 0x05000000 ;5.00.2195 +!define WINVER_XP_NT 0x85010000 ;5.01.2600 +!define WINVER_XP 0x05010000 ;5.01.2600 +;define WINVER_XP64 ;5.02.3790 +!define WINVER_2003_NT 0x85020000 ;5.02.3790 +!define WINVER_2003 0x05020000 ;5.02.3790 +!define WINVER_VISTA_NT 0x86000000 ;6.00.6000 +!define WINVER_VISTA 0x06000000 ;6.00.6000 +!define WINVER_2008_NT 0x86000001 ;6.00.6001 +!define WINVER_2008 0x06000001 ;6.00.6001 +!define WINVER_7_NT 0x86010000 ;6.01.7600 +!define WINVER_7 0x06010000 ;6.01.7600 +!define WINVER_2008R2_NT 0x86010001 ;6.01.7600 +!define WINVER_2008R2 0x06010001 ;6.01.7600 +!define WINVER_8_NT 0x86020000 ;6.02.9200 +!define WINVER_8 0x06020000 ;6.02.9200 +!define WINVER_2012_NT 0x86020001 ;6.02.9200 +!define WINVER_2012 0x06020001 ;6.02.9200 +!define WINVER_8.1_NT 0x86030000 ;6.03.9600 +!define WINVER_8.1 0x06030000 ;6.03.9600 +!define WINVER_2012R2_NT 0x86030001 ;6.03.9600 +!define WINVER_2012R2 0x06030001 ;6.03.9600 +!define WINVER_10_NT 0x8A000000 ;10.0.10240 +!define WINVER_10 0x0A000000 ;10.0.10240 +!define WINVER_2016_NT 0x8A000001 ;10.0.14393 +!define WINVER_2016 0x0A000001 ;10.0.14393 + + +# use this to make all nt > 9x + +!ifdef WINVER_NT4_OVER_W95 + !define /redef /math WINVER_NT4 ${WINVER_NT4} | ${_WINVER_VERXBIT} +!endif + +# some definitions from header files + +!define OSVERSIONINFOW_SIZE 276 +!define OSVERSIONINFOEXW_SIZE 284 +!define OSVERSIONINFOA_SIZE 148 +!define OSVERSIONINFOEXA_SIZE 156 +!define /ifndef VER_PLATFORM_WIN32_NT 2 +!define /ifndef VER_NT_WORKSTATION 1 +!define /ifndef VER_NT_DOMAIN_CONTROLLER 2 +!define /ifndef VER_NT_SERVER 3 + +!define SM_TABLETPC 86 +!define SM_MEDIACENTER 87 +!define SM_STARTER 88 +!define SM_SERVERR2 89 + +# variable declaration + +!macro __WinVer_DeclareVars + + !ifndef __WINVER_VARS_DECLARED + + !define __WINVER_VARS_DECLARED + + Var /GLOBAL __WINVERV + Var /GLOBAL __WINVERSP + + !endif + +!macroend + +!macro __WinVer_Optimize +!ifndef __WINVER_NOOPTIMIZE +!if "${NSIS_CHAR_SIZE}" > 1 +!define /ReDef AtMostWin95 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWin98 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWinME '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin95 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin98 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinME '"" LogicLib_AlwaysFalse ""' +!endif +!if "${NSIS_PTR_SIZE}" > 4 +!define /ReDef AtMostWin95 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWin98 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWinME '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWinNT4 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin95 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin98 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinME '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinNT4 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtLeastWin95 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin98 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinME '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinNT4 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin2000 '"" LogicLib_AlwaysTrue ""' +!endif +!ifdef NSIS_ARM | NSIS_ARM32 | NSIS_ARMNT | NSIS_ARM64 +!define /ReDef AtMostWin2000 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWinXP '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWin2003 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWinVista '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtMostWin7 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin95 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin98 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinME '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinNT4 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin2000 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinXP '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin2003 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWinVista '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin2008 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin7 '"" LogicLib_AlwaysFalse ""' +!define /ReDef IsWin2008R2 '"" LogicLib_AlwaysFalse ""' +!define /ReDef AtLeastWin95 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin98 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinME '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinNT4 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin2000 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinXP '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin2003 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWinVista '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin2008 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin7 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin2008R2 '"" LogicLib_AlwaysTrue ""' +!define /ReDef AtLeastWin8 '"" LogicLib_AlwaysTrue ""' +!endif +!endif +!macroend + +# lazy initialization macro + +!define /IfNDef __WinVer_GWV GetWinVer + +!macro __WinVer_InitVars_NEW + !insertmacro __WinVer_DeclareVars + !insertmacro __WinVer_Optimize + + # only calculate version once + StrCmp $__WINVERV "" _winver_noveryet + Return + _winver_noveryet: + + Push $0 + ${__WinVer_GWV} $0 Product + ${__WinVer_GWV} $__WINVERV NTDDIMajMin + IntOp $__WINVERV $__WINVERV << 16 ; _WINVER_MASKVMAJ & _WINVER_MASKVMIN + IntOp $__WINVERSP $0 & 2 + IntOp $__WINVERSP $__WINVERSP << 29 ; _WINVER_NTSRVBIT & _WINVER_NTDCBIT + !ifndef NSIS_ARM64 + IntCmp $__WINVERSP 0 notServer + IntCmpU 0x06000000 $__WINVERV "" "" not2008 ; ${If} $__WINVERV U>= 0x06000000 + IntCmpU 0x09000000 $__WINVERV not2008 not2008 "" ; ${AndIf} $__WINVERV U< 0x09000000 + IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} ; Extra bit so Server 2008 comes after Vista SP1 that has the same minor version, same for Win7 vs 2008R2 + not2008: + Goto endServer + notServer: + IntCmp $__WINVERV 0x05020000 "" notXP64 notXP64 + StrCpy $__WINVERV 0x05010000 ; Change XP 64-bit from 5.2 to 5.1 so it's still XP + notXP64: + endServer: + !endif + + IntCmp $0 0 notNT +!if "${NSIS_PTR_SIZE}" <= 4 +!ifdef WINVER_NT4_OVER_W95 + IntCmp $__WINVERV 0x04000000 "" nt4eq95 nt4eq95 + IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} ; change NT 4.0.reserved.0 to 4.0.reserved.1 + nt4eq95: +!endif +!endif + IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTBIT} ; _WINVER_NTBIT + IntOp $__WINVERV $__WINVERV | ${_WINVER_NTBIT} ; _WINVER_NTBIT + notNT: + + ${__WinVer_GWV} $0 Build + IntOp $__WINVERSP $__WINVERSP | $0 ; _WINVER_MASKVBLD + ${__WinVer_GWV} $0 ServicePack + IntOp $0 $0 << 16 + IntOp $__WINVERSP $__WINVERSP | $0 ; _WINVER_MASKSP + Pop $0 +!macroend + +!ifmacrondef __WinVer_Call_GetVersionEx + + !macro __WinVer_Call_GetVersionEx STRUCT_SIZE + + System::Call '*$0(i ${STRUCT_SIZE})' + System::Call kernel32::GetVersionEx(pr0)i.r3 + + !macroend + +!endif + +!macro __WinVer_InitVars_OLD + # variables + !insertmacro __WinVer_DeclareVars + !insertmacro __WinVer_Optimize + + # only calculate version once + StrCmp $__WINVERV "" _winver_noveryet + Return + _winver_noveryet: + + # push used registers on the stack + Push $0 + Push $1 ;maj + Push $2 ;min + Push $3 ;bld + Push $R0 ;temp + + # a plugin call will lock the Unicode mode, it is now safe to set the struct size + !ifdef NSIS_UNICODE + !define /redef OSVERSIONINFO_SIZE ${OSVERSIONINFOW_SIZE} + !define /redef OSVERSIONINFOEX_SIZE ${OSVERSIONINFOEXW_SIZE} + !else + !define /redef OSVERSIONINFO_SIZE ${OSVERSIONINFOA_SIZE} + !define /redef OSVERSIONINFOEX_SIZE ${OSVERSIONINFOEXA_SIZE} + !endif + + # allocate memory + System::Call '*(&i${OSVERSIONINFOEX_SIZE})p.r0' + + # use OSVERSIONINFOEX + !insertmacro __WinVer_Call_GetVersionEx ${OSVERSIONINFOEX_SIZE} + + IntCmp $3 0 "" _winver_ex _winver_ex + # OSVERSIONINFOEX not allowed (Win9x or NT4 w/SP < 6), use OSVERSIONINFO + !insertmacro __WinVer_Call_GetVersionEx ${OSVERSIONINFO_SIZE} + _winver_ex: + + # get results from struct + System::Call '*$0(i.s,i.r1,i.r2,i.r3,i.s,&t128.s,&i2.s,&i2,&i2,&i1.s,&i1)' + + # free struct + System::Free $0 + + # win9x has major and minor info in high word of dwBuildNumber - remove it + IntOp $3 $3 & 0xFFFF + + # get dwOSVersionInfoSize + Pop $R0 + + # get dwPlatformId + Pop $0 + + # NT? + IntCmp $0 ${VER_PLATFORM_WIN32_NT} "" _winver_notnt _winver_notnt + IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTBIT} + IntOp $__WINVERV $__WINVERV | ${_WINVER_NTBIT} + _winver_notnt: +!ifndef NSIS_UNICODE +!if "${NSIS_PTR_SIZE}" <= 4 + # get service pack information + IntCmp $0 ${VER_PLATFORM_WIN32_NT} _winver_nt "" _winver_nt # win9x + + # get szCSDVersion + Pop $0 + + # copy second char + StrCpy $0 $0 1 1 + + # discard invalid wServicePackMajor and wProductType + Pop $R0 + Pop $R0 + + # switch + StrCmp $0 'A' "" +3 + StrCpy $0 1 + Goto _winver_sp_done + StrCmp $0 'B' "" +3 + StrCpy $0 2 + Goto _winver_sp_done + StrCmp $0 'C' "" +3 + StrCpy $0 3 + Goto _winver_sp_done + StrCpy $0 0 + Goto _winver_sp_done + + _winver_nt: # nt +!endif #~ 32-bit +!endif #~ ANSI + IntCmp $R0 ${OSVERSIONINFOEX_SIZE} "" _winver_sp_noex _winver_sp_noex + + # discard szCSDVersion + Pop $0 + + # get wProductType + Exch + Pop $0 + + # is server? + IntCmp $0 ${VER_NT_WORKSTATION} _winver_nt_notsrv + IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTSRVBIT} + IntCmp $0 ${VER_NT_DOMAIN_CONTROLLER} "" _winver_nt_notdc _winver_nt_notdc + IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTDCBIT} + _winver_nt_notdc: + _winver_nt_notsrv: + + # get wServicePackMajor + Pop $0 + + # done with sp + Goto _winver_sp_done + + _winver_sp_noex: # OSVERSIONINFO, not OSVERSIONINFOEX + + #### TODO + ## For IsServerOS to support < NT4SP6, we need to check the registry + ## here to see if we are a server and/or DC + + # get szCSDVersion + Pop $0 + + # discard invalid wServicePackMajor and wProductType + Pop $R0 + Pop $R0 + + # get service pack number from text + StrCpy $R0 $0 13 + StrCmp $R0 "Service Pack " "" +3 + StrCpy $0 $0 "" 13 # cut "Service Pack " + Goto +2 + StrCpy $0 0 # no service pack + +!ifdef WINVER_NT4_OVER_W95 + IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} ; change NT 4.0.reserved.0 to 4.0.reserved.1 +!endif + + _winver_sp_done: + + # store service pack + IntOp $0 $0 << 16 + IntOp $__WINVERSP $__WINVERSP | $0 + + ### now for the version + + # is server? + IntOp $0 $__WINVERSP & ${_WINVER_NTSRVBIT} + + # windows xp x64? + IntCmp $0 0 "" _winver_not_xp_x64 _winver_not_xp_x64 # not server + IntCmp $1 5 "" _winver_not_xp_x64 _winver_not_xp_x64 # maj 5 + IntCmp $2 2 "" _winver_not_xp_x64 _winver_not_xp_x64 # min 2 + # change XP x64 from 5.2 to 5.1 so it's still XP + StrCpy $2 1 + _winver_not_xp_x64: + + # server 2008? + IntCmp $0 0 _winver_not_ntserver # server + IntCmp 6 $1 "" "" _winver_not_ntserver # maj 6 + # extra bit so Server 2008 comes after Vista SP1 that has the same minor version, same for Win7 vs 2008R2 + IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} + _winver_not_ntserver: + + # pack version + IntOp $1 $1 << 24 # VerMajor + IntOp $__WINVERV $__WINVERV | $1 + IntOp $0 $2 << 16 + IntOp $__WINVERV $__WINVERV | $0 # VerMinor + IntOp $__WINVERSP $__WINVERSP | $3 # VerBuild + + # restore registers + Pop $R0 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + +!macroend + +!macro __WinVer_InitVars + !ifndef WinVer_v3_7 + !insertmacro __WinVer_InitVars_NEW + !else + !insertmacro __WinVer_InitVars_OLD + !endif +!macroend + +# version comparison LogicLib macros + +!macro _WinVerAtLeast _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${CallArtificialFunction} __WinVer_InitVars + IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK} + !insertmacro _>= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` +!macroend +!macro _WinVerIs _a _b _t _f + ${CallArtificialFunction} __WinVer_InitVars + !insertmacro _= $__WINVERV `${_b}` `${_t}` `${_f}` +!macroend +!macro _WinVerAtMost _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${CallArtificialFunction} __WinVer_InitVars + IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK} + !insertmacro _<= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` +!macroend + +!macro __WinVer_DefineOSTest Test OS Suffix + !define ${Test}Win${OS} `"" WinVer${Test} ${WINVER_${OS}${Suffix}}` +!macroend + +!macro __WinVer_DefineOSTests Test Suffix + !insertmacro __WinVer_DefineOSTest ${Test} 95 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 98 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} ME '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} NT4 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2000 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} XP '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2003 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} VISTA '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2008 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 7 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2008R2 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 8 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2012 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 8.1 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2012R2 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 10 '${Suffix}' + !insertmacro __WinVer_DefineOSTest ${Test} 2016 '${Suffix}' + !define /IfNDef AtLeastWin11 'U>= WinVer_BuildNumCheck 22000' + !define /IfNDef AtMostWin11 'U<= WinVer_BuildNumCheck 22000' +!macroend + +!insertmacro __WinVer_DefineOSTests AtLeast "" +!insertmacro __WinVer_DefineOSTests Is _NT +!insertmacro __WinVer_DefineOSTests AtMost "" + +# version feature LogicLib macros + +!macro __WinVer_LL_IsBitSet _v _b _t _f + !insertmacro _LOGICLIB_TEMP + ${CallArtificialFunction} __WinVer_InitVars + IntOp $_LOGICLIB_TEMP ${_v} & ${_b} + !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` +!macroend + +!define IsNT `$__WINVERSP _WinVer_LL_IsBitSet ${_WINVER_NTBIT}` +!define IsServerOS `$__WINVERSP _WinVer_LL_IsBitSet ${_WINVER_NTSRVBIT}` +!define IsDomainController `$__WINVERSP _WinVer_LL_IsBitSet ${_WINVER_NTDCBIT}` + +# service pack macros + +!macro _WinVer_GetServicePackLevel OUTVAR + !ifndef WinVer_v3_7 + ${__WinVer_GWV} ${OUTVAR} ServicePack + !else + ${CallArtificialFunction} __WinVer_InitVars + IntOp ${OUTVAR} $__WINVERSP & ${_WINVER_MASKSP} + IntOp ${OUTVAR} ${OUTVAR} >> 16 + !endif +!macroend +!define WinVerGetServicePackLevel '!insertmacro _WinVer_GetServicePackLevel ' + +!macro _AtLeastServicePack _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP + !insertmacro _>= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` +!macroend +!define AtLeastServicePack `"" AtLeastServicePack` + +!macro _AtMostServicePack _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP + !insertmacro _<= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` +!macroend +!define AtMostServicePack `"" AtMostServicePack` + +!macro _IsServicePack _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP + !insertmacro _= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` +!macroend +!define IsServicePack `"" IsServicePack` + +# special feature LogicLib macros + +!macro _WinVer_SysMetricCheck m _b _t _f + !insertmacro _LOGICLIB_TEMP + System::Call user32::GetSystemMetrics(i${m})i.s + pop $_LOGICLIB_TEMP + !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` +!macroend + +!define IsWin2003R2 `${SM_SERVERR2} WinVer_SysMetricCheck ""` +!define IsStarterEdition `${SM_STARTER} WinVer_SysMetricCheck ""` +!define OSHasMediaCenter `${SM_MEDIACENTER} WinVer_SysMetricCheck ""` +!define OSHasTabletSupport `${SM_TABLETPC} WinVer_SysMetricCheck ""` +!define IsSafeBootMode `67 WinVer_SysMetricCheck ""` + +# version retrieval macros + +!macro __WinVer_GetVer var rshift mask outvar + ${CallArtificialFunction} __WinVer_InitVars + !if "${mask}" != "" + IntOp ${outvar} ${var} & ${mask} + !if "${rshift}" != "" + IntOp ${outvar} ${outvar} >> ${rshift} + !endif + !else + IntOp ${outvar} ${var} >> ${rshift} + !endif +!macroend + +!define WinVerGetMajor '!insertmacro __WinVer_GetVer $__WINVERV 24 ${_WINVER_MASKVMAJ}' +!define WinVerGetMinor '!insertmacro __WinVer_GetVer $__WINVERV 16 ${_WINVER_MASKVMIN}' +!ifndef WinVer_v3_7 +!macro __WinVer_GetVerBuild outvar + ${__WinVer_GWV} ${outvar} Build +!macroend +!define WinVerGetBuild '!insertmacro __WinVer_GetVerBuild ' +!else +!define WinVerGetBuild '!insertmacro __WinVer_GetVer $__WINVERSP "" ${_WINVER_MASKVBLD}' +!endif + +!macro _WinVer_BuildNumCheck op num _t _f + !insertmacro _LOGICLIB_TEMP + ${WinVerGetBuild} $_LOGICLIB_TEMP + !insertmacro _${op} $_LOGICLIB_TEMP ${num} `${_t}` `${_f}` +!macroend +!define AtLeastBuild `U>= WinVer_BuildNumCheck ` +!define AtMostBuild `U<= WinVer_BuildNumCheck ` + +# Windows as a Service macros + +!macro WinVer_WaaS id build fu codename marketingname + !if "${id}" == "?" + # Ignore + !else if "${id}" == ${fu} + !define WinVer_WaaS_Build ${build} + !else if "${id}" == "${codename}" + !define WinVer_WaaS_Build ${build} + !else if "${id}" == "${marketingname}" + !define WinVer_WaaS_Build ${build} + !endif +!macroend + +!macro _WinVer_WaaS op id _t _f + !insertmacro WinVer_WaaS "${id}" 10240 1507 "Threshold" "Windows 10" ; 10240.16384 + !insertmacro WinVer_WaaS "${id}" 10586 1511 "Threshold 2" "November Update" ; 10586.0? + !insertmacro WinVer_WaaS "${id}" 14393 1607 "Redstone" "Anniversary Update" ; 14393.10 + !insertmacro WinVer_WaaS "${id}" 15063 1703 "Redstone 2" "Creators Update" ; 15063.13 + !insertmacro WinVer_WaaS "${id}" 16299 1709 "Redstone 3" "Fall Creators Update" ; 16299.19 + !insertmacro WinVer_WaaS "${id}" 17134 1803 "Redstone 4" "April 2018 Update" ; 17134.1 + !insertmacro WinVer_WaaS "${id}" 17763 1809 "Redstone 5" "October 2018 Update" ; 17763.1 + !insertmacro WinVer_WaaS "${id}" 18362 1903 "19H1" "May 2019 Update" ; 18362.116 + !insertmacro WinVer_WaaS "${id}" 18363 1909 "19H2" "November 2019 Update" ; 18363.418 + !insertmacro WinVer_WaaS "${id}" 19041 2004 "20H1" "May 2020 Update" ; 19041.264? + !insertmacro WinVer_WaaS "${id}" 19042 20H2 "20H2" "October 2020 Update" ; 19042.572? A.K.A. 2009 + !insertmacro WinVer_WaaS "${id}" 19043 21H1 "21H1" "May 2021 Update" ; 19043.928 + !insertmacro WinVer_WaaS "${id}" 19044 21H2 "21H2" "November 2021 Update" ; 19044.1288 + !insertmacro WinVer_WaaS "${id}" 19045 "?" "?" "October 2022 Update" ; 19045.2130 22H2 + !insertmacro WinVer_WaaS "${id}" 22000 "?" "Sun Valley" "Windows 11" ; 10.0.22000.194 21H2 + !insertmacro WinVer_WaaS "${id}" 22621 22H2 "Sun Valley 2" "2022 Update" ; 10.0.22621.521 + + !ifmacrodef WinVerExternal_WaaS_MapToBuild + !insertmacro WinVerExternal_WaaS_MapToBuild ${op} "${id}" WinVer_WaaS_Build + !endif + !define /IfNDef WinVer_WaaS_Build 0 + !if "${WinVer_WaaS_Build}" <= 9600 + !error 'WinVer: Unknown WaaS name: ${id}' + !endif + !insertmacro _WinVer_BuildNumCheck ${op} ${WinVer_WaaS_Build} `${_t}` `${_f}` + !undef WinVer_WaaS_Build +!macroend + +!define AtLeastWaaS `U>= WinVer_WaaS ` +!define AtMostWaaS `U<= WinVer_WaaS ` + +!endif # !___WINVER__NSH___ + +!verbose pop diff --git a/tools/Include/WordFunc.nsh b/tools/Include/WordFunc.nsh new file mode 100644 index 0000000..0cb645a --- /dev/null +++ b/tools/Include/WordFunc.nsh @@ -0,0 +1,1800 @@ +/* +_____________________________________________________________________________ + + Word Functions Header v3.3 +_____________________________________________________________________________ + + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + + See documentation for more information about the following functions. + + Usage in script: + 1. !include "WordFunc.nsh" + 2. [Section|Function] + ${WordFunction} "Param1" "Param2" "..." $var + [SectionEnd|FunctionEnd] + + + WordFunction=[WordFind|WordFindS|WordFind2X|WordFind2XS|WordFind3X|WordFind3XS| + WordReplace|WordReplaceS|WordAdd|WordAddS|WordInsert|WordInsertS| + StrFilter|StrFilterS|VersionCompare|VersionConvert] + +_____________________________________________________________________________ + + Thanks to: +_____________________________________________________________________________ + +WordFind3X + Afrow UK (Based on his idea of Function "StrSortLR") +StrFilter + sunjammer (Function "StrUpper") +VersionCompare + Afrow UK (Based on his Function "VersionCheckNew2") +VersionConvert + Afrow UK (Based on his idea of Function "CharIndexReplace") +*/ + + +;_____________________________________________________________________________ +; +; Macros +;_____________________________________________________________________________ +; +; Change log window verbosity (default: 3=no script) +; +; Example: +; !include "WordFunc.nsh" +; !insertmacro WordFind +; ${WORDFUNC_VERBOSE} 4 # all verbosity +; !insertmacro WordReplace +; ${WORDFUNC_VERBOSE} 3 # no script + +!ifndef WORDFUNC_INCLUDED + +!verbose push 3 +!define /IfNDef _WORDFUNC_VERBOSE 3 +!verbose ${_WORDFUNC_VERBOSE} +!define WORDFUNC_VERBOSE `!insertmacro WORDFUNC_VERBOSE` + +!define WORDFUNC_INCLUDED + +!include Util.nsh + + +!macro WORDFUNC_VERBOSE _VERBOSE + !verbose push 3 + !define /ReDef _WORDFUNC_VERBOSE ${_VERBOSE} + !verbose pop +!macroend + + +!macro WordFindCall _ART _STRING _DELIMITER _OPTION _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_OPTION}` + ${CallArtificialFunction}${_ART} WordFind_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFindSCall _ART _STRING _DELIMITER _OPTION _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_OPTION}` + ${CallArtificialFunction}${_ART} WordFindS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind2XCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordFind2X_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind2XSCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordFind2XS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind3XCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_CENTER}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordFind3X_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind3XSCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_CENTER}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordFind3XS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordReplaceCall _STRING _WORD1 _WORD2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_WORD1}` + Push `${_WORD2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordReplace_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordReplaceSCall _STRING _WORD1 _WORD2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_WORD1}` + Push `${_WORD2}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordReplaceS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordAddCall _STRING1 _DELIMITER _STRING2 _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING1}` + Push `${_DELIMITER}` + Push `${_STRING2}` + ${CallArtificialFunction} WordAdd_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordAddSCall _STRING1 _DELIMITER _STRING2 _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING1}` + Push `${_DELIMITER}` + Push `${_STRING2}` + ${CallArtificialFunction} WordAddS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordInsertCall _STRING _DELIMITER _WORD _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_WORD}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordInsert_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordInsertSCall _STRING _DELIMITER _WORD _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_WORD}` + Push `${_NUMBER}` + ${CallArtificialFunction} WordInsertS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro StrFilterCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_FILTER}` + Push `${_INCLUDE}` + Push `${_EXCLUDE}` + ${CallArtificialFunction} StrFilter_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro StrFilterSCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_FILTER}` + Push `${_INCLUDE}` + Push `${_EXCLUDE}` + ${CallArtificialFunction} StrFilterS_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro VersionCompareCall _VER1 _VER2 _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_VER1}` + Push `${_VER2}` + ${CallArtificialFunction} VersionCompare_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro VersionConvertCall _VERSION _CHARLIST _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_VERSION}` + Push `${_CHARLIST}` + ${CallArtificialFunction} VersionConvert_ + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFindBody _WORDFUNC_S + Exch $1 + Exch + Exch $0 + Exch + Exch 2 + Exch $R0 + Exch 2 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R1 + Push $R2 + ClearErrors + + StrCpy $9 '' + StrCpy $2 $1 1 + StrCpy $1 $1 '' 1 + StrCmp $2 'E' 0 +3 + StrCpy $9 E + goto -4 + + StrCpy $3 '' + StrCmp${_WORDFUNC_S} $2 '+' +6 + StrCmp${_WORDFUNC_S} $2 '-' +5 + StrCmp${_WORDFUNC_S} $2 '/' WordFunc_WordFind${_WORDFUNC_S}_restart + StrCmp${_WORDFUNC_S} $2 '#' WordFunc_WordFind${_WORDFUNC_S}_restart + StrCmp${_WORDFUNC_S} $2 '*' WordFunc_WordFind${_WORDFUNC_S}_restart + goto WordFunc_WordFind${_WORDFUNC_S}_error3 + + StrCpy $4 $1 1 -1 + StrCmp${_WORDFUNC_S} $4 '*' +4 + StrCmp${_WORDFUNC_S} $4 '}' +3 + StrCmp${_WORDFUNC_S} $4 '{' +2 + goto +4 + StrCpy $1 $1 -1 + StrCpy $3 '$4$3' + goto -7 + StrCmp${_WORDFUNC_S} $3 '*' WordFunc_WordFind${_WORDFUNC_S}_error3 + StrCmp${_WORDFUNC_S} $3 '**' WordFunc_WordFind${_WORDFUNC_S}_error3 + StrCmp${_WORDFUNC_S} $3 '}{' WordFunc_WordFind${_WORDFUNC_S}_error3 + IntOp $1 $1 + 0 + StrCmp${_WORDFUNC_S} $1 0 WordFunc_WordFind${_WORDFUNC_S}_error2 + + WordFunc_WordFind${_WORDFUNC_S}_restart: + StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind${_WORDFUNC_S}_error1 + StrCpy $4 0 + StrCpy $5 0 + StrCpy $6 0 + StrLen $7 $0 + goto WordFunc_WordFind${_WORDFUNC_S}_loop + + WordFunc_WordFind${_WORDFUNC_S}_preloop: + IntOp $6 $6 + 1 + + WordFunc_WordFind${_WORDFUNC_S}_loop: + StrCpy $8 $R0 $7 $6 + StrCmp${_WORDFUNC_S} $8$5 0 WordFunc_WordFind${_WORDFUNC_S}_error1 + StrLen $R2 $8 + IntCmp $R2 0 +2 + StrCmp${_WORDFUNC_S} $8 $0 +5 WordFunc_WordFind${_WORDFUNC_S}_preloop + StrCmp${_WORDFUNC_S} $3 '{' WordFunc_WordFind${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $3 '}' WordFunc_WordFind${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $2 '*' WordFunc_WordFind${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $5 $6 WordFunc_WordFind${_WORDFUNC_S}_minus +5 + StrCmp${_WORDFUNC_S} $3 '{' +4 + StrCmp${_WORDFUNC_S} $3 '}' +3 + StrCmp${_WORDFUNC_S} $2 '*' +2 + StrCmp${_WORDFUNC_S} $5 $6 WordFunc_WordFind${_WORDFUNC_S}_nextword + IntOp $4 $4 + 1 + StrCmp${_WORDFUNC_S} $2$4 +$1 WordFunc_WordFind${_WORDFUNC_S}_plus + StrCmp${_WORDFUNC_S} $2 '/' 0 WordFunc_WordFind${_WORDFUNC_S}_nextword + IntOp $8 $6 - $5 + StrCpy $8 $R0 $8 $5 + StrCmp${_WORDFUNC_S} $1 $8 0 WordFunc_WordFind${_WORDFUNC_S}_nextword + StrCpy $R1 $4 + goto WordFunc_WordFind${_WORDFUNC_S}_end + WordFunc_WordFind${_WORDFUNC_S}_nextword: + IntOp $6 $6 + $7 + StrCpy $5 $6 + goto WordFunc_WordFind${_WORDFUNC_S}_loop + + WordFunc_WordFind${_WORDFUNC_S}_minus: + StrCmp${_WORDFUNC_S} $2 '-' 0 WordFunc_WordFind${_WORDFUNC_S}_sum + StrCpy $2 '+' + IntOp $1 $4 - $1 + IntOp $1 $1 + 1 + IntCmp $1 0 WordFunc_WordFind${_WORDFUNC_S}_error2 WordFunc_WordFind${_WORDFUNC_S}_error2 WordFunc_WordFind${_WORDFUNC_S}_restart + WordFunc_WordFind${_WORDFUNC_S}_sum: + StrCmp${_WORDFUNC_S} $2 '#' 0 WordFunc_WordFind${_WORDFUNC_S}_sumdelim + StrCpy $R1 $4 + goto WordFunc_WordFind${_WORDFUNC_S}_end + WordFunc_WordFind${_WORDFUNC_S}_sumdelim: + StrCmp${_WORDFUNC_S} $2 '*' 0 WordFunc_WordFind${_WORDFUNC_S}_error2 + StrCpy $R1 $4 + goto WordFunc_WordFind${_WORDFUNC_S}_end + + WordFunc_WordFind${_WORDFUNC_S}_plus: + StrCmp${_WORDFUNC_S} $3 '' 0 +4 + IntOp $6 $6 - $5 + StrCpy $R1 $R0 $6 $5 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '{' 0 +3 + StrCpy $R1 $R0 $6 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '}' 0 +4 + IntOp $6 $6 + $7 + StrCpy $R1 $R0 '' $6 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '{*' +2 + StrCmp${_WORDFUNC_S} $3 '*{' 0 +3 + StrCpy $R1 $R0 $6 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '*}' +2 + StrCmp${_WORDFUNC_S} $3 '}*' 0 +3 + StrCpy $R1 $R0 '' $5 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '}}' 0 +3 + StrCpy $R1 $R0 '' $6 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '{{' 0 +3 + StrCpy $R1 $R0 $5 + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $3 '{}' 0 WordFunc_WordFind${_WORDFUNC_S}_error3 + StrLen $3 $R0 + StrCmp${_WORDFUNC_S} $3 $6 0 +3 + StrCpy $0 '' + goto +2 + IntOp $6 $6 + $7 + StrCpy $8 $R0 '' $6 + StrCmp${_WORDFUNC_S} $4$8 1 +6 + StrCmp${_WORDFUNC_S} $4 1 +2 +7 + IntOp $6 $6 + $7 + StrCpy $3 $R0 $7 $6 + StrCmp${_WORDFUNC_S} $3 '' +2 + StrCmp${_WORDFUNC_S} $3 $0 -3 +3 + StrCpy $R1 '' + goto WordFunc_WordFind${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $5 0 0 +3 + StrCpy $0 '' + goto +2 + IntOp $5 $5 - $7 + StrCpy $3 $R0 $5 + StrCpy $R1 '$3$0$8' + goto WordFunc_WordFind${_WORDFUNC_S}_end + + WordFunc_WordFind${_WORDFUNC_S}_error3: + StrCpy $R1 3 + goto WordFunc_WordFind${_WORDFUNC_S}_error + WordFunc_WordFind${_WORDFUNC_S}_error2: + StrCpy $R1 2 + goto WordFunc_WordFind${_WORDFUNC_S}_error + WordFunc_WordFind${_WORDFUNC_S}_error1: + StrCpy $R1 1 + WordFunc_WordFind${_WORDFUNC_S}_error: + StrCmp $9 'E' 0 +3 + SetErrors + + WordFunc_WordFind${_WORDFUNC_S}_end: + StrCpy $R0 $R1 + + Pop $R2 + Pop $R1 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordFind `!insertmacro WordFindCall ''` +!define un.WordFind `!insertmacro WordFindCall ''` + +!macro WordFind +!macroend + +!macro un.WordFind +!macroend + +!macro WordFind_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFindBody '' + + !verbose pop +!macroend + +!define WordFindS `!insertmacro WordFindSCall ''` +!define un.WordFindS `!insertmacro WordFindSCall ''` + +!macro WordFindS +!macroend + +!macro un.WordFindS +!macroend + +!macro WordFindS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFindBody 'S' + + !verbose pop +!macroend + +!macro WordFind2XBody _WORDFUNC_S + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Exch 3 + Exch $R0 + Exch 3 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R1 + Push $R2 + ClearErrors + + StrCpy $R2 '' + StrCpy $3 $2 1 + StrCpy $2 $2 '' 1 + StrCmp $3 'E' 0 +3 + StrCpy $R2 E + goto -4 + + StrCmp${_WORDFUNC_S} $3 '+' +5 + StrCmp${_WORDFUNC_S} $3 '-' +4 + StrCmp${_WORDFUNC_S} $3 '#' WordFunc_WordFind2X${_WORDFUNC_S}_restart + StrCmp${_WORDFUNC_S} $3 '/' WordFunc_WordFind2X${_WORDFUNC_S}_restart + goto WordFunc_WordFind2X${_WORDFUNC_S}_error3 + + StrCpy $4 $2 2 -2 + StrCmp${_WORDFUNC_S} $4 '{{' +9 + StrCmp${_WORDFUNC_S} $4 '}}' +8 + StrCmp${_WORDFUNC_S} $4 '{*' +7 + StrCmp${_WORDFUNC_S} $4 '*{' +6 + StrCmp${_WORDFUNC_S} $4 '*}' +5 + StrCmp${_WORDFUNC_S} $4 '}*' +4 + StrCmp${_WORDFUNC_S} $4 '{}' +3 + StrCpy $4 '' + goto +2 + StrCpy $2 $2 -2 + IntOp $2 $2 + 0 + StrCmp${_WORDFUNC_S} $2 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2 + + WordFunc_WordFind2X${_WORDFUNC_S}_restart: + StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind2X${_WORDFUNC_S}_error1 + StrCpy $5 -1 + StrCpy $6 0 + StrCpy $7 '' + StrLen $8 $0 + StrLen $9 $1 + + WordFunc_WordFind2X${_WORDFUNC_S}_loop: + IntOp $5 $5 + 1 + + WordFunc_WordFind2X${_WORDFUNC_S}_delim1: + StrCpy $R1 $R0 $8 $5 + StrCmp${_WORDFUNC_S} $R1$6 0 WordFunc_WordFind2X${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $R1 '' WordFunc_WordFind2X${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $R1 $0 +2 + StrCmp${_WORDFUNC_S} $7 '' WordFunc_WordFind2X${_WORDFUNC_S}_loop WordFunc_WordFind2X${_WORDFUNC_S}_delim2 + StrCmp${_WORDFUNC_S} $0 $1 0 +2 + StrCmp${_WORDFUNC_S} $7 '' 0 WordFunc_WordFind2X${_WORDFUNC_S}_delim2 + IntOp $7 $5 + $8 + StrCpy $5 $7 + goto WordFunc_WordFind2X${_WORDFUNC_S}_delim1 + + WordFunc_WordFind2X${_WORDFUNC_S}_delim2: + StrCpy $R1 $R0 $9 $5 + StrCmp${_WORDFUNC_S} $R1 $1 0 WordFunc_WordFind2X${_WORDFUNC_S}_loop + IntOp $6 $6 + 1 + StrCmp${_WORDFUNC_S} $3$6 '+$2' WordFunc_WordFind2X${_WORDFUNC_S}_plus + StrCmp${_WORDFUNC_S} $3 '/' 0 WordFunc_WordFind2X${_WORDFUNC_S}_nextword + IntOp $R1 $5 - $7 + StrCpy $R1 $R0 $R1 $7 + StrCmp${_WORDFUNC_S} $R1 $2 0 +3 + StrCpy $R1 $6 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + WordFunc_WordFind2X${_WORDFUNC_S}_nextword: + IntOp $5 $5 + $9 + StrCpy $7 '' + goto WordFunc_WordFind2X${_WORDFUNC_S}_delim1 + + WordFunc_WordFind2X${_WORDFUNC_S}_minus: + StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordFind2X${_WORDFUNC_S}_sum + StrCpy $3 + + IntOp $2 $6 - $2 + IntOp $2 $2 + 1 + IntCmp $2 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2 WordFunc_WordFind2X${_WORDFUNC_S}_error2 WordFunc_WordFind2X${_WORDFUNC_S}_restart + WordFunc_WordFind2X${_WORDFUNC_S}_sum: + StrCmp${_WORDFUNC_S} $3 '#' 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2 + StrCpy $R1 $6 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + + WordFunc_WordFind2X${_WORDFUNC_S}_plus: + StrCmp${_WORDFUNC_S} $4 '' 0 +4 + IntOp $R1 $5 - $7 + StrCpy $R1 $R0 $R1 $7 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + IntOp $5 $5 + $9 + IntOp $7 $7 - $8 + StrCmp${_WORDFUNC_S} $4 '{*' +2 + StrCmp${_WORDFUNC_S} $4 '*{' 0 +3 + StrCpy $R1 $R0 $5 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $4 '*}' +2 + StrCmp${_WORDFUNC_S} $4 '}*' 0 +3 + StrCpy $R1 $R0 '' $7 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $4 '}}' 0 +3 + StrCpy $R1 $R0 '' $5 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $4 '{{' 0 +3 + StrCpy $R1 $R0 $7 + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $4 '{}' 0 WordFunc_WordFind2X${_WORDFUNC_S}_error3 + StrCpy $5 $R0 '' $5 + StrCpy $7 $R0 $7 + StrCpy $R1 '$7$5' + goto WordFunc_WordFind2X${_WORDFUNC_S}_end + + WordFunc_WordFind2X${_WORDFUNC_S}_error3: + StrCpy $R1 3 + goto WordFunc_WordFind2X${_WORDFUNC_S}_error + WordFunc_WordFind2X${_WORDFUNC_S}_error2: + StrCpy $R1 2 + goto WordFunc_WordFind2X${_WORDFUNC_S}_error + WordFunc_WordFind2X${_WORDFUNC_S}_error1: + StrCpy $R1 1 + WordFunc_WordFind2X${_WORDFUNC_S}_error: + StrCmp $R2 'E' 0 +3 + SetErrors + + WordFunc_WordFind2X${_WORDFUNC_S}_end: + StrCpy $R0 $R1 + + Pop $R2 + Pop $R1 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordFind2X `!insertmacro WordFind2XCall` +!define un.WordFind2X `!insertmacro WordFind2XCall` + +!macro WordFind2X +!macroend + +!macro un.WordFind2X +!macroend + +!macro WordFind2X_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFind2XBody '' + + !verbose pop +!macroend + +!define WordFind2XS `!insertmacro WordFind2XSCall` +!define un.WordFind2XS `!insertmacro WordFind2XSCall` + +!macro WordFind2XS +!macroend + +!macro un.WordFind2XS +!macroend + +!macro WordFind2XS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFind2XBody 'S' + + !verbose pop +!macroend + +!macro WordFind3XBody _WORDFUNC_S + Exch $3 + Exch + Exch $2 + Exch + Exch 2 + Exch $1 + Exch 2 + Exch 3 + Exch $0 + Exch 3 + Exch 4 + Exch $R0 + Exch 4 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + ClearErrors + + StrCpy $R5 '' + StrCpy $4 $3 1 + StrCpy $3 $3 '' 1 + StrCmp $4 'E' 0 +3 + StrCpy $R5 E + goto -4 + + StrCmp${_WORDFUNC_S} $4 '+' +5 + StrCmp${_WORDFUNC_S} $4 '-' +4 + StrCmp${_WORDFUNC_S} $4 '#' WordFunc_WordFind3X${_WORDFUNC_S}_restart + StrCmp${_WORDFUNC_S} $4 '/' WordFunc_WordFind3X${_WORDFUNC_S}_restart + goto WordFunc_WordFind3X${_WORDFUNC_S}_error3 + + StrCpy $5 $3 2 -2 + StrCmp${_WORDFUNC_S} $5 '{{' +9 + StrCmp${_WORDFUNC_S} $5 '}}' +8 + StrCmp${_WORDFUNC_S} $5 '{*' +7 + StrCmp${_WORDFUNC_S} $5 '*{' +6 + StrCmp${_WORDFUNC_S} $5 '*}' +5 + StrCmp${_WORDFUNC_S} $5 '}*' +4 + StrCmp${_WORDFUNC_S} $5 '{}' +3 + StrCpy $5 '' + goto +2 + StrCpy $3 $3 -2 + IntOp $3 $3 + 0 + StrCmp${_WORDFUNC_S} $3 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2 + + WordFunc_WordFind3X${_WORDFUNC_S}_restart: + StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind3X${_WORDFUNC_S}_error1 + StrCpy $6 -1 + StrCpy $7 0 + StrCpy $8 '' + StrCpy $9 '' + StrLen $R1 $0 + StrLen $R2 $1 + StrLen $R3 $2 + + WordFunc_WordFind3X${_WORDFUNC_S}_loop: + IntOp $6 $6 + 1 + + WordFunc_WordFind3X${_WORDFUNC_S}_delim1: + StrCpy $R4 $R0 $R1 $6 + StrCmp${_WORDFUNC_S} $R4$7 0 WordFunc_WordFind3X${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $R4 '' WordFunc_WordFind3X${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $R4 $0 +2 + StrCmp${_WORDFUNC_S} $8 '' WordFunc_WordFind3X${_WORDFUNC_S}_loop WordFunc_WordFind3X${_WORDFUNC_S}_center + StrCmp${_WORDFUNC_S} $0 $1 +2 + StrCmp${_WORDFUNC_S} $0 $2 0 +2 + StrCmp${_WORDFUNC_S} $8 '' 0 WordFunc_WordFind3X${_WORDFUNC_S}_center + IntOp $8 $6 + $R1 + StrCpy $6 $8 + goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1 + + WordFunc_WordFind3X${_WORDFUNC_S}_center: + StrCmp${_WORDFUNC_S} $9 '' 0 WordFunc_WordFind3X${_WORDFUNC_S}_delim2 + StrCpy $R4 $R0 $R2 $6 + StrCmp${_WORDFUNC_S} $R4 $1 0 WordFunc_WordFind3X${_WORDFUNC_S}_loop + IntOp $9 $6 + $R2 + StrCpy $6 $9 + goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1 + + WordFunc_WordFind3X${_WORDFUNC_S}_delim2: + StrCpy $R4 $R0 $R3 $6 + StrCmp${_WORDFUNC_S} $R4 $2 0 WordFunc_WordFind3X${_WORDFUNC_S}_loop + IntOp $7 $7 + 1 + StrCmp${_WORDFUNC_S} $4$7 '+$3' WordFunc_WordFind3X${_WORDFUNC_S}_plus + StrCmp${_WORDFUNC_S} $4 '/' 0 WordFunc_WordFind3X${_WORDFUNC_S}_nextword + IntOp $R4 $6 - $8 + StrCpy $R4 $R0 $R4 $8 + StrCmp${_WORDFUNC_S} $R4 $3 0 +3 + StrCpy $R4 $7 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + WordFunc_WordFind3X${_WORDFUNC_S}_nextword: + IntOp $6 $6 + $R3 + StrCpy $8 '' + StrCpy $9 '' + goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1 + + WordFunc_WordFind3X${_WORDFUNC_S}_minus: + StrCmp${_WORDFUNC_S} $4 '-' 0 WordFunc_WordFind3X${_WORDFUNC_S}_sum + StrCpy $4 + + IntOp $3 $7 - $3 + IntOp $3 $3 + 1 + IntCmp $3 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2 WordFunc_WordFind3X${_WORDFUNC_S}_error2 WordFunc_WordFind3X${_WORDFUNC_S}_restart + WordFunc_WordFind3X${_WORDFUNC_S}_sum: + StrCmp${_WORDFUNC_S} $4 '#' 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2 + StrCpy $R4 $7 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + + WordFunc_WordFind3X${_WORDFUNC_S}_plus: + StrCmp${_WORDFUNC_S} $5 '' 0 +4 + IntOp $R4 $6 - $8 + StrCpy $R4 $R0 $R4 $8 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + IntOp $6 $6 + $R3 + IntOp $8 $8 - $R1 + StrCmp${_WORDFUNC_S} $5 '{*' +2 + StrCmp${_WORDFUNC_S} $5 '*{' 0 +3 + StrCpy $R4 $R0 $6 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $5 '*}' +2 + StrCmp${_WORDFUNC_S} $5 '}*' 0 +3 + StrCpy $R4 $R0 '' $8 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $5 '}}' 0 +3 + StrCpy $R4 $R0 '' $6 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $5 '{{' 0 +3 + StrCpy $R4 $R0 $8 + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $5 '{}' 0 WordFunc_WordFind3X${_WORDFUNC_S}_error3 + StrCpy $6 $R0 '' $6 + StrCpy $8 $R0 $8 + StrCpy $R4 '$8$6' + goto WordFunc_WordFind3X${_WORDFUNC_S}_end + + WordFunc_WordFind3X${_WORDFUNC_S}_error3: + StrCpy $R4 3 + goto WordFunc_WordFind3X${_WORDFUNC_S}_error + WordFunc_WordFind3X${_WORDFUNC_S}_error2: + StrCpy $R4 2 + goto WordFunc_WordFind3X${_WORDFUNC_S}_error + WordFunc_WordFind3X${_WORDFUNC_S}_error1: + StrCpy $R4 1 + WordFunc_WordFind3X${_WORDFUNC_S}_error: + StrCmp $R5 'E' 0 +3 + SetErrors + + WordFunc_WordFind3X${_WORDFUNC_S}_end: + StrCpy $R0 $R4 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordFind3X `!insertmacro WordFind3XCall` +!define un.WordFind3X `!insertmacro WordFind3XCall` + +!macro WordFind3X +!macroend + +!macro un.WordFind3X +!macroend + +!macro WordFind3X_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFind3XBody '' + + !verbose pop +!macroend + +!define WordFind3XS `!insertmacro WordFind3XSCall` +!define un.WordFind3XS `!insertmacro WordFind3XSCall` + +!macro WordFind3XS +!macroend + +!macro un.WordFind3XS +!macroend + +!macro WordFind3XS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordFind3XBody 'S' + + !verbose pop +!macroend + +!macro WordReplaceBody _WORDFUNC_S + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Exch 3 + Exch $R0 + Exch 3 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R1 + ClearErrors + + StrCpy $R1 $R0 + StrCpy $9 '' + StrCpy $3 $2 1 + StrCpy $2 $2 '' 1 + StrCmp $3 'E' 0 +3 + StrCpy $9 E + goto -4 + + StrCpy $4 $2 1 -1 + StrCpy $5 '' + StrCpy $6 '' + StrLen $7 $0 + + StrCmp${_WORDFUNC_S} $7 0 WordFunc_WordReplace${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordReplace${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $3 '{' WordFunc_WordReplace${_WORDFUNC_S}_beginning + StrCmp${_WORDFUNC_S} $3 '}' WordFunc_WordReplace${_WORDFUNC_S}_ending WordFunc_WordReplace${_WORDFUNC_S}_errorchk + + WordFunc_WordReplace${_WORDFUNC_S}_beginning: + StrCpy $8 $R0 $7 + StrCmp${_WORDFUNC_S} $8 $0 0 +4 + StrCpy $R0 $R0 '' $7 + StrCpy $5 '$5$1' + goto -4 + StrCpy $3 $2 1 + StrCmp${_WORDFUNC_S} $3 '}' 0 WordFunc_WordReplace${_WORDFUNC_S}_merge + + WordFunc_WordReplace${_WORDFUNC_S}_ending: + StrCpy $8 $R0 '' -$7 + StrCmp${_WORDFUNC_S} $8 $0 0 +4 + StrCpy $R0 $R0 -$7 + StrCpy $6 '$6$1' + goto -4 + + WordFunc_WordReplace${_WORDFUNC_S}_merge: + StrCmp${_WORDFUNC_S} $4 '*' 0 +5 + StrCmp${_WORDFUNC_S} $5 '' +2 + StrCpy $5 $1 + StrCmp${_WORDFUNC_S} $6 '' +2 + StrCpy $6 $1 + StrCpy $R0 '$5$R0$6' + goto WordFunc_WordReplace${_WORDFUNC_S}_end + + WordFunc_WordReplace${_WORDFUNC_S}_errorchk: + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordReplace${_WORDFUNC_S}_error3 + + StrCpy $5 $2 1 + IntOp $2 $2 + 0 + StrCmp${_WORDFUNC_S} $2 0 0 WordFunc_WordReplace${_WORDFUNC_S}_one + StrCmp${_WORDFUNC_S} $5 0 WordFunc_WordReplace${_WORDFUNC_S}_error2 + StrCpy $3 '' + + WordFunc_WordReplace${_WORDFUNC_S}_all: + StrCpy $5 0 + StrCpy $2 $R0 $7 $5 + StrCmp${_WORDFUNC_S} $2 '' +4 + StrCmp${_WORDFUNC_S} $2 $0 +6 + IntOp $5 $5 + 1 + goto -4 + StrCmp${_WORDFUNC_S} $R0 $R1 WordFunc_WordReplace${_WORDFUNC_S}_error1 + StrCpy $R0 '$3$R0' + goto WordFunc_WordReplace${_WORDFUNC_S}_end + StrCpy $2 $R0 $5 + IntOp $5 $5 + $7 + StrCmp${_WORDFUNC_S} $4 '*' 0 +3 + StrCpy $6 $R0 $7 $5 + StrCmp${_WORDFUNC_S} $6 $0 -3 + StrCpy $R0 $R0 '' $5 + StrCpy $3 '$3$2$1' + goto WordFunc_WordReplace${_WORDFUNC_S}_all + + WordFunc_WordReplace${_WORDFUNC_S}_one: + StrCpy $5 0 + StrCpy $8 0 + goto WordFunc_WordReplace${_WORDFUNC_S}_loop + + WordFunc_WordReplace${_WORDFUNC_S}_preloop: + IntOp $5 $5 + 1 + + WordFunc_WordReplace${_WORDFUNC_S}_loop: + StrCpy $6 $R0 $7 $5 + StrCmp${_WORDFUNC_S} $6$8 0 WordFunc_WordReplace${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $6 '' WordFunc_WordReplace${_WORDFUNC_S}_minus + StrCmp${_WORDFUNC_S} $6 $0 0 WordFunc_WordReplace${_WORDFUNC_S}_preloop + IntOp $8 $8 + 1 + StrCmp${_WORDFUNC_S} $3$8 +$2 WordFunc_WordReplace${_WORDFUNC_S}_found + IntOp $5 $5 + $7 + goto WordFunc_WordReplace${_WORDFUNC_S}_loop + + WordFunc_WordReplace${_WORDFUNC_S}_minus: + StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordReplace${_WORDFUNC_S}_error2 + StrCpy $3 + + IntOp $2 $8 - $2 + IntOp $2 $2 + 1 + IntCmp $2 0 WordFunc_WordReplace${_WORDFUNC_S}_error2 WordFunc_WordReplace${_WORDFUNC_S}_error2 WordFunc_WordReplace${_WORDFUNC_S}_one + + WordFunc_WordReplace${_WORDFUNC_S}_found: + StrCpy $3 $R0 $5 + StrCmp${_WORDFUNC_S} $4 '*' 0 +5 + StrCpy $6 $3 '' -$7 + StrCmp${_WORDFUNC_S} $6 $0 0 +3 + StrCpy $3 $3 -$7 + goto -3 + IntOp $5 $5 + $7 + StrCmp${_WORDFUNC_S} $4 '*' 0 +3 + StrCpy $6 $R0 $7 $5 + StrCmp${_WORDFUNC_S} $6 $0 -3 + StrCpy $R0 $R0 '' $5 + StrCpy $R0 '$3$1$R0' + goto WordFunc_WordReplace${_WORDFUNC_S}_end + + WordFunc_WordReplace${_WORDFUNC_S}_error3: + StrCpy $R0 3 + goto WordFunc_WordReplace${_WORDFUNC_S}_error + WordFunc_WordReplace${_WORDFUNC_S}_error2: + StrCpy $R0 2 + goto WordFunc_WordReplace${_WORDFUNC_S}_error + WordFunc_WordReplace${_WORDFUNC_S}_error1: + StrCpy $R0 1 + WordFunc_WordReplace${_WORDFUNC_S}_error: + StrCmp $9 'E' +3 + StrCpy $R0 $R1 + goto +2 + SetErrors + + WordFunc_WordReplace${_WORDFUNC_S}_end: + Pop $R1 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordReplace `!insertmacro WordReplaceCall` +!define un.WordReplace `!insertmacro WordReplaceCall` + +!macro WordReplace +!macroend + +!macro un.WordReplace +!macroend + +!macro WordReplace_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordReplaceBody '' + + !verbose pop +!macroend + +!define WordReplaceS `!insertmacro WordReplaceSCall` +!define un.WordReplaceS `!insertmacro WordReplaceSCall` + +!macro WordReplaceS +!macroend + +!macro un.WordReplaceS +!macroend + +!macro WordReplaceS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordReplaceBody 'S' + + !verbose pop +!macroend + +!macro WordAddBody _WORDFUNC_S + Exch $1 + Exch + Exch $0 + Exch + Exch 2 + Exch $R0 + Exch 2 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $R1 + ClearErrors + + StrCpy $7 '' + StrCpy $2 $1 1 + StrCmp $2 'E' 0 +4 + StrCpy $7 E + StrCpy $1 $1 '' 1 + goto -4 + + StrCpy $5 0 + StrCpy $R1 $R0 + StrCpy $2 $1 '' 1 + StrCpy $1 $1 1 + StrCmp${_WORDFUNC_S} $1 '+' +2 + StrCmp${_WORDFUNC_S} $1 '-' 0 WordFunc_WordAdd${_WORDFUNC_S}_error3 + + StrCmp${_WORDFUNC_S} $0 '' WordFunc_WordAdd${_WORDFUNC_S}_error1 + StrCmp${_WORDFUNC_S} $2 '' WordFunc_WordAdd${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $R0 '' 0 +5 + StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $1 '+' 0 +3 + StrCpy $R0 $2 + goto WordFunc_WordAdd${_WORDFUNC_S}_end + + WordFunc_WordAdd${_WORDFUNC_S}_loop: + IntOp $5 $5 + 1 + !insertmacro WordFind${_WORDFUNC_S}Call 2 $2 $0 E+$5 $3 + IfErrors 0 WordFunc_WordAdd${_WORDFUNC_S}_/word + StrCmp${_WORDFUNC_S} $3 2 +4 + StrCmp${_WORDFUNC_S} $3$5 11 0 +3 + StrCpy $3 $2 + goto WordFunc_WordAdd${_WORDFUNC_S}_/word + StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_end WordFunc_WordAdd${_WORDFUNC_S}_preend + + WordFunc_WordAdd${_WORDFUNC_S}_/word: + !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E/$3 $4 + IfErrors +2 + StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_delete WordFunc_WordAdd${_WORDFUNC_S}_loop + StrCmp${_WORDFUNC_S} $1$4 '-1' +2 + StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_loop +4 + StrCmp${_WORDFUNC_S} $R0 $3 0 WordFunc_WordAdd${_WORDFUNC_S}_loop + StrCpy $R0 '' + goto WordFunc_WordAdd${_WORDFUNC_S}_end + StrCmp${_WORDFUNC_S} $1$4 '+1' 0 +2 + StrCmp${_WORDFUNC_S} $R0 $3 WordFunc_WordAdd${_WORDFUNC_S}_loop + StrCmp${_WORDFUNC_S} $R0 $R1 +3 + StrCpy $R1 '$R1$0$3' + goto WordFunc_WordAdd${_WORDFUNC_S}_loop + StrLen $6 $0 + StrCpy $6 $R0 '' -$6 + StrCmp${_WORDFUNC_S} $6 $0 0 -4 + StrCpy $R1 '$R1$3' + goto WordFunc_WordAdd${_WORDFUNC_S}_loop + + WordFunc_WordAdd${_WORDFUNC_S}_delete: + !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E+$4{} $R0 + goto WordFunc_WordAdd${_WORDFUNC_S}_/word + + WordFunc_WordAdd${_WORDFUNC_S}_error3: + StrCpy $R1 3 + goto WordFunc_WordAdd${_WORDFUNC_S}_error + WordFunc_WordAdd${_WORDFUNC_S}_error1: + StrCpy $R1 1 + WordFunc_WordAdd${_WORDFUNC_S}_error: + StrCmp $7 'E' 0 WordFunc_WordAdd${_WORDFUNC_S}_end + SetErrors + + WordFunc_WordAdd${_WORDFUNC_S}_preend: + StrCpy $R0 $R1 + + WordFunc_WordAdd${_WORDFUNC_S}_end: + Pop $R1 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordAdd `!insertmacro WordAddCall` +!define un.WordAdd `!insertmacro WordAddCall` + +!macro WordAdd +!macroend + +!macro un.WordAdd +!macroend + +!macro WordAdd_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordAddBody '' + + !verbose pop +!macroend + +!define WordAddS `!insertmacro WordAddSCall` +!define un.WordAddS `!insertmacro WordAddSCall` + +!macro WordAddS +!macroend + +!macro un.WordAddS +!macroend + +!macro WordAddS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordAddBody 'S' + + !verbose pop +!macroend + +!macro WordInsertBody _WORDFUNC_S + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Exch 3 + Exch $R0 + Exch 3 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $8 + Push $9 + Push $R1 + ClearErrors + + StrCpy $5 '' + StrCpy $6 $0 + StrCpy $7 } + + StrCpy $9 '' + StrCpy $R1 $R0 + StrCpy $3 $2 1 + StrCpy $2 $2 '' 1 + StrCmp $3 'E' 0 +3 + StrCpy $9 'E' + goto -4 + + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordInsert${_WORDFUNC_S}_error3 + IntOp $2 $2 + 0 + StrCmp${_WORDFUNC_S} $2 0 WordFunc_WordInsert${_WORDFUNC_S}_error2 + StrCmp${_WORDFUNC_S} $0 '' WordFunc_WordInsert${_WORDFUNC_S}_error1 + + StrCmp${_WORDFUNC_S} $2 1 0 WordFunc_WordInsert${_WORDFUNC_S}_two + GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_oneback + StrCmp${_WORDFUNC_S} $3 '+' WordFunc_WordInsert${_WORDFUNC_S}_call + StrCpy $7 { + goto WordFunc_WordInsert${_WORDFUNC_S}_call + WordFunc_WordInsert${_WORDFUNC_S}_oneback: + IfErrors 0 +2 + StrCpy $4 $R0 + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 + StrCpy $R0 '$1$0$4' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + StrCpy $R0 '$4$0$1' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + + WordFunc_WordInsert${_WORDFUNC_S}_two: + IntOp $2 $2 - 1 + GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_twoback + StrCmp${_WORDFUNC_S} $3 '+' 0 WordFunc_WordInsert${_WORDFUNC_S}_call + StrCpy $7 { + goto WordFunc_WordInsert${_WORDFUNC_S}_call + WordFunc_WordInsert${_WORDFUNC_S}_twoback: + IfErrors 0 WordFunc_WordInsert${_WORDFUNC_S}_tree + StrCmp${_WORDFUNC_S} $2$4 11 0 WordFunc_WordInsert${_WORDFUNC_S}_error2 + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 + StrCpy $R0 '$R0$0$1' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + StrCpy $R0 '$1$0$R0' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + + WordFunc_WordInsert${_WORDFUNC_S}_tree: + StrCpy $7 } + StrCpy $5 $4 + IntOp $2 $2 + 1 + GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_treeback + StrCmp${_WORDFUNC_S} $3 '+' WordFunc_WordInsert${_WORDFUNC_S}_call + StrCpy $7 { + goto WordFunc_WordInsert${_WORDFUNC_S}_call + WordFunc_WordInsert${_WORDFUNC_S}_treeback: + IfErrors 0 +3 + StrCpy $4 '' + StrCpy $6 '' + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 + StrCpy $R0 '$5$0$1$6$4' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + StrCpy $R0 '$4$6$1$0$5' + goto WordFunc_WordInsert${_WORDFUNC_S}_end + + WordFunc_WordInsert${_WORDFUNC_S}_call: + !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E$3$2*$7 $4 + goto $8 + + WordFunc_WordInsert${_WORDFUNC_S}_error3: + StrCpy $R0 3 + goto WordFunc_WordInsert${_WORDFUNC_S}_error + WordFunc_WordInsert${_WORDFUNC_S}_error2: + StrCpy $R0 2 + goto WordFunc_WordInsert${_WORDFUNC_S}_error + WordFunc_WordInsert${_WORDFUNC_S}_error1: + StrCpy $R0 1 + WordFunc_WordInsert${_WORDFUNC_S}_error: + StrCmp $9 'E' +3 + StrCpy $R0 $R1 + goto +2 + SetErrors + + WordFunc_WordInsert${_WORDFUNC_S}_end: + Pop $R1 + Pop $9 + Pop $8 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define WordInsert `!insertmacro WordInsertCall` +!define un.WordInsert `!insertmacro WordInsertCall` + +!macro WordInsert +!macroend + +!macro un.WordInsert +!macroend + +!macro WordInsert_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordInsertBody '' + + !verbose pop +!macroend + + +!define WordInsertS `!insertmacro WordInsertSCall` +!define un.WordInsertS `!insertmacro WordInsertSCall` + +!macro WordInsertS +!macroend + +!macro un.WordInsertS +!macroend + +!macro WordInsertS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro WordInsertBody 'S' + + !verbose pop +!macroend + +!macro StrFilterBody _WORDFUNC_S + Exch $2 + Exch + Exch $1 + Exch + Exch 2 + Exch $0 + Exch 2 + Exch 3 + Exch $R0 + Exch 3 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + ClearErrors + + StrCpy $R2 $0 '' -3 + StrCmp $R2 "eng" WordFunc_StrFilter${_WORDFUNC_S}_eng + StrCmp $R2 "rus" WordFunc_StrFilter${_WORDFUNC_S}_rus + WordFunc_StrFilter${_WORDFUNC_S}_eng: + StrCpy $4 65 + StrCpy $5 90 + StrCpy $6 97 + StrCpy $7 122 + goto WordFunc_StrFilter${_WORDFUNC_S}_langend + WordFunc_StrFilter${_WORDFUNC_S}_rus: + StrCpy $4 192 + StrCpy $5 223 + StrCpy $6 224 + StrCpy $7 255 + goto WordFunc_StrFilter${_WORDFUNC_S}_langend + ;... + + WordFunc_StrFilter${_WORDFUNC_S}_langend: + StrCpy $R7 '' + StrCpy $R8 '' + + StrCmp${_WORDFUNC_S} $2 '' 0 WordFunc_StrFilter${_WORDFUNC_S}_begin + + WordFunc_StrFilter${_WORDFUNC_S}_restart1: + StrCpy $2 '' + StrCpy $3 $0 1 + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 +3 + StrCpy $0 $0 '' 1 + goto +2 + StrCpy $3 '' + + IntOp $0 $0 + 0 + StrCmp${_WORDFUNC_S} $0 0 +5 + StrCpy $R7 $0 1 0 + StrCpy $R8 $0 1 1 + StrCpy $R2 $0 1 2 + StrCmp${_WORDFUNC_S} $R2 '' WordFunc_StrFilter${_WORDFUNC_S}_filter WordFunc_StrFilter${_WORDFUNC_S}_error + + WordFunc_StrFilter${_WORDFUNC_S}_restart2: + StrCmp${_WORDFUNC_S} $3 '' WordFunc_StrFilter${_WORDFUNC_S}_end + StrCpy $R7 '' + StrCpy $R8 '+-' + goto WordFunc_StrFilter${_WORDFUNC_S}_begin + + WordFunc_StrFilter${_WORDFUNC_S}_filter: + StrCmp${_WORDFUNC_S} $R7 '1' +3 + StrCmp${_WORDFUNC_S} $R7 '2' +2 + StrCmp${_WORDFUNC_S} $R7 '3' 0 WordFunc_StrFilter${_WORDFUNC_S}_error + + StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_begin + StrCmp${_WORDFUNC_S} $R7$R8 '23' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '32' 0 +3 + StrCpy $R7 -1 + goto WordFunc_StrFilter${_WORDFUNC_S}_begin + StrCmp${_WORDFUNC_S} $R7$R8 '13' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '31' 0 +3 + StrCpy $R7 -2 + goto WordFunc_StrFilter${_WORDFUNC_S}_begin + StrCmp${_WORDFUNC_S} $R7$R8 '12' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '21' 0 WordFunc_StrFilter${_WORDFUNC_S}_error + StrCpy $R7 -3 + + WordFunc_StrFilter${_WORDFUNC_S}_begin: + StrCpy $R6 0 + StrCpy $R1 '' + + WordFunc_StrFilter${_WORDFUNC_S}_loop: + StrCpy $R2 $R0 1 $R6 + StrCmp${_WORDFUNC_S} $R2 '' WordFunc_StrFilter${_WORDFUNC_S}_restartchk + + StrCmp${_WORDFUNC_S} $2 '' +7 + StrCpy $R4 0 + StrCpy $R5 $2 1 $R4 + StrCmp${_WORDFUNC_S} $R5 '' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol + StrCmp${_WORDFUNC_S} $R5 $R2 WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol + IntOp $R4 $R4 + 1 + goto -4 + + StrCmp${_WORDFUNC_S} $1 '' +7 + StrCpy $R4 0 + StrCpy $R5 $1 1 $R4 + StrCmp${_WORDFUNC_S} $R5 '' +4 + StrCmp${_WORDFUNC_S} $R5 $R2 WordFunc_StrFilter${_WORDFUNC_S}_addsymbol + IntOp $R4 $R4 + 1 + goto -4 + + StrCmp${_WORDFUNC_S} $R7 '1' +2 + StrCmp${_WORDFUNC_S} $R7 '-1' 0 +4 + StrCpy $R4 48 + StrCpy $R5 57 + goto WordFunc_StrFilter${_WORDFUNC_S}_loop2 + StrCmp${_WORDFUNC_S} $R8 '+-' 0 +2 + StrCmp${_WORDFUNC_S} $3 '+' 0 +4 + StrCpy $R4 $4 + StrCpy $R5 $5 + goto WordFunc_StrFilter${_WORDFUNC_S}_loop2 + StrCpy $R4 $6 + StrCpy $R5 $7 + + WordFunc_StrFilter${_WORDFUNC_S}_loop2: + IntFmt $R3 '%c' $R4 + StrCmp $R2 $R3 WordFunc_StrFilter${_WORDFUNC_S}_found + StrCmp $R4 $R5 WordFunc_StrFilter${_WORDFUNC_S}_notfound + IntOp $R4 $R4 + 1 + goto WordFunc_StrFilter${_WORDFUNC_S}_loop2 + + WordFunc_StrFilter${_WORDFUNC_S}_found: + StrCmp${_WORDFUNC_S} $R8 '+-' WordFunc_StrFilter${_WORDFUNC_S}_setcase + StrCmp${_WORDFUNC_S} $R7 '3' WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol + StrCmp${_WORDFUNC_S} $R7 '-3' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol + StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol + + WordFunc_StrFilter${_WORDFUNC_S}_notfound: + StrCmp${_WORDFUNC_S} $R8 '+-' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol + StrCmp${_WORDFUNC_S} $R7 '3' 0 +2 + StrCmp${_WORDFUNC_S} $R5 57 WordFunc_StrFilter${_WORDFUNC_S}_addsymbol +3 + StrCmp${_WORDFUNC_S} $R7 '-3' 0 +5 + StrCmp${_WORDFUNC_S} $R5 57 WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol + StrCpy $R4 48 + StrCpy $R5 57 + goto WordFunc_StrFilter${_WORDFUNC_S}_loop2 + StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol WordFunc_StrFilter${_WORDFUNC_S}_addsymbol + + WordFunc_StrFilter${_WORDFUNC_S}_setcase: + StrCpy $R2 $R3 + WordFunc_StrFilter${_WORDFUNC_S}_addsymbol: + StrCpy $R1 $R1$R2 + WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol: + IntOp $R6 $R6 + 1 + goto WordFunc_StrFilter${_WORDFUNC_S}_loop + + WordFunc_StrFilter${_WORDFUNC_S}_error: + SetErrors + StrCpy $R0 '' + goto WordFunc_StrFilter${_WORDFUNC_S}_end + + WordFunc_StrFilter${_WORDFUNC_S}_restartchk: + StrCpy $R0 $R1 + StrCmp${_WORDFUNC_S} $2 '' 0 WordFunc_StrFilter${_WORDFUNC_S}_restart1 + StrCmp${_WORDFUNC_S} $R8 '+-' 0 WordFunc_StrFilter${_WORDFUNC_S}_restart2 + + WordFunc_StrFilter${_WORDFUNC_S}_end: + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $R0 +!macroend + +!define StrFilter `!insertmacro StrFilterCall` +!define un.StrFilter `!insertmacro StrFilterCall` + +!macro StrFilter +!macroend + +!macro un.StrFilter +!macroend + +!macro StrFilter_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro StrFilterBody '' + + !verbose pop +!macroend + + +!define StrFilterS `!insertmacro StrFilterSCall` +!define un.StrFilterS `!insertmacro StrFilterSCall` + +!macro StrFilterS +!macroend + +!macro un.StrFilterS +!macroend + +!macro StrFilterS_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + !insertmacro StrFilterBody 'S' + + !verbose pop +!macroend + +!define VersionCompare `!insertmacro VersionCompareCall` +!define un.VersionCompare `!insertmacro VersionCompareCall` + +!macro VersionCompare +!macroend + +!macro un.VersionCompare +!macroend + +!macro VersionCompare_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + + WordFunc_VersionCompare_begin: + StrCpy $2 -1 + IntOp $2 $2 + 1 + StrCpy $3 $0 1 $2 + StrCmp $3 '' +2 + StrCmp $3 '.' 0 -3 + StrCpy $4 $0 $2 + IntOp $2 $2 + 1 + StrCpy $0 $0 '' $2 + + StrCpy $2 -1 + IntOp $2 $2 + 1 + StrCpy $3 $1 1 $2 + StrCmp $3 '' +2 + StrCmp $3 '.' 0 -3 + StrCpy $5 $1 $2 + IntOp $2 $2 + 1 + StrCpy $1 $1 '' $2 + + StrCmp $4$5 '' WordFunc_VersionCompare_equal + + StrCpy $6 -1 + IntOp $6 $6 + 1 + StrCpy $3 $4 1 $6 + StrCmp $3 '0' -2 + StrCmp $3 '' 0 +2 + StrCpy $4 0 + + StrCpy $7 -1 + IntOp $7 $7 + 1 + StrCpy $3 $5 1 $7 + StrCmp $3 '0' -2 + StrCmp $3 '' 0 +2 + StrCpy $5 0 + + StrCmp $4 0 0 +2 + StrCmp $5 0 WordFunc_VersionCompare_begin WordFunc_VersionCompare_newer2 + StrCmp $5 0 WordFunc_VersionCompare_newer1 + IntCmp $6 $7 0 WordFunc_VersionCompare_newer1 WordFunc_VersionCompare_newer2 + + StrCpy $4 '1$4' + StrCpy $5 '1$5' + IntCmp $4 $5 WordFunc_VersionCompare_begin WordFunc_VersionCompare_newer2 WordFunc_VersionCompare_newer1 + + WordFunc_VersionCompare_equal: + StrCpy $0 0 + goto WordFunc_VersionCompare_end + WordFunc_VersionCompare_newer1: + StrCpy $0 1 + goto WordFunc_VersionCompare_end + WordFunc_VersionCompare_newer2: + StrCpy $0 2 + + WordFunc_VersionCompare_end: + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!define VersionConvert `!insertmacro VersionConvertCall` +!define un.VersionConvert `!insertmacro VersionConvertCall` + +!macro VersionConvert +!macroend + +!macro un.VersionConvert +!macroend + +!macro VersionConvert_ + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + + Exch $1 + Exch + Exch $0 + Exch + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + + StrCmp $1 '' 0 +2 + StrCpy $1 'abcdefghijklmnopqrstuvwxyz' + StrCpy $1 $1 99 + + StrCpy $2 0 + StrCpy $7 'dot' + goto WordFunc_VersionConvert_loop + + WordFunc_VersionConvert_preloop: + IntOp $2 $2 + 1 + + WordFunc_VersionConvert_loop: + StrCpy $3 $0 1 $2 + StrCmp $3 '' WordFunc_VersionConvert_endcheck + StrCmp $3 '.' WordFunc_VersionConvert_dot + StrCmp $3 '0' WordFunc_VersionConvert_digit + IntCmp $3 '0' WordFunc_VersionConvert_letter WordFunc_VersionConvert_letter WordFunc_VersionConvert_digit + + WordFunc_VersionConvert_dot: + StrCmp $7 'dot' WordFunc_VersionConvert_replacespecial + StrCpy $7 'dot' + goto WordFunc_VersionConvert_preloop + + WordFunc_VersionConvert_digit: + StrCmp $7 'letter' WordFunc_VersionConvert_insertdot + StrCpy $7 'digit' + goto WordFunc_VersionConvert_preloop + + WordFunc_VersionConvert_letter: + StrCpy $5 0 + StrCpy $4 $1 1 $5 + IntOp $5 $5 + 1 + StrCmp $4 '' WordFunc_VersionConvert_replacespecial + StrCmp $4 $3 0 -3 + IntCmp $5 9 0 0 +2 + StrCpy $5 '0$5' + + StrCmp $7 'letter' +2 + StrCmp $7 'dot' 0 +3 + StrCpy $6 '' + goto +2 + StrCpy $6 '.' + + StrCpy $4 $0 $2 + IntOp $2 $2 + 1 + StrCpy $0 $0 '' $2 + StrCpy $0 '$4$6$5$0' + StrLen $4 '$6$5' + IntOp $2 $2 + $4 + IntOp $2 $2 - 1 + StrCpy $7 'letter' + goto WordFunc_VersionConvert_loop + + WordFunc_VersionConvert_replacespecial: + StrCmp $7 'dot' 0 +3 + StrCpy $6 '' + goto +2 + StrCpy $6 '.' + + StrCpy $4 $0 $2 + IntOp $2 $2 + 1 + StrCpy $0 $0 '' $2 + StrCpy $0 '$4$6$0' + StrLen $4 $6 + IntOp $2 $2 + $4 + IntOp $2 $2 - 1 + StrCpy $7 'dot' + goto WordFunc_VersionConvert_loop + + WordFunc_VersionConvert_insertdot: + StrCpy $4 $0 $2 + StrCpy $0 $0 '' $2 + StrCpy $0 '$4.$0' + StrCpy $7 'dot' + goto WordFunc_VersionConvert_preloop + + WordFunc_VersionConvert_endcheck: + StrCpy $4 $0 1 -1 + StrCmp $4 '.' 0 WordFunc_VersionConvert_end + StrCpy $0 $0 -1 + goto -3 + + WordFunc_VersionConvert_end: + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 + + !verbose pop +!macroend + +!verbose pop +!endif diff --git a/tools/Include/nsDialogs.nsh b/tools/Include/nsDialogs.nsh new file mode 100644 index 0000000..6fc2782 --- /dev/null +++ b/tools/Include/nsDialogs.nsh @@ -0,0 +1,1249 @@ +/* + +nsDialogs.nsh +Header file for creating custom installer pages with nsDialogs + +*/ + +!ifndef NSDIALOGS_INCLUDED +!verbose push 2 +!define NSDIALOGS_INCLUDED +!verbose 3 + +!include LogicLib.nsh +!include WinMessages.nsh + +!define /ifndef WS_EX_DLGMODALFRAME 0x00000001 +!define /ifndef WS_EX_NOPARENTNOTIFY 0x00000004 +!define /ifndef WS_EX_TOPMOST 0x00000008 +!define /ifndef WS_EX_ACCEPTFILES 0x00000010 +!define /ifndef WS_EX_TRANSPARENT 0x00000020 +!define /ifndef WS_EX_MDICHILD 0x00000040 +!define /ifndef WS_EX_TOOLWINDOW 0x00000080 +!define /ifndef WS_EX_WINDOWEDGE 0x00000100 +!define /ifndef WS_EX_CLIENTEDGE 0x00000200 +!define /ifndef WS_EX_CONTEXTHELP 0x00000400 +!define /ifndef WS_EX_RIGHT 0x00001000 +!define /ifndef WS_EX_LEFT 0x00000000 +!define /ifndef WS_EX_RTLREADING 0x00002000 +!define /ifndef WS_EX_LTRREADING 0x00000000 +!define /ifndef WS_EX_LEFTSCROLLBAR 0x00004000 +!define /ifndef WS_EX_RIGHTSCROLLBAR 0x00000000 +!define /ifndef WS_EX_CONTROLPARENT 0x00010000 +!define /ifndef WS_EX_STATICEDGE 0x00020000 +!define /ifndef WS_EX_APPWINDOW 0x00040000 + +!define /ifndef WS_CHILD 0x40000000 +!define /ifndef WS_VISIBLE 0x10000000 +!define /ifndef WS_DISABLED 0x08000000 +!define /ifndef WS_CLIPSIBLINGS 0x04000000 +!define /ifndef WS_CLIPCHILDREN 0x02000000 +!define /ifndef WS_MAXIMIZE 0x01000000 +!define /ifndef WS_BORDER 0x00800000 +!define /ifndef WS_VSCROLL 0x00200000 +!define /ifndef WS_HSCROLL 0x00100000 +!define /ifndef WS_GROUP 0x00020000 +!define /ifndef WS_MINIMIZEBOX 0x00020000 +!define /ifndef WS_MAXIMIZEBOX 0x00010000 +!define /ifndef WS_TABSTOP 0x00010000 + +!define ES_LEFT 0x00000000 +!define ES_CENTER 0x00000001 +!define ES_RIGHT 0x00000002 +!define ES_MULTILINE 0x00000004 +!define ES_UPPERCASE 0x00000008 +!define ES_LOWERCASE 0x00000010 +!define ES_PASSWORD 0x00000020 +!define ES_AUTOVSCROLL 0x00000040 +!define ES_AUTOHSCROLL 0x00000080 +!define ES_NOHIDESEL 0x00000100 +!define ES_OEMCONVERT 0x00000400 +!define ES_READONLY 0x00000800 +!define ES_WANTRETURN 0x00001000 +!define ES_NUMBER 0x00002000 +!define ES_SAVESEL 0x00008000 + +!define SS_LEFT 0x00000000 +!define SS_CENTER 0x00000001 +!define SS_RIGHT 0x00000002 +!define SS_ICON 0x00000003 +!define SS_BLACKRECT 0x00000004 +!define SS_GRAYRECT 0x00000005 +!define SS_WHITERECT 0x00000006 +!define SS_BLACKFRAME 0x00000007 +!define SS_GRAYFRAME 0x00000008 +!define SS_WHITEFRAME 0x00000009 +!define SS_USERITEM 0x0000000A +!define SS_SIMPLE 0x0000000B +!define SS_LEFTNOWORDWRAP 0x0000000C +!define SS_OWNERDRAW 0x0000000D +!define SS_BITMAP 0x0000000E +!define SS_ENHMETAFILE 0x0000000F +!define SS_ETCHEDHORZ 0x00000010 +!define SS_ETCHEDVERT 0x00000011 +!define SS_ETCHEDFRAME 0x00000012 +!define SS_TYPEMASK 0x0000001F +!define SS_REALSIZECONTROL 0x00000040 +!define SS_NOPREFIX 0x00000080 +!define SS_NOTIFY 0x00000100 +!define SS_CENTERIMAGE 0x00000200 +!define SS_RIGHTJUST 0x00000400 +!define SS_REALSIZEIMAGE 0x00000800 +!define SS_SUNKEN 0x00001000 +!define SS_EDITCONTROL 0x00002000 +!define SS_ENDELLIPSIS 0x00004000 +!define SS_PATHELLIPSIS 0x00008000 +!define SS_WORDELLIPSIS 0x0000C000 +!define SS_ELLIPSISMASK 0x0000C000 + +!define BS_PUSHBUTTON 0x00000000 +!define BS_DEFPUSHBUTTON 0x00000001 +!define BS_CHECKBOX 0x00000002 +!define BS_AUTOCHECKBOX 0x00000003 +!define BS_RADIOBUTTON 0x00000004 +!define BS_3STATE 0x00000005 +!define BS_AUTO3STATE 0x00000006 +!define BS_GROUPBOX 0x00000007 +!define BS_USERBUTTON 0x00000008 +!define BS_AUTORADIOBUTTON 0x00000009 +!define BS_PUSHBOX 0x0000000A +!define BS_OWNERDRAW 0x0000000B +!define BS_TYPEMASK 0x0000000F +!define BS_LEFTTEXT 0x00000020 +!define BS_TEXT 0x00000000 +!define BS_ICON 0x00000040 +!define BS_BITMAP 0x00000080 +!define BS_LEFT 0x00000100 +!define BS_RIGHT 0x00000200 +!define BS_CENTER 0x00000300 +!define BS_TOP 0x00000400 +!define BS_BOTTOM 0x00000800 +!define BS_VCENTER 0x00000C00 +!define BS_PUSHLIKE 0x00001000 +!define BS_MULTILINE 0x00002000 +!define BS_NOTIFY 0x00004000 +!define BS_FLAT 0x00008000 +!define BS_RIGHTBUTTON ${BS_LEFTTEXT} + +!define CBS_SIMPLE 0x0001 +!define CBS_DROPDOWN 0x0002 +!define CBS_DROPDOWNLIST 0x0003 +!define CBS_OWNERDRAWFIXED 0x0010 +!define CBS_OWNERDRAWVARIABLE 0x0020 +!define CBS_AUTOHSCROLL 0x0040 +!define CBS_OEMCONVERT 0x0080 +!define CBS_SORT 0x0100 +!define CBS_HASSTRINGS 0x0200 +!define CBS_NOINTEGRALHEIGHT 0x0400 +!define CBS_DISABLENOSCROLL 0x0800 +!define CBS_UPPERCASE 0x2000 +!define CBS_LOWERCASE 0x4000 + +!define LBS_NOTIFY 0x0001 +!define LBS_SORT 0x0002 +!define LBS_NOREDRAW 0x0004 +!define LBS_MULTIPLESEL 0x0008 +!define LBS_OWNERDRAWFIXED 0x0010 +!define LBS_OWNERDRAWVARIABLE 0x0020 +!define LBS_HASSTRINGS 0x0040 +!define LBS_USETABSTOPS 0x0080 +!define LBS_NOINTEGRALHEIGHT 0x0100 +!define LBS_MULTICOLUMN 0x0200 +!define LBS_WANTKEYBOARDINPUT 0x0400 +!define LBS_EXTENDEDSEL 0x0800 +!define LBS_DISABLENOSCROLL 0x1000 +!define LBS_NODATA 0x2000 +!define LBS_NOSEL 0x4000 +!define LBS_COMBOBOX 0x8000 + +!define ACS_CENTER 0x0001 +!define ACS_TRANSPARENT 0x0002 ; The parent of the animation control must not have the WS_CLIPCHILDREN style +!define ACS_AUTOPLAY 0x0004 +!define ACS_TIMER 0x0008 ; < CC6 + +!define TBS_AUTOTICKS 0x0001 +!define TBS_VERT 0x0002 +!define TBS_HORZ 0x0000 +!define TBS_TOP 0x0004 +!define TBS_BOTTOM 0x0000 +!define TBS_LEFT 0x0004 +!define TBS_RIGHT 0x0000 +!define TBS_BOTH 0x0008 +!define TBS_NOTICKS 0x0010 +!define TBS_ENABLESELRANGE 0x0020 +!define TBS_FIXEDLENGTH 0x0040 +!define TBS_NOTHUMB 0x0080 +!define TBS_TOOLTIPS 0x0100 ; IE3 +!define TBS_REVERSED 0x0200 ; IE5 +!define TBS_DOWNISLEFT 0x0400 ; _WIN32_IE >= 0x0501 +!define TBS_NOTIFYBEFOREMOVE 0x0800 ; IE6? +!define TBS_TRANSPARENTBKGND 0x1000 ; Vista + +!define UDS_WRAP 0x0001 +!define UDS_SETBUDDYINT 0x0002 +!define UDS_ALIGNRIGHT 0x0004 +!define UDS_ALIGNLEFT 0x0008 +!define UDS_AUTOBUDDY 0x0010 +!define UDS_ARROWKEYS 0x0020 +!define UDS_HORZ 0x0040 +!define UDS_NOTHOUSANDS 0x0080 +!define UDS_HOTTRACK 0x0100 ; 98+ + +!define MCS_DAYSTATE 0x0001 +!define MCS_MULTISELECT 0x0002 +!define MCS_WEEKNUMBERS 0x0004 +!define MCS_NOTODAYCIRCLE 0x0008 +!define MCS_NOTODAY 0x0010 ; IE4+? +!define MCS_NOTRAILINGDATES 0x0040 ; Vista+ +!define MCS_SHORTDAYSOFWEEK 0x0080 ; Vista+ +!define MCS_NOSELCHANGEONNAV 0x0100 ; Vista+ + +!define DTS_UPDOWN 0x01 +!define DTS_SHOWNONE 0x02 +!define DTS_SHORTDATEFORMAT 0x00 +!define DTS_LONGDATEFORMAT 0x04 +!define DTS_SHORTDATECENTURYFORMAT 0x0C +!define DTS_TIMEFORMAT 0x09 +!define DTS_APPCANPARSE 0x10 +!define DTS_RIGHTALIGN 0x20 + +!define /ifndef LR_DEFAULTCOLOR 0x0000 +!define /ifndef LR_MONOCHROME 0x0001 +!define /ifndef LR_COLOR 0x0002 +!define /ifndef LR_COPYRETURNORG 0x0004 +!define /ifndef LR_COPYDELETEORG 0x0008 +!define /ifndef LR_LOADFROMFILE 0x0010 +!define /ifndef LR_LOADTRANSPARENT 0x0020 +!define /ifndef LR_DEFAULTSIZE 0x0040 +!define /ifndef LR_VGACOLOR 0x0080 +!define /ifndef LR_LOADMAP3DCOLORS 0x1000 +!define /ifndef LR_CREATEDIBSECTION 0x2000 +!define /ifndef LR_COPYFROMRESOURCE 0x4000 +!define /ifndef LR_SHARED 0x8000 + +!define /ifndef IMAGE_BITMAP 0 +!define /ifndef IMAGE_ICON 1 +!define /ifndef IMAGE_CURSOR 2 +!define /ifndef IMAGE_ENHMETAFILE 3 + +!define /ifndef GWL_STYLE -16 +!define /ifndef GWL_EXSTYLE -20 + +#define /ifndef ICC_LISTVIEW_CLASSES 0x0001 ; SysListView32 and SysHeader32 +#define /ifndef ICC_TREEVIEW_CLASSES 0x0002 ; SysTabControl32 and tooltips_class32 +#define /ifndef ICC_BAR_CLASSES 0x0004 ; ToolbarWindow32, msctls_statusbar32, msctls_trackbar32 and tooltips_class32 +#define /ifndef ICC_TAB_CLASSES 0x0008 ; SysTabControl32 and tooltips_class32 +#define /ifndef ICC_UPDOWN_CLASS 0x0010 ; msctls_updown32 +#define /ifndef ICC_PROGRESS_CLASS 0x0020 ; msctls_progress32 +#define /ifndef ICC_HOTKEY_CLASS 0x0040 ; msctls_hotkey32 +#define /ifndef ICC_ANIMATE_CLASS 0x0080 ; SysAnimate32 +#define /ifndef ICC_WIN95_CLASSES 0x00FF +!define /ifndef ICC_DATE_CLASSES 0x0100 ; CC4.70+ (NT4+/IE3.1+/Win95 OSR2) SysDateTimePick32, SysMonthCal32 and CC6.10+(Vista+) DropDown +!define /ifndef ICC_USEREX_CLASSES 0x0200 ; CC4.??+ (NT4+/IE3.?+/Win95 OSR2) ComboBoxEx32 +!define /ifndef ICC_COOL_CLASSES 0x0400 ; CC4.70+ (NT4+/IE3.1+/Win95 OSR2) ReBarWindow32 +!define /ifndef ICC_INTERNET_CLASSES 0x0800 ; CC4.71+ (IE4+) SysIPAddress32 +!define /ifndef ICC_PAGESCROLLER_CLASS 0x1000 ; CC4.71+ (IE4+) SysPager +!define /ifndef ICC_NATIVEFNTCTL_CLASS 0x2000 ; CC4.71+ (IE4+) NativeFontCtl +!define /ifndef ICC_STANDARD_CLASSES 0x4000 ; WinXP+ Button, Static, Edit, ListBox, ComboBox, ComboLBox, ScrollBar and ReaderModeCtl +!define /ifndef ICC_LINK_CLASS 0x8000 ; WinXP+ SysLink + + +!define DEFAULT_STYLES ${WS_CHILD}|${WS_VISIBLE}|${WS_CLIPSIBLINGS} + +!define __NSD_HLine_CLASS STATIC +!define __NSD_HLine_STYLE ${DEFAULT_STYLES}|${SS_ETCHEDHORZ}|${SS_SUNKEN} +!define __NSD_HLine_EXSTYLE ${WS_EX_TRANSPARENT} + +!define __NSD_VLine_CLASS STATIC +!define __NSD_VLine_STYLE ${DEFAULT_STYLES}|${SS_ETCHEDVERT}|${SS_SUNKEN} +!define __NSD_VLine_EXSTYLE ${WS_EX_TRANSPARENT} + +!define __NSD_Label_CLASS STATIC +!define __NSD_Label_STYLE ${DEFAULT_STYLES}|${SS_NOTIFY} +!define __NSD_Label_EXSTYLE ${WS_EX_TRANSPARENT} + +!define __NSD_Icon_CLASS STATIC +!define __NSD_Icon_STYLE ${DEFAULT_STYLES}|${SS_ICON}|${SS_NOTIFY} +!define __NSD_Icon_EXSTYLE 0 + +!define __NSD_Bitmap_CLASS STATIC +!define __NSD_Bitmap_STYLE ${DEFAULT_STYLES}|${SS_BITMAP}|${SS_NOTIFY} +!define __NSD_Bitmap_EXSTYLE 0 + +!define __NSD_BrowseButton_CLASS BUTTON +!define __NSD_BrowseButton_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_BrowseButton_EXSTYLE 0 + +!define __NSD_Link_CLASS LINK +!define __NSD_Link_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_OWNERDRAW} +!define __NSD_Link_EXSTYLE 0 + +!define __NSD_Button_CLASS BUTTON +!define __NSD_Button_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_Button_EXSTYLE 0 + +!define __NSD_GroupBox_CLASS BUTTON +!define __NSD_GroupBox_STYLE ${DEFAULT_STYLES}|${BS_GROUPBOX} +!define __NSD_GroupBox_EXSTYLE ${WS_EX_TRANSPARENT} + +!define __NSD_CheckBox_CLASS BUTTON +!define __NSD_CheckBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTOCHECKBOX}|${BS_MULTILINE} +!define __NSD_CheckBox_EXSTYLE 0 + +!define __NSD_RadioButton_CLASS BUTTON +!define __NSD_RadioButton_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTORADIOBUTTON}|${BS_MULTILINE} +!define __NSD_RadioButton_EXSTYLE 0 + +!define __NSD_FirstRadioButton_CLASS ${__NSD_RadioButton_CLASS} +!define __NSD_FirstRadioButton_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_GROUP}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTORADIOBUTTON}|${BS_MULTILINE} +!define __NSD_FirstRadioButton_EXSTYLE ${__NSD_RadioButton_EXSTYLE} + +!define __NSD_AdditionalRadioButton_CLASS ${__NSD_RadioButton_CLASS} +!define __NSD_AdditionalRadioButton_STYLE ${DEFAULT_STYLES}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTORADIOBUTTON}|${BS_MULTILINE} +!define __NSD_AdditionalRadioButton_EXSTYLE ${__NSD_RadioButton_EXSTYLE} + +!define __NSD_Text_CLASS EDIT +!define __NSD_Text_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL} +!define __NSD_Text_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_MLText_CLASS EDIT +!define __NSD_MLText_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_AUTOVSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}|${WS_HSCROLL}|${WS_VSCROLL} +!define __NSD_MLText_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_Password_CLASS EDIT +!define __NSD_Password_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_PASSWORD} +!define __NSD_Password_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_Number_CLASS EDIT +!define __NSD_Number_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_NUMBER} +!define __NSD_Number_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_FileRequest_CLASS EDIT +!define __NSD_FileRequest_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL} +!define __NSD_FileRequest_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_DirRequest_CLASS EDIT +!define __NSD_DirRequest_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL} +!define __NSD_DirRequest_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_RichEdit_CLASS_10 "RICHEDIT" ; 1.0 (Riched32.dll) Win95/NT4 +!define __NSD_RichEdit_CLASS_20A "RICHEDIT20A" ; 2.0 (Riched20.dll) Win98/NT4 (NSIS makes sure this is registered even on Windows 95) +!define __NSD_RichEdit_CLASS_20W "RICHEDIT20W" +!define __NSD_RichEdit_CLASS_41W "RICHEDIT50W" ; 4.1 (MsftEdit.DLL) WinXP.SP1 +!ifdef NSIS_UNICODE +!define /ifndef __NSD_RichEdit_CLASS ${__NSD_RichEdit_CLASS_20W} +!else +!define /ifndef __NSD_RichEdit_CLASS ${__NSD_RichEdit_CLASS_20A} +!endif +!define __NSD_RichEdit_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_AUTOVSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}|${ES_SAVESEL}|${WS_HSCROLL}|${WS_VSCROLL} +!define __NSD_RichEdit_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_ComboBox_CLASS COMBOBOX +!define __NSD_ComboBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${WS_CLIPCHILDREN}|${CBS_AUTOHSCROLL}|${CBS_HASSTRINGS}|${CBS_DROPDOWN} +!define __NSD_ComboBox_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_DropList_CLASS COMBOBOX +!define __NSD_DropList_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${WS_CLIPCHILDREN}|${CBS_AUTOHSCROLL}|${CBS_HASSTRINGS}|${CBS_DROPDOWNLIST} +!define __NSD_DropList_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_ListBox_CLASS LISTBOX +!define __NSD_ListBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${LBS_DISABLENOSCROLL}|${LBS_HASSTRINGS}|${LBS_NOINTEGRALHEIGHT}|${LBS_NOTIFY} +!define __NSD_ListBox_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_SortedListBox_CLASS LISTBOX +!define __NSD_SortedListBox_STYLE ${__NSD_ListBox_STYLE}|${LBS_SORT} +!define __NSD_SortedListBox_EXSTYLE ${__NSD_ListBox_EXSTYLE} + +!define __NSD_ProgressBar_CLASS msctls_progress32 +!define __NSD_ProgressBar_STYLE ${DEFAULT_STYLES} +!define __NSD_ProgressBar_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_Animation_CLASS SysAnimate32 +!define __NSD_Animation_STYLE ${DEFAULT_STYLES}|${ACS_TRANSPARENT}|${ACS_AUTOPLAY} +!define __NSD_Animation_EXSTYLE 0 + +!define __NSD_HTrackBar_CLASS msctls_trackbar32 +!define __NSD_HTrackBar_STYLE ${DEFAULT_STYLES}|${TBS_HORZ}|${TBS_AUTOTICKS}|${TBS_TOOLTIPS} +!define __NSD_HTrackBar_EXSTYLE 0 + +!define __NSD_VTrackBar_CLASS msctls_trackbar32 +!define __NSD_VTrackBar_STYLE ${DEFAULT_STYLES}|${TBS_VERT}|${TBS_AUTOTICKS}|${TBS_TOOLTIPS} +!define __NSD_VTrackBar_EXSTYLE 0 + +!define __NSD_UpDown_CLASS msctls_updown32 +!define __NSD_UpDown_STYLE ${DEFAULT_STYLES}|${UDS_SETBUDDYINT}|${UDS_ARROWKEYS}|${UDS_NOTHOUSANDS}|${UDS_ALIGNRIGHT} +!define __NSD_UpDown_EXSTYLE 0 + +!define __NSD_AutoUpDown_CLASS msctls_updown32 +!define __NSD_AutoUpDown_STYLE ${__NSD_UpDown_STYLE}|${UDS_AUTOBUDDY} +!define __NSD_AutoUpDown_EXSTYLE ${__NSD_UpDown_EXSTYLE} + +!define __NSD_HotKey_CLASS msctls_hotkey32 +!define __NSD_HotKey_STYLE ${DEFAULT_STYLES} +!define __NSD_HotKey_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_Calendar_CLASS SysMonthCal32 +!define __NSD_Calendar_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_Calendar_EXSTYLE 0 + +!define __NSD_DatePicker_CLASS SysDateTimePick32 +!define __NSD_DatePicker_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_DatePicker_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_TimePicker_CLASS SysDateTimePick32 +!define __NSD_TimePicker_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${DTS_TIMEFORMAT} +!define __NSD_TimePicker_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + +!define __NSD_IPAddress_CLASS SysIPAddress32 ; IE4+/CC4.71+ +!define __NSD_IPAddress_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_IPAddress_EXSTYLE 0 + +!define __NSD_NetAddress_CLASS msctls_netaddress ; Vista+ +!define __NSD_NetAddress_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP} +!define __NSD_NetAddress_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + + +!macro __NSD_DefineControl NAME + !define NSD_Create${NAME} "nsDialogs::CreateControl ${__NSD_${Name}_CLASS} ${__NSD_${Name}_STYLE} ${__NSD_${Name}_EXSTYLE}" +!macroend +!insertmacro __NSD_DefineControl HLine +!insertmacro __NSD_DefineControl VLine +!insertmacro __NSD_DefineControl Label +!insertmacro __NSD_DefineControl Icon +!insertmacro __NSD_DefineControl Bitmap +!insertmacro __NSD_DefineControl BrowseButton +!insertmacro __NSD_DefineControl Link +!insertmacro __NSD_DefineControl Button +!insertmacro __NSD_DefineControl GroupBox +!insertmacro __NSD_DefineControl CheckBox +!insertmacro __NSD_DefineControl RadioButton +!insertmacro __NSD_DefineControl FirstRadioButton +!insertmacro __NSD_DefineControl AdditionalRadioButton +!insertmacro __NSD_DefineControl Text +!insertmacro __NSD_DefineControl MLText +!insertmacro __NSD_DefineControl Password +!insertmacro __NSD_DefineControl Number +!insertmacro __NSD_DefineControl FileRequest +!insertmacro __NSD_DefineControl DirRequest +!insertmacro __NSD_DefineControl RichEdit +!insertmacro __NSD_DefineControl ComboBox +!insertmacro __NSD_DefineControl DropList +!insertmacro __NSD_DefineControl ListBox +!insertmacro __NSD_DefineControl SortedListBox +!insertmacro __NSD_DefineControl ProgressBar +!insertmacro __NSD_DefineControl Animation +!insertmacro __NSD_DefineControl HTrackBar +!insertmacro __NSD_DefineControl VTrackBar +!insertmacro __NSD_DefineControl UpDown +!insertmacro __NSD_DefineControl AutoUpDown +!insertmacro __NSD_DefineControl HotKey +!insertmacro __NSD_DefineControl Calendar +!insertmacro __NSD_DefineControl DatePicker +!insertmacro __NSD_DefineControl TimePicker +!insertmacro __NSD_DefineControl IPAddress +!insertmacro __NSD_DefineControl NetAddress + + +!macro __NSD_OnControlEvent EVENT HWND FUNCTION + Push $0 + Push $1 + + StrCpy $1 "${HWND}" + + GetFunctionAddress $0 "${FUNCTION}" + nsDialogs::On${EVENT} $1 $0 + + Pop $1 + Pop $0 +!macroend + +!macro __NSD_DefineControlCallback EVENT + !define NSD_On${EVENT} `!insertmacro __NSD_OnControlEvent ${EVENT} ` +!macroend + +!macro __NSD_OnDialogEvent EVENT FUNCTION + Push $0 + + GetFunctionAddress $0 "${FUNCTION}" + nsDialogs::On${EVENT} $0 + + Pop $0 +!macroend + +!macro __NSD_DefineDialogCallback EVENT + !define NSD_On${EVENT} `!insertmacro __NSD_OnDialogEvent ${EVENT} ` +!macroend +!insertmacro __NSD_DefineControlCallback Click +!insertmacro __NSD_DefineControlCallback Change +!insertmacro __NSD_DefineControlCallback Notify +!insertmacro __NSD_DefineDialogCallback Back + +!define NSD_Return "!insertmacro NSD_Return " +!macro NSD_Return val +StrCpy $_OUTDIR ${val} +SetSilent silent +Return +!macroend + + +!define __NSD_MkCtlCmd "!insertmacro __NSD_MkCtlCmd " +!macro __NSD_MkCtlCmd msg wp lp hCtl +SendMessage ${hCtl} ${${msg}} ${wp} ${lp} +!macroend +!define __NSD_MkCtlCmd_WP "!insertmacro __NSD_MkCtlCmd_WP " +!macro __NSD_MkCtlCmd_WP msg lp hCtl wp +SendMessage ${hCtl} ${${msg}} ${wp} ${lp} +!macroend +!define __NSD_MkCtlCmd_LP "!insertmacro __NSD_MkCtlCmd_LP " +!macro __NSD_MkCtlCmd_LP msg wp hCtl lp +SendMessage ${hCtl} ${${msg}} ${wp} ${lp} +!macroend +!define __NSD_MkCtlCmd_WPLP "!insertmacro __NSD_MkCtlCmd_WPLP " +!macro __NSD_MkCtlCmd_WPLP msg hCtl wp lp +SendMessage ${hCtl} ${${msg}} ${wp} ${lp} +!macroend +!define __NSD_MkCtlCmd_RV "!insertmacro __NSD_MkCtlCmd_RV " +!macro __NSD_MkCtlCmd_RV msg wp lp hCtl VAR +SendMessage ${hCtl} ${${msg}} ${wp} ${lp} ${VAR} +!macroend + + +!define NSD_InitCommonControlsEx "!insertmacro __NSD_InitCommonControlsEx " +!macro __NSD_InitCommonControlsEx ICC +!pragma warning push +!pragma warning disable 7070 ; Invalid number +!if ${ICC} <> 0 +!define /ReDef /IntFmt NSD_InitCommonControlsEx_TEMP "0x%X" ${ICC} +System::Call 'COMCTL32::InitCommonControlsEx(*l${NSD_InitCommonControlsEx_TEMP}00000008)' +!undef NSD_InitCommonControlsEx_TEMP +!else +System::Int64Op ${ICC} << 32 +System::Int64Op 8 | +System::Call 'COMCTL32::InitCommonControlsEx(*ls)' ; INITCOMMONCONTROLSEX as UINT64 +!endif +!pragma warning pop +!macroend +!define NSD_InitCommonControl_IPAddress `${NSD_InitCommonControlsEx} ${ICC_INTERNET_CLASSES}` +!define NSD_InitCommonControl_NetAddress `System::Call SHELL32::InitNetworkAddressControl()i` +!define NSD_InitCommonControl_SysLink `${NSD_InitCommonControlsEx} ${ICC_LINK_CLASS}` + + +!define NSD_CreateTimer `!insertmacro _NSD_CreateTimer ` +!macro _NSD_CreateTimer FUNCTION INTERVAL + Push $0 + + GetFunctionAddress $0 "${FUNCTION}" + nsDialogs::CreateTimer $0 "${INTERVAL}" + + Pop $0 +!macroend + + +!define NSD_KillTimer `!insertmacro _NSD_KillTimer ` +!macro _NSD_KillTimer FUNCTION + Push $0 + + GetFunctionAddress $0 "${FUNCTION}" + nsDialogs::KillTimer $0 + + Pop $0 +!macroend + + +!define NSD_AddStyle "!insertmacro _NSD_GWLAddFlags ${GWL_STYLE} " +!define NSD_AddExStyle "!insertmacro _NSD_GWLAddFlags ${GWL_EXSTYLE} " +!macro _NSD_GWLAddFlags GWL HWND DATA + System::Call "user32::GetWindowLong(p${HWND},i${GWL})p.s" + System::Int64Op "${DATA}" | + System::Call "user32::SetWindowLong(p${HWND},p${GWL},ps)" +!macroend + +!define NSD_RemoveStyle "!insertmacro _NSD_GWLRemoveFlags ${GWL_STYLE} " +!define NSD_RemoveExStyle "!insertmacro _NSD_GWLRemoveFlags ${GWL_EXSTYLE} " +!macro _NSD_GWLRemoveFlags GWL HWND DATA +System::Call "user32::GetWindowLong(p${HWND},i${GWL})p.s" +System::Int64Op "${DATA}" ~ & ; Perform ~ and prepare the stack for & +System::Int64Op ; Perform & +System::Call "user32::SetWindowLong(p${HWND},i${GWL},ps)" +!macroend + +!define NSD_GetStyle "!insertmacro _NSD_GWLGetFlags ${GWL_STYLE} " +!define NSD_GetExStyle "!insertmacro _NSD_GWLGetFlags ${GWL_EXSTYLE} " +!macro _NSD_GWLGetFlags GWL HWND RET +System::Call "user32::GetWindowLong(p${HWND},i${GWL})p.s" +Pop ${RET} +!macroend + +!macro __NSD_GetStyleBit GWL BIT HWND RET +!insertmacro _NSD_GWLGetFlags ${GWL} ${HWND} ${RET} +IntOp ${RET} ${RET} & ${BIT} +!macroend + + +!define NSD_SetFocus `!insertmacro __NSD_SetFocus ` +!macro __NSD_SetFocus HWND + System::Call "user32::SetFocus(p${HWND})" +!macroend + + +!define NSD_GetText "!insertmacro __NSD_GetText " +!macro __NSD_GetText CONTROL VAR + System::Call user32::GetWindowText(p${CONTROL},t.s,i${NSIS_MAX_STRLEN}) + Pop ${VAR} +!macroend + + +!define NSD_SetText "!insertmacro __NSD_SetText " +!macro __NSD_SetText CONTROL TEXT + SendMessage ${CONTROL} ${WM_SETTEXT} 0 `STR:${TEXT}` +!macroend + + +### Edit ### + +!define NSD_Edit_GetTextLimit `${__NSD_MkCtlCmd_RV} EM_GETLIMITTEXT 0 0 ` +!define NSD_Edit_SetTextLimit `${__NSD_MkCtlCmd_WP} EM_SETLIMITTEXT 0 ` +!define NSD_Edit_SetPasswordChar `${__NSD_MkCtlCmd_WP} EM_SETPASSWORDCHAR 0 ` +!define NSD_Edit_GetReadOnly `!insertmacro __NSD_GetStyleBit ${GWL_STYLE} ${ES_READONLY} ` ; Non-zero if read-only +!define NSD_Edit_SetReadOnly `${__NSD_MkCtlCmd_WP} EM_SETREADONLY 0 ` ; Toggles the ES_READONLY style +!define NSD_Edit_GetModify `${__NSD_MkCtlCmd_RV} EM_GETMODIFY 0 0 ` +!define NSD_Edit_SetModify `${__NSD_MkCtlCmd_WP} EM_SETMODIFY 0 ` +!define NSD_Edit_EmptyUndoBuffer `${__NSD_MkCtlCmd} EM_EMPTYUNDOBUFFER 0 0 ` +!define NSD_Edit_CanUndo `${__NSD_MkCtlCmd_RV} EM_CANUNDO 0 0 ` +!define NSD_Edit_ScrollCaret `${__NSD_MkCtlCmd} EM_SCROLLCARET 0 0 ` +!define NSD_Edit_LineScroll `${__NSD_MkCtlCmd_WPLP} EM_LINESCROLL ` +!define NSD_Edit_SetSel `${__NSD_MkCtlCmd_WPLP} EM_SETSEL ` ; WP:Start LP:End + +!define NSD_Edit_SetCueBannerText "!insertmacro __NSD_Edit_SetCueBannerText " ; CC6+ +!macro __NSD_Edit_SetCueBannerText CONTROL SHOWWHENFOCUSED TEXT +!if ${NSIS_CHAR_SIZE} > 1 + SendMessage ${CONTROL} ${EM_SETCUEBANNER} ${SHOWWHENFOCUSED} `STR:${TEXT}` +!else + System::Call 'USER32::SendMessage(p${CONTROL},i${EM_SETCUEBANNER},p${SHOWWHENFOCUSED},ws)' `${TEXT}` ; Must be PWSTR +!endif +!macroend + +!define NSD_Edit_GetLineCount `${__NSD_MkCtlCmd_RV} EM_GETLINECOUNT 0 0 ` +!define NSD_Edit_GetLine "!insertmacro __NSD_Edit_GetLine " +!macro __NSD_Edit_GetLine CONTROL LINEINDEX OUTPUT + System::Call '*(&i2 ${NSIS_MAX_STRLEN},&t${NSIS_MAX_STRLEN})p.s' + System::Call 'USER32::SendMessage(p${CONTROL},i${EM_GETLINE},p${LINEINDEX},pss)' + System::Call 'KERNEL32::lstrcpyn(t.s,pss,i${NSIS_MAX_STRLEN})' + Pop ${OUTPUT} + System::Free +!macroend + +!define NSD_SetTextLimit `${NSD_Edit_SetTextLimit} ` ; Legacy alias + + +### RichEdit ### + +!define NSD_RichEd_SetTextLimit `${__NSD_MkCtlCmd_LP} EM_EXLIMITTEXT 0 ` +!define NSD_RichEd_GetEventMask `${__NSD_MkCtlCmd_RV} EM_GETEVENTMASK 0 0 ` +!define NSD_RichEd_SetEventMask `${__NSD_MkCtlCmd_LP} EM_SETEVENTMASK 0 ` ; LP:ENM_* +!define NSD_RichEd_SetSystemBackgroundColor `${__NSD_MkCtlCmd} EM_SETBKGNDCOLOR 1 0 ` ; COLOR_WINDOW +!define NSD_RichEd_SetCustomBackgroundColor `${__NSD_MkCtlCmd_LP} EM_SETBKGNDCOLOR 0 ` ; LP:COLORREF +!define NSD_RichEd_SetHideSelection `${__NSD_MkCtlCmd_WP} EM_HIDESELECTION 0 ` ; WP(BOOL):HideSelWithoutFocus (Toggles ES_NOHIDESEL & TXTBIT_HIDESELECTION) + + +### CheckBox ### + +!define NSD_GetState `!insertmacro __NSD_GetState ` +!macro __NSD_GetState CONTROL VAR + SendMessage ${CONTROL} ${BM_GETCHECK} 0 0 ${VAR} +!macroend + + +!define NSD_SetState `!insertmacro __NSD_SetState ` +!macro __NSD_SetState CONTROL STATE + SendMessage ${CONTROL} ${BM_SETCHECK} ${STATE} 0 +!macroend + +!define NSD_Check `!insertmacro __NSD_Check ` +!macro __NSD_Check CONTROL + ${NSD_SetState} ${CONTROL} ${BST_CHECKED} +!macroend + + +!define NSD_Uncheck `!insertmacro __NSD_Uncheck ` +!macro __NSD_Uncheck CONTROL + ${NSD_SetState} ${CONTROL} ${BST_UNCHECKED} +!macroend + +!define NSD_GetChecked `!insertmacro __NSD_GetState ` +!define NSD_SetChecked `!insertmacro __NSD_SetState ` + + +### ComboBox ### + +!define NSD_CB_AddString "!insertmacro _NSD_CB_AddString " +!macro _NSD_CB_AddString CONTROL STRING + SendMessage ${CONTROL} ${CB_ADDSTRING} 0 `STR:${STRING}` +!macroend + + +!define NSD_CB_InsertString "!insertmacro _NSD_CB_InsertString " +!macro _NSD_CB_InsertString CONTROL INDEX STRING +SendMessage ${CONTROL} ${CB_INSERTSTRING} ${INDEX} `STR:${STRING}` +!macroend + +!define NSD_CB_PrependString "!insertmacro _NSD_CB_PrependString " +!macro _NSD_CB_PrependString CONTROL STRING +SendMessage ${CONTROL} ${CB_INSERTSTRING} 0 `STR:${STRING}` +!macroend + +!define NSD_CB_AppendString "!insertmacro _NSD_CB_AppendString " +!macro _NSD_CB_AppendString CONTROL STRING +SendMessage ${CONTROL} ${CB_INSERTSTRING} -1 `STR:${STRING}` +!macroend + + +!define NSD_CB_SelectString "!insertmacro _NSD_CB_SelectString " +!macro _NSD_CB_SelectString CONTROL STRING + SendMessage ${CONTROL} ${CB_SELECTSTRING} -1 `STR:${STRING}` +!macroend + + +!define NSD_CB_GetSelectionIndex `!insertmacro __NSD_CB_GetSelectionIndex ` +!macro __NSD_CB_GetSelectionIndex CONTROL VAR + SendMessage ${CONTROL} ${CB_GETCURSEL} 0 0 ${VAR} +!macroend + + +!define NSD_CB_SetSelectionIndex `!insertmacro __NSD_CB_SetSelectionIndex ` +!macro __NSD_CB_SetSelectionIndex CONTROL INDEX + SendMessage ${CONTROL} ${CB_SETCURSEL} ${INDEX} 0 +!macroend + + +!define NSD_CB_GetItemData `!insertmacro __NSD_CB_GetItemData ` +!macro __NSD_CB_GetItemData CONTROL INDEX VAR +SendMessage ${CONTROL} ${CB_GETITEMDATA} ${INDEX} 0 ${VAR} +!macroend +!define NSD_CB_SetItemData `${__NSD_MkCtlCmd_WPLP} CB_SETITEMDATA ` ; Index Data + + +!define NSD_CB_DelItem `${__NSD_MkCtlCmd_WP} CB_DELETESTRING 0 ` +!define NSD_CB_LimitText `${__NSD_MkCtlCmd_WP} CB_LIMITTEXT 0 ` +!define /IfNDef NSD_CB_Clear `${__NSD_MkCtlCmd} CB_RESETCONTENT 0 0 ` +!define /IfNDef NSD_CB_GetCount `${__NSD_MkCtlCmd_RV} CB_GETCOUNT 0 0 ` +!ifndef NSD_CB_DelString +!define NSD_CB_DelString `!insertmacro __NSD_CB_DelString ` +!macro __NSD_CB_DelString CONTROL STRING + System::Call 'USER32::SendMessage(p${CONTROL},i${CB_FINDSTRINGEXACT},p-1,ts)p.s' `${STRING}` + System::Call 'USER32::SendMessage(p${CONTROL},i${CB_DELETESTRING},ps,p0)' +!macroend +!endif +;define /IfNDef NSD_CB_GetSelection + + +### ListBox ### + +!define NSD_LB_AddString "!insertmacro _NSD_LB_AddString " +!macro _NSD_LB_AddString CONTROL STRING + SendMessage ${CONTROL} ${LB_ADDSTRING} 0 `STR:${STRING}` +!macroend + + +!define NSD_LB_InsertString "!insertmacro _NSD_LB_InsertString " +!macro _NSD_LB_InsertString CONTROL INDEX STRING +SendMessage ${CONTROL} ${LB_INSERTSTRING} ${INDEX} `STR:${STRING}` +!macroend + +!define NSD_LB_PrependString "!insertmacro _NSD_LB_PrependString " +!macro _NSD_LB_PrependString CONTROL STRING +SendMessage ${CONTROL} ${LB_INSERTSTRING} 0 `STR:${STRING}` +!macroend + +!define NSD_LB_AppendString "!insertmacro _NSD_LB_AppendString " +!macro _NSD_LB_AppendString CONTROL STRING +SendMessage ${CONTROL} ${LB_INSERTSTRING} -1 `STR:${STRING}` +!macroend + + +!define NSD_LB_DelString `!insertmacro __NSD_LB_DelString ` +!macro __NSD_LB_DelString CONTROL STRING + System::Call 'USER32::SendMessage(p${CONTROL},i${LB_FINDSTRINGEXACT},p-1,ts)p.s' `${STRING}` + System::Call 'USER32::SendMessage(p${CONTROL},i${LB_DELETESTRING},ps,p0)' +!macroend + + +!define NSD_LB_DelItem "!insertmacro __NSD_LB_DelItem " +!macro __NSD_LB_DelItem CONTROL INDEX + SendMessage ${CONTROL} ${LB_DELETESTRING} ${INDEX} 0 +!macroend + + +!define NSD_LB_Clear `${__NSD_MkCtlCmd} LB_RESETCONTENT 0 0 ` + + +!define NSD_LB_GetCount `!insertmacro __NSD_LB_GetCount ` +!macro __NSD_LB_GetCount CONTROL VAR + SendMessage ${CONTROL} ${LB_GETCOUNT} 0 0 ${VAR} +!macroend + + +!define NSD_LB_SelectString "!insertmacro _NSD_LB_SelectString " +!macro _NSD_LB_SelectString CONTROL STRING + SendMessage ${CONTROL} ${LB_SELECTSTRING} -1 `STR:${STRING}` +!macroend + + +!define NSD_LB_GetSelection `!insertmacro __NSD_LB_GetSelection ` +!macro __NSD_LB_GetSelection CONTROL VAR + SendMessage ${CONTROL} ${LB_GETCURSEL} 0 0 ${VAR} + System::Call 'user32::SendMessage(p ${CONTROL}, i ${LB_GETTEXT}, p ${VAR}, t .s)' + Pop ${VAR} +!macroend + + +!define NSD_LB_GetSelectionIndex `!insertmacro __NSD_LB_GetSelectionIndex ` +!macro __NSD_LB_GetSelectionIndex CONTROL VAR + SendMessage ${CONTROL} ${LB_GETCURSEL} 0 0 ${VAR} +!macroend + + +!define NSD_LB_SetSelectionIndex `!insertmacro __NSD_LB_SetSelectionIndex ` +!macro __NSD_LB_SetSelectionIndex CONTROL INDEX + SendMessage ${CONTROL} ${LB_SETCURSEL} ${INDEX} 0 +!macroend + + +!define NSD_LB_GetSelectionCount `!insertmacro __NSD_LB_GetSelectionCount ` +!macro __NSD_LB_GetSelectionCount CONTROL VAR + SendMessage ${CONTROL} ${LB_GETSELCOUNT} 0 0 ${VAR} +!macroend + + +!define NSD_LB_GetItemText `!insertmacro __NSD_LB_GetItemText ` +!macro __NSD_LB_GetItemText CONTROL INDEX VAR + System::Call 'user32::SendMessage(p${CONTROL}, i${LB_GETTEXT}, p${INDEX}, t.s)' + Pop ${VAR} +!macroend + + +!define NSD_LB_GetItemData `!insertmacro __NSD_LB_GetItemData ` +!macro __NSD_LB_GetItemData CONTROL INDEX VAR +SendMessage ${CONTROL} ${LB_GETITEMDATA} ${INDEX} 0 ${VAR} +!macroend +!define NSD_LB_SetItemData `${__NSD_MkCtlCmd_WPLP} LB_SETITEMDATA ` ; Index Data + + +!define NSD_LB_FindStringPrefix `!insertmacro __NSD_LB_FindStringPrefix ` +!macro __NSD_LB_FindStringPrefix CONTROL STRING VAR + SendMessage ${CONTROL} ${LB_FINDSTRING} -1 `STR:${STRING}` ${VAR} +!macroend + + +!define NSD_LB_FindStringExact `!insertmacro __NSD_LB_FindStringExact ` +!macro __NSD_LB_FindStringExact CONTROL STRING VAR + SendMessage ${CONTROL} ${LB_FINDSTRINGEXACT} -1 `STR:${STRING}` ${VAR} +!macroend + + +### ProgressBar ### + +!define NSD_ProgressBar_SetPos `${__NSD_MkCtlCmd_WP} PBM_SETPOS 0 ` +!define NSD_ProgressBar_SetStep `${__NSD_MkCtlCmd_WP} PBM_SETSTEP 0 ` +!define NSD_ProgressBar_StepIt `${__NSD_MkCtlCmd} PBM_STEPIT 0 0 ` +!define NSD_ProgressBar_AdvanceBy `${__NSD_MkCtlCmd_WP} PBM_DELTAPOS 0 ` +!define NSD_ProgressBar_SetPackedRange `${__NSD_MkCtlCmd_LP} PBM_SETRANGE 0 ` ; LP(DWORD):MAKELONG(min,max) +!define NSD_ProgressBar_SetRange32 `${__NSD_MkCtlCmd_WPLP} PBM_SETRANGE32 ` ; [IE3+] WP:min LP:max +!define NSD_ProgressBar_GetPos `${__NSD_MkCtlCmd_RV} PBM_GETPOS 0 0 ` ; [IE3+] + + +### Animation ### + +!define NSD_Anim_Close `${__NSD_MkCtlCmd} ACM_OPEN 0 0 ` +!define NSD_Anim_Play `${__NSD_MkCtlCmd} ACM_PLAY -1 0xFFFF0000 ` +!define NSD_Anim_PlayLoops `${__NSD_MkCtlCmd_WP} ACM_PLAY 0xFFFF0000 ` ; WP(UINT16):LoopCount +!define NSD_Anim_Stop `${__NSD_MkCtlCmd} ACM_STOP 0 0 ` +!define NSD_Anim_IsPlaying `${__NSD_MkCtlCmd_RV} ACM_ISPLAYING 0 0 ` + +!define NSD_Anim_OpenFile `!insertmacro __NSD_Anim_OpenFile ` +!macro __NSD_Anim_OpenFile CONTROL PATH + SendMessage ${CONTROL} ${ACM_OPEN} 0 "STR:${PATH}" +!macroend + +!define NSD_Anim_OpenResource `!insertmacro __NSD_Anim_OpenResource ` +!macro __NSD_Anim_OpenResource CONTROL HINSTANCE_CC471 RESID + SendMessage ${CONTROL} ${ACM_OPEN} "${HINSTANCE_CC471}" "${RESID}" +!macroend + + +### TrackBar ### + +!define NSD_TrackBar_GetPos `${__NSD_MkCtlCmd_RV} TBM_GETPOS 0 0 ` +!define NSD_TrackBar_SetPos `${__NSD_MkCtlCmd_LP} TBM_SETPOS 1 ` +!define NSD_TrackBar_SetRangeMin `${__NSD_MkCtlCmd_LP} TBM_SETRANGEMIN 1 ` +!define NSD_TrackBar_SetRangeMax `${__NSD_MkCtlCmd_LP} TBM_SETRANGEMAX 1 ` +!define NSD_TrackBar_GetLineSize `${__NSD_MkCtlCmd_RV} TBM_GETLINESIZE 0 0 ` +!define NSD_TrackBar_SetLineSize `${__NSD_MkCtlCmd_LP} TBM_SETLINESIZE 0 ` +!define NSD_TrackBar_GetPageSize `${__NSD_MkCtlCmd_RV} TBM_GETPAGESIZE 0 0 ` +!define NSD_TrackBar_SetPageSize `${__NSD_MkCtlCmd_LP} TBM_SETPAGESIZE 0 ` +!define NSD_TrackBar_ClearTics `${__NSD_MkCtlCmd} TBM_CLEARTICS 0 0 ` +!define NSD_TrackBar_GetNumTics `${__NSD_MkCtlCmd_RV} TBM_GETNUMTICS 0 0 ` +!define NSD_TrackBar_SetTic `${__NSD_MkCtlCmd_LP} TBM_SETTIC 0 ` +!define NSD_TrackBar_SetTicFreq `${__NSD_MkCtlCmd_WP} TBM_SETTICFREQ 0 ` +!define NSD_TrackBar_GetThumbLength `${__NSD_MkCtlCmd_RV} TBM_GETTHUMBLENGTH 0 0 ` +!define NSD_TrackBar_SetBuddy `${__NSD_MkCtlCmd_WPLP} TBM_SETBUDDY ` ; WP(BOOL):Left/Right LP:HWND + + +### UpDown ### + +!define NSD_UD_SetBuddy `${__NSD_MkCtlCmd_WP} UDM_SETBUDDY 0 ` +!define NSD_UD_GetPos `${__NSD_MkCtlCmd_RV} UDM_GETPOS 0 0 ` +!define NSD_UD_SetPos `${__NSD_MkCtlCmd_LP} UDM_SETPOS 0 ` +!define NSD_UD_GetPackedRange `${__NSD_MkCtlCmd_RV} UDM_GETRANGE 0 0 ` +!define NSD_UD_SetPackedRange `${__NSD_MkCtlCmd_LP} UDM_SETRANGE 0 ` ; LP(DWORD):MAKELONG(min,max) +!define NSD_UD_GetPos32 `${__NSD_MkCtlCmd_RV} UDM_GETPOS32 0 0 ` +!define NSD_UD_SetPos32 `${__NSD_MkCtlCmd_LP} UDM_SETPOS32 0 ` +!define NSD_UD_SetRange32 `${__NSD_MkCtlCmd_WPLP} UDM_SETRANGE32 ` ; WP(INT32):min LP(INT32):max + +!define NSD_UD_GetRange32 `!insertmacro __NSD_UD_GetRange32 ` +!macro __NSD_UD_GetRange32 CONTROL OUTLO OUTHI + System::Call 'USER32::SendMessage(p${CONTROL},i${UDM_GETRANGE32},*i.s,*i.s)' + Pop ${OUTLO} + Pop ${OUTHI} +!macroend + +!define NSD_UD_SetStaticRange `!insertmacro __NSD_UD_SetStaticRange ` +!macro __NSD_UD_SetStaticRange CONTROL MI MA + !define /redef /math MI ${MI} << 16 + !define /redef /math MA ${MA} & 0xffff + !define /redef /math MA ${MI} | ${MA} + SendMessage ${CONTROL} ${UDM_SETRANGE} 0 ${MA} +!macroend + + +### HotKey ### + +!define NSD_HK_GetHotKey `${__NSD_MkCtlCmd_RV} HKM_GETHOTKEY 0 0 ` ; RV(WORD):MAKEWORD(VK,HOTKEYF) +!define NSD_HK_SetHotKey `${__NSD_MkCtlCmd_WP} HKM_SETHOTKEY 0 ` +!define NSD_HK_SetRules `${__NSD_MkCtlCmd_WPLP} HKM_SETRULES ` + + +### IP Address ### + +!define NSD_IPAddress_Clear `${__NSD_MkCtlCmd} IPM_CLEARADDRESS 0 0 ` +!define NSD_IPAddress_SetPackedIPv4 `${__NSD_MkCtlCmd_LP} IPM_SETADDRESS 0 ` +!define NSD_IPAddress_IsBlank `${__NSD_MkCtlCmd_RV} IPM_ISBLANK 0 0 ` + +!define NSD_IPAddress_GetPackedIPv4 `!insertmacro __NSD_IPAddress_GetPackedIPv4 ` +!macro __NSD_IPAddress_GetPackedIPv4 CONTROL VAR +System::Call 'USER32::SendMessage(p${CONTROL},i${IPM_GETADDRESS},p0,*i0s)' +Pop ${VAR} +!macroend + + +### Date ### +!define NSD_Date_GetDateFields `!insertmacro __NSD_Date_GetDateFields ` +!macro __NSD_Date_GetDateFields CONTROL +Push $0 +System::Call 'USER32::SendMessage(p${CONTROL},i${DTM_GETSYSTEMTIME},p0,@r0)' +System::Call '*$0(&i2.s,&i2.s,&i2,&i2.s)' +Exch 3 +Pop $0 +!macroend + +!define NSD_Time_GetTimeFields `!insertmacro __NSD_Time_GetTimeFields ` +!macro __NSD_Time_GetTimeFields CONTROL +Push $0 +System::Call 'USER32::SendMessage(p${CONTROL},i${DTM_GETSYSTEMTIME},p0,@r0)' +System::Call '*$0(&i2,&i2,&i2,&i2,&i2.s,&i2.s,&i2.s)' +Exch 3 +Pop $0 +Exch +!macroend + + +### Static ### + +!macro __NSD_LoadAndSetImage _LIHINSTMODE _IMGTYPE _LIHINSTSRC _LIFLAGS CONTROL IMAGE HANDLE + !if "${_LIHINSTMODE}" == "exeresource" + LoadAndSetImage /EXERESOURCE /STRINGID "${CONTROL}" ${_IMGTYPE} ${_LIFLAGS} "${IMAGE}" ${HANDLE} + !else #if "${_LIHINSTMODE}" == "file" + LoadAndSetImage /STRINGID "${CONTROL}" ${_IMGTYPE} ${_LIFLAGS} "${IMAGE}" ${HANDLE} + !endif +!macroend + +!macro __NSD_SetIconFromExeResource CONTROL IMAGE HANDLE + LoadAndSetImage /EXERESOURCE /STRINGID "${CONTROL}" ${IMAGE_ICON} ${LR_DEFAULTSIZE} "${IMAGE}" ${HANDLE} +!macroend + +!macro __NSD_SetIconFromInstaller CONTROL HANDLE + LoadAndSetImage /EXERESOURCE "${CONTROL}" ${IMAGE_ICON} ${LR_DEFAULTSIZE} 103 ${HANDLE} +!macroend + +!define NSD_SetImage `!insertmacro __NSD_LoadAndSetImage file ${IMAGE_BITMAP} 0 "${LR_LOADFROMFILE}" ` +!define NSD_SetBitmap `${NSD_SetImage} ` + +!define NSD_SetIcon `!insertmacro __NSD_LoadAndSetImage file ${IMAGE_ICON} 0 "${LR_LOADFROMFILE}|${LR_DEFAULTSIZE}" ` +!define NSD_SetIconFromExeResource `!insertmacro __NSD_SetIconFromExeResource ` +!define NSD_SetIconFromInstaller `!insertmacro __NSD_SetIconFromInstaller ` + + +!define NSD_SetStretchedImage `!insertmacro __NSD_SetStretchedImage ` +!define NSD_SetStretchedBitmap `!insertmacro __NSD_SetStretchedImage ` +!macro __NSD_SetStretchedImage CONTROL IMAGE HANDLE + LoadAndSetImage /STRINGID /RESIZETOFIT "${CONTROL}" ${IMAGE_BITMAP} ${LR_LOADFROMFILE} "${IMAGE}" ${HANDLE} +!macroend + + +!define NSD_FreeImage `!insertmacro __NSD_FreeImage ` +!define NSD_FreeBitmap `${NSD_FreeImage} ` +!macro __NSD_FreeImage IMAGE + ${If} ${IMAGE} P<> 0 + System::Call gdi32::DeleteObject(ps) ${IMAGE} + ${EndIf} +!macroend + + +!define NSD_FreeIcon `!insertmacro __NSD_FreeIcon ` +!macro __NSD_FreeIcon IMAGE + System::Call user32::DestroyIcon(ps) ${IMAGE} +!macroend + + +!define NSD_ClearImage `!insertmacro __NSD_ClearImage ${IMAGE_BITMAP} ` +!define NSD_ClearBitmap `${NSD_ClearImage} ` +!define NSD_ClearIcon `!insertmacro __NSD_ClearImage ${IMAGE_ICON} ` +!macro __NSD_ClearImage _IMGTYPE CONTROL + SendMessage ${CONTROL} ${STM_SETIMAGE} ${_IMGTYPE} 0 +!macroend + + +### INI ### + +!define /IfNDef NSD_Debug `System::Call kernel32::OutputDebugString(ts)` + +!macro __NSD_ControlCase TYPE + ${Case} ${TYPE} + ${NSD_Create${TYPE}} $R3u $R4u $R5u $R6u $R7 + Pop $R9 + ${Break} +!macroend + +!macro __NSD_ControlCaseEx TYPE + ${Case} ${TYPE} + Call ${TYPE} + ${Break} +!macroend + +!macro NSD_FUNCTION_INIFILE + !insertmacro NSD_INIFILE "" +!macroend + +!macro NSD_UNFUNCTION_INIFILE + !insertmacro NSD_INIFILE un. +!macroend + +!macro NSD_INIFILE UNINSTALLER_FUNCPREFIX + + ;Functions to create dialogs based on old InstallOptions INI files + + Function ${UNINSTALLER_FUNCPREFIX}CreateDialogFromINI + + # $0 = ini + + ReadINIStr $R0 $0 Settings RECT + ${If} $R0 == "" + StrCpy $R0 1018 + ${EndIf} + + nsDialogs::Create $R0 + Pop $R9 + + ReadINIStr $R0 $0 Settings RTL + nsDialogs::SetRTL $R0 + + ReadINIStr $R0 $0 Settings NumFields + + ${NSD_Debug} "NumFields = $R0" + + ${For} $R1 1 $R0 + ${NSD_Debug} "Creating field $R1" + ReadINIStr $R2 $0 "Field $R1" Type + ${NSD_Debug} " Type = $R2" + ReadINIStr $R3 $0 "Field $R1" Left + ${NSD_Debug} " Left = $R3" + ReadINIStr $R4 $0 "Field $R1" Top + ${NSD_Debug} " Top = $R4" + ReadINIStr $R5 $0 "Field $R1" Right + ${NSD_Debug} " Right = $R5" + ReadINIStr $R6 $0 "Field $R1" Bottom + ${NSD_Debug} " Bottom = $R6" + IntOp $R5 $R5 - $R3 + ${NSD_Debug} " Width = $R5" + IntOp $R6 $R6 - $R4 + ${NSD_Debug} " Height = $R6" + ReadINIStr $R7 $0 "Field $R1" Text + ${NSD_Debug} " Text = $R7" + ${Switch} $R2 + !insertmacro __NSD_ControlCase HLine + !insertmacro __NSD_ControlCase VLine + !insertmacro __NSD_ControlCase Label + !insertmacro __NSD_ControlCase Icon + !insertmacro __NSD_ControlCase Bitmap + !insertmacro __NSD_ControlCaseEx Link + !insertmacro __NSD_ControlCase Button + !insertmacro __NSD_ControlCase GroupBox + !insertmacro __NSD_ControlCase CheckBox + !insertmacro __NSD_ControlCase RadioButton + !insertmacro __NSD_ControlCase Text + !insertmacro __NSD_ControlCase Password + !insertmacro __NSD_ControlCaseEx FileRequest + !insertmacro __NSD_ControlCaseEx DirRequest + !insertmacro __NSD_ControlCase ComboBox + !insertmacro __NSD_ControlCase DropList + !insertmacro __NSD_ControlCase ListBox + ${EndSwitch} + + WriteINIStr $0 "Field $R1" HWND $R9 + ${Next} + + nsDialogs::Show + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}UpdateINIState + + ${NSD_Debug} "Updating INI state" + + ReadINIStr $R0 $0 Settings NumFields + + ${NSD_Debug} "NumField = $R0" + + ${For} $R1 1 $R0 + ReadINIStr $R2 $0 "Field $R1" HWND + ReadINIStr $R3 $0 "Field $R1" "Type" + ${Switch} $R3 + ${Case} "CheckBox" + ${Case} "RadioButton" + ${NSD_Debug} " HWND = $R2" + ${NSD_GetState} $R2 $R2 + ${NSD_Debug} " Window selection = $R2" + ${Break} + ${CaseElse} + ${NSD_Debug} " HWND = $R2" + ${NSD_GetText} $R2 $R2 + ${NSD_Debug} " Window text = $R2" + ${Break} + ${EndSwitch} + WriteINIStr $0 "Field $R1" STATE $R2 + ${Next} + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}FileRequest + + IntOp $R5 $R5 - 15 + IntOp $R8 $R3 + $R5 + + ${NSD_CreateBrowseButton} $R8u $R4u 15u $R6u ... + Pop $R8 + + nsDialogs::SetUserData $R8 $R1 # remember field id + + WriteINIStr $0 "Field $R1" HWND2 $R8 + + ${NSD_OnClick} $R8 ${UNINSTALLER_FUNCPREFIX}OnFileBrowseButton + + ReadINIStr $R9 $0 "Field $R1" State + + ${NSD_CreateFileRequest} $R3u $R4u $R5u $R6u $R9 + Pop $R9 + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}DirRequest + + IntOp $R5 $R5 - 15 + IntOp $R8 $R3 + $R5 + + ${NSD_CreateBrowseButton} $R8u $R4u 15u $R6u ... + Pop $R8 + + nsDialogs::SetUserData $R8 $R1 # remember field id + + WriteINIStr $0 "Field $R1" HWND2 $R8 + + ${NSD_OnClick} $R8 ${UNINSTALLER_FUNCPREFIX}OnDirBrowseButton + + ReadINIStr $R9 $0 "Field $R1" State + + ${NSD_CreateFileRequest} $R3u $R4u $R5u $R6u $R9 + Pop $R9 + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}OnFileBrowseButton + + Pop $R0 + + nsDialogs::GetUserData $R0 + Pop $R1 + + ReadINIStr $R2 $0 "Field $R1" HWND + ReadINIStr $R4 $0 "Field $R1" Filter + + ${NSD_GetText} $R2 $R3 + + nsDialogs::SelectFileDialog save $R3 $R4 + Pop $R3 + + ${If} $R3 != "" + SendMessage $R2 ${WM_SETTEXT} 0 STR:$R3 + ${EndIf} + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}OnDirBrowseButton + + Pop $R0 + + nsDialogs::GetUserData $R0 + Pop $R1 + + ReadINIStr $R2 $0 "Field $R1" HWND + ReadINIStr $R3 $0 "Field $R1" Text + + ${NSD_GetText} $R2 $R4 + + nsDialogs::SelectFolderDialog $R3 $R4 + Pop $R3 + + ${If} $R3 != error + SendMessage $R2 ${WM_SETTEXT} 0 STR:$R3 + ${EndIf} + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}Link + + ${NSD_CreateLink} $R3u $R4u $R5u $R6u $R7 + Pop $R9 + + nsDialogs::SetUserData $R9 $R1 # remember field id + + ${NSD_OnClick} $R9 ${UNINSTALLER_FUNCPREFIX}OnLink + + FunctionEnd + + Function ${UNINSTALLER_FUNCPREFIX}OnLink + + Pop $R0 + + nsDialogs::GetUserData $R0 + Pop $R1 + + ReadINIStr $R1 $0 "Field $R1" STATE + + ExecShell "" $R1 + + FunctionEnd + +!macroend + +!verbose pop +!endif diff --git a/tools/Include/x64.nsh b/tools/Include/x64.nsh new file mode 100644 index 0000000..59d9e8c --- /dev/null +++ b/tools/Include/x64.nsh @@ -0,0 +1,120 @@ +; --------------------- +; x64.nsh +; --------------------- +; +; A few simple macros to handle installations on x64 machines. +; +; RunningX64 checks if the installer is running on a 64-bit OS. +; IsWow64 checks if the installer is a 32-bit application running on a 64-bit OS. +; +; ${If} ${RunningX64} +; MessageBox MB_OK "Running on 64-bit Windows" +; ${EndIf} +; +; IsNative* checks the OS native CPU architecture. +; +; ${If} ${IsNativeAMD64} +; ; Install AMD64 64-bit driver/library +; ${ElseIf} ${IsNativeARM64} +; ; Install ARM64 64-bit driver/library +; ${ElseIf} ${IsNativeIA32} +; ; Install i386 32-bit driver/library +; ${Else} +; Abort "Unsupported CPU architecture!" +; ${EndIf} +; +; ${If} ${IsNativeAMD64} +; File "amd64\myapp.exe" +; ${ElseIf} ${IsNativeIA32} +; ${OrIf} ${IsWow64} +; File "x86\myapp.exe" +; ${Else} +; Abort "Unsupported CPU architecture!" +; ${EndIf} +; +; DisableX64FSRedirection disables file system redirection. +; EnableX64FSRedirection enables file system redirection. +; +; SetOutPath $SYSDIR +; ${DisableX64FSRedirection} +; File something.bin # extracts to C:\Windows\System32 +; ${EnableX64FSRedirection} +; File something.bin # extracts to C:\Windows\SysWOW64 +; + +!ifndef ___X64__NSH___ +!define ___X64__NSH___ + +!include LogicLib.nsh + + +!define IsWow64 `"" IsWow64 ""` +!macro _IsWow64 _a _b _t _f + !insertmacro _LOGICLIB_TEMP + System::Call kernel32::GetCurrentProcess()p.s + System::Call kernel32::IsWow64Process2(ps,*i0s,*i) ; [Win10.1511+] 0 if not WOW64 + Push | + System::Call kernel32::IsWow64Process(p-1,*i0s) ; [WinXP+] FALSE for a 32-bit application on ARM64! + System::Int64Op + Pop $_LOGICLIB_TEMP + !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` +!macroend + + +!define RunningX64 `"" RunningX64 ""` +!macro _RunningX64 _a _b _t _f + !if ${NSIS_PTR_SIZE} > 4 + !insertmacro LogicLib_JumpToBranch `${_t}` `${_f}` + !else + !insertmacro _IsWow64 `${_a}` `${_b}` `${_t}` `${_f}` + !endif +!macroend + + +!define GetNativeMachineArchitecture "!insertmacro GetNativeMachineArchitecture " +!macro GetNativeMachineArchitecture outvar + !define GetNativeMachineArchitecture_lbl lbl_GNMA_${__COUNTER__} + System::Call kernel32::GetCurrentProcess()p.s + System::Call kernel32::IsWow64Process2(ps,*i,*i0s) + Pop ${outvar} + IntCmp ${outvar} 0 "" ${GetNativeMachineArchitecture_lbl}_done ${GetNativeMachineArchitecture_lbl}_done + !if "${NSIS_PTR_SIZE}" <= 4 + !if "${NSIS_CHAR_SIZE}" <= 1 + System::Call 'USER32::CharNextW(w"")p.s' + Pop ${outvar} + IntPtrCmpU ${outvar} 0 "" ${GetNativeMachineArchitecture_lbl}_oldnt ${GetNativeMachineArchitecture_lbl}_oldnt + StrCpy ${outvar} 332 ; Always IMAGE_FILE_MACHINE_I386 on Win9x + Goto ${GetNativeMachineArchitecture_lbl}_done + ${GetNativeMachineArchitecture_lbl}_oldnt: + !endif + !endif + System::Call '*0x7FFE002E(&i2.s)' + Pop ${outvar} + ${GetNativeMachineArchitecture_lbl}_done: + !undef GetNativeMachineArchitecture_lbl +!macroend + +!macro _IsNativeMachineArchitecture _ignore _arc _t _f + !insertmacro _LOGICLIB_TEMP + ${GetNativeMachineArchitecture} $_LOGICLIB_TEMP + !insertmacro _= $_LOGICLIB_TEMP ${_arc} `${_t}` `${_f}` +!macroend + +!define IsNativeMachineArchitecture `"" IsNativeMachineArchitecture ` +!define IsNativeIA32 '${IsNativeMachineArchitecture} 332' ; Intel x86 +!define IsNativeAMD64 '${IsNativeMachineArchitecture} 34404' ; x86-64/x64 +!define IsNativeARM64 '${IsNativeMachineArchitecture} 43620' + + +!define DisableX64FSRedirection "!insertmacro DisableX64FSRedirection" +!macro DisableX64FSRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i0) +!macroend + +!define EnableX64FSRedirection "!insertmacro EnableX64FSRedirection" +!macro EnableX64FSRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i1) +!macroend + + +!endif # !___X64__NSH___ diff --git a/tools/NSIS.exe b/tools/NSIS.exe new file mode 100644 index 0000000..ef103ab Binary files /dev/null and b/tools/NSIS.exe differ diff --git a/tools/Plugins/x86-ansi/AdvSplash.dll b/tools/Plugins/x86-ansi/AdvSplash.dll new file mode 100644 index 0000000..ab8a750 Binary files /dev/null and b/tools/Plugins/x86-ansi/AdvSplash.dll differ diff --git a/tools/Plugins/x86-ansi/Banner.dll b/tools/Plugins/x86-ansi/Banner.dll new file mode 100644 index 0000000..d1ce4a2 Binary files /dev/null and b/tools/Plugins/x86-ansi/Banner.dll differ diff --git a/tools/Plugins/x86-ansi/BgImage.dll b/tools/Plugins/x86-ansi/BgImage.dll new file mode 100644 index 0000000..66f3dd8 Binary files /dev/null and b/tools/Plugins/x86-ansi/BgImage.dll differ diff --git a/tools/Plugins/x86-ansi/Dialer.dll b/tools/Plugins/x86-ansi/Dialer.dll new file mode 100644 index 0000000..d75ad5e Binary files /dev/null and b/tools/Plugins/x86-ansi/Dialer.dll differ diff --git a/tools/Plugins/x86-ansi/InstallOptions.dll b/tools/Plugins/x86-ansi/InstallOptions.dll new file mode 100644 index 0000000..a60efdb Binary files /dev/null and b/tools/Plugins/x86-ansi/InstallOptions.dll differ diff --git a/tools/Plugins/x86-ansi/LangDLL.dll b/tools/Plugins/x86-ansi/LangDLL.dll new file mode 100644 index 0000000..059bbd6 Binary files /dev/null and b/tools/Plugins/x86-ansi/LangDLL.dll differ diff --git a/tools/Plugins/x86-ansi/Math.dll b/tools/Plugins/x86-ansi/Math.dll new file mode 100644 index 0000000..b552188 Binary files /dev/null and b/tools/Plugins/x86-ansi/Math.dll differ diff --git a/tools/Plugins/x86-ansi/NSISdl.dll b/tools/Plugins/x86-ansi/NSISdl.dll new file mode 100644 index 0000000..7950ed8 Binary files /dev/null and b/tools/Plugins/x86-ansi/NSISdl.dll differ diff --git a/tools/Plugins/x86-ansi/Splash.dll b/tools/Plugins/x86-ansi/Splash.dll new file mode 100644 index 0000000..10b8e96 Binary files /dev/null and b/tools/Plugins/x86-ansi/Splash.dll differ diff --git a/tools/Plugins/x86-ansi/StartMenu.dll b/tools/Plugins/x86-ansi/StartMenu.dll new file mode 100644 index 0000000..e20784a Binary files /dev/null and b/tools/Plugins/x86-ansi/StartMenu.dll differ diff --git a/tools/Plugins/x86-ansi/System.dll b/tools/Plugins/x86-ansi/System.dll new file mode 100644 index 0000000..8016be8 Binary files /dev/null and b/tools/Plugins/x86-ansi/System.dll differ diff --git a/tools/Plugins/x86-ansi/TypeLib.dll b/tools/Plugins/x86-ansi/TypeLib.dll new file mode 100644 index 0000000..518b24e Binary files /dev/null and b/tools/Plugins/x86-ansi/TypeLib.dll differ diff --git a/tools/Plugins/x86-ansi/UserInfo.dll b/tools/Plugins/x86-ansi/UserInfo.dll new file mode 100644 index 0000000..0eb6c27 Binary files /dev/null and b/tools/Plugins/x86-ansi/UserInfo.dll differ diff --git a/tools/Plugins/x86-ansi/VPatch.dll b/tools/Plugins/x86-ansi/VPatch.dll new file mode 100644 index 0000000..2b782da Binary files /dev/null and b/tools/Plugins/x86-ansi/VPatch.dll differ diff --git a/tools/Plugins/x86-ansi/nsDialogs.dll b/tools/Plugins/x86-ansi/nsDialogs.dll new file mode 100644 index 0000000..0d6a3f4 Binary files /dev/null and b/tools/Plugins/x86-ansi/nsDialogs.dll differ diff --git a/tools/Plugins/x86-ansi/nsExec.dll b/tools/Plugins/x86-ansi/nsExec.dll new file mode 100644 index 0000000..d64bb61 Binary files /dev/null and b/tools/Plugins/x86-ansi/nsExec.dll differ diff --git a/tools/Plugins/x86-unicode/AdvSplash.dll b/tools/Plugins/x86-unicode/AdvSplash.dll new file mode 100644 index 0000000..2665804 Binary files /dev/null and b/tools/Plugins/x86-unicode/AdvSplash.dll differ diff --git a/tools/Plugins/x86-unicode/Banner.dll b/tools/Plugins/x86-unicode/Banner.dll new file mode 100644 index 0000000..5faa70b Binary files /dev/null and b/tools/Plugins/x86-unicode/Banner.dll differ diff --git a/tools/Plugins/x86-unicode/BgImage.dll b/tools/Plugins/x86-unicode/BgImage.dll new file mode 100644 index 0000000..02ed711 Binary files /dev/null and b/tools/Plugins/x86-unicode/BgImage.dll differ diff --git a/tools/Plugins/x86-unicode/Dialer.dll b/tools/Plugins/x86-unicode/Dialer.dll new file mode 100644 index 0000000..121ebf7 Binary files /dev/null and b/tools/Plugins/x86-unicode/Dialer.dll differ diff --git a/tools/Plugins/x86-unicode/InstallOptions.dll b/tools/Plugins/x86-unicode/InstallOptions.dll new file mode 100644 index 0000000..a842ac6 Binary files /dev/null and b/tools/Plugins/x86-unicode/InstallOptions.dll differ diff --git a/tools/Plugins/x86-unicode/LangDLL.dll b/tools/Plugins/x86-unicode/LangDLL.dll new file mode 100644 index 0000000..1e28c76 Binary files /dev/null and b/tools/Plugins/x86-unicode/LangDLL.dll differ diff --git a/tools/Plugins/x86-unicode/Math.dll b/tools/Plugins/x86-unicode/Math.dll new file mode 100644 index 0000000..2636d09 Binary files /dev/null and b/tools/Plugins/x86-unicode/Math.dll differ diff --git a/tools/Plugins/x86-unicode/NSISdl.dll b/tools/Plugins/x86-unicode/NSISdl.dll new file mode 100644 index 0000000..9c2b7e1 Binary files /dev/null and b/tools/Plugins/x86-unicode/NSISdl.dll differ diff --git a/tools/Plugins/x86-unicode/Splash.dll b/tools/Plugins/x86-unicode/Splash.dll new file mode 100644 index 0000000..2bc507f Binary files /dev/null and b/tools/Plugins/x86-unicode/Splash.dll differ diff --git a/tools/Plugins/x86-unicode/StartMenu.dll b/tools/Plugins/x86-unicode/StartMenu.dll new file mode 100644 index 0000000..be975da Binary files /dev/null and b/tools/Plugins/x86-unicode/StartMenu.dll differ diff --git a/tools/Plugins/x86-unicode/System.dll b/tools/Plugins/x86-unicode/System.dll new file mode 100644 index 0000000..921bc86 Binary files /dev/null and b/tools/Plugins/x86-unicode/System.dll differ diff --git a/tools/Plugins/x86-unicode/TypeLib.dll b/tools/Plugins/x86-unicode/TypeLib.dll new file mode 100644 index 0000000..73cf6dd Binary files /dev/null and b/tools/Plugins/x86-unicode/TypeLib.dll differ diff --git a/tools/Plugins/x86-unicode/UserInfo.dll b/tools/Plugins/x86-unicode/UserInfo.dll new file mode 100644 index 0000000..24094c2 Binary files /dev/null and b/tools/Plugins/x86-unicode/UserInfo.dll differ diff --git a/tools/Plugins/x86-unicode/VPatch.dll b/tools/Plugins/x86-unicode/VPatch.dll new file mode 100644 index 0000000..8583310 Binary files /dev/null and b/tools/Plugins/x86-unicode/VPatch.dll differ diff --git a/tools/Plugins/x86-unicode/nsDialogs.dll b/tools/Plugins/x86-unicode/nsDialogs.dll new file mode 100644 index 0000000..90740b3 Binary files /dev/null and b/tools/Plugins/x86-unicode/nsDialogs.dll differ diff --git a/tools/Plugins/x86-unicode/nsExec.dll b/tools/Plugins/x86-unicode/nsExec.dll new file mode 100644 index 0000000..074ea46 Binary files /dev/null and b/tools/Plugins/x86-unicode/nsExec.dll differ diff --git a/tools/Stubs/bzip2-x86-ansi b/tools/Stubs/bzip2-x86-ansi new file mode 100644 index 0000000..deaa6e7 Binary files /dev/null and b/tools/Stubs/bzip2-x86-ansi differ diff --git a/tools/Stubs/bzip2-x86-unicode b/tools/Stubs/bzip2-x86-unicode new file mode 100644 index 0000000..3f7d9c6 Binary files /dev/null and b/tools/Stubs/bzip2-x86-unicode differ diff --git a/tools/Stubs/bzip2_solid-x86-ansi b/tools/Stubs/bzip2_solid-x86-ansi new file mode 100644 index 0000000..5e45f06 Binary files /dev/null and b/tools/Stubs/bzip2_solid-x86-ansi differ diff --git a/tools/Stubs/bzip2_solid-x86-unicode b/tools/Stubs/bzip2_solid-x86-unicode new file mode 100644 index 0000000..ac72d40 Binary files /dev/null and b/tools/Stubs/bzip2_solid-x86-unicode differ diff --git a/tools/Stubs/lzma-x86-ansi b/tools/Stubs/lzma-x86-ansi new file mode 100644 index 0000000..dab9c81 Binary files /dev/null and b/tools/Stubs/lzma-x86-ansi differ diff --git a/tools/Stubs/lzma-x86-unicode b/tools/Stubs/lzma-x86-unicode new file mode 100644 index 0000000..df2860f Binary files /dev/null and b/tools/Stubs/lzma-x86-unicode differ diff --git a/tools/Stubs/lzma_solid-x86-ansi b/tools/Stubs/lzma_solid-x86-ansi new file mode 100644 index 0000000..7af4727 Binary files /dev/null and b/tools/Stubs/lzma_solid-x86-ansi differ diff --git a/tools/Stubs/lzma_solid-x86-unicode b/tools/Stubs/lzma_solid-x86-unicode new file mode 100644 index 0000000..52f1021 Binary files /dev/null and b/tools/Stubs/lzma_solid-x86-unicode differ diff --git a/tools/Stubs/uninst b/tools/Stubs/uninst new file mode 100644 index 0000000..90d7d22 Binary files /dev/null and b/tools/Stubs/uninst differ diff --git a/tools/Stubs/zlib-x86-ansi b/tools/Stubs/zlib-x86-ansi new file mode 100644 index 0000000..88629cd Binary files /dev/null and b/tools/Stubs/zlib-x86-ansi differ diff --git a/tools/Stubs/zlib-x86-unicode b/tools/Stubs/zlib-x86-unicode new file mode 100644 index 0000000..14b3b54 Binary files /dev/null and b/tools/Stubs/zlib-x86-unicode differ diff --git a/tools/Stubs/zlib_solid-x86-ansi b/tools/Stubs/zlib_solid-x86-ansi new file mode 100644 index 0000000..d7587c9 Binary files /dev/null and b/tools/Stubs/zlib_solid-x86-ansi differ diff --git a/tools/Stubs/zlib_solid-x86-unicode b/tools/Stubs/zlib_solid-x86-unicode new file mode 100644 index 0000000..0f2cf9e Binary files /dev/null and b/tools/Stubs/zlib_solid-x86-unicode differ diff --git a/tools/makensis.exe b/tools/makensis.exe new file mode 100644 index 0000000..20628c7 Binary files /dev/null and b/tools/makensis.exe differ diff --git a/tools/makensisw.exe b/tools/makensisw.exe new file mode 100644 index 0000000..7abbfed Binary files /dev/null and b/tools/makensisw.exe differ diff --git a/tools/nsisconf.nsh b/tools/nsisconf.nsh new file mode 100644 index 0000000..48a4915 --- /dev/null +++ b/tools/nsisconf.nsh @@ -0,0 +1,62 @@ +;------------------------ +;DEFAULT NSIS CONFIG FILE +;------------------------ + +;This header file will be included when compiling any NSIS installer, +;you can use it to add script code to every installer you compile. + +;This file is treated as if it is in the directory of your script. +;When using relative paths, the files have to be in your build directory. + +;------------------------ +;EXAMPLES +;------------------------ + +;Compress installer exehead with an executable compressor (such as UPX / Petite). + +;Paths should be absolute to allow building from any location. +;Note that your executable compressor should not compress the first icon. + +;!packhdr temp.dat '"C:\Program Files\upx\upx" -9 -q temp.dat' +;!packhdr temp.dat '"C:\Program Files\petite\petite" -9 -b0 -r** -p0 -y temp.dat' + +;------------------------ + +;Set default compressor + +;SetCompressor bzip2 + +;------------------------ + +;Change the default icons + +;Icon "${NSISDIR}\Contrib\Graphics\Icons\arrow-install.ico" +;UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\arrow-uninstall.ico" + +;------------------------ + +;Define symbols + +;!define COMPANYNAME "bla" + +;------------------------ +;MODERN UI +;------------------------ + +;The Modern UI will insert the MUI_NSISCONF macro just before processing the settings. +;Here you can set default settings for the Modern UI. + +;------------------------ + +!define MUI_INSERT_NSISCONF + +!macro MUI_NSISCONF + + ;Example: Change the default Modern UI icons + + ;!ifndef MUI_ICON & MUI_UNICON + ; !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-install.ico" + ; !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-uninstall.ico" + ;!endif + +!macroend \ No newline at end of file