# This installs two files, app.exe and logo.ico, creates a start menu shortcut, builds an uninstaller, and # adds uninstall information to the registry for Add/Remove Programs # To get started, put this script into a folder with the two files (app.exe, logo.ico, and license.rtf - # You'll have to create these yourself) and run makensis on it # If you change the names "app.exe", "logo.ico", or "license.rtf" you should do a search and replace - they # show up in a few places. # All the other settings can be tweaked by editing the !defines at the top of this script !define APPNAME "CrossLang DevStudio" !define COMPANYNAME "Tesses" !define DESCRIPTION "IDE for CrossLang" # These three must be integers !define VERSIONMAJOR 1 !define VERSIONMINOR 0 !define VERSIONBUILD 0 # 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 ABOUTURL "https://crosslang.tesseslanguage.com/" # "Publisher" link # This is the size (in kB) of all the files copied into "Program Files" RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}" # rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n) LicenseData "license.txt" # This will be in the installer/uninstaller's title bar Name "${COMPANYNAME} - ${APPNAME}" Icon "crosslang.ico" outFile "crosslang-devstudio-win32.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" createDirectory "$INSTDIR\bin" createDirectory "$INSTDIR\share" createDirectory "$INSTDIR\share\Tesses" createDirectory "$INSTDIR\share\Tesses\CrossLang" # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file) setOutPath $INSTDIR # Files added here should be removed by the uninstaller (see section "uninstall") file "crosslang.ico" setOutPath $INSTDIR\bin file "bin\CrossLangDevStudio.exe" file "bin\av_libglesv2.dll" file "bin\libHarfBuzzSharp.dll" file "bin\libSkiaSharp.dll" file "bin\crosslang.exe" setOutPath $INSTDIR\share\Tesses\CrossLang file "share\Tesses\CrossLang\Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm" # Add any other files for the install directory (license files, app data, etc) here # Uninstaller - See function un.onInit and section "uninstall" for configuration writeUninstaller "$INSTDIR\uninstall.exe" # Start Menu createDirectory "$SMPROGRAMS\${COMPANYNAME}" createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\bin\CrossLangDevStudio.exe" "" "$INSTDIR\crosslang.ico" # Registry information for add/remove programs WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\logo.ico$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\"" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR} WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR} # There is no option for modifying or repairing the install WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1 WriteRegStr HKCR "Directory\Background\shell\${APPNAME}\command" "" "$\"$INSTDIR\bin\CrossLangDevStudio.exe$\" $\"%V$\"" 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" # Try to remove the Start Menu folder - this will only happen if it is empty rmDir "$SMPROGRAMS\${COMPANYNAME}" # Remove files delete $INSTDIR\bin\CrossLangDevStudio.exe delete $INSTDIR\crosslang.ico delete $INSTDIR\bin\av_libglesv2.dll delete $INSTDIR\bin\libHarfBuzzSharp.dll delete $INSTDIR\bin\libSkiaSharp.dll delete $INSTDIR\bin\crosslang.exe # Always delete uninstaller as the last action delete $INSTDIR\uninstall.exe delete $INSTDIR\share\Tesses\CrossLang\Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm rmDir "$INSTDIR\share\Tesses\CrossLang" rmDir "$INSTDIR\share\Tesses" rmDir "$INSTDIR\bin" rmDir "$INSTDIR\share" # Try to remove the install directory - this will only happen if it is empty rmDir $INSTDIR # Remove uninstaller information from the registry DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" sectionEnd