OSDN Git Service

Updated FAQ document + small installer fix.
[lamexp/LameXP.git] / etc / NSIS / setup.nsi
index e5869bf..2b110d2 100644 (file)
@@ -1,6 +1,6 @@
 ; ///////////////////////////////////////////////////////////////////////////////
 ; // LameXP - Audio Encoder Front-End
-; // Copyright (C) 2004-2010 LoRd_MuldeR <MuldeR2@GMX.de>
+; // Copyright (C) 2004-2011 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
 ; // http://www.gnu.org/licenses/gpl-2.0.txt
 ; ///////////////////////////////////////////////////////////////////////////////
 
-RequestExecutionLevel user
-BrandingText `Date created: ${LAMEXP_DATE}`
+;--------------------------------
+;Basic Defines
+;--------------------------------
+
+!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 !!!"
+!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
+!ifndef LAMEXP_UPX_PATH
+  !error "LAMEXP_UPX_PATH is not defined !!!"
+!endif
+
+;UUID
+!define MyRegPath "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FBD7A67D-D700-4043-B54F-DD106D00F308}"
+
+;Web-Site
+!define MyWebSite "http://mulder.at.gg/"
+
+
+;--------------------------------
+;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
+
+
+;--------------------------------
+;Includes
+;--------------------------------
+
+!include `MUI2.nsh`
+!include `WinVer.nsh`
+!include `StdUtils.nsh`
+
+
+;--------------------------------
+;Installer Attributes
+;--------------------------------
+
+RequestExecutionLevel admin
 ShowInstDetails show
+ShowUninstDetails show
+Name "LameXP v${LAMEXP_VERSION} ${LAMEXP_INSTTYPE}-${LAMEXP_PATCH} [Build #${LAMEXP_BUILD}]"
+OutFile "${LAMEXP_OUTPUT_FILE}"
+BrandingText "Date created: ${LAMEXP_DATE} [Build #${LAMEXP_BUILD}]"
+InstallDir "$PROGRAMFILES\MuldeR\LameXP v${LAMEXP_VERSION}"
+InstallDirRegKey HKLM "${MyRegPath}" "InstallLocation"
 
-!define ZIP2EXE_NAME `LameXP v${LAMEXP_VERSION} ${LAMEXP_SUFFIX} [Build #${LAMEXP_BUILD}]`
-!define ZIP2EXE_OUTFILE `${LAMEXP_OUTPUT_FILE}`
-!define ZIP2EXE_COMPRESSOR_LZMA
-!define ZIP2EXE_COMPRESSOR_SOLID
-!define ZIP2EXE_INSTALLDIR `$PROGRAMFILES\${ZIP2EXE_NAME}`
 
-!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
-!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp"
-!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckForUpdate
+;--------------------------------
+;Compressor
+;--------------------------------
+
+SetCompressor /SOLID LZMA
+SetCompressorDictSize 64
+
+!packhdr "$%TEMP%\exehead.tmp" '"${LAMEXP_UPX_PATH}\upx.exe" --brute "$%TEMP%\exehead.tmp"'
+
+
+;--------------------------------
+;Reserved Files
+;--------------------------------
+
+ReserveFile "${NSISDIR}\Plugins\Aero.dll"
+ReserveFile "${NSISDIR}\Plugins\LangDLL.dll"
+ReserveFile "${NSISDIR}\Plugins\LockedList.dll"
+ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll"
+ReserveFile "${NSISDIR}\Plugins\nsExec.dll"
+ReserveFile "${NSISDIR}\Plugins\StartMenu.dll"
+ReserveFile "${NSISDIR}\Plugins\StdUtils.dll"
+ReserveFile "${NSISDIR}\Plugins\System.dll"
+ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
+ReserveFile "checkproc.exe"
+
+
+;--------------------------------
+;Variables
+;--------------------------------
+
+Var StartMenuFolder
+
+
+;--------------------------------
+;Version Info
+;--------------------------------
 
 !searchreplace PRODUCT_VERSION_DATE "${LAMEXP_DATE}" "-" "."
 VIProductVersion "${PRODUCT_VERSION_DATE}.${LAMEXP_BUILD}"
@@ -41,65 +135,489 @@ 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_SUFFIX} [Build #${LAMEXP_BUILD}]"
+VIAddVersionKey "FileDescription" "LameXP v${LAMEXP_VERSION} ${LAMEXP_INSTTYPE}-${LAMEXP_PATCH} [Build #${LAMEXP_BUILD}]"
 VIAddVersionKey "FileVersion" "${PRODUCT_VERSION_DATE}.${LAMEXP_BUILD} (${LAMEXP_VERSION})"
-VIAddVersionKey "LegalCopyright" "Copyright 2004-2010 LoRd_MuldeR"
+VIAddVersionKey "LegalCopyright" "Copyright 2004-2011 LoRd_MuldeR"
 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" "http://mulder.at.gg/"
+VIAddVersionKey "Website" "${MyWebSite}"
+
+
+;--------------------------------
+;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"
+!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
+!define MUI_FINISHPAGE_LINK ${MyWebSite}
+!define MUI_FINISHPAGE_LINK_LOCATION ${MyWebSite}
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "wizard.bmp"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP "wizard-un.bmp"
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "header.bmp"
+!define MUI_HEADERIMAGE_UNBITMAP "header-un.bmp"
+!define MUI_LANGDLL_ALLLANGUAGES
+!define MUI_CUSTOMFUNCTION_GUIINIT MyGuiInit
+!define MUI_CUSTOMFUNCTION_UNGUIINIT un.MyGuiInit
+!define MUI_LANGDLL_ALWAYSSHOW
+
+
+;--------------------------------
+;MUI2 Pages
+;--------------------------------
+
+;Installer
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckForPreRelease
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_TITLE_3LINES
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "license.rtf"
+!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckForUpdate
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
+Page Custom LockedListShow
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+;Uninstaller
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_TITLE_3LINES
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
+!insertmacro MUI_UNPAGE_WELCOME
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
+!insertmacro MUI_UNPAGE_CONFIRM
+UninstPage Custom un.LockedListShow
+!insertmacro MUI_UNPAGE_INSTFILES
+!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"
+
+; !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 "Polish"
+; !insertmacro MUI_LANGUAGE "Hungarian"
+; !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"
+
+;Spanish
+!include "..\Translation\LameXP_ES.nsh"
 
-!include `UAC.nsh`
-!include `parameters.nsh`
-!include `${NSISDIR}\Contrib\zip2exe\Base.nsh`
-!include `${NSISDIR}\Contrib\zip2exe\Modern.nsh`
+;Russian
+!include "..\Translation\LameXP_RU.nsh"
+
+;Ukrainian
+!include "..\Translation\LameXP_UK.nsh"
+
+
+;--------------------------------
+;Installer initialization
+;--------------------------------
 
 Function .onInit
-       UAC_TryAgain:
-       !insertmacro UAC_RunElevated
-       ${Switch} $0
-       ${Case} 0
-               ${IfThen} $1 = 1 ${|} Quit ${|}
-               ${IfThen} $3 <> 0 ${|} ${Break} ${|}
-               ${If} $1 = 3
-                       MessageBox MB_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND|MB_OKCANCEL "This installer requires admin access, please try again!" /SD IDCANCEL IDOK UAC_TryAgain
+       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}
+
+       ${StdUtils.GetParameter} $R0 "Update" "?"
+       ${If} "$R0" == "?"
+               !insertmacro MUI_LANGDLL_DISPLAY
+       ${EndIf}
+
+       ; --------
+       
+       ${IfNot} ${IsNT}
+               MessageBox MB_TOPMOST|MB_ICONSTOP "Sorry, this application does NOT support Windows 9x or Windows ME!"
+               Quit
+       ${EndIf}
+
+       ${If} ${AtMostWinNT4}
+               ${StdUtils.GetParameter} $R0 "Update" "?"
+               ${If} $R0 == "?"
+                       MessageBox MB_TOPMOST|MB_ICONSTOP "Sorry, your platform is not supported anymore. Installation aborted!$\nThe minimum required platform is Windows 2000."
+               ${Else}
+                       MessageBox MB_TOPMOST|MB_ICONSTOP "Sorry, your platform is not supported anymore. Update not possible!$\nThe minimum required platform is Windows 2000."
                ${EndIf}
-       ${Case} 1223
-               MessageBox MB_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND|MB_OKCANCEL "This installer requires admin privileges, please try again!" /SD IDCANCEL IDOK UAC_TryAgain
                Quit
-       ${Case} 1062
-               MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "Logon service not running, aborting!"
+       ${EndIf}
+       
+       ; --------
+
+       UserInfo::GetAccountType
+       Pop $0
+       ${If} $0 != "Admin"
+               MessageBox MB_ICONSTOP|MB_TOPMOST "Your system requires administrative permissions in order to install this software."
                Quit
-       ${Default}
-               MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "Unable to elevate installer! (Error code: $0)"
+       ${EndIf}
+       
+       ; --------
+
+       InitPluginsDir
+       File "/oname=$PLUGINSDIR\checkproc.exe" "checkproc.exe"
+       nsExec::Exec /TIMEOUT=5000 '"$PLUGINSDIR\checkproc.exe" Softonic Brothersoft Afreecodec'
+       Pop $0
+FunctionEnd
+
+Function un.onInit
+       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
-       ${EndSwitch}
+       ${EndIf}
+
+       ${StdUtils.GetParameter} $R0 "Force" "?"
+       ${If} "$R0" == "?"
+               !insertmacro MUI_LANGDLL_DISPLAY
+       ${EndIf}
+       
+       ; --------
+
+       UserInfo::GetAccountType
+       Pop $0
+       ${If} $0 != "Admin"
+               MessageBox MB_ICONSTOP|MB_TOPMOST "Your system requires administrative permissions in order to install this software."
+               Quit
+       ${EndIf}
+FunctionEnd
+
+
+;--------------------------------
+;GUI initialization
+;--------------------------------
+
+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
+
+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
 FunctionEnd
 
-!insertmacro SECTION_BEGIN
-       File /r `${LAMEXP_SOURCE_PATH}\*.*`
-!insertmacro SECTION_END
+
+;--------------------------------
+;Macros & Auxiliary Functions
+;--------------------------------
+
+!macro PrintProgress Text
+       SetDetailsPrint textonly
+       DetailPrint '${Text}'
+       SetDetailsPrint listonly
+       Sleep 1000
+!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" ""
+       ${StdUtils.TrimStr} ${OutVar}
+       ${IfThen} "${OutVar}" == "" ${|} StrCpy ${OutVar} "LameXP.exe" ${|}
+!macroend
+
+!macro DisableNextButton TmpVar
+       GetDlgItem ${TmpVar} $HWNDPARENT 1
+       EnableWindow ${TmpVar} 0
+!macroend
+
+
+;--------------------------------
+;Install Files
+;--------------------------------
+
+Section "-PreInit"
+       SetShellVarContext all
+       SetOutPath "$INSTDIR"
+SectionEnd
+
+Section "!Install Files"
+       !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_INSTFILES)"
+
+       Delete "$INSTDIR\Changelog.htm"
+       Delete "$INSTDIR\Changelog.html"
+       Delete "$INSTDIR\Contributors.txt"
+       Delete "$INSTDIR\FAQ.html"
+       Delete "$INSTDIR\Howto.html"
+       Delete "$INSTDIR\LameEnc.sys"
+       Delete "$INSTDIR\LameXP.exe"
+       Delete "$INSTDIR\LameXP.exe.sig"
+       Delete "$INSTDIR\License.txt"
+       Delete "$INSTDIR\Readme.htm"
+       Delete "$INSTDIR\ReadMe.txt"
+       Delete "$INSTDIR\Settings.cfg"
+       Delete "$INSTDIR\Translate.html"
+       Delete "$INSTDIR\Uninstall.exe"
+
+       !insertmacro GetExecutableName $R0
+
+       DeleteOldBinary:
+       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 `/oname=$R0` `${LAMEXP_SOURCE_PATH}\LameXP.exe`
+       File `${LAMEXP_SOURCE_PATH}\*.txt`
+       File `${LAMEXP_SOURCE_PATH}\*.html`
+SectionEnd
+
+Section "-Write Uinstaller"
+       !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_MAKEUNINST)"
+       WriteUninstaller "$INSTDIR\Uninstall.exe"
+SectionEnd
+
+Section "-Create Shortcuts"
+       !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+               !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_SHORTCUTS)"
+               CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
+               
+               SetShellVarContext current
+               
+               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"
+
+               CreateShortCut "$SMPROGRAMS\$StartMenuFolder\LameXP.lnk" "$INSTDIR\LameXP.exe" "" "$INSTDIR\LameXP.exe" 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_FAQ).lnk" "$INSTDIR\FAQ.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" "http://mulder.dummwiedeutsch.de/"
+               !insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Doom9's Forum.url" "http://forum.doom9.org/"
+               !insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\RareWares.org.url" "http://rarewares.org/"
+               !insertmacro CreateWebLink "$SMPROGRAMS\$StartMenuFolder\Hydrogenaudio Forums.url" "http://www.hydrogenaudio.org/"
+       !insertmacro MUI_STARTMENU_WRITE_END
+SectionEnd
+
+Section "-Update Registry"
+       !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_REGISTRY)"
+       WriteRegStr HKLM "${MyRegPath}" "InstallLocation" "$INSTDIR"
+       WriteRegStr HKLM "${MyRegPath}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
+       WriteRegStr HKLM "${MyRegPath}" "DisplayName" "LameXP"
+SectionEnd
+
+Section "-Finished"
+       !insertmacro PrintProgress "$(MUI_TEXT_FINISH_TITLE)."
+
+       ; ---- POLL ----
+       ; !insertmacro UAC_AsUser_ExecShell "" "http://mulder.brhack.net/temp/style_poll/" "" "" SW_SHOWNORMAL
+       ; ---- POLL ----
+SectionEnd
+
+
+;--------------------------------
+;Uninstaller
+;--------------------------------
+
+Section "Uninstall"
+       SetOutPath "$INSTDIR"
+       !insertmacro PrintProgress "$(LAMEXP_LANG_STATUS_UNINSTALL)"
+
+       Delete /REBOOTOK "$INSTDIR\LameXP.exe"
+       Delete /REBOOTOK "$INSTDIR\LameXP-Portable.exe"
+       Delete /REBOOTOK "$INSTDIR\LameXP.exe.sig"
+       Delete /REBOOTOK "$INSTDIR\LameXP*"
+       Delete /REBOOTOK "$INSTDIR\Uninstall.exe"
+       Delete /REBOOTOK "$INSTDIR\Changelog.htm"
+       Delete /REBOOTOK "$INSTDIR\Changelog.html"
+       Delete /REBOOTOK "$INSTDIR\Translate.html"
+       Delete /REBOOTOK "$INSTDIR\FAQ.html"
+       Delete /REBOOTOK "$INSTDIR\Howto.html"
+       Delete /REBOOTOK "$INSTDIR\License.txt"
+       Delete /REBOOTOK "$INSTDIR\Contributors.txt"
+       Delete /REBOOTOK "$INSTDIR\ReadMe.txt"
+
+       RMDir "$INSTDIR"
+
+       !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
+       StrCmp "$StartMenuFolder" "" NoStartmenuFolder
+       IfFileExists "$SMPROGRAMS\$StartMenuFolder\*.*" 0 NoStartmenuFolder
+       Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.lnk"
+       Delete /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\*.url"
+       RMDir "$SMPROGRAMS\$StartMenuFolder"
+
+       NoStartmenuFolder:
+
+       DeleteRegValue HKLM "${MyRegPath}" "InstallLocation"
+       DeleteRegValue HKLM "${MyRegPath}" "UninstallString"
+       DeleteRegValue HKLM "${MyRegPath}" "DisplayName"
+       DeleteRegValue HKLM "${MyRegPath}" "StartmenuFolder"
+       DeleteRegValue HKLM "${MyRegPath}" "SetupLanguage"
+       
+       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"
+
+       !insertmacro PrintProgress "$(MUI_UNTEXT_FINISH_TITLE)."
+SectionEnd
+
+
+;--------------------------------
+;Check For Update Mode
+;--------------------------------
 
 Function CheckForUpdate
-       !insertmacro GetCommandlineParameter "Update" "error" $R0
-       StrCmp $R0 "error" 0 +2
-       Return
+       ${StdUtils.GetParameter} $R0 "Update" "?"
+       ${IfNotThen} "$R0" == "?" ${|} Goto EnableUpdateMode ${|}
+
+       ${IfThen} "$INSTDIR" == "" ${|} Return ${|}
+       ${IfThen} "$INSTDIR" == "$EXEDIR" ${|} Return ${|}
+       ${IfNotThen} ${FileExists} "$INSTDIR\LameXP.exe" ${|} Return ${|}
+
+       EnableUpdateMode:
 
        FindWindow $R0 "#32770" "" $HWNDPARENT
        GetDlgItem $R1 $R0 1019
-       SendMessage $R1 ${EM_SETREADONLY} 1 0
+       EnableWindow $R1 0
 
        FindWindow $R0 "#32770" "" $HWNDPARENT
        GetDlgItem $R1 $R0 1001
        EnableWindow $R1 0
+FunctionEnd
+
+Function un.CheckForcedUninstall
+       ${StdUtils.GetParameter} $R0 "Force" "?"
+       ${IfNotThen} "$R0" == "?" ${|} Abort ${|}
+FunctionEnd
+
+
+;--------------------------------
+;Check For Pre-Release
+;--------------------------------
+
+Function CheckForPreRelease
+       !ifdef LAMEXP_IS_PRERELEASE
+               ${StdUtils.GetParameter} $R0 "Update" "?"
+               StrCmp $R0 "?" 0 SkipPrereleaseWarning
+               MessageBox MB_TOPMOST|MB_ICONEXCLAMATION|MB_OKCANCEL "$(LAMEXP_LANG_PRERELEASE_WARNING)" /SD IDOK IDOK +2
+               Quit
+               SkipPrereleaseWarning:
+       !endif
+FunctionEnd
+
+
+;--------------------------------
+;Locked List
+;--------------------------------
+
+Function LockedListShow
+       !insertmacro MUI_HEADER_TEXT "$(LAMEXP_LANG_LOCKEDLIST_HEADER)" "$(LAMEXP_LANG_LOCKEDLIST_TEXT)"
+       !insertmacro GetExecutableName $R0
+       LockedList::AddModule "\$R0"
+       LockedList::AddModule "\Uninstall.exe"
+       LockedList::AddModule "\Au_.exe"
+       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
+FunctionEnd
+
+Function un.LockedListShow
+       !insertmacro MUI_HEADER_TEXT "$(LAMEXP_LANG_LOCKEDLIST_HEADER)" "$(LAMEXP_LANG_LOCKEDLIST_TEXT)"
+       LockedList::AddModule "\LameXP.exe"
+       LockedList::AddModule "\Uninstall.exe"
+       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
+FunctionEnd
+
+
+;--------------------------------
+;Install Success
+;--------------------------------
 
-       GetDlgItem $R1 $HWNDPARENT 1
-       SendMessage $R1 ${WM_SETTEXT} 0 "STR:Update"
+Function RunAppFunction
+       !insertmacro DisableNextButton $R0
+       !insertmacro GetExecutableName $R0
+       ${StdUtils.ExecShellAsUser} $R1 "$INSTDIR" "explore" ""
+       ${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\$R0" "open" "--first-run"
 FunctionEnd
 
-Function .onInstSuccess
-       StrCpy $R0 "$INSTDIR"
-       UAC_AsUser_ExecShell "explore" "$R0" "" "" SW_SHOWNORMAL
-       UAC_AsUser_ExecShell "open" "$R0\LameXP.exe" "" "$OUTDIR" SW_SHOWNORMAL
+Function ShowReadmeFunction
+       !insertmacro DisableNextButton $R0
+       ${StdUtils.ExecShellAsUser} $R1 "$INSTDIR\FAQ.html" "open" ""
 FunctionEnd