LameXP/etc/NSIS/setup.nsi

834 lines
26 KiB
Plaintext
Raw Normal View History

; ///////////////////////////////////////////////////////////////////////////////
; // LameXP - Audio Encoder Front-End
2017-03-12 12:12:49 +01:00
; // Copyright (C) 2004-2017 LoRd_MuldeR <MuldeR2@GMX.de>
; //
; // 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.
; //
; // This program is distributed in the hope that it will be useful,
; // but WITHOUT ANY WARRANTY; without even the implied warranty of
; // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; // GNU General Public License for more details.
; //
; // You should have received a copy of the GNU General Public License along
; // with this program; if not, write to the Free Software Foundation, Inc.,
; // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
; //
; // http://www.gnu.org/licenses/gpl-2.0.txt
; ///////////////////////////////////////////////////////////////////////////////
2012-11-25 14:03:33 +01:00
2010-12-11 02:05:51 +01:00
;--------------------------------
;Basic Defines
;--------------------------------
2012-11-25 14:03:33 +01:00
!ifndef NSIS_UNICODE
!error "NSIS_UNICODE is undefined, please compile with Unicode NSIS !!!"
!endif
2010-12-11 02:05:51 +01:00
!ifndef LAMEXP_VERSION
!error "LAMEXP_VERSION is not defined !!!"
!endif
!ifndef LAMEXP_BUILD
!error "LAMEXP_BUILD is not defined !!!"
!endif
!ifndef LAMEXP_INSTTYPE
!error "LAMEXP_INSTTYPE is not defined !!!"
!endif
!ifndef LAMEXP_PATCH
!error "LAMEXP_PATCH is not defined !!!"
2010-12-11 02:05:51 +01:00
!endif
!ifndef LAMEXP_DATE
!error "LAMEXP_DATE is not defined !!!"
!endif
!ifndef LAMEXP_OUTPUT_FILE
!error "LAMEXP_OUTPUT_FILE is not defined !!!"
!endif
!ifndef LAMEXP_SOURCE_PATH
!error "LAMEXP_SOURCE_PATH is not defined !!!"
!endif
;UUID
!define MyRegPath "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBD7A67D-D700-4043-B54F-DD106D00F308}"
2015-02-26 22:25:28 +01:00
;App Paths
!define AppPaths "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
2011-02-26 21:23:10 +01:00
;Web-Site
2013-04-18 22:55:21 +02:00
!define MyWebSite "http://muldersoft.com/"
2010-12-11 02:05:51 +01:00
2011-02-27 22:28:34 +01:00
;--------------------------------
;Check for Pre-Release
;--------------------------------
!define LAMEXP_IS_PRERELEASE
!if '${LAMEXP_INSTTYPE}' == 'Final'
!undef LAMEXP_IS_PRERELEASE
!endif
!if '${LAMEXP_INSTTYPE}' == 'Hotfix'
!undef LAMEXP_IS_PRERELEASE
!endif
;--------------------------------
;Manifest
;--------------------------------
!tempfile PACKHDRTEMP
2016-12-20 20:50:20 +01:00
!packhdr "${PACKHDRTEMP}" '"..\..\..\Prerequisites\MSVC\redist\bin\mt.exe" -manifest "setup.manifest" -outputresource:"${PACKHDRTEMP};1" && "..\..\..\Prerequisites\UPX\upx.exe" --brute "${PACKHDRTEMP}"'
2010-12-11 02:05:51 +01:00
;--------------------------------
;Includes
;--------------------------------
!include `MUI2.nsh`
!include `WinVer.nsh`
!include `x64.nsh`
2011-10-02 22:14:09 +02:00
!include `StdUtils.nsh`
2010-12-11 02:05:51 +01:00
;--------------------------------
;Installer Attributes
;--------------------------------
2011-10-02 22:14:09 +02:00
RequestExecutionLevel admin
ShowInstDetails show
2010-12-11 02:05:51 +01:00
ShowUninstDetails show
Name "LameXP v${LAMEXP_VERSION} ${LAMEXP_INSTTYPE}-${LAMEXP_PATCH} [Build #${LAMEXP_BUILD}]"
2010-12-11 02:05:51 +01:00
OutFile "${LAMEXP_OUTPUT_FILE}"
2011-02-21 13:32:37 +01:00
BrandingText "Date created: ${LAMEXP_DATE} [Build #${LAMEXP_BUILD}]"
2016-12-23 22:17:33 +01:00
InstallDir "$PROGRAMFILES\MuldeR\LameXP"
2010-12-11 02:05:51 +01:00
InstallDirRegKey HKLM "${MyRegPath}" "InstallLocation"
2010-12-11 02:05:51 +01:00
;--------------------------------
;Compressor
;--------------------------------
SetCompressor /SOLID LZMA
SetCompressorDictSize 64
;--------------------------------
;Reserved Files
;--------------------------------
2011-10-02 22:14:09 +02:00
ReserveFile "${NSISDIR}\Plugins\Aero.dll"
2011-10-08 22:58:11 +02:00
ReserveFile "${NSISDIR}\Plugins\LangDLL.dll"
ReserveFile "${NSISDIR}\Plugins\LockedList.dll"
ReserveFile "${NSISDIR}\Plugins\LockedList64.dll"
ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll"
2011-10-08 22:58:11 +02:00
ReserveFile "${NSISDIR}\Plugins\nsExec.dll"
ReserveFile "${NSISDIR}\Plugins\StartMenu.dll"
2011-10-08 22:58:11 +02:00
ReserveFile "${NSISDIR}\Plugins\StdUtils.dll"
ReserveFile "${NSISDIR}\Plugins\System.dll"
ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
2010-12-11 02:05:51 +01:00
;--------------------------------
;Variables
;--------------------------------
Var StartMenuFolder
;--------------------------------
;Version Info
;--------------------------------
2010-11-29 22:06:54 +01:00
!searchreplace PRODUCT_VERSION_DATE "${LAMEXP_DATE}" "-" "."
VIProductVersion "${PRODUCT_VERSION_DATE}.${LAMEXP_BUILD}"
VIAddVersionKey "Author" "LoRd_MuldeR <mulder2@gmx.de>"
VIAddVersionKey "Comments" "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."
VIAddVersionKey "CompanyName" "Free Software Foundation"
VIAddVersionKey "FileDescription" "LameXP v${LAMEXP_VERSION} ${LAMEXP_INSTTYPE}-${LAMEXP_PATCH} [Build #${LAMEXP_BUILD}]"
2010-11-29 22:06:54 +01:00
VIAddVersionKey "FileVersion" "${PRODUCT_VERSION_DATE}.${LAMEXP_BUILD} (${LAMEXP_VERSION})"
2017-03-12 12:12:49 +01:00
VIAddVersionKey "LegalCopyright" "Copyright 2004-2017 LoRd_MuldeR"
2010-11-29 22:06:54 +01:00
VIAddVersionKey "LegalTrademarks" "GNU"
VIAddVersionKey "OriginalFilename" "LameXP.${LAMEXP_DATE}.exe"
VIAddVersionKey "ProductName" "LameXP - Audio Encoder Frontend"
VIAddVersionKey "ProductVersion" "${LAMEXP_VERSION}, Build #${LAMEXP_BUILD} (${LAMEXP_DATE})"
VIAddVersionKey "Website" "${MyWebSite}"
2010-11-29 21:42:39 +01:00
2010-12-11 02:05:51 +01:00
;--------------------------------
;MUI2 Interface Settings
;--------------------------------
!define MUI_ABORTWARNING
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${MyRegPath}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "StartmenuFolder"
!define MUI_LANGDLL_REGISTRY_ROOT HKLM
!define MUI_LANGDLL_REGISTRY_KEY "${MyRegPath}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "SetupLanguage"
2010-12-11 02:05:51 +01:00
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "LameXP v${LAMEXP_VERSION}"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION RunAppFunction
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReadmeFunction
2011-02-26 21:23:10 +01:00
!define MUI_FINISHPAGE_LINK ${MyWebSite}
!define MUI_FINISHPAGE_LINK_LOCATION ${MyWebSite}
2010-12-11 02:05:51 +01:00
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
2011-04-01 00:57:52 +02:00
!define MUI_WELCOMEFINISHPAGE_BITMAP "wizard.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "wizard-un.bmp"
2010-12-11 02:05:51 +01:00
!define MUI_HEADERIMAGE
2011-04-01 00:57:52 +02:00
!define MUI_HEADERIMAGE_BITMAP "header.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "header-un.bmp"
2010-12-11 02:05:51 +01:00
!define MUI_LANGDLL_ALLLANGUAGES
2011-10-02 22:14:09 +02:00
!define MUI_CUSTOMFUNCTION_GUIINIT MyGuiInit
!define MUI_CUSTOMFUNCTION_UNGUIINIT un.MyGuiInit
!define MUI_LANGDLL_ALWAYSSHOW
2010-12-11 02:05:51 +01:00
;--------------------------------
;MUI2 Pages (Installer)
2010-12-11 02:05:51 +01:00
;--------------------------------
;Welcome
2015-06-25 23:06:50 +02:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfUnattended
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckForPreRelease
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_TITLE_3LINES
2010-12-11 02:05:51 +01:00
!insertmacro MUI_PAGE_WELCOME
;License
2015-06-25 23:06:50 +02:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfUnattended
2011-02-26 21:23:10 +01:00
!insertmacro MUI_PAGE_LICENSE "license.rtf"
;Directory
2015-06-25 23:06:50 +02:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfUnattended
2010-12-11 02:05:51 +01:00
!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckForUpdate
!insertmacro MUI_PAGE_DIRECTORY
;Startmenu
2015-06-25 23:06:50 +02:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfUnattended
2010-12-11 02:05:51 +01:00
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
;LockedList
Page Custom LockedListShow
;Install Files
2010-12-11 02:05:51 +01:00
!insertmacro MUI_PAGE_INSTFILES
;Finish
2015-06-25 23:06:50 +02:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfUnattended
2010-12-11 02:05:51 +01:00
!insertmacro MUI_PAGE_FINISH
;--------------------------------
;MUI2 Pages (Uninstaller)
;--------------------------------
;Welcome
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
2010-12-11 02:05:51 +01:00
!insertmacro MUI_UNPAGE_WELCOME
;Confirm
!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
2010-12-11 02:05:51 +01:00
!insertmacro MUI_UNPAGE_CONFIRM
;LockedList
UninstPage Custom un.LockedListShow
;Uninstall
2010-12-11 02:05:51 +01:00
!insertmacro MUI_UNPAGE_INSTFILES
;Finish
!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
2010-12-11 02:05:51 +01:00
!insertmacro MUI_UNPAGE_FINISH
;--------------------------------
;Languages
;--------------------------------
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Ukrainian"
2013-08-28 12:05:37 +02:00
!insertmacro MUI_LANGUAGE "Polish"
!insertmacro MUI_LANGUAGE "Hungarian"
; !insertmacro MUI_LANGUAGE "French"
; !insertmacro MUI_LANGUAGE "SpanishInternational"
; !insertmacro MUI_LANGUAGE "SimpChinese"
; !insertmacro MUI_LANGUAGE "TradChinese"
; !insertmacro MUI_LANGUAGE "Japanese"
; !insertmacro MUI_LANGUAGE "Italian"
; !insertmacro MUI_LANGUAGE "Dutch"
; !insertmacro MUI_LANGUAGE "Greek"
; !insertmacro MUI_LANGUAGE "Romanian"
; !insertmacro MUI_LANGUAGE "Serbian"
; !insertmacro MUI_LANGUAGE "SerbianLatin"
; !insertmacro MUI_LANGUAGE "Arabic"
; !insertmacro MUI_LANGUAGE "Portuguese"
; !insertmacro MUI_LANGUAGE "Afrikaans"
; !insertmacro MUI_LANGUAGE "Malay"
; !insertmacro MUI_LANGUAGE "Indonesian"
;--------------------------------
;Translation
;--------------------------------
;English
!include "..\Translation\Blank.nsh"
;German
!include "..\Translation\LameXP_DE.nsh"
2010-12-11 02:05:51 +01:00
;Spanish
!include "..\Translation\LameXP_ES.nsh"
;Russian
!include "..\Translation\LameXP_RU.nsh"
2010-12-11 02:05:51 +01:00
;Ukrainian
!include "..\Translation\LameXP_UK.nsh"
2013-08-28 12:05:37 +02:00
;Polish
!include "..\Translation\LameXP_PL.nsh"
;Hungarian
!include "..\Translation\LameXP_HU.nsh"
2015-06-25 23:06:50 +02:00
;--------------------------------
;LogicLib Extensions
2015-06-25 23:06:50 +02:00
;--------------------------------
!macro _UnattendedMode _a _b _t _f
!insertmacro _LOGICLIB_TEMP
${StdUtils.TestParameter} $_LOGICLIB_TEMP "Update"
StrCmp "$_LOGICLIB_TEMP" "true" `${_t}` `${_f}`
2015-06-25 23:06:50 +02:00
!macroend
!define UnattendedMode `"" UnattendedMode ""`
!macro _ForcedMode _a _b _t _f
!insertmacro _LOGICLIB_TEMP
${StdUtils.TestParameter} $_LOGICLIB_TEMP "Force"
StrCmp "$_LOGICLIB_TEMP" "true" `${_t}` `${_f}`
2015-06-25 23:06:50 +02:00
!macroend
!define ForcedMode `"" ForcedMode ""`
!macro _ValidFileName _a _b _t _f
!insertmacro _LOGICLIB_TEMP
${StdUtils.ValidFileName} $_LOGICLIB_TEMP `${_b}`
StrCmp "$_LOGICLIB_TEMP" "ok" `${_t}` `${_f}`
2015-06-25 23:06:50 +02:00
!macroend
!define ValidFileName `"" ValidFileName`
2010-12-11 02:05:51 +01:00
;--------------------------------
;Installer initialization
;--------------------------------
Function .onInit
2015-08-20 21:01:34 +02:00
InitPluginsDir
; --------
2011-10-02 22:14:09 +02:00
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "{2B3D1EBF-B3B6-4E93-92B9-6853029A7162}") i .r1 ?e'
Pop $0
${If} $0 <> 0
MessageBox MB_ICONSTOP|MB_TOPMOST "Sorry, the installer is already running!"
Quit
${EndIf}
; --------
# Running on Windows NT family?
${IfNot} ${IsNT}
2017-04-18 23:25:17 +02:00
MessageBox MB_TOPMOST|MB_ICONSTOP "Sorry, this application does *not* support Windows 9x/ME!"
2012-11-25 14:03:33 +01:00
ExecShell "open" "http://windows.microsoft.com/"
Quit
${EndIf}
2011-04-08 14:05:50 +02:00
# Running on Windows XP or later?
${If} ${AtMostWin2000}
MessageBox MB_TOPMOST|MB_ICONSTOP "Sorry, but your operating system is *not* supported anymore.$\nInstallation will be aborted!$\n$\nThe minimum required platform is Windows XP (Service Pack 3)."
ExecShell "open" "http://windows.microsoft.com/"
Quit
${EndIf}
# If on Windows XP, is the required Service Pack installed?
${If} ${IsWinXP}
${IfNot} ${RunningX64} # Windows XP 32-Bit, requires Service Pack 3
${AndIf} ${AtMostServicePack} 2
2017-04-18 23:25:17 +02:00
MessageBox MB_TOPMOST|MB_ICONEXCLAMATION "This application requires Service Pack 3 for Windows XP.$\nPlease install the required Service Pack and retry!"
Quit
${EndIf}
${If} ${RunningX64} # Windows XP 64-Bit, requires Service Pack 2
${AndIf} ${AtMostServicePack} 1
2017-04-18 23:25:17 +02:00
MessageBox MB_TOPMOST|MB_ICONEXCLAMATION "This application requires Service Pack 2 for Windows XP x64.$\nPlease install the required Service Pack and retry!"
Quit
${EndIf}
${IfNot} ${UnattendedMode}
2017-04-20 00:12:00 +02:00
${If} ${Cmd} `MessageBox MB_TOPMOST|MB_ICONEXCLAMATION|MB_OKCANCEL|MB_DEFBUTTON2 "It appears you are still running Windows XP, which reached $\"end of life$\" in April 2014. This means you are running an outdated operating system that is no longer receiving any updates. There are many known security vulnerabilities which are never going to be fixed! We highly recommend updating to a contemporary operating system." IDCANCEL`
2017-04-18 23:25:17 +02:00
Quit
${EndIf}
2017-04-18 23:25:17 +02:00
${EndIf}
${EndIf}
# Running on Windows Vista?
${If} ${IsWinVista}
${If} ${AtMostServicePack} 1
MessageBox MB_TOPMOST|MB_ICONEXCLAMATION "This application requires Service Pack 2 for Windows Vista.$\nPlease install the required Service Pack and retry!"
Quit
2012-11-25 14:03:33 +01:00
${EndIf}
2017-04-18 23:25:17 +02:00
${IfNot} ${UnattendedMode}
2017-04-20 00:12:00 +02:00
${If} ${Cmd} `MessageBox MB_TOPMOST|MB_ICONEXCLAMATION|MB_OKCANCEL|MB_DEFBUTTON2 "It appears you are still running Windows Vista, which reached $\"end of life$\" in April 2017. This means you are running an outdated operating system that is no longer receiving any updates. There are many known security vulnerabilities which are never going to be fixed! We highly recommend updating to a contemporary operating system." IDCANCEL`
2017-04-18 23:25:17 +02:00
Quit
${EndIf}
${EndIf}
2011-04-08 14:05:50 +02:00
${EndIf}
2012-11-25 14:03:33 +01:00
2011-10-02 22:14:09 +02:00
; --------
2015-06-25 23:06:50 +02:00
${IfNot} ${UnattendedMode}
!insertmacro MUI_LANGDLL_DISPLAY
${EndIf}
; --------
2011-10-02 22:14:09 +02:00
UserInfo::GetAccountType
Pop $0
${If} $0 != "Admin"
MessageBox MB_ICONSTOP|MB_TOPMOST "Your system requires administrative permissions in order to install this software."
2013-01-14 00:36:22 +01:00
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
2011-10-02 22:14:09 +02:00
Quit
${EndIf}
2010-12-11 02:05:51 +01:00
FunctionEnd
Function un.onInit
2011-10-02 22:14:09 +02:00
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "{2B3D1EBF-B3B6-4E93-92B9-6853029A7162}") i .r1 ?e'
Pop $0
${If} $0 <> 0
MessageBox MB_ICONSTOP|MB_TOPMOST "Sorry, the un-installer is already running!"
Quit
${EndIf}
2015-06-25 23:06:50 +02:00
${IfNot} ${ForcedMode}
!insertmacro MUI_LANGDLL_DISPLAY
${EndIf}
2011-10-02 22:14:09 +02:00
; --------
UserInfo::GetAccountType
Pop $0
${If} $0 != "Admin"
MessageBox MB_ICONSTOP|MB_TOPMOST "Your system requires administrative permissions in order to install this software."
2013-01-14 00:36:22 +01:00
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
2011-10-02 22:14:09 +02:00
${EndIf}
2010-12-11 02:05:51 +01:00
FunctionEnd
;--------------------------------
;GUI initialization
2010-12-11 02:05:51 +01:00
;--------------------------------
2011-10-02 22:14:09 +02:00
Function MyGuiInit
StrCpy $0 $HWNDPARENT
System::Call "user32::SetWindowPos(i r0, i -1, i 0, i 0, i 0, i 0, i 3)"
Aero::Apply
FunctionEnd
2011-10-02 22:14:09 +02:00
Function un.MyGuiInit
StrCpy $0 $HWNDPARENT
System::Call "user32::SetWindowPos(i r0, i -1, i 0, i 0, i 0, i 0, i 3)"
Aero::Apply
2010-12-11 02:05:51 +01:00
FunctionEnd
;--------------------------------
;Macros & Auxiliary Functions
2010-12-11 02:05:51 +01:00
;--------------------------------
!macro PrintProgress Text
SetDetailsPrint textonly
DetailPrint '${Text}'
SetDetailsPrint listonly
Sleep 1000
2010-12-11 02:05:51 +01:00
!macroend
!macro CreateWebLink ShortcutFile TargetURL
Push $0
Push $1
StrCpy $0 "${ShortcutFile}"
StrCpy $1 "${TargetURL}"
Call _CreateWebLink
Pop $1
Pop $0
!macroend
Function _CreateWebLink
FlushINI "$0"
SetFileAttributes "$0" FILE_ATTRIBUTE_NORMAL
DeleteINISec "$0" "DEFAULT"
DeleteINISec "$0" "InternetShortcut"
WriteINIStr "$0" "DEFAULT" "BASEURL" "$1"
WriteINIStr "$0" "InternetShortcut" "ORIGURL" "$1"
WriteINIStr "$0" "InternetShortcut" "URL" "$1"
WriteINIStr "$0" "InternetShortcut" "IconFile" "$SYSDIR\SHELL32.dll"
WriteINIStr "$0" "InternetShortcut" "IconIndex" "150"
FlushINI "$0"
SetFileAttributes "$0" FILE_ATTRIBUTE_READONLY
FunctionEnd
!macro GetExecutableName OutVar
${StdUtils.GetParameter} ${OutVar} "Update" ""
2011-10-08 19:34:24 +02:00
${StdUtils.TrimStr} ${OutVar}
2015-06-25 23:06:50 +02:00
${If} "${OutVar}" == ""
${OrIfNot} ${ValidFileName} "${OutVar}"
StrCpy ${OutVar} "LameXP.exe"
${EndIf}
!macroend
2011-10-02 22:14:09 +02:00
!macro DisableNextButton TmpVar
GetDlgItem ${TmpVar} $HWNDPARENT 1
EnableWindow ${TmpVar} 0
!macroend
2015-06-25 23:06:50 +02:00
!macro DisableBackButton TmpVar
GetDlgItem ${TmpVar} $HWNDPARENT 3
EnableWindow ${TmpVar} 0
!macroend
2015-08-20 21:01:34 +02:00
!macro CleanUpFiles options
Delete ${options} "$INSTDIR\Changelog.htm"
Delete ${options} "$INSTDIR\Changelog.html"
Delete ${options} "$INSTDIR\Contributors.txt"
Delete ${options} "$INSTDIR\Copying.txt"
Delete ${options} "$INSTDIR\FAQ.html"
Delete ${options} "$INSTDIR\Howto.html"
Delete ${options} "$INSTDIR\LameEnc.sys"
Delete ${options} "$INSTDIR\LameXP.exe"
Delete ${options} "$INSTDIR\LameXP.exe.sig"
Delete ${options} "$INSTDIR\LameXP-Portable.exe"
Delete ${options} "$INSTDIR\License.txt"
Delete ${options} "$INSTDIR\Manual.html"
Delete ${options} "$INSTDIR\Readme.htm"
Delete ${options} "$INSTDIR\ReadMe.txt"
Delete ${options} "$INSTDIR\PRE_RELEASE_INFO.txt"
Delete ${options} "$INSTDIR\Settings.cfg"
Delete ${options} "$INSTDIR\Translate.html"
Delete ${options} "$INSTDIR\Uninstall.exe"
Delete ${options} "$INSTDIR\Qt*.dll"
2015-10-23 18:17:26 +02:00
Delete ${options} "$INSTDIR\MUtils*.dll"
2015-08-20 21:01:34 +02:00
Delete ${options} "$INSTDIR\msvcr*.dll"
Delete ${options} "$INSTDIR\msvcp*.dll"
Delete ${options} "$INSTDIR\concrt*.dll"
Delete ${options} "$INSTDIR\vcruntime*.dll"
Delete ${options} "$INSTDIR\vccorlib*.dll"
Delete ${options} "$INSTDIR\api-ms-*.dll"
Delete ${options} "$INSTDIR\ucrtbase.dll"
2015-08-20 21:01:34 +02:00
RMDir /r ${options} "$INSTDIR\cache"
2015-08-20 21:01:34 +02:00
RMDir /r ${options} "$INSTDIR\img"
RMDir /r ${options} "$INSTDIR\imageformats"
RMDir /r ${options} "$INSTDIR\redist"
!macroend
2010-12-11 02:05:51 +01:00
;--------------------------------
;Install Files
;--------------------------------
2011-02-16 00:11:59 +01:00
Section "-PreInit"
SetShellVarContext all
2011-02-16 00:11:59 +01:00
SetOutPath "$INSTDIR"
SectionEnd
2015-10-17 13:22:29 +02:00
Section "-Clean Up Old Cruft"
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_CLEANUP)"
2015-08-20 21:01:34 +02:00
!insertmacro CleanUpFiles ""
SectionEnd
Section "!Install Files"
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_INSTFILES)"
DeleteOldBinary:
!insertmacro GetExecutableName $R0
ClearErrors
Delete "$INSTDIR\$R0"
${If} ${Errors}
MessageBox MB_TOPMOST|MB_ICONSTOP|MB_RETRYCANCEL 'Could not delete old "$R0" file. Is LameXP still running?' IDRETRY DeleteOldBinary
Abort "Could not delete old binary!"
${EndIf}
File /a `/oname=$R0` `${LAMEXP_SOURCE_PATH}\LameXP.exe`
File /nonfatal /a /r `${LAMEXP_SOURCE_PATH}\*.dll`
2015-01-01 22:32:45 +01:00
File /a /r `${LAMEXP_SOURCE_PATH}\*.txt`
File /a /r `${LAMEXP_SOURCE_PATH}\*.html`
File /a /r `${LAMEXP_SOURCE_PATH}\*.png`
2010-12-11 02:05:51 +01:00
SectionEnd
# Section "-Install VCRedist"
# !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_VCREDIST)"
# File /a `/oname=$PLUGINSDIR\vcredist_x86.exe` `${LAMEXP_SOURCE_PATH}\redist\vcredist_x86.exe`
# ExecWait '"$PLUGINSDIR\vcredist_x86.exe" /install /passive /norestart'
# SectionEnd
Section "-Write Uninstaller"
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_MAKEUNINST)"
2010-12-11 02:05:51 +01:00
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd
Section "-Create Shortcuts"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_SHORTCUTS)"
2010-12-11 02:05:51 +01:00
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
SetShellVarContext current
2010-12-11 02:05:51 +01:00
Delete "$SMPROGRAMS\$StartMenuFolder\*.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\*.pif"
Delete "$SMPROGRAMS\$StartMenuFolder\*.url"
SetShellVarContext all
Delete "$SMPROGRAMS\$StartMenuFolder\*.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\*.pif"
Delete "$SMPROGRAMS\$StartMenuFolder\*.url"
2012-10-21 20:28:44 +02:00
!insertmacro GetExecutableName $R0
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk" "$INSTDIR\$R0" "" "$INSTDIR\$R0" 0
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(LAMEXP_LANG_LINK_LICENSE).lnk" "$INSTDIR\License.txt"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(LAMEXP_LANG_LINK_CHANGELOG).lnk" "$INSTDIR\Changelog.html"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(LAMEXP_LANG_LINK_TRANSLATE).lnk" "$INSTDIR\Translate.html"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(LAMEXP_LANG_LINK_MANUAL).lnk" "$INSTDIR\Manual.html"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(LAMEXP_LANG_LINK_UNINSTALL).lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
!insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Official LameXP Homepage.url" "${MyWebSite}"
!insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Doom9's Forum.url" "http://forum.doom9.org/"
!insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Bug Tracker.url" "https://github.com/lordmulder/LameXP/issues"
!insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\RareWares.org.url" "http://rarewares.org/"
!insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Hydrogenaudio Forums.url" "http://www.hydrogenaudio.org/"
2012-10-24 22:45:58 +02:00
${If} ${FileExists} "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk"
2016-10-10 20:36:06 +02:00
${StdUtils.InvokeShellVerb} $R1 "$SMPROGRAMS\$StartMenuFolder" "LameXP.lnk" ${StdUtils.Const.ShellVerb.PinToTaskbar}
2012-10-24 22:45:58 +02:00
DetailPrint 'Pin: "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk" -> $R1'
${EndIf}
2010-12-11 02:05:51 +01:00
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
Section "-Update Registry"
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_REGISTRY)"
2012-10-24 22:45:58 +02:00
2012-10-21 20:28:44 +02:00
!insertmacro GetExecutableName $R0
2010-12-11 02:05:51 +01:00
WriteRegStr HKLM "${MyRegPath}" "InstallLocation" "$INSTDIR"
2012-10-21 20:28:44 +02:00
WriteRegStr HKLM "${MyRegPath}" "ExecutableName" "$R0"
2013-03-05 23:10:13 +01:00
WriteRegStr HKLM "${MyRegPath}" "DisplayIcon" "$INSTDIR\$R0,0"
2010-12-11 02:05:51 +01:00
WriteRegStr HKLM "${MyRegPath}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
2013-03-05 23:10:13 +01:00
WriteRegStr HKLM "${MyRegPath}" "DisplayName" "LameXP v${LAMEXP_VERSION}"
WriteRegStr HKLM "${MyRegPath}" "Publisher" "LoRd_MuldeR <mulder2@gmx.de>"
WriteRegStr HKLM "${MyRegPath}" "DisplayVersion" "${LAMEXP_VERSION} ${LAMEXP_INSTTYPE}-${LAMEXP_PATCH} [Build #${LAMEXP_BUILD}]"
WriteRegStr HKLM "${MyRegPath}" "URLInfoAbout" "${MyWebSite}"
WriteRegStr HKLM "${MyRegPath}" "URLUpdateInfo" "${MyWebSite}"
2015-02-26 22:25:28 +01:00
2016-12-15 00:27:48 +01:00
DeleteRegKey HKCU "${AppPaths}\LameXP.exe"
2015-02-26 22:25:28 +01:00
WriteRegStr HKLM "${AppPaths}\LameXP.exe" "" "$INSTDIR\$R0"
WriteRegStr HKLM "${AppPaths}\LameXP.exe" "Path" "$INSTDIR"
2010-12-11 02:05:51 +01:00
SectionEnd
Section "-Finished"
2010-12-11 02:05:51 +01:00
!insertmacro PrintProgress "$(MUI_TEXT_FINISH_TITLE)."
!ifdef LAMEXP_IS_PRERELEASE
${If} ${FileExists} "$INSTDIR\PRE_RELEASE_INFO.txt"
${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\PRE_RELEASE_INFO.txt" "open" ""
${EndIf}
!endif
2015-11-01 12:51:29 +01:00
${IfThen} ${UnattendedMode} ${|} SetAutoClose true ${|}
2010-12-11 02:05:51 +01:00
SectionEnd
;--------------------------------
;Uninstaller
;--------------------------------
Section "Uninstall"
2015-02-26 22:25:28 +01:00
SetOutPath "$EXEDIR"
!insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_UNINSTALL)"
2010-12-11 02:05:51 +01:00
2012-10-24 22:45:58 +02:00
; --------------
; Startmenu
; --------------
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
${IfNot} "$StartMenuFolder" == ""
SetShellVarContext current
${If} ${FileExists} "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk"
2016-10-10 20:36:06 +02:00
${StdUtils.InvokeShellVerb} $R1 "$SMPROGRAMS\$StartMenuFolder" "LameXP.lnk" ${StdUtils.Const.ShellVerb.UnpinFromTaskbar}
2012-10-24 22:45:58 +02:00
DetailPrint 'Unpin: "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk" -> $R1'
${EndIf}
${If} ${FileExists} "$SMPROGRAMS\$StartMenuFolder\*.*"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.url"
RMDir "$SMPROGRAMS\$StartMenuFolder"
${EndIf}
SetShellVarContext all
${If} ${FileExists} "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk"
2016-10-10 20:36:06 +02:00
${StdUtils.InvokeShellVerb} $R1 "$SMPROGRAMS\$StartMenuFolder" "LameXP.lnk" ${StdUtils.Const.ShellVerb.UnpinFromTaskbar}
2012-10-24 22:45:58 +02:00
DetailPrint 'Unpin: "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk" -> $R1'
${EndIf}
${If} ${FileExists} "$SMPROGRAMS\$StartMenuFolder\*.*"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.url"
RMDir "$SMPROGRAMS\$StartMenuFolder"
${EndIf}
${EndIf}
; --------------
; Files
; --------------
2012-10-21 20:28:44 +02:00
ReadRegStr $R0 HKLM "${MyRegPath}" "ExecutableName"
${IfThen} "$R0" == "" ${|} StrCpy $R0 "LameXP.exe" ${|}
ExecWait '"$INSTDIR\$R0" --uninstall'
2012-10-24 22:45:58 +02:00
2012-10-21 20:28:44 +02:00
Delete /REBOOTOK "$INSTDIR\$R0"
2015-08-20 21:01:34 +02:00
!insertmacro CleanUpFiles /REBOOTOK
2010-12-11 02:05:51 +01:00
RMDir "$INSTDIR"
2012-10-24 22:45:58 +02:00
; --------------
; Registry
; --------------
2013-03-05 23:10:13 +01:00
DeleteRegKey HKLM "${MyRegPath}"
DeleteRegKey HKCU "${MyRegPath}"
DeleteRegKey HKLM "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{54dcbccb-c905-46dc-b6e6-48563d0e9e55}"
DeleteRegKey HKCU "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{54dcbccb-c905-46dc-b6e6-48563d0e9e55}"
2010-12-11 02:05:51 +01:00
2015-02-26 22:25:28 +01:00
DeleteRegKey HKLM "${AppPaths}\LameXP.exe"
DeleteRegKey HKCU "${AppPaths}\LameXP.exe"
MessageBox MB_YESNO|MB_TOPMOST "$(LAMEXP_LANG_UNINST_PERSONAL)" IDNO +3
Delete "$LOCALAPPDATA\LoRd_MuldeR\LameXP - Audio Encoder Front-End\config.ini"
Delete "$INSTDIR\*.ini"
2010-12-11 02:05:51 +01:00
!insertmacro PrintProgress "$(MUI_UNTEXT_FINISH_TITLE)."
SectionEnd
;--------------------------------
;Check For Update Mode
;--------------------------------
2015-06-25 23:06:50 +02:00
Function SkipIfUnattended
${IfThen} ${UnattendedMode} ${|} Abort ${|}
FunctionEnd
2011-01-14 19:45:14 +01:00
Function CheckForUpdate
${If} "$INSTDIR" == ""
${OrIf} "$INSTDIR" == "$EXEDIR"
${OrIfNot} ${FileExists} "$INSTDIR\LameXP.exe"
Return
${EndIf}
2010-12-11 02:05:51 +01:00
FindWindow $R0 "#32770" "" $HWNDPARENT
GetDlgItem $R1 $R0 1019
2010-12-11 02:05:51 +01:00
EnableWindow $R1 0
FindWindow $R0 "#32770" "" $HWNDPARENT
GetDlgItem $R1 $R0 1001
EnableWindow $R1 0
FunctionEnd
2010-11-29 21:42:39 +01:00
Function un.CheckForcedUninstall
2015-06-25 23:06:50 +02:00
${IfThen} ${ForcedMode} ${|} Abort ${|}
FunctionEnd
2010-12-11 02:05:51 +01:00
;--------------------------------
;Check For Pre-Release
;--------------------------------
Function CheckForPreRelease
!ifdef LAMEXP_IS_PRERELEASE
2015-06-25 23:06:50 +02:00
${IfNot} ${UnattendedMode}
MessageBox MB_TOPMOST|MB_ICONEXCLAMATION|MB_OKCANCEL "$(LAMEXP_LANG_PRERELEASE_WARNING)" /SD IDOK IDOK +2
Quit
${EndIf}
!endif
FunctionEnd
2010-12-11 02:05:51 +01:00
;--------------------------------
;Locked List
2010-12-11 02:05:51 +01:00
;--------------------------------
!macro _LockedListShow uinst
!insertmacro MUI_HEADER_TEXT "$(LAMEXP_LANG_LOCKEDLIST_HEADER)" "$(LAMEXP_LANG_LOCKEDLIST_TEXT)"
2015-06-25 23:06:50 +02:00
${If} ${UnattendedMode}
!insertmacro DisableBackButton $R0
${EndIf}
${If} ${RunningX64}
InitPluginsDir
File /oname=$PLUGINSDIR\LockedList64.dll `${NSISDIR}\Plugins\LockedList64.dll`
${EndIf}
!insertmacro GetExecutableName $R0
LockedList::AddModule "\$R0"
2015-06-25 23:06:50 +02:00
${If} "$R0" != "LameXP.exe"
LockedList::AddModule "\LameXP.exe"
${EndIf}
LockedList::AddModule "\Uninstall.exe"
!if ${uinst} < 1
LockedList::AddModule "\Au_.exe"
!endif
2016-10-10 23:32:29 +02:00
#LockedList::AddFolder "$INSTDIR"
LockedList::Dialog /autonext /heading "$(LAMEXP_LANG_LOCKEDLIST_HEADING)" /noprograms "$(LAMEXP_LANG_LOCKEDLIST_NOPROG)" /searching "$(LAMEXP_LANG_LOCKEDLIST_SEARCH)" /colheadings "$(LAMEXP_LANG_LOCKEDLIST_COLHDR1)" "$(LAMEXP_LANG_LOCKEDLIST_COLHDR2)"
Pop $R0
!macroend
Function LockedListShow
!insertmacro _LockedListShow 0
2010-11-29 21:42:39 +01:00
FunctionEnd
2010-12-11 02:05:51 +01:00
Function un.LockedListShow
!insertmacro _LockedListShow 1
FunctionEnd
;--------------------------------
;Install Success
;--------------------------------
Function RunAppFunction
2011-10-02 22:14:09 +02:00
!insertmacro DisableNextButton $R0
!insertmacro GetExecutableName $R0
2011-10-02 22:14:09 +02:00
${StdUtils.ExecShellAsUser} $R1 "$INSTDIR" "explore" ""
${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\$R0" "open" "--first-run"
FunctionEnd
Function ShowReadmeFunction
2011-10-02 22:14:09 +02:00
!insertmacro DisableNextButton $R0
2014-12-27 05:50:25 +01:00
${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\Manual.html" "open" ""
FunctionEnd
Function .onInstSuccess
2015-06-25 23:06:50 +02:00
${If} ${UnattendedMode}
!insertmacro GetExecutableName $R0
${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\$R0" "open" "--first-run"
${EndIf}
FunctionEnd