|
|
|
!include "MUI2.nsh"
|
|
|
|
!include LogicLib.nsh
|
|
|
|
!include Win\COM.nsh
|
|
|
|
!include Win\Propkey.nsh
|
|
|
|
|
|
|
|
!macro DemoteShortCut target
|
|
|
|
!insertmacro ComHlpr_CreateInProcInstance ${CLSID_ShellLink} ${IID_IShellLink} r0 ""
|
|
|
|
${If} $0 <> 0
|
|
|
|
${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
|
|
|
|
${If} $1 P<> 0
|
|
|
|
${IPersistFile::Load} $1 '("${target}",1)'
|
|
|
|
${IUnknown::Release} $1 ""
|
|
|
|
${EndIf}
|
|
|
|
${IUnknown::QueryInterface} $0 '("${IID_IPropertyStore}",.r1)'
|
|
|
|
${If} $1 P<> 0
|
|
|
|
System::Call '*${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_StartPinOption})p.r2'
|
|
|
|
System::Call '*${SYSSTRUCT_PROPVARIANT}(${VT_UI4},,&i4 ${APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL})p.r3'
|
|
|
|
${IPropertyStore::SetValue} $1 '($2,$3)'
|
|
|
|
|
|
|
|
; Reuse the PROPERTYKEY & PROPVARIANT buffers to set another property
|
|
|
|
System::Call '*$2${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_ExcludeFromShowInNewInstall})'
|
|
|
|
System::Call '*$3${SYSSTRUCT_PROPVARIANT}(${VT_BOOL},,&i2 ${VARIANT_TRUE})'
|
|
|
|
${IPropertyStore::SetValue} $1 '($2,$3)'
|
|
|
|
|
|
|
|
System::Free $2
|
|
|
|
System::Free $3
|
|
|
|
${IPropertyStore::Commit} $1 ""
|
|
|
|
${IUnknown::Release} $1 ""
|
|
|
|
${EndIf}
|
|
|
|
${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
|
|
|
|
${If} $1 P<> 0
|
|
|
|
${IPersistFile::Save} $1 '("${target}",1)'
|
|
|
|
${IUnknown::Release} $1 ""
|
|
|
|
${EndIf}
|
|
|
|
${IUnknown::Release} $0 ""
|
|
|
|
${EndIf}
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
Name "QGroundcontrol"
|
|
|
|
Var StartMenuFolder
|
|
|
|
|
|
|
|
InstallDir $PROGRAMFILES\qgroundcontrol
|
|
|
|
|
|
|
|
!define MUI_HEADERIMAGE
|
|
|
|
!define MUI_HEADERIMAGE_BITMAP "installheader.bmp";
|
|
|
|
|
|
|
|
!insertmacro MUI_PAGE_LICENSE "license.txt"
|
|
|
|
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
|
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
|
|
|
|
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
|
|
|
|
Section
|
|
|
|
ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\QGroundControl" "UninstallString"
|
|
|
|
StrCmp $R0 "" doinstall
|
|
|
|
|
|
|
|
ExecWait "$R0 /S _?=$INSTDIR"
|
|
|
|
IntCmp $0 0 doinstall
|
|
|
|
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
|
|
"Could not remove a previously installed QGroundControl version.$\n$\nPlease remove it before continuing."
|
|
|
|
Abort
|
|
|
|
|
|
|
|
doinstall:
|
|
|
|
SetOutPath $INSTDIR
|
|
|
|
File /r build_windows_install\release\*.*
|
|
|
|
File deploy\px4driver.msi
|
|
|
|
WriteUninstaller $INSTDIR\QGroundControl_uninstall.exe
|
|
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\QGroundControl" "DisplayName" "QGroundControl"
|
|
|
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\QGroundControl" "UninstallString" "$\"$INSTDIR\QGroundControl_uninstall.exe$\""
|
|
|
|
|
|
|
|
; Only attempt to install the PX4 driver if the version isn't present
|
|
|
|
!define ROOTKEY "SYSTEM\CurrentControlSet\Control\Class\{4D36E978-E325-11CE-BFC1-08002BE10318}"
|
|
|
|
StrCpy $0 0
|
|
|
|
loop:
|
|
|
|
EnumRegKey $1 HKLM ${ROOTKEY} $0
|
|
|
|
StrCmp $1 "" notfound cont1
|
|
|
|
|
|
|
|
cont1:
|
|
|
|
StrCpy $2 "${ROOTKEY}\$1"
|
|
|
|
ReadRegStr $3 HKLM $2 "ProviderName"
|
|
|
|
StrCmp $3 "3D Robotics" found_provider
|
|
|
|
mismatch:
|
|
|
|
IntOp $0 $0 + 1
|
|
|
|
goto loop
|
|
|
|
|
|
|
|
found_provider:
|
|
|
|
ReadRegStr $3 HKLM $2 "DriverVersion"
|
|
|
|
StrCmp $3 "2.0.0.4" skip_driver
|
|
|
|
goto mismatch
|
|
|
|
|
|
|
|
notfound:
|
|
|
|
DetailPrint "USB Driver not found... installing"
|
|
|
|
ExecWait '"msiexec" /i "px4driver.msi"'
|
|
|
|
goto done
|
|
|
|
|
|
|
|
skip_driver:
|
|
|
|
DetailPrint "USB Driver found... skipping install"
|
|
|
|
done:
|
|
|
|
SectionEnd
|
|
|
|
|
|
|
|
Section "Uninstall"
|
|
|
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
|
|
|
SetShellVarContext all
|
|
|
|
RMDir /r /REBOOTOK $INSTDIR
|
|
|
|
RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder\"
|
|
|
|
SetShellVarContext current
|
|
|
|
RMDir /r /REBOOTOK "$APPDATA\QGROUNDCONTROL.ORG\"
|
|
|
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\QGroundControl"
|
|
|
|
SectionEnd
|
|
|
|
|
|
|
|
Section "create Start Menu Shortcuts"
|
|
|
|
SetShellVarContext all
|
|
|
|
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
|
|
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\QGroundControl.lnk" "$INSTDIR\qgroundcontrol.exe" "" "$INSTDIR\qgroundcontrol.exe" 0
|
|
|
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\QGroundControl (GPU Compatibility Mode).lnk" "$INSTDIR\qgroundcontrol.exe" "-angle" "$INSTDIR\qgroundcontrol.exe" 0
|
|
|
|
!insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\QGroundControl (GPU Compatibility Mode).lnk"
|
|
|
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\QGroundControl (GPU Safe Mode).lnk" "$INSTDIR\qgroundcontrol.exe" "-swrast" "$INSTDIR\qgroundcontrol.exe" 0
|
|
|
|
!insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\QGroundControl (GPU Safe Mode).lnk"
|
|
|
|
SectionEnd
|
|
|
|
|