diff options
Diffstat (limited to 'nsis/nasm.nsi')
-rw-r--r-- | nsis/nasm.nsi | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/nsis/nasm.nsi b/nsis/nasm.nsi new file mode 100644 index 00000000..42411032 --- /dev/null +++ b/nsis/nasm.nsi @@ -0,0 +1,234 @@ +#!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 <copyright holder> 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" +!include /nonfatal "arch.nsh" + +!define PRODUCT_NAME "Netwide Assembler" +!define PRODUCT_SHORT_NAME "nasm" +!define PACKAGE_NAME "${PRODUCT_NAME} ${VERSION}" +!define PACKAGE_SHORT_NAME "${PRODUCT_SHORT_NAME}-${VERSION}" + +SetCompressor lzma + +!define MULTIUSER_EXECUTIONLEVEL Highest +!define MULTIUSER_MUI +!define MULTIUSER_INSTALLMODE_COMMANDLINE +!define MULTIUSER_INSTALLMODE_INSTDIR "NASM" +!include "MultiUser.nsh" + +!insertmacro MULTIUSER_PAGE_INSTALLMODE +!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE + +;-------------------------------- +;General + +;Name and file +Name "${PACKAGE_NAME}" +OutFile "../${PACKAGE_SHORT_NAME}-installer-${ARCH}.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 "nasm.ico" +UninstallIcon "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 "../LICENSE" + File "../nasm.exe" + File "../ndisasm.exe" + File "nasm.ico" + + ;Store installation folder + WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}" "" $INSTDIR + + ;Store shortcuts folder + WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}\" "lnk" $SMPROGRAMS\$StartMenuFolder + WriteRegStr HKCU "Software\${PRODUCT_SHORT_NAME}\" "bat-lnk" $DESKTOP\${PRODUCT_SHORT_NAME}.lnk + + ; + ; 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 + 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" +SectionEnd + +Section "Manual" SecManual + SetOutPath "$INSTDIR" + File "../doc/nasmdoc.pdf" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\nasmdoc.pdf" +SectionEnd + +Section "VS8 integration" SecVS8 + CreateDirectory "$INSTDIR\VSrules" + SetOutPath "$INSTDIR\VSrules" + File "../contrib/VSrules/nasm.README" + File "../contrib/VSrules/nasm.rules" +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)" + LangString DESC_SecVS8 ${LANG_ENGLISH} "Visual Studio 2008 NASM integration (rules file)" + + ;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_DESCRIPTION_TEXT ${SecVS8} $(DESC_SecVS8) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + ; + ; files on HDD + IfFileExists "$INSTDIR" +3 +1 + MessageBox MB_OK "No files found, aborting." + Abort + MessageBox MB_YESNO "The following directory will be deleted$\n$INSTDIR" IDYES rm_instdir_true IDNO rm_instdir_false + rm_instdir_true: + RMDir /r /rebootok "$INSTDIR" + rm_instdir_false: + + ; + ; Desktop link + ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "bat-lnk" + StrCmp $0 0 +1 +3 + MessageBox MB_OK "Invalid path to a bat-lnk file, aborting" + Abort + IfFileExists $0 +3 +1 + MessageBox MB_OK "No bat-lnk files found, aborting." + Abort + MessageBox MB_YESNO "The following file will be deleted$\n$0" IDYES rm_batlinks_true IDNO rm_batlinks_false + rm_batlinks_true: + Delete /rebootok "$0" + RMDir "$0" + rm_batlinks_false: + + ; + ; Start menu folder + ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "lnk" + StrCmp $0 0 +1 +3 + MessageBox MB_OK "Invalid path to a lnk file, aborting" + Abort + IfFileExists $0 +3 +1 + MessageBox MB_OK "No lnk files found, aborting." + Abort + MessageBox MB_YESNO "The following directory will be deleted$\n$0" IDYES rm_links_true IDNO rm_links_false + rm_links_true: + Delete /rebootok "$0\*" + RMDir "$0" + rm_links_false: + 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 |