workspace-v1/shared/knowledge-base/reference/odoo/odoo-18.0/setup/win32/setup-iot.nsi
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
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
2026-01-04 03:37:42 -06:00

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