mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-12-21 09:19:31 +08:00
92ae33b1b3
Use /solid compression for smaller size. By default nsis compresses one file at a time (like .zip default), as opposed to the whole data block (.tar.gz). The latter gives significantly better compression, so use it. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
242 lines
8.0 KiB
Plaintext
242 lines
8.0 KiB
Plaintext
#!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.
|
|
|
|
!addincludedir "${objdir}\nsis"
|
|
!addincludedir "${srcdir}\nsis"
|
|
!include "version.nsh"
|
|
!include "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 /solid lzma
|
|
|
|
!if "${NSIS_PACKEDVERSION}" >= 0x3000000
|
|
Unicode true
|
|
!endif
|
|
|
|
!define MULTIUSER_EXECUTIONLEVEL Highest
|
|
!define MULTIUSER_MUI
|
|
!define MULTIUSER_INSTALLMODE_COMMANDLINE
|
|
!define MULTIUSER_INSTALLMODE_INSTDIR "NASM"
|
|
!include "NASMMultiUser.nsh"
|
|
|
|
!insertmacro MULTIUSER_PAGE_INSTALLMODE
|
|
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
|
|
|
|
;--------------------------------
|
|
;General
|
|
|
|
;Name and file
|
|
Name "${PACKAGE_NAME}"
|
|
OutFile "${objdir}\${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 "${srcdir}\nsis\nasm.ico"
|
|
UninstallIcon "${srcdir}\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 "${srcdir}\LICENSE"
|
|
File "${objdir}\nasm.exe"
|
|
File "${objdir}\ndisasm.exe"
|
|
File "${srcdir}\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
|
|
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 "${objdir}\rdoff\ldrdf.exe"
|
|
File "${objdir}\rdoff\rdf2bin.exe"
|
|
File "${objdir}\rdoff\rdf2com.exe"
|
|
File "${objdir}\rdoff\rdf2ith.exe"
|
|
File "${objdir}\rdoff\rdf2ihx.exe"
|
|
File "${objdir}\rdoff\rdf2srec.exe"
|
|
File "${objdir}\rdoff\rdfdump.exe"
|
|
File "${objdir}\rdoff\rdflib.exe"
|
|
SectionEnd
|
|
|
|
Section "Manual" SecManual
|
|
SetOutPath "$INSTDIR"
|
|
File "${objdir}\doc\nasmdoc.pdf"
|
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Manual.lnk" "$INSTDIR\nasmdoc.pdf"
|
|
SectionEnd
|
|
|
|
Section "VS8 integration" SecVS8
|
|
CreateDirectory "$INSTDIR\VSrules"
|
|
SetOutPath "$INSTDIR\VSrules"
|
|
File "${srcdir}\contrib\VSrules\nasm.README"
|
|
File "${srcdir}\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
|
|
SetRegView ${BITS}
|
|
!insertmacro MULTIUSER_INIT
|
|
FunctionEnd
|
|
|
|
Function un.onInit
|
|
!insertmacro MULTIUSER_UNINIT
|
|
FunctionEnd
|