diff --git a/source/vcpp/buildEnv/ac.nsi b/source/vcpp/buildEnv/ac.nsi index acbc25ce..00380356 100644 --- a/source/vcpp/buildEnv/ac.nsi +++ b/source/vcpp/buildEnv/ac.nsi @@ -35,6 +35,40 @@ Function openLinkNewWindow Pop $3 FunctionEnd +# Uses $0 +Function un.openLinkNewWindow + Push $3 + Push $2 + Push $1 + Push $0 + ReadRegStr $0 HKCR "http\shell\open\command" "" +# Get browser path + DetailPrint $0 + StrCpy $2 '"' + StrCpy $1 $0 1 + StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char + StrCpy $2 ' ' + StrCpy $3 1 + loop: + StrCpy $1 $0 1 $3 + DetailPrint $1 + StrCmp $1 $2 found + StrCmp $1 "" found + IntOp $3 $3 + 1 + Goto loop + + found: + StrCpy $1 $0 $3 + StrCmp $2 " " +2 + StrCpy $1 '$1"' + + Pop $0 + Exec '$1 $0' + Pop $1 + Pop $2 + Pop $3 +FunctionEnd + ; CONFIGURATION @@ -43,12 +77,17 @@ SetCompressor /SOLID lzma !define CURPATH "R:\projects\ActionCube\ac\source\vcpp\buildEnv" ; CHANGE ME !define AC_VERSION "v1.0" +!define AC_SHORTNAME "AssaultCube" +!define AC_FULLNAME "AssaultCube v1.0" +!define AC_FULLNAMESAVE "AssaultCube_v1.0" + +; general Name "AssaultCube" OutFile "AssaultCube_${AC_VERSION}.exe" -InstallDir "$PROGRAMFILES\AssaultCube" -InstallDirRegKey HKCU "Software\AssaultCube" "" - +InstallDir "$PROGRAMFILES\${AC_FULLNAMESAVE}" +InstallDirRegKey HKCU "Software\${AC_FULLNAMESAVE}" "" +RequestExecutionLevel admin ; require admin in vista ; Interface Configuration @@ -80,7 +119,7 @@ UninstallIcon "${CURPATH}\icon.ico" ; Installer Sections -Section "AssaultCube 1.0" AC +Section "AssaultCube v1.0" AC SectionIn RO @@ -88,23 +127,23 @@ Section "AssaultCube 1.0" AC File /r ac\*.* - WriteRegStr HKCU "Software\AssaultCube" "" $INSTDIR + WriteRegStr HKCU "Software\${AC_FULLNAMESAVE}" "" $INSTDIR ; Create uninstaller - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "DisplayName" "AssaultCube ${AC_VERSION}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "UninstallString" '"$INSTDIR\uninstall.exe"' - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "DisplayIcon" '"$INSTDIR\icon.ico"' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "DisplayName" "${AC_FULLNAME}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "DisplayIcon" '"$INSTDIR\icon.ico"' - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "HelpLink" "http://assault.cubers.net/help.html" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "URLInfoAbout" "http://assault.cubers.net" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "URLUpdateInfo" "http://assault.cubers.net/download.html" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "HelpLink" "http://assault.cubers.net/help.html" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "URLInfoAbout" "http://assault.cubers.net" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "URLUpdateInfo" "http://assault.cubers.net/download.html" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "DisplayVersion" "v1.0" - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "VersionMajor" 1 - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "VersionMinor" 0 + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "DisplayVersion" "v1.0" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "VersionMajor" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "VersionMinor" 0 - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "NoModify" 1 - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" "NoRepair" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" "NoRepair" 1 WriteUninstaller "$INSTDIR\Uninstall.exe" @@ -132,21 +171,24 @@ Section "Multiuser Support (recommended)" MULTIUSER ; configures the .bat file to store configs in the appdata directory FileOpen $9 "$INSTDIR\AssaultCube.bat" w - FileWrite $9 "bin_win32\ac_client.exe --home=$\"%appdata%\AssaultCube_v1.0$\" --init %1 %2 %3 %4 %5$\r$\n" + FileWrite $9 "bin_win32\ac_client.exe --home=$\"%appdata%\${AC_FULLNAMESAVE}$\" --init %1 %2 %3 %4 %5$\r$\n" FileWrite $9 "pause$\r$\n" FileClose $9 ; link to it - CreateShortCut "$INSTDIR\User Directory.lnk" "%appdata%\AssaultCube_v1.0" "" "" 0 + + CreateShortCut "$INSTDIR\User Data.lnk" "%appdata%\${AC_FULLNAMESAVE}" "" "" 0 SectionEnd -Section "Start Menu Shortcuts" SHORTCUTS +Section "Start Menu Shortcuts" PROGSHORTCUTS - CreateDirectory "$SMPROGRAMS\AssaultCube" - CreateShortCut "$SMPROGRAMS\AssaultCube\AssaultCube.lnk" "$INSTDIR\AssaultCube.bat" "" "$INSTDIR\icon.ico" 0 SW_SHOWMINIMIZED - CreateShortCut "$SMPROGRAMS\AssaultCube\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\AssaultCube\README.lnk" "$INSTDIR\README.html" "" "" 0 + SetShellVarContext all + + CreateDirectory "$SMPROGRAMS\${AC_SHORTNAME}" + CreateShortCut "$SMPROGRAMS\${AC_SHORTNAME}\${AC_SHORTNAME}.lnk" "$INSTDIR\AssaultCube.bat" "" "$INSTDIR\icon.ico" 0 SW_SHOWMINIMIZED + CreateShortCut "$SMPROGRAMS\${AC_SHORTNAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\${AC_SHORTNAME}\README.lnk" "$INSTDIR\README.html" "" "" 0 ; create link to user settings dir if the multiuser-setting is selected @@ -155,20 +197,51 @@ Section "Start Menu Shortcuts" SHORTCUTS IntCmp $0 ${SF_SELECTED} CreateUserSettingsShortCut SkipCreateUserSettingsShortCut CreateUserSettingsShortCut: - CreateShortCut "$SMPROGRAMS\AssaultCube\User Directory.lnk" "%appdata%\AssaultCube_v1.0" "" "" 0 + CreateShortCut "$SMPROGRAMS\AssaultCube\AssaultCube User Data.lnk" "%appdata%\${AC_FULLNAMESAVE}" "" "" 0 + SkipCreateUserSettingsShortCut: + +SectionEnd + +Section "Desktop Shortcuts" DESKSHORTCUTS + + SetShellVarContext all + + CreateShortCut "$DESKTOP\${AC_SHORTNAME}.lnk" "$INSTDIR\AssaultCube.bat" "" "$INSTDIR\icon.ico" 0 SW_SHOWMINIMIZED + + ; create link to user settings dir if the multiuser-setting is selected + + SectionGetFlags ${Multiuser} $0 + IntOp $0 $0 & ${SF_SELECTED} + IntCmp $0 ${SF_SELECTED} CreateUserSettingsShortCut SkipCreateUserSettingsShortCut + + CreateUserSettingsShortCut: + CreateShortCut "$DESKTOP\AssaultCube User Data.lnk" "%appdata%\${AC_FULLNAMESAVE}" "" "" 0 SkipCreateUserSettingsShortCut: SectionEnd Section "Uninstall" + + SetShellVarContext all + + ; delete reg keys + + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_FULLNAMESAVE}" + DeleteRegKey HKLM "SOFTWARE\${AC_FULLNAMESAVE}" + DeleteRegKey /ifempty HKCU "SOFTWARE\${AC_FULLNAMESAVE}" - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AssaultCube" - DeleteRegKey HKLM SOFTWARE\AssaultCube - - RMDir /r "$SMPROGRAMS\AssaultCube" + ; delete directory + RMDir /r "$INSTDIR" - DeleteRegKey /ifempty HKCU "Software\AssaultCube" + ; delete shortcuts + + RMDir /r "$SMPROGRAMS\${AC_SHORTNAME}" + Delete "$DESKTOP\AssaultCube.lnk" + Delete "$DESKTOP\AssaultCube User Data.lnk" + + StrCpy $0 "http://assault.cubers.net/uninstallnotes/v1.0/" + Call un.openLinkNewWindow SectionEnd @@ -180,8 +253,9 @@ SectionEnd !insertmacro MUI_DESCRIPTION_TEXT ${AC} "Installs the required AssaultCube core files" !insertmacro MUI_DESCRIPTION_TEXT ${VCPP} "Installs the runtime to make AssaultCube run on your computer" !insertmacro MUI_DESCRIPTION_TEXT ${OAL} "Installs a sound library for 3D audio" - !insertmacro MUI_DESCRIPTION_TEXT ${SHORTCUTS} "Creates shortcuts in your Startmenu" - !insertmacro MUI_DESCRIPTION_TEXT ${MULTIUSER} "Configures AssaultCube to store its configuration in user-profiles" + !insertmacro MUI_DESCRIPTION_TEXT ${MULTIUSER} "Stores configuration and downloaded maps in %APPDATA%" + !insertmacro MUI_DESCRIPTION_TEXT ${PROGSHORTCUTS} "Creates shortcuts in your Startmenu" + !insertmacro MUI_DESCRIPTION_TEXT ${DESKSHORTCUTS} "Creates shortcuts on your Desktop" !insertmacro MUI_FUNCTION_DESCRIPTION_END