!include "MUI.nsh"

!define MUI_ICON "install icon.ico"
!define MUI_UNICON "uninstall icon.ico"

!define APP_NAME "Olive"
!define APP_TARGET "olive-editor"

!define MUI_FINISHPAGE_RUN "$INSTDIR\olive-editor.exe"

SetCompressor lzma

Name ${APP_NAME}


!ifdef X64
InstallDir "$PROGRAMFILES64\${APP_NAME}"
!else
InstallDir "$PROGRAMFILES32\${APP_NAME}"
!endif

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE LICENSE
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES

!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APP_NAME}"
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchOlive"
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

Section "Olive"
    SectionIn RO
    SetOutPath $INSTDIR
    File /r olive-editor\*
    WriteUninstaller "$INSTDIR\uninstall.exe"

    # Install Visual C++ 2010 Redistributable
    File "vcredist_x64.exe"
    ExecWait '"$INSTDIR\vcredist_x64.exe" /quiet'
    Delete "$INSTDIR\vcredist_x64.exe"
SectionEnd

Section "Create Desktop shortcut"
    CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${APP_TARGET}.exe"
SectionEnd

Section "Create Start Menu shortcut"
    CreateDirectory "$SMPROGRAMS\${APP_NAME}"
    CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${APP_TARGET}.exe"
    CreateShortCut "$SMPROGRAMS\${APP_NAME}\Uninstall ${APP_NAME}.lnk" "$INSTDIR\uninstall.exe"
SectionEnd

Section "Associate *.ove files with Olive"
    WriteRegStr HKCR ".ove" "" "OliveEditor.OVEFile"
    WriteRegStr HKCR ".ove" "Content Type" "application/vnd.olive-project"
    WriteRegStr HKCR "OliveEditor.OVEFile" "" "Olive project file"
    WriteRegStr HKCR "OliveEditor.OVEFile\DefaultIcon" "" "$INSTDIR\olive-editor.exe,1"
    WriteRegStr HKCR "OliveEditor.OVEFile\shell\open\command" "" "$\"$INSTDIR\olive-editor.exe$\" $\"%1$\""
    System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd

UninstPage uninstConfirm
UninstPage instfiles

Section "uninstall"

    rmdir /r "$INSTDIR"

    Delete "$DESKTOP\${APP_NAME}.lnk"
    rmdir /r "$SMPROGRAMS\${APP_NAME}"

    DeleteRegKey HKCR ".ove"
    DeleteRegKey HKCR "OliveEditor.OVEFile"
    DeleteRegKey HKCR "OliveEditor.OVEFile\DefaultIcon" ""
    DeleteRegKey HKCR "OliveEditor.OVEFile\shell\open\command" ""
    System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd

Function LaunchOlive
    ExecShell "" "$INSTDIR\${APP_TARGET}.exe"
FunctionEnd
