1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
|
#------------------------------------------------------------------------------
!include "LogicLib.nsh"
#------------------------------------------------------------------------------
!ifndef VERSION
!define VERSION "unknown"
!endif
!ifndef OUTFILE
!define OUTFILE "../neverball-${VERSION}-setup.exe"
!endif
!define UNINSTALL_REG_ROOT \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Neverball"
#------------------------------------------------------------------------------
OutFile ${OUTFILE}
Name "Neverball ${VERSION}"
LicenseData "COPYING.txt"
InstallDir "$PROGRAMFILES\Neverball"
XPStyle on
SetCompressor /solid lzma
RequestExecutionLevel user
#------------------------------------------------------------------------------
Page license
Page components
Page directory
Page instfiles
Function .onInit
Call IsUserAdmin
Pop $R0
${If} $R0 == "true"
SetShellVarContext all
${EndIf}
FunctionEnd
Section "Neverball/Neverputt"
SectionIn RO
SetOutPath "$INSTDIR"
File *.txt doc\*.txt
File /r /x .svn /x *.map /x *.obj data
File /r locale
File neverball.exe neverputt.exe *.dll
File /oname=data\icon\neverball.ico dist\ico\neverball.ico
File /oname=data\icon\neverputt.ico dist\ico\neverputt.ico
CreateDirectory "$INSTDIR\bin"
SetOutPath "$INSTDIR\bin"
File scripts\neverball.bat
File scripts\neverputt.bat
File contrib\curve.exe
# http://nsis.sourceforge.net/\
# Add_uninstall_information_to_Add/Remove_Programs
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"DisplayName" "Neverball ${VERSION}"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"DisplayVersion" "${VERSION}"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"DisplayIcon" "$INSTDIR\data\icon\neverball.ico"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"UninstallString" "$INSTDIR\uninstall.exe"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"URLInfoAbout" "http://www.neverball.org/"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"URLUpdateInfo" "http://www.neverball.org/"
WriteRegStr SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"HelpLink" "http://www.nevercorner.net/"
WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"NoModify" 1
WriteRegDWORD SHELL_CONTEXT ${UNINSTALL_REG_ROOT} \
"NoRepair" 1
WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd
Section "Mapping tools (compiler, maps, ...)"
SetOutPath "$INSTDIR"
File mapc.exe
File /oname=bin\mapc.bat scripts\mapc.bat
SetOutPath "$INSTDIR\data"
File /r /x ".svn" data\*.map
File /r /x ".svn" data\*.obj
SectionEnd
SectionGroup "Shortcuts"
Section "In Start menu"
# Reset to get a proper working directory
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\Neverball"
CreateShortcut \
"$SMPROGRAMS\Neverball\Neverball.lnk" \
"$INSTDIR\neverball.exe" "" \
"$INSTDIR\data\icon\neverball.ico"
CreateShortcut \
"$SMPROGRAMS\Neverball\Neverputt.lnk" \
"$INSTDIR\neverputt.exe" "" \
"$INSTDIR\data\icon\neverputt.ico"
SectionEnd
Section "On desktop"
# Reset to get a proper working directory
SetOutPath "$INSTDIR"
CreateShortcut \
"$DESKTOP\Neverball.lnk" \
"$INSTDIR\neverball.exe" "" \
"$INSTDIR\data\icon\neverball.ico"
CreateShortcut \
"$DESKTOP\Neverputt.lnk" \
"$INSTDIR\neverputt.exe" "" \
"$INSTDIR\data\icon\neverputt.ico"
SectionEnd
SectionGroupEnd
#------------------------------------------------------------------------------
UninstPage uninstConfirm
UninstPage instfiles
Function un.onInit
Call un.IsUserAdmin
Pop $R0
${If} $R0 == "true"
SetShellVarContext all
${EndIf}
FunctionEnd
Section "Uninstall"
Delete "$SMPROGRAMS\Neverball\Neverball.lnk"
Delete "$SMPROGRAMS\Neverball\Neverputt.lnk"
RMDir "$SMPROGRAMS\Neverball"
Delete "$DESKTOP\Neverball.lnk"
Delete "$DESKTOP\Neverputt.lnk"
DeleteRegKey SHELL_CONTEXT ${UNINSTALL_REG_ROOT}
# FIXME: unsafe if the directory contains other-than-installed stuff
RMDir /r $INSTDIR
SectionEnd
#------------------------------------------------------------------------------
# URL: http://nsis.sourceforge.net/IsUserAdmin
# Author: Lilla (lilla@earthlink.net) 2003-06-13
!macro IsUserAdmin un
Function ${un}IsUserAdmin
Push $R0
Push $R1
Push $R2
ClearErrors
UserInfo::GetName
IfErrors Win9x
Pop $R1
UserInfo::GetAccountType
Pop $R2
StrCmp $R2 "Admin" 0 Continue
StrCpy $R0 "true"
Goto Done
Continue:
StrCmp $R2 "" Win9x
StrCpy $R0 "false"
Goto Done
Win9x:
StrCpy $R0 "true"
Done:
Pop $R2
Pop $R1
Exch $R0
FunctionEnd
!macroend
!insertmacro IsUserAdmin ""
!insertmacro IsUserAdmin "un."
#------------------------------------------------------------------------------
# vim:sts=4:sw=4:et:
|