summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/installer.nsi369
1 files changed, 0 insertions, 369 deletions
diff --git a/scripts/installer.nsi b/scripts/installer.nsi
deleted file mode 100644
index 8f3050557..000000000
--- a/scripts/installer.nsi
+++ /dev/null
@@ -1,369 +0,0 @@
-; xmake.nsi
-;
-; This script is perhaps one of the simplest NSIs you can make. All of the
-; optional settings are left to their default settings. The installer simply
-; prompts the user asking them where to install, and drops a copy of xmake.nsi
-; there.
-
-;--------------------------------
-; includes
-!include "MUI2.nsh"
-!include "WordFunc.nsh"
-!include "WinMessages.nsh"
-!include FileFunc.nsh
-!include UAC.nsh
-
-; xmake version Information
-!ifndef MAJOR
- !error 'xmake major version is not defined!'
-!endif
-!ifndef MINOR
- !error 'xmake minor version is not defined!'
-!endif
-!ifndef ALTER
- !error 'xmake alter version is not defined!'
-!endif
-!ifndef BUILD
- !error 'xmake build version is not defined!'
-!endif
-
-!define VERSION ${MAJOR}.${MINOR}.${ALTER}
-!define VERSION_FULL ${VERSION}+${BUILD}
-
-!ifdef x64
- !define ARCH x64
-!else
- !define ARCH x86
-!endif
-
-;--------------------------------
-
-; The name of the installer
-Name "Xmake - v${VERSION}"
-
-; The file to write
-OutFile "xmake.exe"
-
-; Use unicode
-Unicode true
-
-; Use best compressor
-SetCompressor /FINAL /SOLID lzma
-SetCompressorDictSize 64
-SetDatablockOptimize ON
-
-; The default installation directory
-!ifdef x64
- !define PROGRAMFILES $PROGRAMFILES64
- !define HKLM HKLM64
- !define HKCU HKCU64
-!else
- !define PROGRAMFILES $PROGRAMFILES
- !define HKLM HKLM
- !define HKCU HKCU
-!endif
-
-; Request application privileges for Windows Vista
-RequestExecutionLevel user
-
-; Set DPI Aware
-ManifestDPIAware true
-
-;--------------------------------
-; Interface Settings
-
-!define MUI_ABORTWARNING
-
-;--------------------------------
-; Icon
-!define MUI_ICON "..\core\src\demo\xmake.ico"
-
-;--------------------------------
-; UAC helper
-
-!macro Init thing
- uac_tryagain:
- !insertmacro UAC_RunElevated
- ${Switch} $0
- ${Case} 0
- ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done
- ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on
- ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
- MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0
- ${EndIf}
- ;fall-through and die
- ${Case} 1223
- MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, aborting!"
- Quit
- ${Case} 1062
- MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Logon service not running, aborting!"
- Quit
- ${Default}
- MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Unable to elevate, error $0"
- Quit
- ${EndSwitch}
-
- ; The UAC plugin changes the error level even in the inner process, reset it.
- ; note fix install exit code 1223 to 0 with slient /S
- SetErrorLevel 0
- SetShellVarContext all
-!macroend
-
-;--------------------------------
-; Install Pages
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "..\LICENSE.md"
-!insertmacro MUI_PAGE_COMPONENTS
-!insertmacro MUI_PAGE_DIRECTORY
-!insertmacro MUI_PAGE_INSTFILES
-!define MUI_FINISHPAGE_LINK "Donate $$5"
-!define MUI_FINISHPAGE_LINK_LOCATION "https://xmake.io/#/sponsor"
-!insertmacro MUI_PAGE_FINISH
-
-;--------------------------------
-; Uninstall Pages
-
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-;--------------------------------
-; Languages
-
-!insertmacro MUI_LANGUAGE "English"
-
-;--------------------------------
-; Version Information
-
-
-VIProductVersion ${VERSION}.0
-VIFileVersion ${VERSION}.0
-VIAddVersionKey /LANG=0 ProductName Xmake
-VIAddVersionKey /LANG=0 Comments "A cross-platform build utility based on Lua$\nwebsite: https://xmake.io"
-VIAddVersionKey /LANG=0 CompanyName "The TBOOX Open Source Group"
-VIAddVersionKey /LANG=0 LegalCopyright "Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io"
-VIAddVersionKey /LANG=0 FileDescription "Xmake Installer - v${VERSION}"
-VIAddVersionKey /LANG=0 OriginalFilename "xmake-${ARCH}.exe"
-VIAddVersionKey /LANG=0 FileVersion ${VERSION_FULL}
-VIAddVersionKey /LANG=0 ProductVersion ${VERSION_FULL}
-
-
-;--------------------------------
-; Reg paths
-
-!define RegUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\XMake"
-
-;--------------------------------
-
-Var NOADMIN
-
-Function TrimQuote
- Exch $R1 ; Original string
- Push $R2
-
-Loop:
- StrCpy $R2 "$R1" 1
- StrCmp "$R2" "'" TrimLeft
- StrCmp "$R2" "$\"" TrimLeft
- StrCmp "$R2" "$\r" TrimLeft
- StrCmp "$R2" "$\n" TrimLeft
- StrCmp "$R2" "$\t" TrimLeft
- StrCmp "$R2" " " TrimLeft
- GoTo Loop2
-TrimLeft:
- StrCpy $R1 "$R1" "" 1
- Goto Loop
-
-Loop2:
- StrCpy $R2 "$R1" 1 -1
- StrCmp "$R2" "'" TrimRight
- StrCmp "$R2" "$\"" TrimRight
- StrCmp "$R2" "$\r" TrimRight
- StrCmp "$R2" "$\n" TrimRight
- StrCmp "$R2" "$\t" TrimRight
- StrCmp "$R2" " " TrimRight
- GoTo Done
-TrimRight:
- StrCpy $R1 "$R1" -1
- Goto Loop2
-
-Done:
- Pop $R2
- Exch $R1
-FunctionEnd
-
-; Installer
-Function .onInit
- ${GetOptions} $CMDLINE "/NOADMIN" $NOADMIN
- ${If} ${Errors}
- !insertmacro Init "installer"
- StrCpy $NOADMIN "false"
- ${Else}
- StrCpy $NOADMIN "true"
- ${EndIf}
-
- ; load from reg
- ${If} $InstDir == ""
- ${If} $NOADMIN == "false"
- ReadRegStr $R0 ${HKLM} ${RegUninstall} "InstallLocation"
- ${Else}
- ReadRegStr $R0 ${HKCU} ${RegUninstall} "InstallLocation"
- ${EndIf}
- ${If} $R0 != ""
- Push $R0
- Call TrimQuote
- Pop $R0
- StrCpy $InstDir $R0
- ${EndIf}
- ${EndIf}
- ; use default
- ${If} $InstDir == ""
- StrCpy $InstDir ${PROGRAMFILES}\xmake
- ${EndIf}
-
-FunctionEnd
-
-Section "Xmake (required)" InstallExeutable
-
- SectionIn RO
-
- ; Set output path to the installation directory.
- SetOutPath $InstDir
-
- ; Remove previous directories used
- ; https://github.com/xmake-io/xmake/issues/1888
- IfFileExists "$InstDir\xmake.exe" file_found file_not_found_or_end
- file_found:
- RMDir /r "$InstDir"
- goto file_not_found_or_end
- file_not_found_or_end:
-
- ; Put file there
- File /r /x ".DS_Store" /x "*.swp" "..\xmake\*.*"
- File "..\*.md"
- File "..\core\build\xmake.exe"
- File "..\scripts\xrepo.bat"
- File "..\scripts\xrepo.ps1"
- File /r /x ".DS_Store" "..\winenv"
-
- WriteUninstaller "uninstall.exe"
-
- !macro AddReg RootKey
-
- ; Write uac info
- WriteRegStr ${RootKey} ${RegUninstall} "NoAdmin" "$NOADMIN"
-
- ; Write the uninstall keys for Windows
- WriteRegStr ${RootKey} ${RegUninstall} "DisplayName" "Xmake build utility (${ARCH})"
- WriteRegStr ${RootKey} ${RegUninstall} "DisplayIcon" '"$InstDir\xmake.exe"'
- WriteRegStr ${RootKey} ${RegUninstall} "Comments" "A cross-platform build utility based on Lua"
- WriteRegStr ${RootKey} ${RegUninstall} "Publisher" "The TBOOX Open Source Group"
- WriteRegStr ${RootKey} ${RegUninstall} "UninstallString" '"$InstDir\uninstall.exe"'
- WriteRegStr ${RootKey} ${RegUninstall} "QuiteUninstallString" '"$InstDir\uninstall.exe" /S'
- WriteRegStr ${RootKey} ${RegUninstall} "InstallLocation" $InstDir
- WriteRegStr ${RootKey} ${RegUninstall} "HelpLink" 'https://xmake.io/'
- WriteRegStr ${RootKey} ${RegUninstall} "URLInfoAbout" 'https://github.com/xmake-io/xmake'
- WriteRegStr ${RootKey} ${RegUninstall} "URLUpdateInfo" 'https://github.com/xmake-io/xmake/releases'
- WriteRegDWORD ${RootKey} ${RegUninstall} "VersionMajor" ${MAJOR}
- WriteRegDWORD ${RootKey} ${RegUninstall} "VersionMinor" ${MINOR}
- WriteRegStr ${RootKey} ${RegUninstall} "DisplayVersion" ${VERSION_FULL}
- WriteRegDWORD ${RootKey} ${RegUninstall} "NoModify" 1
- WriteRegDWORD ${RootKey} ${RegUninstall} "NoRepair" 1
-
- ;write size to reg
- ${GetSize} "$InstDir" "/S=0K" $0 $1 $2
- IntFmt $0 "0x%08X" $0
- WriteRegDWORD ${RootKey} ${RegUninstall} "EstimatedSize" "$0"
- !macroend
-
- ${If} $NOADMIN == "false"
- !insertmacro AddReg ${HKLM}
- ${Else}
- !insertmacro AddReg ${HKCU}
- ${EndIf}
-
-SectionEnd
-
-Section "Enable Long Path" LongPath
- ${If} $NOADMIN == "false"
- ; Enable long path
- WriteRegDWORD ${HKLM} "SYSTEM\CurrentControlSet\Control\FileSystem" "LongPathsEnabled" 1
- ${EndIf}
-SectionEnd
-
-Section "Add to PATH" InstallPath
-
- ${If} $NOADMIN == "false"
- ; Remove the installation path from the $PATH environment variable first
- ReadRegStr $R0 ${HKLM} "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
- ${WordReplace} $R0 ";$InstDir" "" "+" $R1
-
- ; Write the installation path into the $PATH environment variable
- WriteRegExpandStr ${HKLM} "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R1;$InstDir"
- ${Else}
- ; Remove the installation path from the $PATH environment variable first
- ReadRegStr $R0 ${HKCU} "Environment" "Path"
- ${WordReplace} $R0 ";$InstDir" "" "+" $R1
-
- ; Write the installation path into the $PATH environment variable
- WriteRegExpandStr ${HKCU} "Environment" "Path" "$R1;$InstDir"
- ${EndIf}
-
- ; make sure windows knows about the change
- SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
-
-SectionEnd
-
-;--------------------------------
-; Descriptions
-
-; Language strings
-LangString DESC_InstallExeutable ${LANG_ENGLISH} "A cross-platform build utility based on Lua"
-LangString DESC_InstallPath ${LANG_ENGLISH} "Add xmake to PATH"
-LangString DESC_LongPath ${LANG_ENGLISH} "Increases the maximum path length limit, up to 32,767 characters (before 256). This can be useful if a project has many recursive subfolders to make sure that the project is compiled without errors. A reboot might be required because some processes may have started before the new value was set"
-
-; Assign language strings to sections
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-!insertmacro MUI_DESCRIPTION_TEXT ${InstallExeutable} $(DESC_InstallExeutable)
-!insertmacro MUI_DESCRIPTION_TEXT ${InstallPath} $(DESC_InstallPath)
-!insertmacro MUI_DESCRIPTION_TEXT ${LongPath} $(DESC_LongPath)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-;--------------------------------
-
-; Uninstaller
-
-Function un.onInit
- ; check if we need uac
- ReadRegStr $NOADMIN ${HKLM} ${RegUninstall} "NoAdmin"
- IfErrors 0 +2
- ReadRegStr $NOADMIN ${HKCU} ${RegUninstall} "NoAdmin"
-
- ${IfNot} $NOADMIN == "true"
- !insertmacro Init "uninstaller"
- ${EndIf}
-
-FunctionEnd
-
-Section "Uninstall"
-
- ; Remove directories used
- RMDir /r "$InstDir"
-
- ; Clean reg
- ${If} $NOADMIN == "false"
- DeleteRegKey ${HKLM} ${RegUninstall}
- ; Remove the installation path from the $PATH environment variable
- ReadRegStr $R0 ${HKLM} "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
- ${WordReplace} $R0 ";$InstDir" "" "+" $R1
- WriteRegExpandStr ${HKLM} "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R1"
- ${Else}
- DeleteRegKey ${HKCU} ${RegUninstall}
- ; Remove the installation path from the $PATH environment variable
- ReadRegStr $R0 ${HKCU} "Environment" "Path"
- ${WordReplace} $R0 ";$InstDir" "" "+" $R1
- WriteRegExpandStr ${HKCU} "Environment" "Path" "$R1"
- ${EndIf}
-
-SectionEnd