From 2726889ece207fa8d5601d4c6baacaca4d1856e6 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Mon, 14 Sep 2009 23:17:03 +0400 Subject: [PATCH] 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 0000000000000000000000000000000000000000..90d338c7cbbaaf6ee376a61049983dd19268d88c GIT binary patch literal 2238 zcmeH|%TH556vn^ONX(5m?ALmVC}LLgzoP7rqNDJ&qY z2uQ=90BpLKz=DJo!9W6$4FM7s&^l*sTM~j@Xp9@q&7C{v``t5h=FEKnGJcp$;B5}R zs`*KJCX>lz$jZusTrP(~p+I(aHk3*wR4NtJYBe+(4YXPSS;i4cs#J# zqVRgX@cDcQ1Of;Kg9wE}2#3R{sfmFxhNh+_G&eV+wY3#hRSC4UwZZTIj`sF;baZr} zv$GSCFJOyySH(FYLps%kF{r&y?o}U;P7{K7*AR>_nhK7bPJUon^o;Z4Y6Brp8 z!RY8H#>U1lK0c0#i3v(KnVG@t>@4Qy<`9d;Fh4(!g@pwyE-qqe zX$i~A%UD@i!RqQN*4EarzP^r)jSXyWZenX|3)|b<*xA{^?(Q!3_V%#9zmJ210~{V6 zA|8(;kw|3PmQ!|Gfqz~B{+|A&@i+BkbL-tS^vRGhw_dN$zzL`0ABj5nrJ>%Cqaw^w z@g~6^OZ;gXr}*b{g5Q$3U5c*cUNYV)-{LfH{7N^u76YWnO zb8_0qp$T<^}mJ+|gvB;b;`gI|nFcV4NB(6?l z<{(}ycrA6+#HEF~g?hXZTs*1AiR2TvQEDe+vHlELaGT!tn`mkOXpTQOTIT<>U-unX AZvX%Q literal 0 HcmV?d00001 diff --git a/nsis/nasm.ico b/nsis/nasm.ico new file mode 100644 index 0000000000000000000000000000000000000000..b1a9d63f34f49cf3839c2b00a5f5537d88c33460 GIT binary patch literal 2238 zcmeH|xla^f7>A!_R}OIxMG)mw4iP~)M8x&L15jjL4@3@icS1!7Bs6puP!OOa;V3vN z0z&u`fC55CLZE<95fVrsp&>v*!QuDLfM@|R8l#2pWWM>mzh~w<-Y+u)CUrzdqgsEy z_(KSgpiX6xtxoYz3X{o%kB<*#vl)xUg0HVHetv#ftyXL{8+N-Lhr>ZoP!Pev!Gwi{ z5fKqVR8*82H=3B37~wpaAt8a}gwvKudk<}p@GK6Mw*(MXl`z%rKN?|)>hiu+GuZYr=z2T&dyG{y1MA@?xv@w zhu+>^`uh6l@9$?|V1U8FL57Bg7#<#GWMqWV(NV_6#uy(TXJTT4$;nBkrly#lo@Qod zhS}L!=H}*@pPy%8VS&ZPMV6M9SYBRcWo3oc)m7Hk)>vO(XJcc7&CN}=wzk;b-ezZK zhuz&>_V)JJ-`_uJd;YWk75HNnQ19w*hI&hn4e9z=sKC$iTl)IlMptk3Bvq2b=OcB? zY4B`43IC3J19dCj;E8(T?>Tzjtvj4ExO_fUxQ@8faCk2_l$ed|&JmA0;6Geqj`&#t z2i=Mcmd5^#7fEV1)UqlRfn literal 0 HcmV?d00001