################################################################################
# 俺のEclipse Installer Script
#
# @author  Satoshi Nagashiba
################################################################################

#-------------------------------------------------------------------------------
# 圧縮
#-------------------------------------------------------------------------------
#SetCompressor bzip2
SetCompressor lzma

#-------------------------------------------------------------------------------
# 定義
#-------------------------------------------------------------------------------
!define PRODUCT_NAME "eclipse"
!define PRODUCT_TITLE_NAME "俺のEclipse"
!define PRODUCT_DISPLAY_NAME "Eclipse"
!define PRODUCT_VERSION "3.4.1"
!define PRODUCT_DIRECTORY "${PRODUCT_NAME}\${PRODUCT_VERSION}"
!define PRODUCT_WEB_SITE "http://ore-no-eclipse.sourceforge.jp/"
!define PRODUCT_WEB_SITE_LINK "${PRODUCT_TITLE_NAME} ウェブページ.lnk"
!define PRODUCT_PUBLISHER "Satoshi Nagashiba"
!define PRODUCT_REG_KEY "SOFTWARE\${PRODUCT_DIRECTORY}"
!define PRODUCT_UNINST_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_DIRECTORY}"
!define PRODUCT_INSTALLER "ore-no-eclipse-${PRODUCT_VERSION}-install.exe"

#-------------------------------------------------------------------------------
#インストールするアプリケーションフォルダ
#-------------------------------------------------------------------------------
!define PRODUCT_APPLICATION_DIRECTORY "C:\Work\Tool\Eclipse\ore-no-eclipse\3.4.1\eclipse"

#-------------------------------------------------------------------------------
# MUI 定義
#-------------------------------------------------------------------------------
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${PRODUCT_REG_KEY}
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${PRODUCT_DISPLAY_NAME}\${PRODUCT_VERSION}"
!define MUI_FINISHPAGE_RUN "$INSTDIR\eclipse.exe -clean.cmd"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-colorful.ico"

#-------------------------------------------------------------------------------
# インクルード・ファイル
#-------------------------------------------------------------------------------
!include Sections.nsh
!include MUI.nsh

#-------------------------------------------------------------------------------
# 変数
#-------------------------------------------------------------------------------
Var StartMenuGroup

#-------------------------------------------------------------------------------
# インストーラー・ページ
#-------------------------------------------------------------------------------
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

#-------------------------------------------------------------------------------
# インストーラー言語
#-------------------------------------------------------------------------------
!insertmacro MUI_LANGUAGE Japanese

#-------------------------------------------------------------------------------
# インストーラー属性
#-------------------------------------------------------------------------------
Name "${PRODUCT_TITLE_NAME} ${PRODUCT_VERSION}"
OutFile ${PRODUCT_INSTALLER}
InstallDir $PROGRAMFILES\${PRODUCT_DIRECTORY}
CRCCheck on
XPStyle on
ShowInstDetails show
VIProductVersion ${PRODUCT_VERSION}.0
VIAddVersionKey /LANG=${LANG_JAPANESE} ProductName ${PRODUCT_TITLE_NAME}
VIAddVersionKey /LANG=${LANG_JAPANESE} ProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_JAPANESE} FileVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_JAPANESE} FileDescription ""
VIAddVersionKey /LANG=${LANG_JAPANESE} LegalCopyright ""
InstallDirRegKey HKLM "${PRODUCT_REG_KEY}" Path
ShowUninstDetails show

#-------------------------------------------------------------------------------
# インストーラー・セクション
#-------------------------------------------------------------------------------
Section -Main SEC0000
    SetOutPath $INSTDIR
    SetOverwrite on
    File ${PRODUCT_APPLICATION_DIRECTORY}\.eclipseproduct
    File ${PRODUCT_APPLICATION_DIRECTORY}\eclipse.exe
    File "${PRODUCT_APPLICATION_DIRECTORY}\eclipse.exe -clean.cmd"
    File "${PRODUCT_APPLICATION_DIRECTORY}\eclipse.exe startup.cmd"
    File ${PRODUCT_APPLICATION_DIRECTORY}\eclipse.ini
    File ${PRODUCT_APPLICATION_DIRECTORY}\eclipsec.exe
    File ${PRODUCT_APPLICATION_DIRECTORY}\epl-v10.html
    File ${PRODUCT_APPLICATION_DIRECTORY}\notice.html
    File ${PRODUCT_APPLICATION_DIRECTORY}\jad.exe
    SetOutPath $INSTDIR\configuration
    File /r ${PRODUCT_APPLICATION_DIRECTORY}\configuration\*
    SetOutPath $INSTDIR\features
    File /r ${PRODUCT_APPLICATION_DIRECTORY}\features\*
    SetOutPath $INSTDIR\plugins
    File /r ${PRODUCT_APPLICATION_DIRECTORY}\plugins\*
    SetOutPath $INSTDIR\readme
    File /r ${PRODUCT_APPLICATION_DIRECTORY}\readme\*
    SetOutPath $INSTDIR\dropins
    SetOutPath $INSTDIR\p2
    File /r ${PRODUCT_APPLICATION_DIRECTORY}\p2\*
    WriteRegStr HKLM "${PRODUCT_REG_KEY}\Components" Main 1
SectionEnd

Section -post SEC0001
    WriteRegStr HKLM "${PRODUCT_REG_KEY}" Path $INSTDIR
    SetOutPath $INSTDIR
    WriteUninstaller $INSTDIR\uninstall.exe
    !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
    WriteIniStr "$INSTDIR\${PRODUCT_TITLE_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
    CreateDirectory "$SMPROGRAMS\$StartMenuGroup"
    CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_DISPLAY_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\eclipse.exe"
    CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_WEB_SITE_LINK}" "$INSTDIR\${PRODUCT_TITLE_NAME}.url"
    CreateShortcut "$SMPROGRAMS\$StartMenuGroup\アンインストール.lnk" $INSTDIR\uninstall.exe
    CreateShortCut "$DESKTOP\${PRODUCT_DISPLAY_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\eclipse.exe"
    !insertmacro MUI_STARTMENU_WRITE_END
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" DisplayName "${PRODUCT_TITLE_NAME}"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" DisplayVersion "${PRODUCT_VERSION}"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" DisplayIcon $INSTDIR\uninstall.exe
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" UninstallString $INSTDIR\uninstall.exe
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" URLInfoAbout "${PRODUCT_WEB_SITE}"
    WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" Publisher "${PRODUCT_PUBLISHER}"
    WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" NoModify 1
    WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" NoRepair 1
SectionEnd

#-------------------------------------------------------------------------------
# 選択アンインストーラー・セクションのマクロ
#-------------------------------------------------------------------------------
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
    Push $R0
    ReadRegStr $R0 HKLM "${PRODUCT_REG_KEY}\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

#-------------------------------------------------------------------------------
# アンインストーラー・セクション
#-------------------------------------------------------------------------------
Section /o -un.Main UNSEC0000
    RmDir /r /REBOOTOK $INSTDIR
    DeleteRegValue HKLM "${PRODUCT_REG_KEY}\Components" Main
SectionEnd

Section -un.post UNSEC0001
    DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_DISPLAY_NAME} ${PRODUCT_VERSION}.lnk"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_WEB_SITE_LINK}"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\アンインストール.lnk"
    Delete /REBOOTOK "$DESKTOP\${PRODUCT_DISPLAY_NAME} ${PRODUCT_VERSION}.lnk"
    Delete /REBOOTOK $INSTDIR\uninstall.exe
    DeleteRegValue HKLM "${PRODUCT_REG_KEY}" StartMenuGroup
    DeleteRegValue HKLM "${PRODUCT_REG_KEY}" Path
    DeleteRegKey /IfEmpty HKLM "${PRODUCT_REG_KEY}\Components"
    DeleteRegKey /IfEmpty HKLM "${PRODUCT_REG_KEY}"
    RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
    RmDir /REBOOTOK $INSTDIR
SectionEnd

#-------------------------------------------------------------------------------
# インストーラー関数
#-------------------------------------------------------------------------------
Function .onInit
    InitPluginsDir
FunctionEnd

#-------------------------------------------------------------------------------
# アンインストーラー関数
#-------------------------------------------------------------------------------
Function un.onInit
    ReadRegStr $INSTDIR HKLM "${PRODUCT_REG_KEY}" Path
    !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
    !insertmacro SELECT_UNSECTION Main ${UNSEC0000}
FunctionEnd
