Sync edgetx to Gitea
This commit is contained in:
@@ -0,0 +1,347 @@
|
||||
;NSIS Modern User Interface
|
||||
;Start Menu Folder Selection Example Script
|
||||
;Written by Joost Verburg
|
||||
|
||||
;--------------------------------
|
||||
;Include Modern UI
|
||||
|
||||
!include "MUI2.nsh"
|
||||
!include "nsDialogs.nsh"
|
||||
!include "LogicLib.nsh"
|
||||
!include "@NSIS_TARGETS_DIR@\FileAssociation.nsh"
|
||||
!include "@NSIS_TARGETS_DIR@\FileFunc.nsh"
|
||||
!include "@NSIS_TARGETS_DIR@\WordFunc.nsh"
|
||||
;--------------------------------
|
||||
;General
|
||||
|
||||
;Name and file
|
||||
Name "@PROJECT_NAME@ Companion @VERSION_FAMILY@"
|
||||
OutFile "companion-windows-@VERSION@.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES64\@PROJECT_NAME@\Companion @VERSION_FAMILY@"
|
||||
|
||||
;Get installation folder from registry if available
|
||||
InstallDirRegKey HKCU "Software\@PROJECT_NAME@\Companion @VERSION_FAMILY@" ""
|
||||
|
||||
;Compressor options
|
||||
;SetCompress off
|
||||
SetCompressor /FINAL /SOLID lzma
|
||||
SetCompressorDictSize 64
|
||||
|
||||
;Request application privileges for Windows Vista
|
||||
RequestExecutionLevel admin
|
||||
|
||||
;--------------------------------
|
||||
;Variables
|
||||
|
||||
Var StartMenuFolder
|
||||
Var StartMenuLocationDialog
|
||||
Var StartMenuLocationRadioCurrent
|
||||
Var StartMenuLocationRadioAll
|
||||
Var StartMenuLocationValue ; "current_user" or "all_users"
|
||||
|
||||
;--------------------------------
|
||||
;Interface Settings
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
;--------------------------------
|
||||
;File Exists Macro
|
||||
|
||||
; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
|
||||
!macro !defineifexist _VAR_NAME _FILE_NAME
|
||||
!tempfile _TEMPFILE
|
||||
!ifdef NSIS_WIN32_MAKENSIS
|
||||
; Windows - cmd.exe
|
||||
!system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
|
||||
!else
|
||||
; Posix - sh
|
||||
!system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
|
||||
!endif
|
||||
!include '${_TEMPFILE}'
|
||||
!delfile '${_TEMPFILE}'
|
||||
!undef _TEMPFILE
|
||||
!macroend
|
||||
!define !defineifexist "!insertmacro !defineifexist"
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
|
||||
!insertmacro MUI_PAGE_LICENSE "@NSIS_DISTRO@\bin\license.txt"
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
;Start Menu Folder Page Configuration
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@PROJECT_NAME@\Companion @VERSION_FAMILY@"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
||||
|
||||
;Start Menu Folder for current user or all users?
|
||||
Page custom StartMenuLocationCreator StartMenuLocationLeave
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
# These indented statements modify settings for MUI_PAGE_FINISH
|
||||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_RUN_CHECKED
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
|
||||
# !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
||||
# !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_COMPONENTS
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
;--------------------------------
|
||||
;Languages
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
|
||||
;--------------------------------
|
||||
;Installer Sections
|
||||
|
||||
; Visual C++ Redistributable (x64) is a required dependency
|
||||
;
|
||||
|
||||
!macro GetInstalledVCVersionCall _RESULT
|
||||
Call GetInstalledVCVersion
|
||||
Pop ${_RESULT}
|
||||
!macroend
|
||||
|
||||
!macro GetInstalledVCVersion
|
||||
!ifndef GetInstalledVCVersion
|
||||
!define GetInstalledVCVersion `!insertmacro GetInstalledVCVersionCall`
|
||||
|
||||
Function GetInstalledVCVersion
|
||||
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version"
|
||||
StrCpy $R1 "$R0" 1 # get first character
|
||||
${If} $R1 == "v"
|
||||
StrCpy $R1 "$R0" "" 1 # strip off v prefix
|
||||
${EndIf}
|
||||
|
||||
Push $R1
|
||||
FunctionEnd
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!define VCREDISTNAME "Microsoft Visual C++ 2015-2022 Redistributable"
|
||||
!define VCREDISTFILE "@NSIS_DISTRO@\bin\@NSIS_MSVC_REDIST_EXE@"
|
||||
!define VCREDISTEXE "@NSIS_MSVC_REDIST_EXE@"
|
||||
Var VCRedistExeVers
|
||||
Var VCInstVers
|
||||
|
||||
!insertmacro GetFileVersion
|
||||
!insertmacro VersionCompare
|
||||
!insertmacro GetInstalledVCVersion
|
||||
|
||||
Section "${VCREDISTNAME}" SecMSVC
|
||||
Push $0
|
||||
Push $1
|
||||
SetOutPath "$TEMP"
|
||||
File "${VCREDISTFILE}"
|
||||
${GetFileVersion} "$TEMP\${VCREDISTEXE}" $VCRedistExeVers
|
||||
${GetInstalledVCVersion} $VCInstVers
|
||||
${VersionCompare} "$VCInstVers" "$VCRedistExeVers" $R0
|
||||
DetailPrint "VC++ Installed: $VCInstVers Redist: $VCRedistExeVers Result: $R0"
|
||||
${If} $R0 == "2"
|
||||
DetailPrint "Installing ${VCREDISTNAME}..."
|
||||
ExecWait "$TEMP\${VCREDISTEXE} /install /passive /norestart"
|
||||
;IfErrors InstallError ContinueInstall ; vc_redist exit code is unreliable
|
||||
${GetInstalledVCVersion} $VCInstVers
|
||||
${VersionCompare} "$VCInstVers" "$VCRedistExeVers" $R0
|
||||
${If} $R0 == "0"
|
||||
Goto ContinueInstall
|
||||
${EndIf}
|
||||
|
||||
MessageBox MB_ICONSTOP "\
|
||||
There was an unexpected error installing$\r$\n\
|
||||
${VCREDISTNAME}.$\r$\n\
|
||||
The installation of @PROJECT_NAME@ cannot continue."
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
ContinueInstall:
|
||||
Delete "$TEMP\${VCREDISTEXE}"
|
||||
SetOutPath "$INSTDIR" ; Restore original output path
|
||||
Pop $1
|
||||
Pop $0
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "@PROJECT_NAME@ Companion @VERSION_FAMILY@" SecCpn
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
; Copy the complete distribution folder contents
|
||||
File /r "@NSIS_DISTRO@\*"
|
||||
|
||||
;Store installation folder
|
||||
WriteRegStr HKCU "Software\@PROJECT_NAME@\Companion @VERSION_FAMILY@" "" $INSTDIR
|
||||
|
||||
;Associate with extentions .etx
|
||||
${registerExtension} "$INSTDIR\bin\companion.exe" ".etx" "@PROJECT_NAME@ Settings File"
|
||||
|
||||
;Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
;Registry information for add/remove programs
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "DisplayName" "@PROJECT_NAME@ Companion @VERSION_FAMILY@"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "DisplayVersion" "@VERSION@"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "DisplayIcon" "$\"$INSTDIR\bin\companion.exe$\""
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "Publisher" "@PROJECT_NAME@"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "URLInfoAbout" "https://@PROJECT_NAME_LOWERCASE@.org"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
|
||||
;Create shortcuts
|
||||
${If} $StartMenuLocationValue == "all_users"
|
||||
SetShellVarContext all
|
||||
${Endif}
|
||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk" "$INSTDIR\bin\companion.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk" "$INSTDIR\bin\simulator.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk" "$INSTDIR\Uninstall.exe"
|
||||
SetShellVarContext current
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
;Descriptions
|
||||
|
||||
;Language strings
|
||||
LangString DESC_SecCpn ${LANG_ENGLISH} "Models and settings editor for @PROJECT_NAME@"
|
||||
LangString DESC_SecCpn ${LANG_FRENCH} "Editeur de r glages et mod les pour @PROJECT_NAME@"
|
||||
LangString DESC_SecMSVC ${LANG_ENGLISH} "Install or update runtime library support files necessary for Companion"
|
||||
LangString DESC_SecMSVC ${LANG_FRENCH} "Fichiers de support de bibliothèque d'exécution nécessaires pour Companion"
|
||||
|
||||
LangString SML_SubTitle ${LANG_ENGLISH} "Choose a location for the Start Menu shortcuts"
|
||||
LangString SML_SubTitle ${LANG_FRENCH} "Choisissez un emplacement pour les raccourcis de l'application"
|
||||
LangString SML_MainLabel ${LANG_ENGLISH} "Create start menu shortcuts for:"
|
||||
LangString SML_MainLabel ${LANG_FRENCH} "Emplacement pour les raccourcis de l'application:"
|
||||
LangString SML_RadioCurrent ${LANG_ENGLISH} "Current user only"
|
||||
LangString SML_RadioCurrent ${LANG_FRENCH} "Utilisateur actuel"
|
||||
LangString SML_RadioAll ${LANG_ENGLISH} "All users"
|
||||
LangString SML_RadioAll ${LANG_FRENCH} "Tous les utilisateurs"
|
||||
|
||||
;Assign language strings to sections
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecCpn} $(DESC_SecCpn)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecMSVC} $(DESC_SecMSVC)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
;--------------------------------
|
||||
;Uninstaller Section
|
||||
|
||||
Section "un.${VCREDISTNAME}"
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "un.@PROJECT_NAME@ Companion @VERSION_FAMILY@"
|
||||
|
||||
SectionIn RO ; Not deselectable
|
||||
|
||||
RMDir /r "$INSTDIR\plugins\generic"
|
||||
RMDir /r "$INSTDIR\plugins\iconengines"
|
||||
RMDir /r "$INSTDIR\plugins\imageformats"
|
||||
RMDir /r "$INSTDIR\plugins\multimedia"
|
||||
RMDir /r "$INSTDIR\plugins\networkinformation"
|
||||
RMDir /r "$INSTDIR\plugins\platforms"
|
||||
RMDir /r "$INSTDIR\plugins\styles"
|
||||
RMDir /r "$INSTDIR\plugins\tls"
|
||||
RMDir /r "$INSTDIR\plugins"
|
||||
RMDir /r "$INSTDIR\bin\__pycache__"
|
||||
RMDir /r "$INSTDIR\bin"
|
||||
Delete "$INSTDIR\Uninstall.exe"
|
||||
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
${unregisterExtension} ".etx" "@PROJECT_NAME@ Settings File"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
||||
|
||||
; Always remove start menu folder for both locations: current user and all users
|
||||
SetShellVarContext all
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk"
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk"
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk"
|
||||
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
||||
SetShellVarContext current
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Companion @VERSION_FAMILY@.lnk"
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator @VERSION_FAMILY@.lnk"
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk"
|
||||
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
||||
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PROJECT_NAME@ Companion @VERSION_FAMILY@"
|
||||
SectionEnd
|
||||
|
||||
Section /o "un.Settings"
|
||||
DeleteRegKey HKCU "Software\@PROJECT_NAME@\Companion @VERSION_FAMILY@"
|
||||
SectionEnd
|
||||
|
||||
Function LaunchLink
|
||||
ExecShell "" "$INSTDIR\bin\companion.exe"
|
||||
FunctionEnd
|
||||
|
||||
|
||||
; Custom page with radio buttons, if the start menu entries shall be created
|
||||
; for the current user or for all users.
|
||||
Function StartMenuLocationCreator
|
||||
; Set default value if not already set. Do this before we might "abort" this page.
|
||||
${If} $StartMenuLocationValue == ""
|
||||
StrCpy $StartMenuLocationValue "current_user"
|
||||
${EndIf}
|
||||
|
||||
; If the folder starts with >, the user has chosen not to create a shortcut (see NSIS/StartMenu.nsh)
|
||||
StrCpy $R0 $StartMenuFolder 1
|
||||
${If} $R0 == ">"
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(SML_SubTitle)
|
||||
|
||||
nsDialogs::Create 1018
|
||||
Pop $StartMenuLocationDialog
|
||||
|
||||
${If} $StartMenuLocationDialog == error
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
${NSD_CreateLabel} 0u 0u 100% 12u $(SML_MainLabel)
|
||||
Pop $R0
|
||||
|
||||
${NSD_CreateRadioButton} 8u 20u 100% 12u $(SML_RadioCurrent)
|
||||
Pop $StartMenuLocationRadioCurrent
|
||||
${NSD_AddStyle} $StartMenuLocationRadioCurrent ${WS_GROUP}
|
||||
|
||||
${NSD_CreateRadioButton} 8u 40u 100% 12u $(SML_RadioAll)
|
||||
Pop $StartMenuLocationRadioAll
|
||||
|
||||
${If} $StartMenuLocationValue == "all_users"
|
||||
${NSD_SetState} $StartMenuLocationRadioAll ${BST_CHECKED}
|
||||
${Else}
|
||||
${NSD_SetState} $StartMenuLocationRadioCurrent ${BST_CHECKED}
|
||||
${EndIf}
|
||||
|
||||
${NSD_OnBack} StartMenuLocationLeave
|
||||
|
||||
nsDialogs::Show
|
||||
FunctionEnd
|
||||
|
||||
; Converts the radio button state back into a value for "StartMenuLocationValue"
|
||||
Function StartMenuLocationLeave
|
||||
${NSD_GetState} $StartMenuLocationRadioAll $R0
|
||||
${If} $R0 == ${BST_CHECKED}
|
||||
StrCpy $StartMenuLocationValue "all_users"
|
||||
${Else}
|
||||
StrCpy $StartMenuLocationValue "current_user"
|
||||
${Endif}
|
||||
FunctionEnd
|
||||
Reference in New Issue
Block a user