;             __________               __   ___.
;   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
;   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
;   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
;   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
;                     \/            \/     \/    \/            \/
;
; Copyright (c) 2010 Dominik Riebeling
;
; All files in this archive are subject to the GNU General Public License.
; See the file COPYING in the source tree root for full license agreement.
;
; This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
; KIND, either express or implied.
;

; NSIS installer using Modern UI
; Expects a static build of the Theme Editor (Qt DLLs are not packaged) and to
; find the input files in the source tree (in-tree build).
; This installer uses the ZipDll plugin for font pack extraction
; (http://nsis.sourceforge.net/ZipDLL_plug-in)

!include "MUI2.nsh"

;Name and file
Name "Rockbox Theme Editor"
OutFile "rbthemeeditor-setup.exe"

;Default installation folder
InstallDir "$PROGRAMFILES\Rockbox Theme Editor"

; global registry shortcuts
!define UNINSTALL_HIVE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rockbox Theme Editor"
!define SETTINGS_HIVE "Software\rockbox.org\Rockbox Theme Editor"

;Get installation folder from registry if available
InstallDirRegKey HKCU "${SETTINGS_HIVE}" ""

SetCompressor /solid lzma
VIAddVersionKey "ProductName" "Rockbox Theme Editor"
VIAddVersionKey "FileVersion" "0.0.0"
VIAddVersionKey "FileDescription" "Editor for the Rockbox Firmware Theme files"
VIAddVersionKey "LegalCopyright" "Contributing Developers"
VIProductVersion "0.0.0.0"
!define MUI_ICON resources\windowicon.ico
; embed XP manifest
XPStyle on

;Interface Configuration. Use Rockbox blue for header.
!define MUI_BGCOLOR b6c6e5
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "themeeditor-setup.bmp"
!define MUI_HEADERIMAGE_RIGHT
!define MUI_ABORTWARNING

;Pages
!insertmacro MUI_PAGE_LICENSE "..\..\docs\COPYING"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

;Languages
!insertmacro MUI_LANGUAGE "English"

;Installer Sections
Section "Theme Editor" SecThemeEditor
    SectionSetFlags ${SecThemeEditor} ${SF_RO}
    SectionIn RO
    SetOutPath "$INSTDIR"
    ; Store installation folder
    WriteRegStr HKCU "${SETTINGS_HIVE}" "" $INSTDIR
    ; files
    CreateDirectory "$INSTDIR"
    File /oname=$INSTDIR\rbthemeeditor.exe release\rbthemeeditor.exe

    ; Create uninstaller and uninstall information
    WriteUninstaller "$INSTDIR\Uninstall.exe"
    WriteRegStr HKLM "${UNINSTALL_HIVE}" "DisplayName" "Rockbox Theme Editor"
    WriteRegStr HKLM "${UNINSTALL_HIVE}" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
    WriteRegStr HKLM "${UNINSTALL_HIVE}" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
    WriteRegStr HKLM "${UNINSTALL_HIVE}" "URLInfoAbout" "http://www.rockbox.org/wiki/ThemeEditor"
SectionEnd

Section "Download Fonts Package" SecFontsPackage
    SetOutPath "$INSTDIR"
    NSISdl::download http://download.rockbox.org/daily/fonts/rockbox-fonts.zip "$INSTDIR\rockbox-fonts.zip"
    ZipDLL::extractall "$INSTDIR\rockbox-fonts.zip" "$INSTDIR" "<ALL>"
    ; the fonts package uses the Rockbox folder structure. Move all fonts into a
    ; flat directory instead.
    Rename "$INSTDIR\.rockbox\fonts" "$INSTDIR\fonts"
    RMDir /r "$INSTDIR\.rockbox"
    WriteRegStr HKCU "${SETTINGS_HIVE}\RBFont" "fontDir" "$INSTDIR\fonts\"
SectionEnd

Section "Start Menu Shortcut" SecShortCuts
    CreateDirectory "$SMPROGRAMS\Rockbox"
    CreateShortCut "$SMPROGRAMS\Rockbox\Theme Editor.lnk" "$INSTDIR\rbthemeeditor.exe"
    CreateShortCut "$SMPROGRAMS\Rockbox\Uninstall Theme Editor.lnk" "$INSTDIR\Uninstall.exe"
SectionEnd

; Assign language strings to sections
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecThemeEditor} \
    "Rockbox Theme Editor. Required."
!insertmacro MUI_DESCRIPTION_TEXT ${SecFontsPackage} \
    "Download and install the Rockbox Fonts package into program folder. \
     This will set the correct path in the program configuration for the current user only."
!insertmacro MUI_DESCRIPTION_TEXT ${SecShortCuts} \
    "Create Shortcut in Start Menu."
!insertmacro MUI_FUNCTION_DESCRIPTION_END

; Uninstaller Section
Section "Uninstall"
    ; files
    Delete "$INSTDIR\Uninstall.exe"
    Delete "$INSTDIR\rbthemeeditor.exe"
    Delete "$INSTDIR\rockbox-fonts.zip"
    ; folders
    RMDir /r "$INSTDIR\fonts"
    RMDir "$INSTDIR"
    ; start menu folder
    RMDir /r "$SMPROGRAMS\Rockbox"

    ; remove registry information
    DeleteRegKey HKLM "${UNINSTALL_HIVE}"
    DeleteRegKey HKCU "Software\rockbox.org\Rockbox Theme Editor"
SectionEnd

