From 2726889ece207fa8d5601d4c6baacaca4d1856e6 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Mon, 14 Sep 2009 23:17:03 +0400 Subject: New NSIS script Lets start using new NSIS features like Modern UI2, Multiuser install. The file named nasm2.nsi by purpose -- we should _not_ break existing functionality. Signed-off-by: Cyrill Gorcunov --- nasm2.nsi | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ nsis/nasm-un.ico | Bin 0 -> 2238 bytes nsis/nasm.ico | Bin 0 -> 2238 bytes 3 files changed, 200 insertions(+) create mode 100644 nasm2.nsi create mode 100644 nsis/nasm-un.ico create mode 100644 nsis/nasm.ico diff --git a/nasm2.nsi b/nasm2.nsi new file mode 100644 index 00000000..65fcce99 --- /dev/null +++ b/nasm2.nsi @@ -0,0 +1,200 @@ +#!Nsis Installer Command Script + +# +# Copyright (c) 2009, Shao Miller (shao.miller@yrdsb.edu.on.ca) +# Copyright (c) 2009, Cyrill Gorcunov (gorcunov@gmail.com) +# All rights reserved. +# +# The script requires NSIS v2.45 (or any later) +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +!include "version.nsh" +!define PRODUCT_NAME "Netwide Assembler" +!define PRODUCT_SHORT_NAME "nasm" +!define VERSION "${__NASM_VER__}" +!define PACKAGE_NAME "${PRODUCT_NAME} ${VERSION}" +!define PACKAGE_SHORT_NAME "${PRODUCT_SHORT_NAME}-${VERSION}" + +!define MULTIUSER_EXECUTIONLEVEL Highest +!define MULTIUSER_MUI +!define MULTIUSER_INSTALLMODE_COMMANDLINE +!define MULTIUSER_INSTALLMODE_INSTDIR "${PRODUCT_SHORT_NAME}" +!include MultiUser.nsh + +!insertmacro MULTIUSER_PAGE_INSTALLMODE +!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE + +;-------------------------------- +;General + +;Name and file +Name "${PACKAGE_NAME}" +OutFile "${PACKAGE_NAME}-mui-installer.exe" + +;Get installation folder from registry if available +InstallDirRegKey HKCU "Software\${PRODUCT_SHORT_NAME}" "" + +;Request application privileges for Windows Vista +RequestExecutionLevel user + +;-------------------------------- +;Variables + +Var StartMenuFolder +Var CmdFailed + +;-------------------------------- +;Interface Settings +Caption "${PACKAGE_SHORT_NAME} installation" +Icon "nsis\nasm.ico" +UninstallIcon "nsis\nasm-un.ico" + +!define MUI_ABORTWARNING + +;-------------------------------- +;Pages + +!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\${PRODUCT_SHORT_NAME}" +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_SHORT_NAME}" + +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Installer Sections + +!insertmacro MUI_LANGUAGE English + +Section "NASM" SecNasm + Sectionin RO + SetOutPath "$INSTDIR" + File "nasm.exe" + File "LICENSE" + File "nasm.exe" + File "ndisasm.exe" + File "nsis\nasm.ico" + + ;Store installation folder + WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}" "" $INSTDIR + + ;Store shortcuts folder + WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}\" "lnk" $SMPROGRAMS\$StartMenuFolder + + ; + ; the bat we need + StrCpy $CmdFailed "true" + FileOpen $0 "nasmpath.bat" w + IfErrors skip + StrCpy $CmdFailed "false" + FileWrite $0 "@set path=$INSTDIR;%path%$\r$\n" + FileWrite $0 "@%comspec%" + FileClose $0 + CreateShortCut "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasmpath.bat" "" "$INSTDIR\nasm.ico" 0 +skip: + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + StrCmp $CmdFailed "true" +2 + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}-shell.lnk" "$INSTDIR\nasmpath.bat" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_SHORT_NAME}.lnk" "$INSTDIR\nasm.exe" "" "$INSTDIR\nasm.ico" 0 + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_END +SectionEnd + +Section "RDOFF" SecRdoff + CreateDirectory "$INSTDIR\rdoff" + SetOutPath "$INSTDIR\rdoff" + File "rdoff\ldrdf.exe" + File "rdoff\rdf2bin.exe" + File "rdoff\rdf2com.exe" + File "rdoff\rdf2ith.exe" + File "rdoff\rdf2ihx.exe" + File "rdoff\rdf2srec.exe" + File "rdoff\rdfdump.exe" + File "rdoff\rdflib.exe" + File "rdoff\rdx.exe" +SectionEnd + +Section "Manual" SecManual + SetOutPath "$INSTDIR" + File "doc\nasmdoc.pdf" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\manual.pdf" +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecNasm ${LANG_ENGLISH} "NASM assembler and disassember modules" + LangString DESC_SecManual ${LANG_ENGLISH} "Complete NASM manual (pdf file)" + LangString DESC_SecRdoff ${LANG_ENGLISH} "RDOFF utilities (you may not need it if you don't know what is it)" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecNasm} $(DESC_SecNasm) + !insertmacro MUI_DESCRIPTION_TEXT ${SecRdoff} $(DESC_SecRdoff) + !insertmacro MUI_DESCRIPTION_TEXT ${SecManual} $(DESC_SecManual) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + ; + ; files on HDD + Delete /rebootok "$INSTDIR\rdoff\*" + RMDir "$INSTDIR\rdoff" + Delete /rebootok "$INSTDIR\doc\*" + RMDir "$INSTDIR\doc" + Delete /rebootok "$INSTDIR\*" + RMDir "$INSTDIR" + Delete /rebootok "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk" + ; + ; Start Menu folder + ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "lnk" + Delete /rebootok "$0\*" + RMDir "$0" + DeleteRegKey /ifempty HKCU "Software\${PRODUCT_SHORT_NAME}" +SectionEnd + +; +; MUI requires this hooks +Function .onInit + !insertmacro MULTIUSER_INIT +FunctionEnd + +Function un.onInit + !insertmacro MULTIUSER_UNINIT +FunctionEnd diff --git a/nsis/nasm-un.ico b/nsis/nasm-un.ico new file mode 100644 index 00000000..90d338c7 Binary files /dev/null and b/nsis/nasm-un.ico differ diff --git a/nsis/nasm.ico b/nsis/nasm.ico new file mode 100644 index 00000000..b1a9d63f Binary files /dev/null and b/nsis/nasm.ico differ -- cgit v1.2.1