Update setup.nsi
This commit is contained in:
parent
5cbf1470e6
commit
85cc4448ea
|
@ -1,477 +1,477 @@
|
|||
# Part of Odoo,Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
# TODO: Avoid to uninstall the database
|
||||
# TODO: We can update the server or the clients without to uninstall the all-in-one
|
||||
# TODO: Add startmenu handling (link to localhost + uninstall)
|
||||
|
||||
!include 'MUI2.nsh'
|
||||
!include 'FileFunc.nsh'
|
||||
!include 'LogicLib.nsh'
|
||||
!include 'Sections.nsh'
|
||||
!include 'x64.nsh'
|
||||
|
||||
!macro IfKeyExists ROOT MAIN_KEY KEY
|
||||
# This macro comes from http://nsis.sourceforge.net/Check_for_a_Registry_Key
|
||||
Push $R0
|
||||
Push $R1
|
||||
Push $R2
|
||||
|
||||
# XXX bug if ${ROOT}, ${MAIN_KEY} or ${KEY} use $R0 or $R1
|
||||
|
||||
StrCpy $R1 "0" # loop index
|
||||
StrCpy $R2 "0" # not found
|
||||
|
||||
${Do}
|
||||
EnumRegKey $R0 ${ROOT} "${MAIN_KEY}" "$R1"
|
||||
${If} $R0 == "${KEY}"
|
||||
StrCpy $R2 "1" # found
|
||||
${Break}
|
||||
${EndIf}
|
||||
IntOp $R1 $R1 + 1
|
||||
${LoopWhile} $R0 != ""
|
||||
|
||||
ClearErrors
|
||||
|
||||
Exch 2
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
Exch $R2
|
||||
!macroend
|
||||
|
||||
!define PUBLISHER 'FlectraHQ'
|
||||
|
||||
!ifndef MAJOR_VERSION
|
||||
!define MAJOR_VERSION '1'
|
||||
!endif
|
||||
|
||||
!ifndef MINOR_VERSION
|
||||
!define MINOR_VERSION '0'
|
||||
!endif
|
||||
|
||||
!ifndef REVISION_VERSION
|
||||
!define REVISION_VERSION 'alpha1'
|
||||
!endif
|
||||
|
||||
!ifndef VERSION
|
||||
!define VERSION "0"
|
||||
#!define VERSION "${MAJOR_VERSION}.${MINOR_VERSION}-r${REVISION_VERSION}"
|
||||
!endif
|
||||
|
||||
!define PRODUCT_NAME "Flectra"
|
||||
!define DISPLAY_NAME "${PRODUCT_NAME} ${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
|
||||
!define REGISTRY_ROOT HKLM
|
||||
!define UNINSTALL_BASE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
!define UNINSTALL_REGISTRY_KEY "${UNINSTALL_BASE_REGISTRY_KEY}\${DISPLAY_NAME}"
|
||||
|
||||
!define UNINSTALL_REGISTRY_KEY_SERVER "${UNINSTALL_BASE_REGISTRY_KEY}\Flectra Server ${VERSION}"
|
||||
|
||||
!define REGISTRY_KEY "Software\${DISPLAY_NAME}"
|
||||
|
||||
!define DEFAULT_POSTGRESQL_HOSTNAME 'localhost'
|
||||
!define DEFAULT_POSTGRESQL_PORT 5432
|
||||
!define DEFAULT_POSTGRESQL_USERNAME 'openpg'
|
||||
!define DEFAULT_POSTGRESQL_PASSWORD 'openpgpwd'
|
||||
|
||||
Name '${DISPLAY_NAME}'
|
||||
Caption "${PRODUCT_NAME} ${VERSION} Setup"
|
||||
OutFile "flectra-allinone-setup-${VERSION}.exe"
|
||||
SetCompressor /FINAL lzma
|
||||
#SetCompress auto
|
||||
ShowInstDetails show
|
||||
|
||||
#XPStyle on
|
||||
|
||||
InstallDir "$PROGRAMFILES\Flectra ${VERSION}"
|
||||
InstallDirRegKey HKCU "${REGISTRY_KEY}" ""
|
||||
|
||||
BrandingText '${PRODUCT_NAME} ${VERSION}'
|
||||
|
||||
RequestExecutionLevel admin
|
||||
|
||||
#VIAddVersionKey "ProductName" "${PRODUCT_NAME}"
|
||||
#VIAddVersionKey "CompanyName" "${PUBLISHER}"
|
||||
#VIAddVersionKey "FileDescription" "Installer of ${DISPLAY_NAME}"
|
||||
#VIAddVersionKey "LegalCopyright" "${PUBLISHER}"
|
||||
#VIAddVersionKey "LegalTrademark" "FLECTRA is a trademark of ${PUBLISHER}"
|
||||
#VIAddVersionKey "FileVersion" "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"
|
||||
#VIProductVersion "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"
|
||||
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
|
||||
Var Option_AllInOne
|
||||
Var HasPostgreSQL
|
||||
Var cmdLineParams
|
||||
|
||||
Var TextPostgreSQLHostname
|
||||
Var TextPostgreSQLPort
|
||||
Var TextPostgreSQLUsername
|
||||
Var TextPostgreSQLPassword
|
||||
|
||||
Var HWNDPostgreSQLHostname
|
||||
Var HWNDPostgreSQLPort
|
||||
Var HWNDPostgreSQLUsername
|
||||
Var HWNDPostgreSQLPassword
|
||||
|
||||
!define STATIC_PATH "static"
|
||||
!define PIXMAPS_PATH "${STATIC_PATH}\pixmaps"
|
||||
!define POSTGRESQL_EXE_FILENAME "postgresql-9.5.8-1-windows.exe"
|
||||
!define POSTGRESQL_EXE "${STATIC_PATH}\${POSTGRESQL_EXE_FILENAME}"
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ICON "${PIXMAPS_PATH}\flectra-icon.ico"
|
||||
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\flectra-intro.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\flectra-intro.bmp"
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP "${PIXMAPS_PATH}\flectra-slogan.bmp"
|
||||
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
|
||||
!define MUI_HEADER_TRANSPARENT_TEXT ""
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "${STATIC_PATH}\doc\LICENSE"
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ComponentLeave
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
Page Custom ShowPostgreSQL LeavePostgreSQL
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_RUN_CHECKED
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "$(DESC_FinishPageText)"
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
|
||||
!define MUI_FINISHPAGE_LINK $(DESC_FinishPage_Link)
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://flectrahq.com/page/contactus"
|
||||
!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 "French"
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
|
||||
; English
|
||||
LangString DESC_FLECTRA_Server ${LANG_ENGLISH} "Install the Flectra Server with all the Flectra standard modules."
|
||||
LangString DESC_PostgreSQL ${LANG_ENGLISH} "Install the PostgreSQL RDBMS used by Flectra."
|
||||
LangString DESC_FinishPage_Link ${LANG_ENGLISH} "Contact Flectra for Partnership and/or Support"
|
||||
LangString DESC_AtLeastOneComponent ${LANG_ENGLISH} "You have to choose at least one component"
|
||||
LangString DESC_CanNotInstallPostgreSQL ${LANG_ENGLISH} "You can not install the PostgreSQL database without the Flectra Server"
|
||||
LangString WARNING_HostNameIsEmpty ${LANG_ENGLISH} "The hostname for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_UserNameIsEmpty ${LANG_ENGLISH} "The username for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_PasswordIsEmpty ${LANG_ENGLISH} "The password for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_PortIsWrong ${LANG_ENGLISH} "The port for the connexion to the PostgreSQL Server is wrong (default: 5432)"
|
||||
LangString DESC_PostgreSQLPage ${LANG_ENGLISH} "Configure the information for the PostgreSQL connection"
|
||||
LangString DESC_PostgreSQL_Hostname ${LANG_ENGLISH} "Hostname"
|
||||
LangString DESC_PostgreSQL_Port ${LANG_ENGLISH} "Port"
|
||||
LangString DESC_PostgreSQL_Username ${LANG_ENGLISH} "Username"
|
||||
LangString DESC_PostgreSQL_Password ${LANG_ENGLISH} "Password"
|
||||
LangString Profile_AllInOne ${LANG_ENGLISH} "All In One"
|
||||
LangString Profile_Server ${LANG_ENGLISH} "Server only"
|
||||
LangString TITLE_FLECTRA_Server ${LANG_ENGLISH} "Flectra Server"
|
||||
LangString TITLE_PostgreSQL ${LANG_ENGLISH} "PostgreSQL Database"
|
||||
LangString DESC_FinishPageText ${LANG_ENGLISH} "Start Flectra"
|
||||
|
||||
; French
|
||||
LangString DESC_FLECTRA_Server ${LANG_FRENCH} "Installation du Serveur Flectra avec tous les modules Flectra standards."
|
||||
LangString DESC_PostgreSQL ${LANG_FRENCH} "Installation de la base de données PostgreSQL utilisée par Flectra."
|
||||
LangString DESC_FinishPage_Link ${LANG_FRENCH} "Contactez Flectra pour un Partenariat et/ou du Support"
|
||||
LangString DESC_AtLeastOneComponent ${LANG_FRENCH} "Vous devez choisir au moins un composant"
|
||||
LangString DESC_CanNotInstallPostgreSQL ${LANG_FRENCH} "Vous ne pouvez pas installer la base de données PostgreSQL sans le serveur Flectra"
|
||||
LangString WARNING_HostNameIsEmpty ${LANG_FRENCH} "L'adresse pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_UserNameIsEmpty ${LANG_FRENCH} "Le nom d'utilisateur pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_PasswordIsEmpty ${LANG_FRENCH} "Le mot de passe pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_PortIsWrong ${LANG_FRENCH} "Le port pour la connection au serveur PostgreSQL est erroné (défaut: 5432)"
|
||||
LangString DESC_PostgreSQLPage ${LANG_FRENCH} "Configurez les informations de connection pour le serveur PostgreSQL"
|
||||
LangString DESC_PostgreSQL_Hostname ${LANG_FRENCH} "Hôte"
|
||||
LangString DESC_PostgreSQL_Port ${LANG_FRENCH} "Port"
|
||||
LangString DESC_PostgreSQL_Username ${LANG_FRENCH} "Utilisateur"
|
||||
LangString DESC_PostgreSQL_Password ${LANG_FRENCH} "Mot de passe"
|
||||
LangString Profile_AllInOne ${LANG_FRENCH} "All In One"
|
||||
LangString Profile_Server ${LANG_FRENCH} "Seulement le serveur"
|
||||
LangString TITLE_FLECTRA_Server ${LANG_FRENCH} "Serveur Flectra"
|
||||
LangString TITLE_PostgreSQL ${LANG_FRENCH} "Installation du serveur de base de données PostgreSQL"
|
||||
LangString DESC_FinishPageText ${LANG_FRENCH} "Démarrer Flectra"
|
||||
|
||||
InstType $(Profile_AllInOne)
|
||||
InstType $(Profile_Server)
|
||||
|
||||
Section $(TITLE_FLECTRA_Server) SectionFLECTRA_Server
|
||||
SectionIn 1 2
|
||||
|
||||
# TODO: install in a temp dir before
|
||||
|
||||
# Installing winpython
|
||||
SetOutPath "$INSTDIR\python"
|
||||
File /r /x "__pycache__" "..\..\..\WinPython\python-3.6.2\*"
|
||||
|
||||
SetOutPath "$INSTDIR\nssm"
|
||||
File /r /x "src" "..\..\..\nssm-2.24\*"
|
||||
|
||||
SetOutPath "$INSTDIR\server"
|
||||
File /r /x "${POSTGRESQL_EXE_FILENAME}" /x "wkhtmltopdf" "..\..\*"
|
||||
|
||||
SetOutPath "$INSTDIR\vcredist"
|
||||
File /r "..\..\..\vcredist\*.exe"
|
||||
|
||||
# Install Visual C redistribuable files
|
||||
DetailPrint "Installing Visual C++ redistributable files"
|
||||
${If} ${RunningX64}
|
||||
nsExec::Exec '"$INSTDIR\vcredist\vc_redist.x64.exe" /q'
|
||||
${Else}
|
||||
nsExec::Exec '"$INSTDIR\vcredist\vc_redist.x86.exe" /q'
|
||||
${EndIf}
|
||||
|
||||
SetOutPath "$INSTDIR\thirdparty"
|
||||
File /r "${STATIC_PATH}\wkhtmltopdf\*"
|
||||
File /r "${STATIC_PATH}\less\*"
|
||||
|
||||
# If there is a previous install of the FLECTRA Server, keep the login/password from the config file
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_host" $TextPostgreSQLHostname
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_user" $TextPostgreSQLUsername
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_password" $TextPostgreSQLPassword
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_port" $TextPostgreSQLPort
|
||||
# Fix the addons path
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "addons_path" "$INSTDIR\server\flectra\addons"
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "bin_path" "$INSTDIR\thirdparty"
|
||||
|
||||
# if we're going to install postgresql force it's path,
|
||||
# otherwise we consider it's always done and/or correctly tune by users
|
||||
${If} $HasPostgreSQL == 0
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "pg_path" "$INSTDIR\PostgreSQL\bin"
|
||||
${EndIf}
|
||||
|
||||
DetailPrint "Installing Windows service"
|
||||
nsExec::ExecTOLog '"$INSTDIR\python\python.exe" "$INSTDIR\server\flectra-bin" --stop-after-init --logfile "$INSTDIR\server\flectra.log" -s'
|
||||
${If} ${RunningX64}
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" install ${SERVICENAME} "$INSTDIR\python\python.exe" "\"$INSTDIR\server\flectra-bin\""'
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" set ${SERVICENAME} AppDirectory "$\"$INSTDIR\server$\""'
|
||||
${Else}
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win32\nssm.exe" install ${SERVICENAME} "$INSTDIR\python\python.exe" "\"$INSTDIR\server\flectra-bin\""'
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win32\nssm.exe" set ${SERVICENAME} AppDirectory "$\"$INSTDIR\server$\""'
|
||||
${EndIf}
|
||||
|
||||
nsExec::Exec "net stop ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
nsExec::Exec "net start ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section $(TITLE_PostgreSQL) SectionPostgreSQL
|
||||
SectionIn 1 2
|
||||
SetOutPath '$TEMP'
|
||||
nsExec::Exec 'net user openpgsvc /delete'
|
||||
|
||||
File ${POSTGRESQL_EXE}
|
||||
|
||||
ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ActiveComputerName" "ComputerName"
|
||||
StrCmp $0 "" win9x
|
||||
Goto done
|
||||
win9x:
|
||||
ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ComputerName" "ComputerName"
|
||||
done:
|
||||
Rmdir /r "$INSTDIR\PostgreSQL"
|
||||
ExecWait '"$TEMP\${POSTGRESQL_EXE_FILENAME}" \
|
||||
--mode unattended \
|
||||
--prefix "$INSTDIR\PostgreSQL" \
|
||||
--datadir "$INSTDIR\PostgreSQL\data" \
|
||||
--servicename "PostgreSQL_For_Flectra" \
|
||||
--serviceaccount "openpgsvc" --servicepassword "0p3npgsvcPWD" \
|
||||
--superaccount "$TextPostgreSQLUsername" --superpassword "$TextPostgreSQLPassword" \
|
||||
--serverport $TextPostgreSQLPort'
|
||||
SectionEnd
|
||||
|
||||
Section -Post
|
||||
WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"
|
||||
WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "InstallLocation" "$INSTDIR"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "DisplayName" "${DISPLAY_NAME}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "DisplayVersion" "${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "Publisher" "${PUBLISHER}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "Version" "${VERSION}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "VersionMajor" "${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "VersionMinor" "${REVISION_VERSION}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpLink" "support@flectrahq.com"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpTelephone" "+65.00.00.00.00"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "URLInfoAbout" "https://flectrahq.com"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "Contact" "sales@flectrahq.com"
|
||||
WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "NoModify" "1"
|
||||
WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "NoRepair" "1"
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
SectionEnd
|
||||
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SectionFLECTRA_Server} $(DESC_FLECTRA_Server)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SectionPostgreSQL} $(DESC_PostgreSQL)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
Section "Uninstall"
|
||||
# Check if the server is installed
|
||||
!insertmacro IfKeyExists "HKLM" "${UNINSTALL_REGISTRY_KEY_SERVER}" "UninstallString"
|
||||
Pop $R0
|
||||
ReadRegStr $0 HKLM "${UNINSTALL_REGISTRY_KEY_SERVER}" "UninstallString"
|
||||
ExecWait '"$0" /S'
|
||||
|
||||
nsExec::Exec "net stop ${SERVICENAME}"
|
||||
nsExec::Exec "sc delete ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
Rmdir /r "$INSTDIR\server"
|
||||
Rmdir /r "$INSTDIR\thirdparty"
|
||||
Rmdir /r "$INSTDIR\python"
|
||||
Rmdir /r "$INSTDIR\nssm"
|
||||
DeleteRegKey HKLM "${UNINSTALL_REGISTRY_KEY}"
|
||||
SectionEnd
|
||||
|
||||
Function .onInit
|
||||
Push $R0
|
||||
|
||||
${GetParameters} $cmdLineParams
|
||||
ClearErrors
|
||||
|
||||
Pop $R0
|
||||
|
||||
StrCpy $Option_AllInOne 0
|
||||
StrCpy $HasPostgreSQL 0
|
||||
|
||||
StrCpy $TextPostgreSQLHostname ${DEFAULT_POSTGRESQL_HOSTNAME}
|
||||
StrCpy $TextPostgreSQLPort ${DEFAULT_POSTGRESQL_PORT}
|
||||
StrCpy $TextPostgreSQLUsername ${DEFAULT_POSTGRESQL_USERNAME}
|
||||
StrCpy $TextPostgreSQLPassword ${DEFAULT_POSTGRESQL_PASSWORD}
|
||||
|
||||
Push $R0
|
||||
${GetOptions} $cmdLineParams '/allinone' $R0
|
||||
IfErrors +2 0
|
||||
StrCpy $Option_AllInOne 1
|
||||
Pop $R0
|
||||
|
||||
StrCmp $Option_AllInOne 1 AllInOneMode
|
||||
StrCmp $Option_AllInOne 0 NoAllInOneMode
|
||||
|
||||
AllInOneMode:
|
||||
MessageBox MB_OK|MB_ICONINFORMATION "All In One"
|
||||
|
||||
NoAllInOneMode:
|
||||
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
ClearErrors
|
||||
EnumRegKey $0 HKLM "SOFTWARE\PostgreSQL\Installations" 0
|
||||
IfErrors DoInstallPostgreSQL 0
|
||||
StrCmp $0 "" DoInstallPostgreSQL
|
||||
StrCpy $HasPostgreSQL 1
|
||||
#SectionSetText ${SectionPostgreSQL} ""
|
||||
!insertmacro UnselectSection ${SectionPostgreSQL}
|
||||
SectionSetFlags ${SectionPostgreSQL} ${SF_RO}
|
||||
|
||||
DoInstallPostgreSQL:
|
||||
FunctionEnd
|
||||
|
||||
Function .onSelChange
|
||||
${If} $HasPostgreSQL == 1
|
||||
!insertmacro UnselectSection ${SectionPostgreSQL}
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function PostgreSQLOnBack
|
||||
FunctionEnd
|
||||
|
||||
Function ShowPostgreSQL
|
||||
SectionGetFlags ${SectionFLECTRA_Server} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} LaunchPostgreSQLConfiguration
|
||||
Abort
|
||||
LaunchPostgreSQLConfiguration:
|
||||
|
||||
nsDialogs::Create /NOUNLOAD 1018
|
||||
Pop $0
|
||||
|
||||
${If} $0 == error
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
GetFunctionAddress $0 PostgreSQLOnBack
|
||||
nsDialogs::OnBack $0
|
||||
|
||||
${NSD_CreateLabel} 0 0 100% 10u $(DESC_PostgreSQLPage)
|
||||
Pop $0
|
||||
|
||||
${NSD_CreateLabel} 0 45 60u 12u $(DESC_PostgreSQL_Hostname)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 45 150u 12u $TextPostgreSQLHostname
|
||||
Pop $HWNDPostgreSQLHostname
|
||||
|
||||
${NSD_CreateLabel} 0 75 60u 12u $(DESC_PostgreSQL_Port)
|
||||
Pop $0
|
||||
${NSD_CreateNumber} 100 75 150u 12u $TextPostgreSQLPort
|
||||
Pop $HWNDPostgreSQLPort
|
||||
${NSD_CreateLabel} 0 105 60u 12u $(DESC_PostgreSQL_Username)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 105 150u 12u $TextPostgreSQLUsername
|
||||
Pop $HWNDPostgreSQLUsername
|
||||
${NSD_CreateLabel} 0 135 60u 12u $(DESC_PostgreSQL_Password)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 135 150u 12u $TextPostgreSQLPassword
|
||||
Pop $HWNDPostgreSQLPassword
|
||||
|
||||
nsDialogs::Show
|
||||
FunctionEnd
|
||||
|
||||
Function LeavePostgreSQL
|
||||
${NSD_GetText} $HWNDPostgreSQLHostname $TextPostgreSQLHostname
|
||||
${NSD_GetText} $HWNDPostgreSQLPort $TextPostgreSQLPort
|
||||
${NSD_GetText} $HWNDPostgreSQLUsername $TextPostgreSQLUsername
|
||||
${NSD_GetText} $HWNDPostgreSQLPassword $TextPostgreSQLPassword
|
||||
StrLen $1 $TextPostgreSQLHostname
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_HostNameIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
${If} $TextPostgreSQLPort <= 0
|
||||
${OrIf} $TextPostgreSQLPort > 65535
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PortIsWrong)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
StrLen $1 $TextPostgreSQLUsername
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_UserNameIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
StrLen $1 $TextPostgreSQLPassword
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PasswordIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function ComponentLeave
|
||||
SectionGetFlags ${SectionFLECTRA_Server} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} Done
|
||||
|
||||
SectionGetFlags ${SectionPostgreSQL} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} DontInstallPostgreSQL
|
||||
|
||||
ChooseAtLeastOneComponent:
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(DESC_AtLeastOneComponent)
|
||||
Abort
|
||||
|
||||
DontInstallPostgreSQL:
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(DESC_CanNotInstallPostgreSQL)
|
||||
Abort
|
||||
Done:
|
||||
FunctionEnd
|
||||
|
||||
Function LaunchLink
|
||||
ExecShell "open" "http://localhost:7073/"
|
||||
FunctionEnd
|
||||
# Part of Odoo,Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
# TODO: Avoid to uninstall the database
|
||||
# TODO: We can update the server or the clients without to uninstall the all-in-one
|
||||
# TODO: Add startmenu handling (link to localhost + uninstall)
|
||||
|
||||
!include 'MUI2.nsh'
|
||||
!include 'FileFunc.nsh'
|
||||
!include 'LogicLib.nsh'
|
||||
!include 'Sections.nsh'
|
||||
!include 'x64.nsh'
|
||||
|
||||
!macro IfKeyExists ROOT MAIN_KEY KEY
|
||||
# This macro comes from http://nsis.sourceforge.net/Check_for_a_Registry_Key
|
||||
Push $R0
|
||||
Push $R1
|
||||
Push $R2
|
||||
|
||||
# XXX bug if ${ROOT}, ${MAIN_KEY} or ${KEY} use $R0 or $R1
|
||||
|
||||
StrCpy $R1 "0" # loop index
|
||||
StrCpy $R2 "0" # not found
|
||||
|
||||
${Do}
|
||||
EnumRegKey $R0 ${ROOT} "${MAIN_KEY}" "$R1"
|
||||
${If} $R0 == "${KEY}"
|
||||
StrCpy $R2 "1" # found
|
||||
${Break}
|
||||
${EndIf}
|
||||
IntOp $R1 $R1 + 1
|
||||
${LoopWhile} $R0 != ""
|
||||
|
||||
ClearErrors
|
||||
|
||||
Exch 2
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
Exch $R2
|
||||
!macroend
|
||||
|
||||
!define PUBLISHER 'FlectraHQ'
|
||||
|
||||
!ifndef MAJOR_VERSION
|
||||
!define MAJOR_VERSION '1'
|
||||
!endif
|
||||
|
||||
!ifndef MINOR_VERSION
|
||||
!define MINOR_VERSION '0'
|
||||
!endif
|
||||
|
||||
!ifndef REVISION_VERSION
|
||||
!define REVISION_VERSION 'alpha1'
|
||||
!endif
|
||||
|
||||
!ifndef VERSION
|
||||
!define VERSION "0"
|
||||
#!define VERSION "${MAJOR_VERSION}.${MINOR_VERSION}-r${REVISION_VERSION}"
|
||||
!endif
|
||||
|
||||
!define PRODUCT_NAME "Flectra"
|
||||
!define DISPLAY_NAME "${PRODUCT_NAME} ${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
|
||||
!define REGISTRY_ROOT HKLM
|
||||
!define UNINSTALL_BASE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
!define UNINSTALL_REGISTRY_KEY "${UNINSTALL_BASE_REGISTRY_KEY}\${DISPLAY_NAME}"
|
||||
|
||||
!define UNINSTALL_REGISTRY_KEY_SERVER "${UNINSTALL_BASE_REGISTRY_KEY}\Flectra Server ${VERSION}"
|
||||
|
||||
!define REGISTRY_KEY "Software\${DISPLAY_NAME}"
|
||||
|
||||
!define DEFAULT_POSTGRESQL_HOSTNAME 'localhost'
|
||||
!define DEFAULT_POSTGRESQL_PORT 5432
|
||||
!define DEFAULT_POSTGRESQL_USERNAME 'openpg'
|
||||
!define DEFAULT_POSTGRESQL_PASSWORD 'openpgpwd'
|
||||
|
||||
Name '${DISPLAY_NAME}'
|
||||
Caption "${PRODUCT_NAME} ${VERSION} Setup"
|
||||
OutFile "flectra-allinone-setup-${VERSION}.exe"
|
||||
SetCompressor /FINAL lzma
|
||||
#SetCompress auto
|
||||
ShowInstDetails show
|
||||
|
||||
#XPStyle on
|
||||
|
||||
InstallDir "$PROGRAMFILES\Flectra ${VERSION}"
|
||||
InstallDirRegKey HKCU "${REGISTRY_KEY}" ""
|
||||
|
||||
BrandingText '${PRODUCT_NAME} ${VERSION}'
|
||||
|
||||
RequestExecutionLevel admin
|
||||
|
||||
#VIAddVersionKey "ProductName" "${PRODUCT_NAME}"
|
||||
#VIAddVersionKey "CompanyName" "${PUBLISHER}"
|
||||
#VIAddVersionKey "FileDescription" "Installer of ${DISPLAY_NAME}"
|
||||
#VIAddVersionKey "LegalCopyright" "${PUBLISHER}"
|
||||
#VIAddVersionKey "LegalTrademark" "FLECTRA is a trademark of ${PUBLISHER}"
|
||||
#VIAddVersionKey "FileVersion" "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"
|
||||
#VIProductVersion "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"
|
||||
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
|
||||
Var Option_AllInOne
|
||||
Var HasPostgreSQL
|
||||
Var cmdLineParams
|
||||
|
||||
Var TextPostgreSQLHostname
|
||||
Var TextPostgreSQLPort
|
||||
Var TextPostgreSQLUsername
|
||||
Var TextPostgreSQLPassword
|
||||
|
||||
Var HWNDPostgreSQLHostname
|
||||
Var HWNDPostgreSQLPort
|
||||
Var HWNDPostgreSQLUsername
|
||||
Var HWNDPostgreSQLPassword
|
||||
|
||||
!define STATIC_PATH "static"
|
||||
!define PIXMAPS_PATH "${STATIC_PATH}\pixmaps"
|
||||
!define POSTGRESQL_EXE_FILENAME "postgresql-9.5.4-2-windows.exe"
|
||||
!define POSTGRESQL_EXE "${STATIC_PATH}\${POSTGRESQL_EXE_FILENAME}"
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ICON "${PIXMAPS_PATH}\flectra-icon.ico"
|
||||
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\flectra-intro.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\flectra-intro.bmp"
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP "${PIXMAPS_PATH}\flectra-slogan.bmp"
|
||||
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
|
||||
!define MUI_HEADER_TRANSPARENT_TEXT ""
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "${STATIC_PATH}\doc\LICENSE"
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ComponentLeave
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
Page Custom ShowPostgreSQL LeavePostgreSQL
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_RUN_CHECKED
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "$(DESC_FinishPageText)"
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
|
||||
!define MUI_FINISHPAGE_LINK $(DESC_FinishPage_Link)
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://flectrahq.com/page/contactus"
|
||||
!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 "French"
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
|
||||
; English
|
||||
LangString DESC_FLECTRA_Server ${LANG_ENGLISH} "Install the Flectra Server with all the Flectra standard modules."
|
||||
LangString DESC_PostgreSQL ${LANG_ENGLISH} "Install the PostgreSQL RDBMS used by Flectra."
|
||||
LangString DESC_FinishPage_Link ${LANG_ENGLISH} "Contact Flectra for Partnership and/or Support"
|
||||
LangString DESC_AtLeastOneComponent ${LANG_ENGLISH} "You have to choose at least one component"
|
||||
LangString DESC_CanNotInstallPostgreSQL ${LANG_ENGLISH} "You can not install the PostgreSQL database without the Flectra Server"
|
||||
LangString WARNING_HostNameIsEmpty ${LANG_ENGLISH} "The hostname for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_UserNameIsEmpty ${LANG_ENGLISH} "The username for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_PasswordIsEmpty ${LANG_ENGLISH} "The password for the connection to the PostgreSQL Server is empty"
|
||||
LangString WARNING_PortIsWrong ${LANG_ENGLISH} "The port for the connexion to the PostgreSQL Server is wrong (default: 5432)"
|
||||
LangString DESC_PostgreSQLPage ${LANG_ENGLISH} "Configure the information for the PostgreSQL connection"
|
||||
LangString DESC_PostgreSQL_Hostname ${LANG_ENGLISH} "Hostname"
|
||||
LangString DESC_PostgreSQL_Port ${LANG_ENGLISH} "Port"
|
||||
LangString DESC_PostgreSQL_Username ${LANG_ENGLISH} "Username"
|
||||
LangString DESC_PostgreSQL_Password ${LANG_ENGLISH} "Password"
|
||||
LangString Profile_AllInOne ${LANG_ENGLISH} "All In One"
|
||||
LangString Profile_Server ${LANG_ENGLISH} "Server only"
|
||||
LangString TITLE_FLECTRA_Server ${LANG_ENGLISH} "Flectra Server"
|
||||
LangString TITLE_PostgreSQL ${LANG_ENGLISH} "PostgreSQL Database"
|
||||
LangString DESC_FinishPageText ${LANG_ENGLISH} "Start Flectra"
|
||||
|
||||
; French
|
||||
LangString DESC_FLECTRA_Server ${LANG_FRENCH} "Installation du Serveur Flectra avec tous les modules Flectra standards."
|
||||
LangString DESC_PostgreSQL ${LANG_FRENCH} "Installation de la base de données PostgreSQL utilisée par Flectra."
|
||||
LangString DESC_FinishPage_Link ${LANG_FRENCH} "Contactez Flectra pour un Partenariat et/ou du Support"
|
||||
LangString DESC_AtLeastOneComponent ${LANG_FRENCH} "Vous devez choisir au moins un composant"
|
||||
LangString DESC_CanNotInstallPostgreSQL ${LANG_FRENCH} "Vous ne pouvez pas installer la base de données PostgreSQL sans le serveur Flectra"
|
||||
LangString WARNING_HostNameIsEmpty ${LANG_FRENCH} "L'adresse pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_UserNameIsEmpty ${LANG_FRENCH} "Le nom d'utilisateur pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_PasswordIsEmpty ${LANG_FRENCH} "Le mot de passe pour la connection au serveur PostgreSQL est vide"
|
||||
LangString WARNING_PortIsWrong ${LANG_FRENCH} "Le port pour la connection au serveur PostgreSQL est erroné (défaut: 5432)"
|
||||
LangString DESC_PostgreSQLPage ${LANG_FRENCH} "Configurez les informations de connection pour le serveur PostgreSQL"
|
||||
LangString DESC_PostgreSQL_Hostname ${LANG_FRENCH} "Hôte"
|
||||
LangString DESC_PostgreSQL_Port ${LANG_FRENCH} "Port"
|
||||
LangString DESC_PostgreSQL_Username ${LANG_FRENCH} "Utilisateur"
|
||||
LangString DESC_PostgreSQL_Password ${LANG_FRENCH} "Mot de passe"
|
||||
LangString Profile_AllInOne ${LANG_FRENCH} "All In One"
|
||||
LangString Profile_Server ${LANG_FRENCH} "Seulement le serveur"
|
||||
LangString TITLE_FLECTRA_Server ${LANG_FRENCH} "Serveur Flectra"
|
||||
LangString TITLE_PostgreSQL ${LANG_FRENCH} "Installation du serveur de base de données PostgreSQL"
|
||||
LangString DESC_FinishPageText ${LANG_FRENCH} "Démarrer Flectra"
|
||||
|
||||
InstType $(Profile_AllInOne)
|
||||
InstType $(Profile_Server)
|
||||
|
||||
Section $(TITLE_FLECTRA_Server) SectionFLECTRA_Server
|
||||
SectionIn 1 2
|
||||
|
||||
# TODO: install in a temp dir before
|
||||
|
||||
# Installing winpython
|
||||
SetOutPath "$INSTDIR\python"
|
||||
File /r /x "__pycache__" "..\..\..\WinPython\python-3.6.2\*"
|
||||
|
||||
SetOutPath "$INSTDIR\nssm"
|
||||
File /r /x "src" "..\..\..\nssm-2.24\*"
|
||||
|
||||
SetOutPath "$INSTDIR\server"
|
||||
File /r /x "${POSTGRESQL_EXE_FILENAME}" /x "wkhtmltopdf" "..\..\*"
|
||||
|
||||
SetOutPath "$INSTDIR\vcredist"
|
||||
File /r "..\..\..\vcredist\*.exe"
|
||||
|
||||
# Install Visual C redistribuable files
|
||||
DetailPrint "Installing Visual C++ redistributable files"
|
||||
${If} ${RunningX64}
|
||||
nsExec::Exec '"$INSTDIR\vcredist\vc_redist.x64.exe" /q'
|
||||
${Else}
|
||||
nsExec::Exec '"$INSTDIR\vcredist\vc_redist.x86.exe" /q'
|
||||
${EndIf}
|
||||
|
||||
SetOutPath "$INSTDIR\thirdparty"
|
||||
File /r "${STATIC_PATH}\wkhtmltopdf\*"
|
||||
File /r "${STATIC_PATH}\less\*"
|
||||
|
||||
# If there is a previous install of the FLECTRA Server, keep the login/password from the config file
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_host" $TextPostgreSQLHostname
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_user" $TextPostgreSQLUsername
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_password" $TextPostgreSQLPassword
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "db_port" $TextPostgreSQLPort
|
||||
# Fix the addons path
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "addons_path" "$INSTDIR\server\flectra\addons,$INSTDIR\server\addons"
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "bin_path" "$INSTDIR\thirdparty"
|
||||
|
||||
# if we're going to install postgresql force it's path,
|
||||
# otherwise we consider it's always done and/or correctly tune by users
|
||||
${If} $HasPostgreSQL == 0
|
||||
WriteIniStr "$INSTDIR\server\flectra.conf" "options" "pg_path" "$INSTDIR\PostgreSQL\bin"
|
||||
${EndIf}
|
||||
|
||||
DetailPrint "Installing Windows service"
|
||||
nsExec::ExecTOLog '"$INSTDIR\python\python.exe" "$INSTDIR\server\flectra-bin" --stop-after-init --logfile "$INSTDIR\server\flectra.log" -s'
|
||||
${If} ${RunningX64}
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" install ${SERVICENAME} "$INSTDIR\python\python.exe" "\"$INSTDIR\server\flectra-bin\""'
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" set ${SERVICENAME} AppDirectory "$\"$INSTDIR\server$\""'
|
||||
${Else}
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win32\nssm.exe" install ${SERVICENAME} "$INSTDIR\python\python.exe" "\"$INSTDIR\server\flectra-bin\""'
|
||||
nsExec::ExecToLog '"$INSTDIR\nssm\win32\nssm.exe" set ${SERVICENAME} AppDirectory "$\"$INSTDIR\server$\""'
|
||||
${EndIf}
|
||||
|
||||
nsExec::Exec "net stop ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
nsExec::Exec "net start ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section $(TITLE_PostgreSQL) SectionPostgreSQL
|
||||
SectionIn 1 2
|
||||
SetOutPath '$TEMP'
|
||||
nsExec::Exec 'net user openpgsvc /delete'
|
||||
|
||||
File ${POSTGRESQL_EXE}
|
||||
|
||||
ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ActiveComputerName" "ComputerName"
|
||||
StrCmp $0 "" win9x
|
||||
Goto done
|
||||
win9x:
|
||||
ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ComputerName" "ComputerName"
|
||||
done:
|
||||
Rmdir /r "$INSTDIR\PostgreSQL"
|
||||
ExecWait '"$TEMP\${POSTGRESQL_EXE_FILENAME}" \
|
||||
--mode unattended \
|
||||
--prefix "$INSTDIR\PostgreSQL" \
|
||||
--datadir "$INSTDIR\PostgreSQL\data" \
|
||||
--servicename "PostgreSQL_For_Flectra" \
|
||||
--serviceaccount "openpgsvc" --servicepassword "0p3npgsvcPWD" \
|
||||
--superaccount "$TextPostgreSQLUsername" --superpassword "$TextPostgreSQLPassword" \
|
||||
--serverport $TextPostgreSQLPort'
|
||||
SectionEnd
|
||||
|
||||
Section -Post
|
||||
WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"
|
||||
WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "InstallLocation" "$INSTDIR"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "DisplayName" "${DISPLAY_NAME}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "DisplayVersion" "${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "Publisher" "${PUBLISHER}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "Version" "${VERSION}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "VersionMajor" "${MAJOR_VERSION}.${MINOR_VERSION}"
|
||||
; WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "VersionMinor" "${REVISION_VERSION}"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpLink" "support@flectrahq.com"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpTelephone" "+65.00.00.00.00"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "URLInfoAbout" "https://flectrahq.com"
|
||||
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "Contact" "sales@flectrahq.com"
|
||||
WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "NoModify" "1"
|
||||
WriteRegDWORD HKLM "${UNINSTALL_REGISTRY_KEY}" "NoRepair" "1"
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
SectionEnd
|
||||
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SectionFLECTRA_Server} $(DESC_FLECTRA_Server)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SectionPostgreSQL} $(DESC_PostgreSQL)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
Section "Uninstall"
|
||||
# Check if the server is installed
|
||||
!insertmacro IfKeyExists "HKLM" "${UNINSTALL_REGISTRY_KEY_SERVER}" "UninstallString"
|
||||
Pop $R0
|
||||
ReadRegStr $0 HKLM "${UNINSTALL_REGISTRY_KEY_SERVER}" "UninstallString"
|
||||
ExecWait '"$0" /S'
|
||||
|
||||
nsExec::Exec "net stop ${SERVICENAME}"
|
||||
nsExec::Exec "sc delete ${SERVICENAME}"
|
||||
sleep 2
|
||||
|
||||
Rmdir /r "$INSTDIR\server"
|
||||
Rmdir /r "$INSTDIR\thirdparty"
|
||||
Rmdir /r "$INSTDIR\python"
|
||||
Rmdir /r "$INSTDIR\nssm"
|
||||
DeleteRegKey HKLM "${UNINSTALL_REGISTRY_KEY}"
|
||||
SectionEnd
|
||||
|
||||
Function .onInit
|
||||
Push $R0
|
||||
|
||||
${GetParameters} $cmdLineParams
|
||||
ClearErrors
|
||||
|
||||
Pop $R0
|
||||
|
||||
StrCpy $Option_AllInOne 0
|
||||
StrCpy $HasPostgreSQL 0
|
||||
|
||||
StrCpy $TextPostgreSQLHostname ${DEFAULT_POSTGRESQL_HOSTNAME}
|
||||
StrCpy $TextPostgreSQLPort ${DEFAULT_POSTGRESQL_PORT}
|
||||
StrCpy $TextPostgreSQLUsername ${DEFAULT_POSTGRESQL_USERNAME}
|
||||
StrCpy $TextPostgreSQLPassword ${DEFAULT_POSTGRESQL_PASSWORD}
|
||||
|
||||
Push $R0
|
||||
${GetOptions} $cmdLineParams '/allinone' $R0
|
||||
IfErrors +2 0
|
||||
StrCpy $Option_AllInOne 1
|
||||
Pop $R0
|
||||
|
||||
StrCmp $Option_AllInOne 1 AllInOneMode
|
||||
StrCmp $Option_AllInOne 0 NoAllInOneMode
|
||||
|
||||
AllInOneMode:
|
||||
MessageBox MB_OK|MB_ICONINFORMATION "All In One"
|
||||
|
||||
NoAllInOneMode:
|
||||
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
ClearErrors
|
||||
EnumRegKey $0 HKLM "SOFTWARE\PostgreSQL\Installations" 0
|
||||
IfErrors DoInstallPostgreSQL 0
|
||||
StrCmp $0 "" DoInstallPostgreSQL
|
||||
StrCpy $HasPostgreSQL 1
|
||||
#SectionSetText ${SectionPostgreSQL} ""
|
||||
!insertmacro UnselectSection ${SectionPostgreSQL}
|
||||
SectionSetFlags ${SectionPostgreSQL} ${SF_RO}
|
||||
|
||||
DoInstallPostgreSQL:
|
||||
FunctionEnd
|
||||
|
||||
Function .onSelChange
|
||||
${If} $HasPostgreSQL == 1
|
||||
!insertmacro UnselectSection ${SectionPostgreSQL}
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function PostgreSQLOnBack
|
||||
FunctionEnd
|
||||
|
||||
Function ShowPostgreSQL
|
||||
SectionGetFlags ${SectionFLECTRA_Server} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} LaunchPostgreSQLConfiguration
|
||||
Abort
|
||||
LaunchPostgreSQLConfiguration:
|
||||
|
||||
nsDialogs::Create /NOUNLOAD 1018
|
||||
Pop $0
|
||||
|
||||
${If} $0 == error
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
GetFunctionAddress $0 PostgreSQLOnBack
|
||||
nsDialogs::OnBack $0
|
||||
|
||||
${NSD_CreateLabel} 0 0 100% 10u $(DESC_PostgreSQLPage)
|
||||
Pop $0
|
||||
|
||||
${NSD_CreateLabel} 0 45 60u 12u $(DESC_PostgreSQL_Hostname)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 45 150u 12u $TextPostgreSQLHostname
|
||||
Pop $HWNDPostgreSQLHostname
|
||||
|
||||
${NSD_CreateLabel} 0 75 60u 12u $(DESC_PostgreSQL_Port)
|
||||
Pop $0
|
||||
${NSD_CreateNumber} 100 75 150u 12u $TextPostgreSQLPort
|
||||
Pop $HWNDPostgreSQLPort
|
||||
${NSD_CreateLabel} 0 105 60u 12u $(DESC_PostgreSQL_Username)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 105 150u 12u $TextPostgreSQLUsername
|
||||
Pop $HWNDPostgreSQLUsername
|
||||
${NSD_CreateLabel} 0 135 60u 12u $(DESC_PostgreSQL_Password)
|
||||
Pop $0
|
||||
${NSD_CreateText} 100 135 150u 12u $TextPostgreSQLPassword
|
||||
Pop $HWNDPostgreSQLPassword
|
||||
|
||||
nsDialogs::Show
|
||||
FunctionEnd
|
||||
|
||||
Function LeavePostgreSQL
|
||||
${NSD_GetText} $HWNDPostgreSQLHostname $TextPostgreSQLHostname
|
||||
${NSD_GetText} $HWNDPostgreSQLPort $TextPostgreSQLPort
|
||||
${NSD_GetText} $HWNDPostgreSQLUsername $TextPostgreSQLUsername
|
||||
${NSD_GetText} $HWNDPostgreSQLPassword $TextPostgreSQLPassword
|
||||
StrLen $1 $TextPostgreSQLHostname
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_HostNameIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
${If} $TextPostgreSQLPort <= 0
|
||||
${OrIf} $TextPostgreSQLPort > 65535
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PortIsWrong)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
StrLen $1 $TextPostgreSQLUsername
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_UserNameIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
StrLen $1 $TextPostgreSQLPassword
|
||||
${If} $1 == 0
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PasswordIsEmpty)
|
||||
Abort
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
Function ComponentLeave
|
||||
SectionGetFlags ${SectionFLECTRA_Server} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} Done
|
||||
|
||||
SectionGetFlags ${SectionPostgreSQL} $0
|
||||
IntOp $0 $0 & ${SF_SELECTED}
|
||||
IntCmp $0 ${SF_SELECTED} DontInstallPostgreSQL
|
||||
|
||||
ChooseAtLeastOneComponent:
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(DESC_AtLeastOneComponent)
|
||||
Abort
|
||||
|
||||
DontInstallPostgreSQL:
|
||||
MessageBox MB_ICONEXCLAMATION|MB_OK $(DESC_CanNotInstallPostgreSQL)
|
||||
Abort
|
||||
Done:
|
||||
FunctionEnd
|
||||
|
||||
Function LaunchLink
|
||||
ExecShell "open" "http://localhost:7073/"
|
||||
FunctionEnd
|
||||
|
|
Loading…
Reference in New Issue
Block a user