!include japversion.nsh Name JAP SetCompressor /SOLID lzma BrandingText "JAP - Anonymity is Not a Crime" !addincludedir NSIS/Include !addplugindir NSIS/Plugins # Defines !define REGKEY "SOFTWARE\$(^Name)" !define COMPANY JAP-Team !define URL http://anon.inf.tu-dresden.de/ # MUI defines !define MUI_ICON Data\jap.ico !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_REGISTRY_KEY Software\JAP !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup !define MUI_STARTMENUPAGE_DEFAULT_FOLDER JAP !define MUI_UNICON Data\jap.ico !define MUI_UNFINISHPAGE_NOAUTOCLOSE !define MUI_LANGDLL_REGISTRY_ROOT HKLM !define MUI_LANGDLL_REGISTRY_KEY ${REGKEY} !define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage # Included files !include Sections.nsh !include MUI2.nsh # Reserved Files !insertmacro MUI_RESERVEFILE_LANGDLL #ReserveFile "${NSISDIR}\Plugins\AdvSplash.dll" # Variables Var StartMenuGroup #interface configuration !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "Data\Background.bmp" !define MUI_ABORTWARNING !define MUI_HEADERIMAGE_RIGHT # Installer pages !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES # Installer languages !insertmacro MUI_LANGUAGE English !insertmacro MUI_LANGUAGE German # Installer attributes OutFile japsetupfull.exe InstallDir $PROGRAMFILES\JAP CRCCheck on XPStyle on ShowInstDetails hide VIProductVersion 0.${VERSION_MAJOR}.${VERSION_MINOR}.0 VIAddVersionKey ProductName JAP VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" VIAddVersionKey Website "${URL}" VIAddVersionKey FileVersion "0.${VERSION_MAJOR}.${VERSION_MINOR}.0" VIAddVersionKey FileDescription "JAP Setup" VIAddVersionKey LegalCopyright "" InstallDirRegKey HKLM "${REGKEY}" Path ShowUninstDetails hide # Installer sections Section "-JAP" SEC0000 SetOutPath $INSTDIR SetOverwrite on File "JAP\jap.exe" File "JAP\japdll.dll" File "JAP\japdll_x64.dll" File "JAP\JAP.jar" WriteRegStr HKLM "${REGKEY}\Components" Main 1 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory $SMPROGRAMS\$StartMenuGroup SetOutPath $INSTDIR CreateShortcut "$SMPROGRAMS\$StartMenuGroup\JAP.lnk" $INSTDIR\jap.exe !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "-JRE" secJRE SetOutPath $INSTDIR\jre SetOverwrite on File /a /r "java\jre\*.*" SectionEnd ;-------------------------------- ;Descriptions ;Language strings ; LangString DESC_SecJAP ${LANG_ENGLISH} "This will install the JAP. You must have installed Java version 1.1 or above." ; LangString DESC_SecJAP ${LANG_GERMAN} "Der JAP. Zum Ausführen des JAP wird Java Version 1.1 oder höher benötigt." ;Assign language strings to sections ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN ; !insertmacro MUI_DESCRIPTION_TEXT ${SEC0000} $(DESC_SecJAP) ;!insertmacro MUI_FUNCTION_DESCRIPTION_END Section -post SEC0001 WriteRegStr HKLM "${REGKEY}" Path $INSTDIR WriteUninstaller $INSTDIR\uninstall.exe !insertmacro MUI_STARTMENU_WRITE_BEGIN Application SetOutPath $SMPROGRAMS\$StartMenuGroup CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^UninstallLink).lnk" $INSTDIR\uninstall.exe !insertmacro MUI_STARTMENU_WRITE_END WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 SectionEnd # Macro for selecting uninstaller sections ;!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID ; Push $R0 ; ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}" ; StrCmp $R0 1 0 next${UNSECTION_ID} ; !insertmacro SelectSection "${UNSECTION_ID}" ; GoTo done${UNSECTION_ID} ;next${UNSECTION_ID}: ; !insertmacro UnselectSection "${UNSECTION_ID}" ;done${UNSECTION_ID}: ; Pop $R0 ;!macroend # Uninstaller sections Section un.JAP UNSEC0000 Delete /REBOOTOK $INSTDIR\jap.exe Delete /REBOOTOK $INSTDIR\JAP.jar Delete /REBOOTOK $INSTDIR\japdll.dll Delete /REBOOTOK $INSTDIR\japdll_x64.dll RMDir /r /REBOOTOK $INSTDIR\jre SetShellVarContext current Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\JAP.lnk" SetShellVarContext all Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\JAP.lnk" DeleteRegValue HKLM "${REGKEY}\Components" Main SectionEnd Section un.post UNSEC0001 DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" SetShellVarContext current Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^UninstallLink).lnk" RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup SetShellVarContext all Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^UninstallLink).lnk" RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup Delete /REBOOTOK $INSTDIR\uninstall.exe DeleteRegValue HKLM "${REGKEY}" StartMenuGroup DeleteRegValue HKLM "${REGKEY}" Path DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components" DeleteRegKey /IfEmpty HKLM "${REGKEY}" RmDir /REBOOTOK $INSTDIR SectionEnd # Installer functions Function .onInit InitPluginsDir File /oname=$PLUGINSDIR\spltmp.bmp Data\splash.bmp splash::show 500 $PLUGINSDIR\spltmp Pop $R0 FunctionEnd # Uninstaller functions Function un.onInit ReadRegStr $INSTDIR HKLM "${REGKEY}" Path ReadRegStr $StartMenuGroup HKLM "${REGKEY}" StartMenuGroup !insertmacro MUI_UNGETLANGUAGE ; !insertmacro SELECT_UNSECTION Main ${UNSEC0000} FunctionEnd # Installer Language Strings LangString ^UninstallLink ${LANG_GERMAN} "Lösche $(^Name)" LangString ^UninstallLink ${LANG_ENGLISH} "Uninstall $(^Name)"