# This installs QMK, creates a start menu shortcut, builds an uninstaller, and # adds uninstall information to the registry for Add/Remove Programs # All the settings can be tweaked by editing the !defines at the top of this script !define APPNAME "QMK Flasher" !define COMPANYNAME QMK !define DESCRIPTION "Flash atmega32u4 devices over DFU." # These three must be integers !define VERSIONMAJOR 0 !define VERSIONMINOR 5 !define VERSIONBUILD 2 # These will be displayed by the "Click here for support information" link in "Add/Remove Programs" # It is possible to use "mailto:" links in here to open the email client !define HELPURL "https://github.com/qmk/qmk_firmware_flasher/issues" # "Support Information" link !define UPDATEURL "https://github.com/qmk/qmk_firmware_flasher/releases" # "Product Updates" link !define ABOUTURL "https://github.com/qmk/qmk_firmware_flasher" # "Publisher" link # This is the size (in kB) of all the files copied into "Program Files" #!define INSTALLSIZE 7233 RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) InstallDir "$PROGRAMFILES\${APPNAME}" LicenseData "LICENSE.md" Name "${APPNAME}" Icon "windows.ico" outFile "${APPNAME} ${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD} Installer.exe" !include LogicLib.nsh # Just three pages - license agreement, install location, and installation page license page directory Page instfiles !macro VerifyUserIsAdmin UserInfo::GetAccountType pop $0 ${If} $0 != "admin" ;Require admin rights on NT4+ messageBox mb_iconstop "Administrator rights required!" setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED quit ${EndIf} !macroend function .onInit setShellVarContext all !insertmacro VerifyUserIsAdmin functionEnd section "install" # Install Program Files setOutPath $INSTDIR file /r *.* # Install the Atmel bootloader driver DetailPrint "Installing driver..." nsExec::ExecToLog '"C:\Windows\System32\PnPutil.exe" -i -a "$INSTDIR\resources\app.asar.unpacked\dfu\dfu-prog-usb-1.2.2\atmel_usb_dfu.inf"' # Uninstaller writeUninstaller "$INSTDIR\uninstall.exe" # Start Menu createDirectory "$SMPROGRAMS\${COMPANYNAME}" createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\QMK Flasher.exe" "" "$INSTDIR\windows.ico" # Registry information for add/remove programs WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME} - ${DESCRIPTION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$\"$INSTDIR\windows.ico$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "$\"${HELPURL}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\"" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMajor" ${VERSIONMAJOR} WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMinor" ${VERSIONMINOR} # There is no option for modifying or repairing the install WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1 # Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size #WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" ${INSTALLSIZE} sectionEnd # Uninstaller function un.onInit SetShellVarContext all #Verify the uninstaller - last chance to back out MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next Abort next: !insertmacro VerifyUserIsAdmin functionEnd section "uninstall" # Remove Start Menu launcher delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" rmDir "$SMPROGRAMS\${COMPANYNAME}" # Remove files rmDir /r $INSTDIR # Remove uninstaller information from the registry DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" sectionEnd