You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
586 lines
21 KiB
586 lines
21 KiB
; Falkon Windows Installer NSIS Script |
|
; Copyright (C) 2010-2017 David Rosca <nowrep@gmail.com> |
|
; 2012-2017 S. Razi Alavizadeh <s.r.alavizadeh@gmail.com> |
|
; |
|
; For compiling this script you need following plugins: |
|
; FindProcDLL_plug-in, KillProcDLL_plug-in and 'AllAssociation.nsh' needs |
|
; Registry_plug-in, Application_Association_Registration_plug-in |
|
; Unicode version of them can be downloaded from: |
|
; http://sourceforge.net/projects/findkillprocuni/files/bin/ |
|
; http://nsis.sourceforge.net/Application_Association_Registration_plug-in |
|
; http://nsis.sourceforge.net/Registry_plug-in |
|
|
|
!ifndef CUSTOM |
|
!define VERSION 3.0.0 |
|
!define ARCH x86 |
|
!define MSVC_VER 140 |
|
!define OPENSSL_BIN_DIR . |
|
!define MSVC_REDIST_DIR . |
|
!define FALKON_SRC_DIR ..\..\ |
|
!define FALKON_BIN_DIR . |
|
!define ICU_BIN_DIR . |
|
!define QT_DIR . |
|
!define QT_BIN_DIR . |
|
!define QT_PLUGINS_DIR . |
|
!define QTWEBENGINE_DICTIONARIES_DIR qtwebengine_dictionaries |
|
!undef PORTABLE |
|
!endif |
|
|
|
; WinVer.nsh was added in the same release that RequestExecutionLevel so check |
|
; if ___WINVER__NSH___ is defined to determine if RequestExecutionLevel is |
|
; available. |
|
!include /NONFATAL WinVer.nsh |
|
!include x64.nsh |
|
|
|
Var installAsPortable |
|
RequestExecutionLevel admin |
|
|
|
!addplugindir "wininstall\" |
|
|
|
!include "StdUtils.nsh" |
|
!include "FileFunc.nsh" |
|
!include "wininstall\AllAssociation.nsh" |
|
SetCompressor /SOLID /FINAL lzma |
|
|
|
!define PRODUCT_NAME "Falkon" |
|
!define /date PRODUCT_VERSION "${VERSION}" |
|
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\falkon.exe" |
|
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" |
|
!define PRODUCT_UNINST_ROOT_KEY "HKLM" |
|
!define PRODUCT_CAPABILITIES_KEY "Software\${PRODUCT_NAME}\Capabilities" |
|
|
|
!include "MUI.nsh" |
|
!define MUI_ABORTWARNING |
|
!define MUI_ICON "wininstall\install.ico" |
|
!define MUI_UNICON "wininstall\uninstall.ico" |
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "wininstall\welcome.bmp" |
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "wininstall\welcome.bmp" |
|
|
|
!insertmacro MUI_PAGE_WELCOME |
|
!insertmacro MUI_PAGE_LICENSE ${FALKON_BIN_DIR}\COPYRIGHT.txt |
|
;;; |
|
Page custom InstallationModePage InstallationModeLeave |
|
;;; |
|
!define MUI_PAGE_CUSTOMFUNCTION_PRE "SkipComponentsIfPortableInstalltion" |
|
!insertmacro MUI_PAGE_COMPONENTS |
|
!insertmacro MUI_PAGE_DIRECTORY |
|
;;; |
|
Page custom installationInfoPage installationInfoLeave |
|
;;; |
|
!insertmacro MUI_PAGE_INSTFILES |
|
|
|
!define MUI_FINISHPAGE_RUN |
|
!define MUI_FINISHPAGE_RUN_FUNCTION "RunFalkonAsUser" |
|
!insertmacro MUI_PAGE_FINISH |
|
|
|
!insertmacro MUI_UNPAGE_WELCOME |
|
!insertmacro MUI_UNPAGE_CONFIRM |
|
!insertmacro MUI_UNPAGE_INSTFILES |
|
!insertmacro MUI_UNPAGE_FINISH |
|
|
|
!insertmacro MUI_LANGUAGE "English" |
|
!insertmacro MUI_LANGUAGE "Czech" |
|
!insertmacro MUI_LANGUAGE "Slovak" |
|
!insertmacro MUI_LANGUAGE "German" |
|
!insertmacro MUI_LANGUAGE "Dutch" |
|
!insertmacro MUI_LANGUAGE "Portuguese" |
|
!insertmacro MUI_LANGUAGE "Greek" |
|
!insertmacro MUI_LANGUAGE "French" |
|
!insertmacro MUI_LANGUAGE "Italian" |
|
!insertmacro MUI_LANGUAGE "Romanian" |
|
!insertmacro MUI_LANGUAGE "Tradchinese" |
|
!insertmacro MUI_LANGUAGE "Simpchinese" |
|
!insertmacro MUI_LANGUAGE "Indonesian" |
|
!insertmacro MUI_LANGUAGE "Georgian" |
|
!insertmacro MUI_LANGUAGE "Japanese" |
|
!insertmacro MUI_LANGUAGE "Swedish" |
|
!insertmacro MUI_LANGUAGE "Polish" |
|
!insertmacro MUI_LANGUAGE "Ukrainian" |
|
!insertmacro MUI_LANGUAGE "Catalan" |
|
!insertmacro MUI_LANGUAGE "Serbian" |
|
!insertmacro MUI_LANGUAGE "SerbianLatin" |
|
!insertmacro MUI_LANGUAGE "Farsi" |
|
!insertmacro MUI_LANGUAGE "Hebrew" |
|
!insertmacro MUI_LANGUAGE "Spanish" |
|
!insertmacro MUI_LANGUAGE "Arabic" |
|
!insertmacro MUI_LANGUAGE "Basque" |
|
!insertmacro MUI_LANGUAGE "Danish" |
|
|
|
!insertmacro MUI_RESERVEFILE_LANGDLL |
|
|
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" |
|
OutFile "${PRODUCT_NAME} Installer ${PRODUCT_VERSION}.exe" |
|
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}\" |
|
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" |
|
ShowInstDetails show |
|
ShowUnInstDetails show |
|
|
|
!include "wininstall\languages.nsh" |
|
|
|
Section !$(TITLE_SecMain) SecMain |
|
SectionIn RO |
|
FindProcDLL::FindProc "falkon.exe" |
|
IntCmp $R0 1 0 notRunning |
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(MSG_RunningInstance)" /SD IDOK IDCANCEL AbortInstallation |
|
KillProcDLL::KillProc "falkon.exe" |
|
Sleep 100 |
|
Goto notRunning |
|
AbortInstallation: |
|
Abort "$(MSG_InstallationCanceled)" |
|
|
|
notRunning: |
|
SetOverwrite on |
|
|
|
SetOutPath "$INSTDIR" |
|
File "${FALKON_BIN_DIR}\COPYRIGHT.txt" |
|
File "${FALKON_BIN_DIR}\falkon.exe" |
|
File "${FALKON_BIN_DIR}\falkonprivate.dll" |
|
File "${FALKON_BIN_DIR}\qt.conf" |
|
File "${OPENSSL_BIN_DIR}\libeay32.dll" |
|
File "${OPENSSL_BIN_DIR}\ssleay32.dll" |
|
File "${MSVC_REDIST_DIR}\*" |
|
File "${ICU_BIN_DIR}\icudt54.dll" |
|
File "${ICU_BIN_DIR}\icuin54.dll" |
|
File "${ICU_BIN_DIR}\icuuc54.dll" |
|
File "${QT_BIN_DIR}\libEGL.dll" |
|
File "${QT_BIN_DIR}\libGLESv2.dll" |
|
File "${QT_BIN_DIR}\opengl32sw.dll" |
|
File "${QT_BIN_DIR}\D3Dcompiler_47.dll" |
|
File "${QT_BIN_DIR}\Qt5Core.dll" |
|
File "${QT_BIN_DIR}\Qt5Gui.dll" |
|
File "${QT_BIN_DIR}\Qt5Network.dll" |
|
File "${QT_BIN_DIR}\Qt5Positioning.dll" |
|
File "${QT_BIN_DIR}\Qt5PrintSupport.dll" |
|
File "${QT_BIN_DIR}\Qt5Qml.dll" |
|
File "${QT_BIN_DIR}\Qt5Quick.dll" |
|
File "${QT_BIN_DIR}\Qt5QuickWidgets.dll" |
|
File "${QT_BIN_DIR}\Qt5Sql.dll" |
|
File "${QT_BIN_DIR}\Qt5Svg.dll" |
|
File "${QT_BIN_DIR}\Qt5WinExtras.dll" |
|
File "${QT_BIN_DIR}\Qt5WebEngine.dll" |
|
File "${QT_BIN_DIR}\Qt5WebEngineCore.dll" |
|
File "${QT_BIN_DIR}\Qt5WebEngineWidgets.dll" |
|
File "${QT_BIN_DIR}\Qt5WebChannel.dll" |
|
File "${QT_BIN_DIR}\Qt5Widgets.dll" |
|
File "${QT_BIN_DIR}\QtWebEngineProcess.exe" |
|
|
|
SetOutPath "$INSTDIR\iconengines" |
|
File "${QT_PLUGINS_DIR}\iconengines\qsvgicon.dll" |
|
|
|
SetOutPath "$INSTDIR\imageformats" |
|
File "${QT_PLUGINS_DIR}\imageformats\*.dll" |
|
|
|
SetOutPath "$INSTDIR\platforms" |
|
File "${QT_PLUGINS_DIR}\platforms\qwindows.dll" |
|
|
|
SetOutPath "$INSTDIR\printsupport" |
|
File "${QT_PLUGINS_DIR}\printsupport\windowsprintersupport.dll" |
|
|
|
SetOutPath "$INSTDIR\qml\QtQuick.2" |
|
File "${QT_DIR}\qml\QtQuick.2\*" |
|
|
|
SetOutPath "$INSTDIR\qml\QtWebEngine" |
|
File "${QT_DIR}\qml\QtWebEngine\*" |
|
|
|
SetOutPath "$INSTDIR\resources" |
|
File "${QT_DIR}\resources\*" |
|
|
|
SetOutPath "$INSTDIR\sqldrivers" |
|
File "${QT_PLUGINS_DIR}\sqldrivers\qsqlite.dll" |
|
|
|
SetOutPath "$INSTDIR\styles" |
|
File "${QT_PLUGINS_DIR}\styles\*.dll" |
|
|
|
call RegisterCapabilities |
|
|
|
StrCmp $installAsPortable "YES" 0 skipPortableMode |
|
FileOpen $0 $INSTDIR\falkon.conf w |
|
FileWrite $0 "[Config]$\r$\n" |
|
FileWrite $0 "Portable=true$\r$\n" |
|
|
|
StrCmp $0 "" 0 closeHandle |
|
MessageBox MB_OK|MB_ICONEXCLAMATION $(MSG_PortableWriteError) |
|
goto skipPortableMode |
|
|
|
closeHandle: |
|
FileClose $0 |
|
|
|
skipPortableMode: |
|
SectionEnd |
|
|
|
SectionGroup $(TITLE_SecThemes) SecThemes |
|
|
|
Section Default SecDefault |
|
SectionIn RO |
|
SetOutPath "$INSTDIR\themes\windows" |
|
File "${FALKON_SRC_DIR}\themes\windows\*" |
|
SetOutPath "$INSTDIR\themes\windows\images" |
|
File "${FALKON_SRC_DIR}\themes\windows\images\*" |
|
SectionEnd |
|
|
|
Section Chrome SecChrome |
|
SetOutPath "$INSTDIR\themes\chrome" |
|
File "${FALKON_SRC_DIR}\themes\chrome\*" |
|
SetOutPath "$INSTDIR\themes\chrome\images" |
|
File "${FALKON_SRC_DIR}\themes\chrome\images\*" |
|
SectionEnd |
|
|
|
Section Mac SecMac |
|
SetOutPath "$INSTDIR\themes\mac" |
|
File "${FALKON_SRC_DIR}\themes\mac\*" |
|
SetOutPath "$INSTDIR\themes\mac\images" |
|
File "${FALKON_SRC_DIR}\themes\mac\images\*" |
|
SectionEnd |
|
SectionGroupEnd |
|
|
|
Section $(TITLE_SecTranslations) SecTranslations |
|
SetOutPath "$INSTDIR\locale" |
|
File /r "${FALKON_BIN_DIR}\locale\*" |
|
|
|
SetOutPath "$INSTDIR\translations\qtwebengine_locales" |
|
File "${QT_DIR}\translations\qtwebengine_locales\*" |
|
|
|
SetOutPath "$INSTDIR\qtwebengine_dictionaries\doc" |
|
; In some packages underline '_' is used and in some other packages dash '-' is used so we use wildcard |
|
File "${QTWEBENGINE_DICTIONARIES_DIR}\doc\README*en*US.txt" |
|
|
|
SetOutPath "$INSTDIR\qtwebengine_dictionaries" |
|
; in some packages *.bdic files use dash '-' instead of underline '_' followed by a version number. e.g. en-US-3-0.bdic |
|
File "${QTWEBENGINE_DICTIONARIES_DIR}\en*US*.bdic" |
|
SectionEnd |
|
|
|
Section $(TITLE_SecPlugins) SecPlugins |
|
SetOutPath "$INSTDIR\plugins" |
|
File "${FALKON_BIN_DIR}\plugins\*.dll" |
|
SectionEnd |
|
|
|
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecMain} $(DESC_SecMain) |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecTranslations} $(DESC_SecTranslations) |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) |
|
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(DESC_SecDesktop) |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecExtensions} $(DESC_SecExtensions) |
|
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecThemes} $(DESC_SecThemes) |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecSetASDefault} $(DESC_SecSetASDefault) |
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecProtocols} $(DESC_SecProtocols) |
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END |
|
|
|
SectionGroup $(TITLE_SecSetASDefault) SecSetASDefault |
|
Section $(TITLE_SecExtensions) SecExtensions |
|
StrCmp $installAsPortable "NO" 0 skipSetExtentions |
|
SetOutPath "$INSTDIR" |
|
${RegisterAssociation} ".htm" "$INSTDIR\falkon.exe" "FalkonHTML" "Falkon HTML Document" "$INSTDIR\falkon.exe,1" "file" |
|
${RegisterAssociation} ".html" "$INSTDIR\falkon.exe" "FalkonHTML" "Falkon HTML Document" "$INSTDIR\falkon.exe,1" "file" |
|
${UpdateSystemIcons} |
|
skipSetExtentions: |
|
SectionEnd |
|
|
|
Section $(TITLE_SecProtocols) SecProtocols |
|
StrCmp $installAsPortable "NO" 0 skipSecProtocols |
|
${RegisterAssociation} "http" "$INSTDIR\falkon.exe" "FalkonURL" "Falkon URL" "$INSTDIR\falkon.exe,0" "protocol" |
|
${RegisterAssociation} "https" "$INSTDIR\falkon.exe" "FalkonURL" "Falkon URL" "$INSTDIR\falkon.exe,0" "protocol" |
|
${RegisterAssociation} "ftp" "$INSTDIR\falkon.exe" "FalkonURL" "Falkon URL" "$INSTDIR\falkon.exe,0" "protocol" |
|
${UpdateSystemIcons} |
|
skipSecProtocols: |
|
SectionEnd |
|
SectionGroupEnd |
|
|
|
Section -StartMenu |
|
StrCmp $installAsPortable "NO" 0 skipStartMenu |
|
SetOutPath "$INSTDIR" |
|
SetShellVarContext all |
|
CreateDirectory "$SMPROGRAMS\Falkon" |
|
CreateShortCut "$SMPROGRAMS\Falkon\Uninstall.lnk" "$INSTDIR\Uninstall.exe" |
|
CreateShortCut "$SMPROGRAMS\Falkon\Falkon.lnk" "$INSTDIR\falkon.exe" |
|
CreateShortCut "$SMPROGRAMS\Falkon\License.lnk" "$INSTDIR\COPYRIGHT.txt" |
|
skipStartMenu: |
|
SectionEnd |
|
|
|
Section $(TITLE_SecDesktop) SecDesktop |
|
StrCmp $installAsPortable "NO" 0 skipDesktopIcon |
|
SetOutPath "$INSTDIR" |
|
CreateShortCut "$DESKTOP\Falkon.lnk" "$INSTDIR\falkon.exe" "" |
|
skipDesktopIcon: |
|
SectionEnd |
|
|
|
Section -Uninstaller |
|
StrCmp $installAsPortable "NO" 0 skipUninstaller |
|
WriteUninstaller "$INSTDIR\uninstall.exe" |
|
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\falkon.exe" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\falkon.exe" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "Falkon Team" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "HelpLink" "https://userbase.kde.org/Falkon" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallSource" "$EXEDIR" |
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "https://kde.org" |
|
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 |
|
WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0" |
|
skipUninstaller: |
|
SectionEnd |
|
|
|
Section Uninstall |
|
FindProcDLL::FindProc "falkon.exe" |
|
IntCmp $R0 1 0 notRunning |
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(MSG_RunningInstance)" /SD IDOK IDCANCEL AbortInstallation |
|
KillProcDLL::KillProc "falkon.exe" |
|
Sleep 100 |
|
Goto notRunning |
|
AbortInstallation: |
|
Abort "$(MSG_InstallationCanceled)" |
|
|
|
notRunning: |
|
SetShellVarContext all |
|
Delete "$DESKTOP\Falkon.lnk" |
|
|
|
Delete "$INSTDIR\falkon.exe" |
|
Delete "$INSTDIR\falkonprivate.dll" |
|
Delete "$INSTDIR\uninstall.exe" |
|
Delete "$INSTDIR\COPYRIGHT.txt" |
|
Delete "$INSTDIR\qt.conf" |
|
Delete "$INSTDIR\libeay32.dll" |
|
Delete "$INSTDIR\ssleay32.dll" |
|
Delete "$INSTDIR\libEGL.dll" |
|
Delete "$INSTDIR\libGLESv2.dll" |
|
Delete "$INSTDIR\opengl32sw.dll" |
|
Delete "$INSTDIR\D3Dcompiler_47.dll" |
|
Delete "$INSTDIR\QtWebEngineProcess.exe" |
|
|
|
; Wildcard delete to compact script of uninstall section |
|
Delete "$INSTDIR\icu*.dll" |
|
Delete "$INSTDIR\Qt5*.dll" |
|
Delete "$INSTDIR\msvc*.dll" |
|
Delete "$INSTDIR\vc*.dll" |
|
Delete "$INSTDIR\concrt*.dll" |
|
|
|
; Recursively delete folders in root of $INSTDIR |
|
RMDir /r "$INSTDIR\iconengines" |
|
RMDir /r "$INSTDIR\imageformats" |
|
RMDir /r "$INSTDIR\platforms" |
|
RMDir /r "$INSTDIR\printsupport" |
|
RMDir /r "$INSTDIR\qml" |
|
RMDir /r "$INSTDIR\resources" |
|
RMDir /r "$INSTDIR\translations" |
|
RMDir /r "$INSTDIR\sqldrivers" |
|
RMDir /r "$INSTDIR\styles" |
|
RMDir /r "$INSTDIR\qtwebengine_dictionaries" |
|
RMDir /r "$INSTDIR\themes" |
|
RMDir /r "$INSTDIR\locale" |
|
RMDir /r "$INSTDIR\plugins" |
|
|
|
; Remove $INSTDIR if it is empty |
|
RMDir "$INSTDIR" |
|
|
|
; Remove start menu programs folder |
|
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}" |
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" |
|
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" |
|
|
|
DeleteRegKey HKLM "Software\${PRODUCT_NAME}" |
|
DeleteRegValue HKLM "SOFTWARE\RegisteredApplications" "${PRODUCT_NAME}" |
|
|
|
${UnRegisterAssociation} ".htm" "FalkonHTML" "$INSTDIR\falkon.exe" "file" |
|
${UnRegisterAssociation} ".html" "FalkonHTML" "$INSTDIR\falkon.exe" "file" |
|
${UnRegisterAssociation} "http" "FalkonURL" "$INSTDIR\falkon.exe" "protocol" |
|
${UnRegisterAssociation} "https" "FalkonURL" "$INSTDIR\falkon.exe" "protocol" |
|
${UnRegisterAssociation} "ftp" "FalkonURL" "$INSTDIR\falkon.exe" "protocol" |
|
${UpdateSystemIcons} |
|
SectionEnd |
|
|
|
BrandingText "${PRODUCT_NAME} ${PRODUCT_VERSION} Installer" |
|
|
|
Function .onInit |
|
;Prevent running installer of 64-bit Falkon on 32-bit Windows |
|
${If} ${RunningX64} |
|
${If} ${ARCH} == "x64" |
|
StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}\" |
|
${Else} |
|
StrCpy $InstDir "$PROGRAMFILES32\${PRODUCT_NAME}\" |
|
${Endif} |
|
${Else} |
|
${If} ${ARCH} == "x64" |
|
MessageBox MB_OK|MB_ICONEXCLAMATION "This installation requiers Windows x64!" |
|
Quit |
|
${Else} |
|
StrCpy $InstDir "$PROGRAMFILES\${PRODUCT_NAME}\" |
|
${Endif} |
|
${EndIf} |
|
|
|
;Prevent Multiple Instances |
|
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "FalkonInstaller-4ECB4694-2C39-4f93-9122-A986344C4E7B") i .r1 ?e' |
|
Pop $R0 |
|
StrCmp $R0 0 +3 |
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Falkon installer is already running!" /SD IDOK |
|
Abort |
|
|
|
;Language selection dialog¨ |
|
;Return when running silent instalation |
|
|
|
IfSilent 0 +2 |
|
return |
|
|
|
Push "" |
|
Push ${LANG_ENGLISH} |
|
Push English |
|
Push ${LANG_CZECH} |
|
Push Czech |
|
Push ${LANG_SLOVAK} |
|
Push Slovak |
|
Push ${LANG_GERMAN} |
|
Push German |
|
Push ${LANG_DUTCH} |
|
Push Dutch |
|
Push ${LANG_PORTUGUESE} |
|
Push Portuguese |
|
Push ${LANG_GREEK} |
|
Push Greek |
|
Push ${LANG_FRENCH} |
|
Push French |
|
Push ${LANG_ITALIAN} |
|
Push Italian |
|
Push ${LANG_ROMANIAN} |
|
Push Romanian |
|
Push ${LANG_TRADCHINESE} |
|
Push TraditionalChinese |
|
Push ${LANG_SIMPCHINESE} |
|
Push SimplifiedChinese |
|
Push ${LANG_INDONESIAN} |
|
Push Indonesian |
|
Push ${LANG_GEORGIAN} |
|
Push Georgian |
|
Push ${LANG_JAPANESE} |
|
Push Japanese |
|
Push ${LANG_SWEDISH} |
|
Push Swedish |
|
Push ${LANG_POLISH} |
|
Push Polish |
|
Push ${LANG_UKRAINIAN} |
|
Push Ukrainian |
|
Push ${LANG_CATALAN} |
|
Push Catalan |
|
Push ${LANG_SERBIAN} |
|
Push Serbian |
|
Push ${LANG_SERBIANLATIN} |
|
Push SerbianLatin |
|
Push ${LANG_FARSI} |
|
Push Persian |
|
Push ${LANG_HEBREW} |
|
Push Hebrew |
|
Push ${LANG_SPANISH} |
|
Push Spanish |
|
Push ${LANG_DANISH} |
|
Push Danish |
|
Push A ; A means auto count languages |
|
; for the auto count to work the first empty push (Push "") must remain |
|
LangDLL::LangDialog "Installer Language" "Please select the language of the installer" |
|
|
|
Pop $LANGUAGE |
|
StrCmp $LANGUAGE "cancel" 0 +2 |
|
Abort |
|
|
|
;Extract InstallOptions files |
|
;$PLUGINSDIR will automatically be removed when the installer closes |
|
InitPluginsDir |
|
File /oname=$PLUGINSDIR\portable-mode.ini "portable-mode.ini" |
|
File /oname=$PLUGINSDIR\portable-info.ini "portable-info.ini" |
|
FunctionEnd |
|
|
|
Function RegisterCapabilities |
|
StrCmp $installAsPortable "NO" 0 skipRegisterCapabilities |
|
!ifdef ___WINVER__NSH___ |
|
${If} ${AtLeastWinVista} |
|
; even if we don't associate Falkon as default for ".htm" and ".html" |
|
; we need to write these ProgIds for future use! |
|
;(e.g.: user uses "Default Programs" on Win7 or Vista to set Falkon as default.) |
|
${CreateProgId} "FalkonHTML" "$INSTDIR\falkon.exe" "Falkon HTML Document" "$INSTDIR\falkon.exe,1" |
|
${CreateProgId} "FalkonURL" "$INSTDIR\falkon.exe" "Falkon URL" "$INSTDIR\falkon.exe,0" |
|
|
|
; note: these lines just introduce capabilities of Falkon to OS and don't change defaults! |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}" "ApplicationDescription" "$(PRODUCT_DESC)" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}" "ApplicationIcon" "$INSTDIR\falkon.exe,0" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}" "ApplicationName" "${PRODUCT_NAME}" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\FileAssociations" ".htm" "FalkonHTML" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\FileAssociations" ".html" "FalkonHTML" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "http" "FalkonURL" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "https" "FalkonURL" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\URLAssociations" "ftp" "FalkonURL" |
|
WriteRegStr HKLM "${PRODUCT_CAPABILITIES_KEY}\Startmenu" "StartMenuInternet" "$INSTDIR\falkon.exe" |
|
WriteRegStr HKLM "SOFTWARE\RegisteredApplications" "${PRODUCT_NAME}" "${PRODUCT_CAPABILITIES_KEY}" |
|
${EndIf} |
|
!endif |
|
skipRegisterCapabilities: |
|
FunctionEnd |
|
|
|
Function RunFalkonAsUser |
|
${StdUtils.ExecShellAsUser} $0 "$INSTDIR\falkon.exe" "open" "" |
|
FunctionEnd |
|
|
|
Function un.onInit |
|
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" |
|
IfErrors +2 0 |
|
StrCpy $INSTDIR "$R0" |
|
|
|
IfFileExists "$INSTDIR\falkon.exe" found |
|
MessageBox MB_OK|MB_ICONSTOP "$(MSG_InvalidInstallPath)" |
|
Abort |
|
found: |
|
FunctionEnd |
|
|
|
Function InstallationModePage |
|
!insertmacro MUI_HEADER_TEXT "$(TITLE_InstallationMode)" "$(DESC_InstallationMode)" |
|
|
|
WriteINIStr "$PLUGINSDIR\portable-mode.ini" "Field 1" "Text" "$(TITLE_StandardInstallation)" |
|
WriteINIStr "$PLUGINSDIR\portable-mode.ini" "Field 2" "Text" "$(TITLE_PortableInstallation)" |
|
; set layout direction |
|
IntCmp $(^RTL) 1 0 +2 |
|
WriteINIStr "$PLUGINSDIR\portable-mode.ini" "Settings" "RTL" 1 |
|
|
|
InstallOptions::dialog $PLUGINSDIR\portable-mode.ini |
|
FunctionEnd |
|
|
|
Function InstallationModeLeave |
|
ReadINIStr $0 "$PLUGINSDIR\portable-mode.ini" "Field 2" "State" |
|
|
|
StrCmp $0 1 0 notchecked |
|
StrCpy $installAsPortable "YES" |
|
StrCpy $InstDir "$DESKTOP\${PRODUCT_NAME} Portable\" |
|
|
|
goto skip |
|
|
|
notchecked: |
|
StrCpy $installAsPortable "NO" |
|
|
|
skip: |
|
FunctionEnd |
|
|
|
Function installationInfoPage |
|
!insertmacro MUI_HEADER_TEXT "$(TITLE_InstallInfo)" "$(DESC_InstallInfo)" |
|
; set layout direction |
|
IntCmp $(^RTL) 1 0 +2 |
|
WriteINIStr "$PLUGINSDIR\portable-info.ini" "Settings" "RTL" 1 |
|
|
|
StrCmp $installAsPortable "NO" 0 infoPortable |
|
WriteINIStr "$PLUGINSDIR\portable-info.ini" "Field 1" "Text" "$(DESC_StandardInstallation)" |
|
|
|
Goto showInfo |
|
|
|
infoPortable: |
|
WriteINIStr "$PLUGINSDIR\portable-info.ini" "Field 1" "Text" "$(DESC_PortableInstallation)" |
|
|
|
showInfo: |
|
InstallOptions::dialog $PLUGINSDIR\portable-info.ini |
|
FunctionEnd |
|
|
|
Function installationInfoLeave |
|
FunctionEnd |
|
|
|
Function SkipComponentsIfPortableInstalltion |
|
StrCmp $installAsPortable "YES" 0 +2 |
|
Abort |
|
FunctionEnd
|
|
|