From f757d2d8325a1794b6dfd7087a1af0b820bea226 Mon Sep 17 00:00:00 2001 From: kichik Date: Mon, 26 Aug 2002 16:52:24 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@751 212acab6-be3b-0410-9dea-997c60f758d6 --- Examples/Modern UI/Example.nsi | 309 ++++++++++++++++++++++++++++++ Examples/Modern UI/License.txt | 9 + Examples/Modern UI/Readme.html | 164 ++++++++++++++++ Examples/Modern UI/Readme.png | Bin 0 -> 10674 bytes Examples/Modern UI/Screenshot.png | Bin 0 -> 16394 bytes 5 files changed, 482 insertions(+) create mode 100644 Examples/Modern UI/Example.nsi create mode 100644 Examples/Modern UI/License.txt create mode 100644 Examples/Modern UI/Readme.html create mode 100644 Examples/Modern UI/Readme.png create mode 100644 Examples/Modern UI/Screenshot.png diff --git a/Examples/Modern UI/Example.nsi b/Examples/Modern UI/Example.nsi new file mode 100644 index 00000000..815f781e --- /dev/null +++ b/Examples/Modern UI/Example.nsi @@ -0,0 +1,309 @@ +;NSIS Modern Style UI +;Example Script version 1.0 +;Written by Joost Verburg + +!define NAME "Test Software" ;Define your own software name here +!define VERSION "1.0" ;Define your own software version here + +!verbose 3 +!include "${NSISDIR}\Examples\WinMessages.nsh" +!verbose 4 + +!define CURRENTPAGE $9 + +!define TEMP1 $R0 +!define TEMP2 $R1 + +;-------------------------------- + + ;General + Name "${NAME} ${VERSION}" + OutFile "Example.exe" + SetOverwrite on + + ;User interface + Icon "${NSISDIR}\Contrib\Icons\adni18-installer-C-no48xp.ico" + UninstallIcon "${NSISDIR}\Contrib\Icons\adni18-uninstall-C-no48xp.ico" + XPStyle On + ChangeUI all "${NSISDIR}\Contrib\UIs\modern.exe" + SetFont Tahoma 8 + CheckBitmap "${NSISDIR}\Contrib\Icons\checks4-aa.bmp" + + ;License dialog + LicenseText "Scroll down to see the rest of the agreement." + LicenseData "License.txt" + + ;Component-select dialog + ComponentText "Check the components you want to install and uncheck the components you don't want to install. Click Next to continue." + + ;Folder-select dialog + InstallDir "$PROGRAMFILES\${NAME}" + DirText "Setup will install ${NAME} in the following folder.$\r$\n$\r$\nTo install in this folder, click Install. To install in a different folder, click Browse and select another folder." " " + + ;Install dialog + InstallColors /windows ;Default Windows colors for details list + InstProgressFlags smooth + + ;Uninstaller + UninstallText "This will uninstall ${NAME} from your system." + +;-------------------------------- +;Installer Sections + +Section "Copy modern.exe" SecCopyUI + + ;Add your stuff here + + SetOutPath "$INSTDIR" + File "${NSISDIR}\Contrib\UIs\modern.exe" + +SectionEnd + +Section "Create uninstaller" SecCreateUninst + + ;Add your stuff here + + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +Section "" + + ;Invisible section to display the Finish header + + IntOp ${CURRENTPAGE} ${CURRENTPAGE} + 1 + Call SetHeader + +SectionEnd + +;-------------------------------- +;Installer Functions + +Function .onInitDialog + + ;Set texts on inner dialogs + + Push ${TEMP1} + + FindWindow ${TEMP1} "#32770" "" $HWNDPARENT + + StrCmp ${CURRENTPAGE} 1 "" +4 + GetDlgItem ${TEMP1} ${TEMP1} 1040 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "If you accept all the terms of the agreement, choose I Agree to continue. If you choose Cancel, Setup will close. You must accept the agreement to install ${NAME}." + Goto done + + StrCmp ${CURRENTPAGE} 2 "" +4 + GetDlgItem ${TEMP1} ${TEMP1} 1042 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Description" + Goto done + + StrCmp ${CURRENTPAGE} 3 "" +3 + GetDlgItem ${TEMP1} ${TEMP1} 1041 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Destination Folder" + + done: + + Pop ${TEMP1} + +FunctionEnd + +Function .onNextPage + + Push ${TEMP1} + Push ${TEMP2} + + ;Set backgrounds & fonts for the outer dialog (only once) + StrCmp ${CURRENTPAGE} "" "" no_set_outer + + GetDlgItem ${TEMP1} $HWNDPARENT 1037 + CreateFont ${TEMP2} "Tahoma" 16 1000 + SendMessage ${TEMP1} ${WM_SETFONT} ${TEMP2} 0 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1038 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1034 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1039 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + no_set_outer: + + IntOp ${CURRENTPAGE} ${CURRENTPAGE} + 1 + + Call SetHeader + + Pop ${TEMP2} + Pop ${TEMP1} + +FunctionEnd + +Function .onPrevPage + + IntOp ${CURRENTPAGE} ${CURRENTPAGE} - 1 + + Call SetHeader + +FunctionEnd + +Function SetHeader + + ;Set the texts on the header (white rectangle) + + Push ${TEMP1} + Push ${TEMP2} + + GetDlgItem ${TEMP1} $HWNDPARENT 1037 + GetDlgItem ${TEMP2} $HWNDPARENT 1038 + + StrCmp ${CURRENTPAGE} 1 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "License Agreement" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Please review the license terms before installing ${NAME}." + Goto done + + StrCmp ${CURRENTPAGE} 2 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Choose Components" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Choose the components you want to install." + Goto done + + StrCmp ${CURRENTPAGE} 3 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Choose Install Location" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Choose the folder in which to install ${NAME} in." + Goto done + + StrCmp ${CURRENTPAGE} 4 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Installing" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Please wait while ${NAME} is being installed." + Goto done + + StrCmp ${CURRENTPAGE} 5 "" +3 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Finished" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Setup was completed successfully." + + done: + + Pop ${TEMP1} + Pop ${TEMP2} + +FunctionEnd + +Function .onMouseOverSection + + ;Set text in Description area + + Push ${TEMP1} + + FindWindow ${TEMP1} "#32770" "" $HWNDPARENT + GetDlgItem ${TEMP1} ${TEMP1} 1043 + + StrCmp $0 ${SecCopyUI} "" +3 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Copy the modern.exe file to the application folder." + Goto done + + StrCmp $0 ${SecCreateUninst} "" +2 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Create an uninstaller which can automatically remove ${NAME}." + + done: + + Pop ${TEMP1} + +FunctionEnd + +Function .onUserAbort + + ;Warning when 'Cancel' button is pressed + + MessageBox MB_YESNO|MB_ICONEXCLAMATION "Are you sure you want to quit ${NAME} Setup?" IDYES quit + Abort + quit: + +FunctionEnd + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;Add your stuff here + + Delete "$INSTDIR\modern.exe" + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + ;Display the Finish header + IntOp ${CURRENTPAGE} ${CURRENTPAGE} + 1 + Call un.SetHeader + +SectionEnd + +;-------------------------------- +;Uninstaller Functions + +Function un.onNextPage + + Push ${TEMP1} + Push ${TEMP2} + + ;Set backgrounds & fonts for the outer dialog (only once) + StrCmp ${CURRENTPAGE} "" "" no_set_outer + + GetDlgItem ${TEMP1} $HWNDPARENT 1037 + CreateFont ${TEMP2} "Tahoma" 16 1000 + SendMessage ${TEMP1} ${WM_SETFONT} ${TEMP2} 0 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1038 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1034 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + GetDlgItem ${TEMP1} $HWNDPARENT 1039 + SetStaticBkColor ${TEMP1} 0x00FFFFFF + + no_set_outer: + + IntOp ${CURRENTPAGE} ${CURRENTPAGE} + 1 + + Call un.SetHeader + + Pop ${TEMP2} + Pop ${TEMP1} + +FunctionEnd + +Function un.SetHeader + + ;Set the texts on the header (white rectangle) + + Push ${TEMP1} + Push ${TEMP2} + + GetDlgItem ${TEMP1} $HWNDPARENT 1037 + GetDlgItem ${TEMP2} $HWNDPARENT 1038 + + StrCmp ${CURRENTPAGE} 1 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Uninstall ${NAME}" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Remove ${NAME} from your system." + Goto done + + StrCmp ${CURRENTPAGE} 2 "" +4 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Uninstalling" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "Please wait while ${NAME} is being uninstalled." + Goto done + + StrCmp ${CURRENTPAGE} 3 "" +3 + SendMessage ${TEMP1} ${WM_SETTEXT} 0 "Finished" + SendMessage ${TEMP2} ${WM_SETTEXT} 0 "${NAME} has been removed from your system." + + done: + + Pop ${TEMP2} + Pop ${TEMP1} + +FunctionEnd + +;eof \ No newline at end of file diff --git a/Examples/Modern UI/License.txt b/Examples/Modern UI/License.txt new file mode 100644 index 00000000..40abd1aa --- /dev/null +++ b/Examples/Modern UI/License.txt @@ -0,0 +1,9 @@ +Copyright © 2002 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/Examples/Modern UI/Readme.html b/Examples/Modern UI/Readme.html new file mode 100644 index 00000000..e95f9f4f --- /dev/null +++ b/Examples/Modern UI/Readme.html @@ -0,0 +1,164 @@ + + + + +NSIS Modern Style UI + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+

Introduction

+

Using KiCHiK's NSIS 2 modifications, it is possible + to create new user interfaces for the Nullsoft Installer System.

+

I made this interface with a modern wizard style, + like the wizards of recent Windows versions. This new interface + also features new icons (designed by adni18) and a description + area on the component select dialog.

+

To use this new UI for for installer, you need + to add some code to your NSIS script, which you can see in Example.nsi.

+

Requirements

+

KiCHiK's + NSIS 2 modifications, version 2.0 alpha 7 (or later) +

+

Screenshot

+

+

How to use

+

Have a look at the example script, Example.nsi. + This is an example of how the use this interface for your NSIS + installer.

+

To change elements on the dialogs, modify modern.exe + in the Contrib\UIs folder using a a resource editor such as + Resource Hacker.

+

This new interface uses some additional texts + which are not included in the standard NSIS language files. + If you want to create a multilanguage installer, you need to + control this texts by your script.

+

The 'Loading Setup' text on the slash screen + which is being displayed when the installer is starting (Verifying + installer, Unpacking data when using COMPRESS_WHOLE) cannot + be changed by the script, because the installer is not started + yet when this dialog is being displayed. If you want to change + this text, modify dialog 111 of modern.exe.

+

To 'verifying installer' and 'unpacking data' + texts are defined in the language header file of the NSIS exehead + (Source\exehead\lang.h). To change them, you need to edit this + file and recompile NSIS.

+

Version history

+
    +
  • 1.0 - August 26th, 2002 +
      +
    • Initial release +
    +
+

Credits

+

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

+

Help

+

Please post questions at the NSIS + Forum.

+

License

+

Copyright © 2002 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/Examples/Modern UI/Readme.png b/Examples/Modern UI/Readme.png new file mode 100644 index 0000000000000000000000000000000000000000..4097cf08fd7c9e2562739b2e119c99f03a690eeb GIT binary patch literal 10674 zcmdsdXHZj7*X{`=w1kd^geF~)4xvL34Imvv1nD(&P?|^yM1!DI6%YiYs2~c0AcS6m z6hXT561pH=DFVtD^nGW(zxT(TJ99IWb8_~XoVE8^nV&fNaLYxqzwS2NfC!;4=L9IE_&uh z01z$$09YIV{5qzbmjNJH1^`wZ0YEhq08aa-IebC`z*%wqi`rMh#s(kTu{R4q?of-o z5?7r%M%CX2HpmZLu1DPo$4}C=)<)}mFhDN;2@3&r8lAc%@|dyg{T{gNwv>znukQ7Y zi#^1vUEO^HCPpNVQeIp;wz{zrf8@nvNP!<9R0M?BF&`1$AJ7pNqK6a=S>g7sM z0|1CH7FZnuF;GUagyZ+)Y~L6^@d5yt9R-AZ$I?)SQN72*YxF^PXPE(jnxWB;H-$0? z&>tLE^TrgLPJjSMf&YIVJeb}ACCNZ&zK}`>qRV2=o9RQXT1-5wxlI^3Y^ zSYEF_e6kfmGAaM} zbm`0ujWv^D1dHu&&QOzn)3I>d*M@;!m&x^`sogjs;hW!3WZ_AM3oIpX_;k{_JRjwn@;oycAy?xW7Jm8(+CGt#j1U(IFryqMxgR zlAmfg2HbDn2$0cB_3U;8x0yV3RgRt!B+h6ug0+aZ_CTajCM)h-P-lUMw0&OtlW*R# z0f8m5m^Tu#*Wllw-vctM9TiDwAIG`*s1WNUsQRrxX)_&VRb!NI>@4_%`k*dJ^JlunD`>Jn*j z*$*{J*t+8_SPJ^4w771%Ube7%d`3(%l~999+?hONiSe{0@8;YNK#G-Y`8c_EkzGBg z-3Q=4(;wqz`X76n)~LYXg`FL89>ckj5UXPQxNHkMd%0D)1soj<8nLDWJgp0R?6f@Q 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 XU@INt(O$!J@+kdF#utk(IL7`DqOm&U literal 0 HcmV?d00001 diff --git a/Examples/Modern UI/Screenshot.png b/Examples/Modern UI/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..52efc1e18cf6ab8303d43b9a9b5a65d7d2e21e7a GIT binary patch literal 16394 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 literal 0 HcmV?d00001