SymphonyElectron/build/installer.nsh
2024-05-29 09:13:36 +07:00

110 lines
3.5 KiB
Plaintext

!include LogicLib.nsh
Var PerUser
Var AllUser
Function uninstallSymphony
StrCpy $0 0
SetRegView 64
loop:
EnumRegKey $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $0
StrCmp $1 "" done
ReadRegStr $2 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1" "DisplayName"
${If} $2 == "Symphony"
ReadRegStr $3 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1" "UninstallString"
ExecWait '$3 /qn'
${EndIf}
IntOp $0 $0 + 1
Goto loop
done:
FunctionEnd
!macro copySystemGlobalConfig
IfFileExists $PROGRAMFILES64\Symphony\Symphony\config\Symphony.config 0 +2
CopyFiles /SILENT $PROGRAMFILES64\Symphony\Symphony\config\Symphony.config $WINDIR\Temp\temp-sys-Symphony.config
!macroend
!macro copyLocalGlobalConfig
IfFileExists $LOCALAPPDATA\Programs\Symphony\Symphony\config\Symphony.config 0 +2
CopyFiles /SILENT $LOCALAPPDATA\Programs\Symphony\Symphony\config\Symphony.config $LOCALAPPDATA\Temp\temp-local-Symphony.config
!macroend
!macro replaceSystemGlobalConfig
IfFileExists $WINDIR\Temp\temp-sys-Symphony.config 0 +2
CopyFiles /SILENT $WINDIR\Temp\temp-sys-Symphony.config $PROGRAMFILES64\Symphony\Symphony\config\Symphony.config
!macroend
!macro replaceLocalGlobalConfig
IfFileExists $LOCALAPPDATA\Temp\temp-local-Symphony.config 0 +2
CopyFiles /SILENT $LOCALAPPDATA\Temp\temp-local-Symphony.config $LOCALAPPDATA\Programs\Symphony\Symphony\config\Symphony.config
!macroend
!macro bothM
MessageBox MB_OK "Auto update not supported as there are two versions installed"
!macroend
!macro perUserM
!insertmacro copyLocalGlobalConfig
Call uninstallSymphony
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$LOCALAPPDATA\Programs\Symphony\Symphony"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$LOCALAPPDATA\Programs\Symphony\Symphony"
!macroend
!macro allUserM
${IfNot} ${UAC_IsAdmin}
ShowWindow $HWNDPARENT ${SW_HIDE}
!insertmacro UAC_RunElevated
Quit
${endif}
!insertmacro copySystemGlobalConfig
Call uninstallSymphony
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$PROGRAMFILES64\Symphony\Symphony"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "$PROGRAMFILES64\Symphony\Symphony"
!macroend
!macro abortM
; MessageBox MB_OK "Something went wrong!! Could not find existing SDA"
!macroend
!macro validateInstallation
IfFileExists $PROGRAMFILES64\Symphony\Symphony\Symphony.exe 0 +2
StrCpy $AllUser "exists"
IfFileExists $LOCALAPPDATA\Programs\Symphony\Symphony\Symphony.exe 0 +2
StrCpy $PerUser "exists"
!macroend
!macro preInit
!insertmacro validateInstallation
${If} $PerUser == "exists"
${AndIf} $AllUser == "exists"
!insertmacro bothM
${ElseIf} $PerUser == "exists"
!insertmacro perUserM
${ElseIf} $AllUser == "exists"
!insertmacro allUserM
${Else}
!insertmacro abortM
${EndIf}
!macroend
!macro customInstall
${If} $PerUser == "exists"
!insertmacro replaceLocalGlobalConfig
${ElseIf} $AllUser == "exists"
!insertmacro replaceSystemGlobalConfig
${Else}
!insertmacro abortM
${EndIf}
!macroend
!macro customUnInit
!insertmacro validateInstallation
${If} $AllUser == "exists"
${IfNot} ${UAC_IsAdmin}
ShowWindow $HWNDPARENT ${SW_HIDE}
!insertmacro UAC_RunElevated
Quit
${endif}
${EndIf}
!macroend