235 lines
8.1 KiB
Plaintext
235 lines
8.1 KiB
Plaintext
; Copyright 2016 Christoph Reiter
|
|
;
|
|
; This program is free software; you can redistribute it and/or modify
|
|
; it under the terms of the GNU General Public License as published by
|
|
; the Free Software Foundation; either version 2 of the License, or
|
|
; (at your option) any later version.
|
|
|
|
Unicode true
|
|
|
|
!define GPO_NAME "gPodder"
|
|
!define GPO_ID "gpodder"
|
|
!define GPO_DESC "Media aggregator and podcast client"
|
|
|
|
!define GPO_CMD_NAME "gpo"
|
|
|
|
!define GPO_WEBSITE "https://gpodder.github.io"
|
|
|
|
!define GPO_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GPO_NAME}"
|
|
!define GPO_INSTDIR_KEY "Software\${GPO_NAME}"
|
|
!define GPO_INSTDIR_VALUENAME "InstDir"
|
|
|
|
!define MUI_CUSTOMFUNCTION_GUIINIT custom_gui_init
|
|
!include "MUI2.nsh"
|
|
!include "FileFunc.nsh"
|
|
|
|
Name "${GPO_NAME} (${VERSION})"
|
|
OutFile "gpodder-LATEST.exe"
|
|
SetCompressor /SOLID /FINAL lzma
|
|
SetCompressorDictSize 32
|
|
InstallDir "$PROGRAMFILES\${GPO_NAME}"
|
|
RequestExecutionLevel admin
|
|
|
|
Var GPO_INST_BIN
|
|
Var GPO_CMD_INST_BIN
|
|
Var UNINST_BIN
|
|
|
|
!define MUI_ABORTWARNING
|
|
!define MUI_ICON "gpodder.ico"
|
|
|
|
!insertmacro MUI_PAGE_LICENSE "gpodder\COPYING"
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
!insertmacro MUI_LANGUAGE "Afrikaans"
|
|
!insertmacro MUI_LANGUAGE "Albanian"
|
|
!insertmacro MUI_LANGUAGE "Arabic"
|
|
!insertmacro MUI_LANGUAGE "Basque"
|
|
!insertmacro MUI_LANGUAGE "Belarusian"
|
|
!insertmacro MUI_LANGUAGE "Bosnian"
|
|
!insertmacro MUI_LANGUAGE "Breton"
|
|
!insertmacro MUI_LANGUAGE "Bulgarian"
|
|
!insertmacro MUI_LANGUAGE "Catalan"
|
|
!insertmacro MUI_LANGUAGE "Croatian"
|
|
!insertmacro MUI_LANGUAGE "Czech"
|
|
!insertmacro MUI_LANGUAGE "Danish"
|
|
!insertmacro MUI_LANGUAGE "Dutch"
|
|
!insertmacro MUI_LANGUAGE "Esperanto"
|
|
!insertmacro MUI_LANGUAGE "Estonian"
|
|
!insertmacro MUI_LANGUAGE "Farsi"
|
|
!insertmacro MUI_LANGUAGE "Finnish"
|
|
!insertmacro MUI_LANGUAGE "French"
|
|
!insertmacro MUI_LANGUAGE "Galician"
|
|
!insertmacro MUI_LANGUAGE "German"
|
|
!insertmacro MUI_LANGUAGE "Greek"
|
|
!insertmacro MUI_LANGUAGE "Hebrew"
|
|
!insertmacro MUI_LANGUAGE "Hungarian"
|
|
!insertmacro MUI_LANGUAGE "Icelandic"
|
|
!insertmacro MUI_LANGUAGE "Indonesian"
|
|
!insertmacro MUI_LANGUAGE "Irish"
|
|
!insertmacro MUI_LANGUAGE "Italian"
|
|
!insertmacro MUI_LANGUAGE "Japanese"
|
|
!insertmacro MUI_LANGUAGE "Korean"
|
|
!insertmacro MUI_LANGUAGE "Kurdish"
|
|
!insertmacro MUI_LANGUAGE "Latvian"
|
|
!insertmacro MUI_LANGUAGE "Lithuanian"
|
|
!insertmacro MUI_LANGUAGE "Luxembourgish"
|
|
!insertmacro MUI_LANGUAGE "Macedonian"
|
|
!insertmacro MUI_LANGUAGE "Malay"
|
|
!insertmacro MUI_LANGUAGE "Mongolian"
|
|
!insertmacro MUI_LANGUAGE "Norwegian"
|
|
!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
|
|
!insertmacro MUI_LANGUAGE "Polish"
|
|
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
|
!insertmacro MUI_LANGUAGE "Portuguese"
|
|
!insertmacro MUI_LANGUAGE "Romanian"
|
|
!insertmacro MUI_LANGUAGE "Russian"
|
|
!insertmacro MUI_LANGUAGE "SerbianLatin"
|
|
!insertmacro MUI_LANGUAGE "Serbian"
|
|
!insertmacro MUI_LANGUAGE "SimpChinese"
|
|
!insertmacro MUI_LANGUAGE "Slovak"
|
|
!insertmacro MUI_LANGUAGE "Slovenian"
|
|
!insertmacro MUI_LANGUAGE "SpanishInternational"
|
|
!insertmacro MUI_LANGUAGE "Spanish"
|
|
!insertmacro MUI_LANGUAGE "Swedish"
|
|
!insertmacro MUI_LANGUAGE "Thai"
|
|
!insertmacro MUI_LANGUAGE "TradChinese"
|
|
!insertmacro MUI_LANGUAGE "Turkish"
|
|
!insertmacro MUI_LANGUAGE "Ukrainian"
|
|
!insertmacro MUI_LANGUAGE "Uzbek"
|
|
!insertmacro MUI_LANGUAGE "Welsh"
|
|
|
|
|
|
Section "Install"
|
|
SetShellVarContext all
|
|
|
|
; Use this to make things faster for testing installer changes
|
|
;~ SetOutPath "$INSTDIR\bin"
|
|
;~ File /r "mingw32\bin\*.exe"
|
|
|
|
SetOutPath "$INSTDIR"
|
|
File /r "mingw32\*.*"
|
|
|
|
StrCpy $GPO_CMD_INST_BIN "$INSTDIR\bin\gpo.exe"
|
|
StrCpy $GPO_INST_BIN "$INSTDIR\bin\gpodder.exe"
|
|
StrCpy $UNINST_BIN "$INSTDIR\uninstall.exe"
|
|
|
|
; Store installation folder
|
|
WriteRegStr HKLM "${GPO_INSTDIR_KEY}" "${GPO_INSTDIR_VALUENAME}" $INSTDIR
|
|
|
|
; Set up an entry for the uninstaller
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" \
|
|
"DisplayName" "${GPO_NAME} - ${GPO_DESC}"
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "DisplayIcon" "$\"$GPO_INST_BIN$\""
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "UninstallString" \
|
|
"$\"$UNINST_BIN$\""
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "QuietUninstallString" \
|
|
"$\"$UNINST_BIN$\" /S"
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "InstallLocation" "$INSTDIR"
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "HelpLink" "${GPO_WEBSITE}"
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "Publisher" "The gPodder Team"
|
|
WriteRegStr HKLM "${GPO_UNINST_KEY}" "DisplayVersion" "${VERSION}"
|
|
WriteRegDWORD HKLM "${GPO_UNINST_KEY}" "NoModify" 0x1
|
|
WriteRegDWORD HKLM "${GPO_UNINST_KEY}" "NoRepair" 0x1
|
|
; Installation size
|
|
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
|
IntFmt $0 "0x%08X" $0
|
|
WriteRegDWORD HKLM "${GPO_UNINST_KEY}" "EstimatedSize" "$0"
|
|
|
|
; Add application entry
|
|
WriteRegStr HKLM "Software\${GPO_NAME}\${GPO_ID}\Capabilities" "ApplicationDescription" "${GPO_DESC}"
|
|
WriteRegStr HKLM "Software\${GPO_NAME}\${GPO_ID}\Capabilities" "ApplicationName" "${GPO_NAME}"
|
|
|
|
; Register application entry
|
|
WriteRegStr HKLM "Software\RegisteredApplications" "${GPO_NAME}" "Software\${GPO_NAME}\${GPO_ID}\Capabilities"
|
|
|
|
; Register app paths
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\gpodder.exe" "" "$GPO_INST_BIN"
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\gpo.exe" "" "$GPO_CMD_INST_BIN"
|
|
|
|
; Create uninstaller
|
|
WriteUninstaller "$UNINST_BIN"
|
|
|
|
; Create start menu shortcuts
|
|
CreateDirectory "$SMPROGRAMS\${GPO_NAME}"
|
|
CreateShortCut "$SMPROGRAMS\${GPO_NAME}\${GPO_NAME}.lnk" "$GPO_INST_BIN"
|
|
CreateShortCut "$SMPROGRAMS\${GPO_NAME}\${GPO_CMD_NAME}.lnk" "$GPO_CMD_INST_BIN"
|
|
SectionEnd
|
|
|
|
Function custom_gui_init
|
|
BringToFront
|
|
|
|
; Read the install dir and set it
|
|
Var /GLOBAL instdir_temp
|
|
Var /GLOBAL uninst_bin_temp
|
|
|
|
SetRegView 32
|
|
ReadRegStr $instdir_temp HKLM "${GPO_INSTDIR_KEY}" "${GPO_INSTDIR_VALUENAME}"
|
|
SetRegView lastused
|
|
StrCmp $instdir_temp "" skip 0
|
|
StrCpy $INSTDIR $instdir_temp
|
|
skip:
|
|
|
|
SetRegView 64
|
|
ReadRegStr $instdir_temp HKLM "${GPO_INSTDIR_KEY}" "${GPO_INSTDIR_VALUENAME}"
|
|
SetRegView lastused
|
|
StrCmp $instdir_temp "" skip2 0
|
|
StrCpy $INSTDIR $instdir_temp
|
|
skip2:
|
|
|
|
StrCpy $uninst_bin_temp "$INSTDIR\uninstall.exe"
|
|
|
|
; try to un-install existing installations first
|
|
IfFileExists "$INSTDIR" do_uninst do_continue
|
|
do_uninst:
|
|
; instdir exists
|
|
IfFileExists "$uninst_bin_temp" exec_uninst rm_instdir
|
|
exec_uninst:
|
|
; uninstall.exe exists, execute it and
|
|
; if it returns success proceed, otherwise abort the
|
|
; installer (uninstall aborted by user for example)
|
|
ExecWait '"$uninst_bin_temp" _?=$INSTDIR' $R1
|
|
; uninstall succeeded, since the uninstall.exe is still there
|
|
; goto rm_instdir as well
|
|
StrCmp $R1 0 rm_instdir
|
|
; uninstall failed
|
|
Abort
|
|
rm_instdir:
|
|
; either the uninstaller was successful or
|
|
; the uninstaller.exe wasn't found
|
|
RMDir /r "$INSTDIR"
|
|
do_continue:
|
|
; the instdir shouldn't exist from here on
|
|
|
|
BringToFront
|
|
FunctionEnd
|
|
|
|
Section "Uninstall"
|
|
SetShellVarContext all
|
|
SetAutoClose true
|
|
|
|
; Remove start menu entries
|
|
Delete "$SMPROGRAMS\${GPO_NAME}\${GPO_NAME}.lnk"
|
|
Delete "$SMPROGRAMS\${GPO_NAME}\${GPO_CMD_NAME}.lnk"
|
|
RMDir "$SMPROGRAMS\${GPO_NAME}"
|
|
|
|
; Remove application registration and file assocs
|
|
DeleteRegKey HKLM "Software\${GPO_NAME}"
|
|
DeleteRegValue HKLM "Software\RegisteredApplications" "${GPO_NAME}"
|
|
|
|
; Remove app paths
|
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\gpodder.exe"
|
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\gpo.exe"
|
|
|
|
; Delete installation related keys
|
|
DeleteRegKey HKLM "${GPO_UNINST_KEY}"
|
|
DeleteRegKey HKLM "${GPO_INSTDIR_KEY}"
|
|
|
|
; Delete files
|
|
RMDir /r "$INSTDIR"
|
|
SectionEnd
|