summaryrefslogtreecommitdiff
path: root/nsis/nasm.nsi
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2016-03-03 21:37:37 -0800
committerH. Peter Anvin <hpa@zytor.com>2016-03-03 21:37:37 -0800
commitd4c67b1597349b2d01e61e211ec1267e4b17fc39 (patch)
treef855fe52f47b02bdbbfe89a8556e867a06e447f5 /nsis/nasm.nsi
parenta9a1b5c318e7bcb7680483c51933c6f3d6c69cd9 (diff)
downloadnasm-d4c67b1597349b2d01e61e211ec1267e4b17fc39.tar.gz
nsis: make nsis output automatically select architecturensis
Make the NSIS output automatically select the output architecture to generate the proper filename and, much more importantly, set up the proper default install directory. This requires Perl as well as makensis to be present in order to make an installer, but that doesn't really seem like a too onerous of a requirement (NSIS being the big external dependency here.) Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'nsis/nasm.nsi')
-rw-r--r--nsis/nasm.nsi234
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