Sistema NEXUS v3.4 migrado con: Estructura principal: - core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles) - core/catalog: Catalogo de funcionalidades reutilizables - shared/knowledge-base: Base de conocimiento compartida - devtools/scripts: Herramientas de desarrollo - control-plane/registries: Control de servicios y CI/CD - orchestration/: Configuracion de orquestacion de agentes Proyectos incluidos (11): - gamilit (submodule -> GitHub) - trading-platform (OrbiquanTIA) - erp-suite con 5 verticales: - erp-core, construccion, vidrio-templado - mecanicas-diesel, retail, clinicas - betting-analytics - inmobiliaria-analytics - platform_marketing_content - pos-micro, erp-basico Configuracion: - .gitignore completo para Node.js/Python/Docker - gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git) - Sistema de puertos estandarizado (3005-3199) Generated with NEXUS v3.4 Migration System EPIC-010: Configuracion Git y Repositorios
349 lines
12 KiB
Plaintext
349 lines
12 KiB
Plaintext
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
Unicode True
|
|
|
|
!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 'Odoo S.A.'
|
|
|
|
!ifndef MAJOR_VERSION
|
|
!define MAJOR_VERSION '16'
|
|
!endif
|
|
|
|
!ifndef MINOR_VERSION
|
|
!define MINOR_VERSION '0'
|
|
!endif
|
|
|
|
!ifndef REVISION_VERSION
|
|
!define REVISION_VERSION 'alpha1'
|
|
!endif
|
|
|
|
!ifndef VERSION
|
|
!define VERSION "${MAJOR_VERSION}.${MINOR_VERSION}"
|
|
!endif
|
|
|
|
!ifndef PYTHONVERSION
|
|
!define PYTHONVERSION '3.10.11'
|
|
!endif
|
|
|
|
!ifndef SERVICENAME
|
|
!define SERVICENAME 'odoo-server-${VERSION}'
|
|
!endif
|
|
|
|
!ifndef TOOLSDIR
|
|
!define TOOLSDIR 'c:\odoobuild'
|
|
!endif
|
|
|
|
!define PRODUCT_NAME "Odoo IoT"
|
|
!define DISPLAY_NAME "${PRODUCT_NAME} ${MAJOR_VERSION}.${MINOR_VERSION}"
|
|
|
|
!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}\Odoo Server ${VERSION}"
|
|
|
|
!define REGISTRY_KEY "SOFTWARE\${DISPLAY_NAME}"
|
|
|
|
Name '${DISPLAY_NAME}'
|
|
Caption "${PRODUCT_NAME} ${VERSION} Setup"
|
|
OutFile "${TOOLSDIR}\server\odoo_iot_setup_${VERSION}.exe"
|
|
SetCompressor /SOLID /FINAL lzma
|
|
ShowInstDetails hide
|
|
|
|
BrandingText '${PRODUCT_NAME} ${VERSION}'
|
|
|
|
RequestExecutionLevel admin
|
|
|
|
!insertmacro GetParameters
|
|
!insertmacro GetOptions
|
|
|
|
Var /GLOBAL cmdLineParams
|
|
|
|
!define STATIC_PATH "static"
|
|
!define PIXMAPS_PATH "${STATIC_PATH}\pixmaps"
|
|
|
|
!define MUI_ABORTWARNING
|
|
!define MUI_ICON "${PIXMAPS_PATH}\odoo-icon.ico"
|
|
|
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\odoo-intro.bmp"
|
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${PIXMAPS_PATH}\odoo-intro.bmp"
|
|
!define MUI_HEADERIMAGE
|
|
!define MUI_HEADERIMAGE_BITMAP "${PIXMAPS_PATH}\iot-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
|
|
!insertmacro MUI_PAGE_COMPONENTS
|
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE dir_leave
|
|
!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://www.odoo.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_Odoo_IoT ${LANG_ENGLISH} "Install the Odoo Server with IoT modules."
|
|
LangString DESC_FinishPage_Link ${LANG_ENGLISH} "Contact Odoo for Partnership and/or Support"
|
|
LangString TITLE_Odoo_IoT ${LANG_ENGLISH} "Odoo IoT"
|
|
LangString TITLE_Nginx ${LANG_ENGLISH} "Nginx WebServer"
|
|
LangString TITLE_Ghostscript ${LANG_ENGLISH} "Ghostscript interpreter"
|
|
LangString DESC_FinishPageText ${LANG_ENGLISH} "Start Odoo"
|
|
LangString UnsafeDirText ${LANG_ENGLISH} "Installing outside of $PROGRAMFILES64 is not recommended.$\nDo you want to continue ?"
|
|
|
|
; French
|
|
LangString DESC_Odoo_IoT ${LANG_FRENCH} "Installation du Serveur Odoo avec les modules IoT."
|
|
LangString DESC_FinishPage_Link ${LANG_FRENCH} "Contactez Odoo pour un Partenariat et/ou du Support"
|
|
LangString TITLE_Odoo_IoT ${LANG_FRENCH} "Odoo IoT"
|
|
LangString TITLE_Nginx ${LANG_FRENCH} "Installation du serveur web Nginx"
|
|
LangString TITLE_Ghostscript ${LANG_FRENCH} "Installation de l'interpréteur Ghostscript"
|
|
LangString DESC_FinishPageText ${LANG_FRENCH} "Démarrer Odoo"
|
|
LangString UnsafeDirText ${LANG_FRENCH} "Installer en dehors de $PROGRAMFILES64 n'est pas recommandé.$\nVoulez-vous continuer ?"
|
|
|
|
InstType /NOCUSTOM
|
|
|
|
Section $(TITLE_Odoo_IoT) SectionOdoo_IoT
|
|
|
|
# Installing winpython
|
|
SetOutPath "$INSTDIR\python"
|
|
File /r /x "__pycache__" "${TOOLSDIR}\WinPy64\python-${PYTHONVERSION}.amd64\*"
|
|
|
|
SetOutPath "$INSTDIR\nssm"
|
|
File /r /x "src" "${TOOLSDIR}\nssm-2.24\*"
|
|
|
|
# installing git
|
|
VAR /GLOBAL git_zip_filename
|
|
VAR /GLOBAL git_zip_url
|
|
StrCpy $git_zip_filename "MinGit-2.47.1-64-bit.zip"
|
|
StrCpy $git_zip_url "https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/$git_zip_filename"
|
|
|
|
DetailPrint "Downloading git"
|
|
NScurl::http get "$git_zip_url" "$TEMP\$git_zip_filename" /PAGE /END
|
|
DetailPrint "Unzipping git"
|
|
nsisunz::UnzipToLog "$TEMP\$git_zip_filename" "$INSTDIR\git"
|
|
|
|
# Cloning odoo
|
|
DetailPrint "Cloning Odoo"
|
|
nsExec::Exec '"$INSTDIR\git\cmd\git.exe" clone --filter=tree:0 -b 19.0 --single-branch --no-checkout https://github.com/odoo/odoo.git "$INSTDIR\odoo"'
|
|
|
|
DetailPrint "Configuring Sparse Checkout for IoT modules"
|
|
nsExec::Exec '"$INSTDIR\git\cmd\git.exe" -C "$INSTDIR\odoo" sparse-checkout init --no-cone'
|
|
nsExec::Exec '"$INSTDIR\git\cmd\git.exe" -C "$INSTDIR\odoo" sparse-checkout set addons/web addons/hw_* addons/iot_drivers addons/iot_base addons/iot_box_image/configuration addons/point_of_sale/tools/posbox/configuration/requirements.txt odoo odoo-bin'
|
|
|
|
DetailPrint "Checking out the repository"
|
|
nsExec::Exec '"$INSTDIR\git\cmd\git.exe" -C "$INSTDIR\odoo" checkout'
|
|
|
|
DetailPrint "Installing vcredist"
|
|
SetOutPath "$INSTDIR\vcredist"
|
|
File /r "${TOOLSDIR}\vcredist\*.exe"
|
|
|
|
# Install Visual C redistribuable files
|
|
DetailPrint "Installing Visual C++ redistributable files"
|
|
nsExec::Exec '"$INSTDIR\vcredist\vc_redist.x64.exe" /q'
|
|
|
|
DetailPrint "Configuring $(TITLE_Odoo_IoT)"
|
|
# Set data_dir
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "data_dir" "$INSTDIR\sessions"
|
|
# set modules to load
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "server_wide_modules" "iot_drivers,web"
|
|
# Configure logging
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "logfile" "$INSTDIR\odoo.log"
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "log_handler" ":WARNING"
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "log_level" "warn"
|
|
# Other configuration
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "list_db" "False"
|
|
WriteIniStr "$INSTDIR\odoo.conf" "options" "max_cron_threads" "0"
|
|
|
|
DetailPrint "Installing Windows service"
|
|
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" install ${SERVICENAME} "$INSTDIR\python\python.exe"'
|
|
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" set ${SERVICENAME} AppDirectory "$\"$INSTDIR\python$\""'
|
|
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" set ${SERVICENAME} AppParameters "\"$INSTDIR\odoo\odoo-bin\" -c "\"$INSTDIR\odoo.conf\"'
|
|
nsExec::ExecToLog '"$INSTDIR\nssm\win64\nssm.exe" set ${SERVICENAME} ObjectName "LOCALSERVICE"'
|
|
AccessControl::GrantOnFile "$INSTDIR" "LOCALSERVICE" "FullAccess"
|
|
|
|
Call RestartOdooService
|
|
SectionEnd
|
|
|
|
Section -$(TITLE_Nginx) Nginx
|
|
SetOutPath '$TEMP'
|
|
VAR /GLOBAL nginx_zip_filename
|
|
VAR /GLOBAL nginx_url
|
|
|
|
StrCpy $nginx_zip_filename "nginx-1.22.0.zip"
|
|
StrCpy $nginx_url "https://nginx.org/download/$nginx_zip_filename"
|
|
|
|
DetailPrint "Downloading Nginx"
|
|
NScurl::http get "$nginx_url" "$TEMP\$nginx_zip_filename" /PAGE /END
|
|
DetailPrint "Temp dir: $TEMP\$nginx_zip_filename"
|
|
DetailPrint "Unzip Nginx"
|
|
nsisunz::UnzipToLog "$TEMP\$nginx_zip_filename" "$INSTDIR"
|
|
|
|
Pop $0
|
|
StrCmp $0 "success" ok
|
|
DetailPrint "$0" ;print error message to log
|
|
ok:
|
|
|
|
FindFirst $0 $1 "$INSTDIR\nginx*"
|
|
DetailPrint "Setting up nginx"
|
|
Rename "$INSTDIR\$1" "$INSTDIR\nginx"
|
|
FindClose $0
|
|
|
|
SetOutPath "$INSTDIR\nginx\conf"
|
|
CreateDirectory $INSTDIR\nginx\temp
|
|
CreateDirectory $INSTDIR\nginx\logs
|
|
File "conf\nginx\nginx.conf"
|
|
# Temporary certs for the first start
|
|
File "..\..\odoo\addons\iot_box_image\overwrite_after_init\etc\ssl\certs\nginx-cert.crt"
|
|
File "..\..\odoo\addons\iot_box_image\overwrite_after_init\etc\ssl\private\nginx-cert.key"
|
|
SectionEnd
|
|
|
|
Section -$(TITLE_Ghostscript) SectionGhostscript
|
|
SetOutPath '$TEMP'
|
|
VAR /GLOBAL ghostscript_exe_filename
|
|
VAR /GLOBAL ghostscript_url
|
|
|
|
StrCpy $ghostscript_exe_filename "gs10012w64.exe"
|
|
StrCpy $ghostscript_url "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10012/$ghostscript_exe_filename"
|
|
|
|
DetailPrint "Downloading Ghostscript"
|
|
NScurl::http get "$ghostscript_url" "$TEMP\$ghostscript_exe_filename" /PAGE /END
|
|
DetailPrint "Temp dir: $TEMP\$ghostscript_exe_filename"
|
|
|
|
Rmdir /r "INSTDIR\Ghostscript"
|
|
DetailPrint "Installing Ghostscript"
|
|
ExecWait '"$TEMP\$ghostscript_exe_filename" \
|
|
/S \
|
|
/D=$INSTDIR\Ghostscript'
|
|
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}"
|
|
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpLink" "support@odoo.com"
|
|
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "HelpTelephone" "+32.81.81.37.00"
|
|
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "URLInfoAbout" "https://www.odoo.com"
|
|
WriteRegStr HKLM "${UNINSTALL_REGISTRY_KEY}" "Contact" "sales@odoo.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 ${SectionOdoo_IoT} $(DESC_Odoo_IoT)
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
|
|
Section "Uninstall"
|
|
SetRegView 64
|
|
# 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'
|
|
ExecWait '"$INSTDIR\Ghostscript\uninstgs.exe" /S'
|
|
|
|
nsExec::Exec "net stop ${SERVICENAME}"
|
|
nsExec::Exec "sc delete ${SERVICENAME}"
|
|
sleep 2
|
|
|
|
Rmdir /r "$INSTDIR\odoo"
|
|
Rmdir /r "$INSTDIR\sessions"
|
|
Rmdir /r "$INSTDIR\thirdparty"
|
|
Rmdir /r "$INSTDIR\python"
|
|
Rmdir /r "$INSTDIR\git"
|
|
Rmdir /r "$INSTDIR\nssm"
|
|
FindFirst $0 $1 "$INSTDIR\nginx*"
|
|
StrCmp $1 "" nginx_dir_not_found
|
|
Rmdir /R "$INSTDIR\$1"
|
|
nginx_dir_not_found:
|
|
FindClose $0
|
|
DeleteRegKey HKLM "${UNINSTALL_REGISTRY_KEY}"
|
|
SectionEnd
|
|
|
|
Function .onInit
|
|
VAR /GLOBAL previous_install_dir
|
|
SetRegView 64
|
|
ReadRegStr $previous_install_dir HKLM "${REGISTRY_KEY}" "Install_Dir"
|
|
${If} $previous_install_dir == ""
|
|
StrCpy $INSTDIR "$PROGRAMFILES64\Odoo IoT ${VERSION}"
|
|
WriteRegStr HKLM "${REGISTRY_KEY}" "Install_dir" "$INSTDIR"
|
|
${Else}
|
|
StrCpy $INSTDIR $previous_install_dir
|
|
${EndIf}
|
|
|
|
Push $R0
|
|
${GetParameters} $cmdLineParams
|
|
ClearErrors
|
|
Pop $R0
|
|
|
|
!insertmacro MUI_LANGDLL_DISPLAY
|
|
FunctionEnd
|
|
|
|
Function LaunchLink
|
|
ExecShell "open" "http://localhost:8069/"
|
|
FunctionEnd
|
|
|
|
Function RestartOdooService
|
|
DetailPrint "Restarting Odoo Service"
|
|
ExecWait "net stop ${SERVICENAME}"
|
|
ExecWait "net start ${SERVICENAME}"
|
|
FunctionEnd
|
|
|
|
Function dir_leave
|
|
StrLen $0 $PROGRAMFILES64
|
|
StrCpy $0 $INSTDIR $0
|
|
StrCmp $0 $PROGRAMFILES64 continue
|
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(UnsafeDirText)" IDYES continue IDNO aborting
|
|
aborting:
|
|
Abort
|
|
continue:
|
|
FunctionEnd
|