USRP Interfaces Installer Script

From SpenchWiki
Jump to: navigation, search

This is the installer script for the ExtIO_USRP + BorIP installer:

/*
	- In all text settings, the doublequote character (") should be escaped in the following form: $\"
*//*
http://nsis.sourceforge.net/Creating_language_files_and_integrating_with_MUI

GetDLLVersion "MyApp.exe" $R0 $R1
IntOp $R2 $R0 >> 16
IntOp $R2 $R2 & 0x0000FFFF ; $R2 now contains major version
IntOp $R3 $R0 & 0x0000FFFF ; $R3 now contains minor version
IntOp $R4 $R1 >> 16
IntOp $R4 $R4 & 0x0000FFFF ; $R4 now contains release
IntOp $R5 $R1 & 0x0000FFFF ; $R5 now contains build
StrCpy $0 "$R2.$R3.$R4.$R5" ; $0 now contains string like "1.2.0.192"
*/
!include "MUI2.nsh"

!define /date TIMESTAMP "%Y-%m-%d-%H-%M-%S"

SetCompressor lzma
RequestExecutionLevel admin

!define MUI_ABORTWARNING
!define MUI_ABORTWARNING_CANCEL_DEFAULT

!define MUI_UNABORTWARNING
!define MUI_UNABORTWARNING_CANCEL_DEFAULT

!define MUI_ICON						"spench-arrow.ico"	#"${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP	"Wizard.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP	"${MUI_WELCOMEFINISHPAGE_BITMAP}"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP			"Header.bmp"

!define MUI_UNICON "spench-uninstall-arrow.ico"	#"${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall-nsis.ico"

#######################################

!define PRODUCT_NAME		"ExtIO_USRP+FCD+RTL2832U + BorIP"
!define PRODUCT_VERSION		"1.4"
!define PRODUCT_PUBLISHER	"balint@spench.net"
!define MAIN_COMMENT		"ExtIO_USRP+FCD plugin for Winrad-compatible SDR receivers && BorIP USRP+FCD Server"

!define UNINSTALLER			"Uninstall ${PRODUCT_NAME}.exe"

!define BORIP				"BorIP"
!define EXTIO_USRP			"ExtIO_USRP"	# Used for DLL file title

!define MAIN_WWW			"http://spench.net/r/USRP_Interfaces"
!define MAIN_RUN_KEY_NAME	"${BORIP}"
!define MAIN_REG			"Software\Baz's Appz\Installations\${PRODUCT_NAME}"
!define MAIN_REG_UNINSTALL	"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define MAIN_DLL			"${EXTIO_USRP}.dll"
!define MAIN_EXE			"${BORIP}.exe"

#######################################

BrandingText "${PRODUCT_NAME} ${PRODUCT_VERSION} by ${PRODUCT_PUBLISHER}"
Name "${PRODUCT_NAME}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_Setup.exe"

InstallDir "<Read the above info>"	# "$PROGRAMFILES\<Read the above info>"
InstallDirRegKey HKCU "${MAIN_REG}" "InstallationDir"
!define DOWNLOAD_LOCATION	"$INSTDIR\Downloaded"

ShowInstDetails show
ShowUninstDetails show

#DirText ""
# If string was continued on new line using '\' then it would overwrite "Destination Folder" group control text

Var StartMenuFolder
#Var MainFolder

#Page Directory
#Page InstFiles

#######################################

	!define MUI_WELCOMEPAGE_TITLE "Installer for ${PRODUCT_NAME} ${PRODUCT_VERSION}"
	!define MUI_WELCOMEPAGE_TITLE_3LINES # Extra space for the title area
	!define MUI_WELCOMEPAGE_TEXT "The ExtIO_USRP+FCD+RTL2832U plugin will allow you to use your USRP/FCD hardware with the Winrad-series of SDR applications.$\n$\nBorIP will allow you to do this remotely over a network.$\n$\nData from both can be sent to other applications, such as the UDP Source block in GNU Radio/GRC.$\n$\nPress Next to continue."
!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_PAGE_LICENSE "License.rtf"

	!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_COMPONENTS

	!define MUI_DIRECTORYPAGE_TEXT_TOP	"- If you want to use the ExtIO plugin (and optionally BorIP), select your EXISTING ExtIO-compatible SDR receiver's installation folder (where you installed HDSDR/etc).$\n$\n- If you are performing a FRESH install of the receiver app (i.e. it is not yet installed), create the receiver directory below and select the same one during installation of the receiver itself.$\n$\n- If you ONLY want to use BorIP, create a new folder of your choice."
	!define MUI_DIRECTORYPAGE_VARIABLE	$INSTDIR	# $MainFolder
!insertmacro MUI_PAGE_DIRECTORY

	!define MUI_STARTMENUPAGE_DEFAULTFOLDER			"${PRODUCT_NAME}"
	!define MUI_STARTMENUPAGE_REGISTRY_ROOT			"HKCU"
	!define MUI_STARTMENUPAGE_REGISTRY_KEY			"${MAIN_REG}"
	!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME	"ShortcutDir"
!insertmacro MUI_PAGE_STARTMENU MainShortcuts $StartMenuFolder

	!define MUI_INSTFILESPAGE_COLORS	"00FF00 000000"
!insertmacro MUI_PAGE_INSTFILES

	!define MUI_FINISHPAGE_NOAUTOCLOSE	# ShowInstDetails
!ifdef MAIN_EXE	
	!define MUI_FINISHPAGE_RUN
#	!define MUI_FINISHPAGE_RUN_NOTCHECKED
    !define MUI_FINISHPAGE_RUN_TEXT			"Start ${BORIP}"
    !define MUI_FINISHPAGE_RUN_FUNCTION		"Launch_Main"
!endif
	!define MUI_FINISHPAGE_SHOWREADME				"${MAIN_WWW}"
#	!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
	!define MUI_FINISHPAGE_SHOWREADME_TEXT			"Open instructions (recommended)"
#	!define MUI_FINISHPAGE_SHOWREADME_FUNCTION		"Launch_WWW"

	!define MUI_FINISHPAGE_LINK					"${PRODUCT_NAME} Homepage"
	!define MUI_FINISHPAGE_LINK_LOCATION		"${MAIN_WWW}"
	
	!define MUI_FINISHPAGE_NOREBOOTSUPPORT	# Saves some space
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

	!define MUI_UNFINISHPAGE_NOAUTOCLOSE	# ShowUninstDetails
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"

#######################################

VIProductVersion "1.0.0.0"

VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "1.0.0.0"
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "${MAIN_COMMENT}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "spench.net"
#VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Test Application is a trademark of Fake company"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© Balint Seeber 2011. All rights reserved."
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_NAME} (${TIMESTAMP})"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "InternalName" "${TIMESTAMP}"
#VIAddVersionKey /LANG=${LANG_ENGLISH} "OriginalFilename" ""
#VIAddVersionKey /LANG=${LANG_ENGLISH} "PrivateBuild" ""
VIAddVersionKey /LANG=${LANG_ENGLISH} "SpecialBuild" "Beta"

###############################################################################

SectionGroup /e "Support files" secSupport

Section "libusb (libwdi Zadig v1.1.1.139)" secLibUSB
	SetOutPath $INSTDIR
!define ZADIG_EXE	"zadig.exe"
	File ${ZADIG_EXE}
	MessageBox MB_YESNO|MB_ICONQUESTION "If you haven't installed libusb drivers before for your USRP using Zadig,$\nit is recommended you read a quick guide on how to do it properly.$\n$\nOpen the guide before launching Zadig?" IDYES open_guide IDNO continue
open_guide:
	ExecShell "open" "http://spench.net/r/USRP_Zadig"
continue:
	!insertmacro MUI_STARTMENU_WRITE_BEGIN MainShortcuts
		CreateDirectory	"$SMPROGRAMS\$StartMenuFolder"
		CreateShortCut	"$SMPROGRAMS\$StartMenuFolder\Zadig.lnk" "$\"$INSTDIR\${ZADIG_EXE}$\"" "" "" "" "" "" "Configure libusb drivers"
	!insertmacro MUI_STARTMENU_WRITE_END
	ExecWait "$INSTDIR\${ZADIG_EXE}"
SectionEnd

LangString desc_secLibUSB ${LANG_ENGLISH} "Install drivers required to access USB-based USRPs (i.e. USRP 1)"

!define RUNTIME_FILE		"${DOWNLOAD_LOCATION}\vcredist_x86_2008_sp1.exe"

Section /o "VC++ Runtime (2008 SP1)" secRuntime
	AddSize 4119
	SetOutPath ${DOWNLOAD_LOCATION}	# Download is placed in installation directory
	NSISdl::download "http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe" "${RUNTIME_FILE}"
		Pop $R0 ;Get the return value
		StrCmp $R0 "success" install
			MessageBox MB_YESNO|MB_ICONEXCLAMATION "Download failed: $R0$\n$\n${PRODUCT_NAME} may not run until this component is correctly installed.$\n$\nDo you wish to continue?" IDYES true IDNO false
			true:
				Goto finish
			false:
				Abort "Download failed: $R0"
install:
	ExecWait "${RUNTIME_FILE}"	# FIXME: Silent install?
finish:
	#ExecShell "open" "http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en"
	#MessageBox MB_OK|MB_ICONINFORMATION "The Microsoft download site has been opened.$\n$\nPlease click OK once you have installed the runtime."
SectionEnd

LangString desc_secRuntime ${LANG_ENGLISH} "Runtime for C++ and MFC 9.0 SP1 (will be downloaded from Microsoft)"

SectionGroupEnd

LangString desc_secSupport ${LANG_ENGLISH} "Support files - if you unsure you already have a component, you should install it anyway (it is safe)"

###############################################################################

Section "!${PRODUCT_NAME}" secMain
	#SetShellVarContext all

	# call userInfo plugin to get user info.  The plugin puts the result in the stack
    #userInfo::getAccountType
    # pop the result from the stack into $0
    #pop $0
    # compare the result with the string "Admin" to see if the user is admin.
    # If match, jump 3 lines down.
    #strCmp $0 "Admin" +3

	SetOutPath $INSTDIR

	#Rename "$INSTDIR" "$INSTDIR.${PRODUCT_VERSION}.${TIMESTAMP}"	# Create backup if already exists
	
	File "C:\Program Files\Sound\HDSDR\Release\${MAIN_DLL}"
	File "Release\${MAIN_EXE}"
	
	File "Release\libusb-1.0.dll"
	File "Release\libusrp.dll"
	File "Release\librtl2832++.dll"
	File "Release\uhd.dll"
	#File "Release\usrp1_fw.ihx"
	#File "Release\usrp1_fpga.rbf"
	#File "Release\usrp1_fpga_4rx.rbf"
	File "D:\Dev\usrp-images\*.*"
	File /r "Release\rev4"
	
	FindFirst $0 $1 "$SYSDIR\libusb0.dll"
	FindClose $0
	StrCmp $1 "" install_libusb0
	Goto skip_libusb0
install_libusb0:
		MessageBox MB_YESNO|MB_ICONINFORMATION "libusb0.dll was not found in your Windows System directory.$\nThis is likely due to you either choosing a libusb1 driver, or not installing any driver at all.$\n$\nlibusb0.dll must be found by this software for it to work.$\n$\nIf you are going to install a libusb0 (NOT libusb1) driver, and therefore libusb0.dll, using the included libusb installer, or manually, select 'No'.$\n$\nIf you don't know what this means (or are using libusb1 drivers only), select 'Yes'. This will install a local copy." IDYES install_libusb0_file IDNO skip_libusb0
install_libusb0_file:		
		File "/oname=libusb0.dll" "C:\Dev\SDK\libusb0\bin\x86\libusb0_x86.dll"
skip_libusb0:
	
	WriteRegStr HKCU "${MAIN_REG}" "InstallationDir" "$INSTDIR"

	writeUninstaller "$INSTDIR\${UNINSTALLER}"
	
	!insertmacro MUI_STARTMENU_WRITE_BEGIN MainShortcuts
		CreateDirectory	"$SMPROGRAMS\$StartMenuFolder"
		CreateShortCut	"$SMPROGRAMS\$StartMenuFolder\${BORIP}.lnk" "$\"$INSTDIR\${MAIN_EXE}$\"" "" "" "" "" "" "Start ${BORIP} server"
		#CreateShortCut	"$SMPROGRAMS\$StartMenuFolder\Stop iTunes plugin.lnk" "rundll32.exe" "$\"$INSTDIR\${MAIN_DLL}$\",Quit iTunes" "" "" "" "" "Stop the NISRP plugin for iTunes (it will no longer appear when running iTunes)"
		CreateShortCut	"$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\${UNINSTALLER}"
	!insertmacro MUI_STARTMENU_WRITE_END

	WriteRegStr		HKLM "${MAIN_REG_UNINSTALL}" "DisplayName" "${PRODUCT_NAME}"
	WriteRegStr		HKLM "${MAIN_REG_UNINSTALL}" "UninstallString" "$\"$INSTDIR\${UNINSTALLER}$\""
	WriteRegStr		HKLM "${MAIN_REG_UNINSTALL}" "Publisher" "spench.net"
	WriteRegStr		HKLM "${MAIN_REG_UNINSTALL}" "URLInfoAbout" "${MAIN_WWW}"
	WriteRegDWORD	HKLM "${MAIN_REG_UNINSTALL}" "NoModify" 1
	WriteRegDWORD	HKLM "${MAIN_REG_UNINSTALL}" "NoRepair" 1
	WriteRegStr		HKLM "${MAIN_REG_UNINSTALL}" "DisplayIcon" "$\"$INSTDIR\${UNINSTALLER}$\""
SectionEnd

LangString desc_secMain ${LANG_ENGLISH} "${MAIN_COMMENT}"

SectionGroup /e "Settings" secSettings

!ifdef MAIN_RUN_KEY_NAME
Section /o "Autorun BorIP" secAutorun_Main
	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${MAIN_RUN_KEY_NAME}" "$\"$INSTDIR\${MAIN_EXE}$\" /autorun"
SectionEnd

LangString desc_secAutorun_Main ${LANG_ENGLISH} "Automatically start BorIP when you log on"
!endif # MAIN_RUN_KEY_NAME

SectionGroupEnd

LangString desc_secSettings ${LANG_ENGLISH} "Settings you can configure at installation time"

###############################################################################

SectionGroup /e "Download an SDR receiver application" secSDR

Section /o "!HDSDR (download latest)" secSDR_HDSDR
	AddSize 911	# v2.0	# Download is placed in installation directory
	SetOutPath ${DOWNLOAD_LOCATION}
	NSISdl::download "http://www.hdsdr.de/download/HDSDR_install.exe" "${DOWNLOAD_LOCATION}\HDSDR_install.exe"
		Pop $R0 ;Get the return value
		StrCmp $R0 "success" install
			MessageBox MB_YESNO|MB_ICONEXCLAMATION "Download failed: $R0$\n$\nDo you wish to continue?" IDYES true IDNO false
			true:
				Goto finish
			false:
				Abort "Download failed: $R0"
install:
	ExecWait "${DOWNLOAD_LOCATION}\HDSDR_install.exe"
finish:
SectionEnd

LangString desc_secSDR_HDSDR ${LANG_ENGLISH} "Download && install HDSDR"

Section /o "Winrad (download v1.6.1)" secSDR_Winrad
	AddSize 850
	SetOutPath ${DOWNLOAD_LOCATION}	# Download is placed in installation directory
	NSISdl::download "http://www.winrad.org/bin/Winrad161.msi" "${DOWNLOAD_LOCATION}\Winrad161.msi"
		Pop $R0 ;Get the return value
		StrCmp $R0 "success" install
			MessageBox MB_YESNO|MB_ICONEXCLAMATION "Download failed: $R0$\n$\nDo you wish to continue?" IDYES true IDNO false
			true:
				Goto finish
			false:
				Abort "Download failed: $R0"
install:
	ExecWait "msiexec.exe /i $\"${DOWNLOAD_LOCATION}\Winrad161.msi$\""
finish:
SectionEnd

LangString desc_secSDR_Winrad ${LANG_ENGLISH} "Download && install Winrad"

SectionGroupEnd

LangString desc_secSDR ${LANG_ENGLISH} "If you don't already have an SDR receiver application, download && install one to use ExtIO_USRP"

###############################################################################

Function .onSelChange
	#MessageBox MB_OK "Changed"
FunctionEnd

###############################################################################

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${secMain} $(desc_secMain)
  !insertmacro MUI_DESCRIPTION_TEXT ${secRuntime} $(desc_secRuntime)
!ifdef MAIN_RUN_KEY_NAME
  !insertmacro MUI_DESCRIPTION_TEXT ${secAutorun_Main} $(desc_secAutorun_Main)
!endif # MAIN_RUN_KEY_NAME
  !insertmacro MUI_DESCRIPTION_TEXT ${secSettings} $(desc_secSettings)
  !insertmacro MUI_DESCRIPTION_TEXT ${secLibUSB} $(desc_secLibUSB)
  !insertmacro MUI_DESCRIPTION_TEXT ${secSupport} $(desc_secSupport)
  !insertmacro MUI_DESCRIPTION_TEXT ${secSDR} $(desc_secSDR)
  !insertmacro MUI_DESCRIPTION_TEXT ${secSDR_Winrad} $(desc_secSDR_Winrad)
  !insertmacro MUI_DESCRIPTION_TEXT ${secSDR_HDSDR} $(desc_secSDR_HDSDR)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

!ifdef MAIN_EXE
Function Launch_Main
	# Single quote ' not used since args are not passed properly (however won't work on Win98?)
	Exec "$\"$INSTDIR\${MAIN_EXE}$\""
FunctionEnd
!endif # MAIN_EXE

Function .onInit
	#Banner::show #"Starting installer..."
	
#	!insertmacro MUI_LANGDLL_DISPLAY

	#StrCpy $MainFolder $INSTDIR

	ClearErrors
	#StrCpy $0 0
	EnumRegValue $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0" 0 #$0
	IfErrors no_runtime_check_xp
	#IntOp $0 $0 + 1
	#ReadRegStr $2 HKLM Software\Microsoft\Windows\CurrentVersion $1
	Goto skip_runtime	# Runtime is present
no_runtime_check_xp:
	ClearErrors
	EnumRegKey $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375" 0 #$0
	IfErrors no_runtime
	Goto skip_runtime
no_runtime:
	IntOp $0 ${SF_SELECTED} | ${SF_RO}
	SectionSetFlags ${secRuntime} $0
skip_runtime:

	#Banner::destroy
FunctionEnd

#######################################

#Page uninstConfirm	# Cannot use this as it appears in the installer too

# create a section to define what the uninstaller does.
# the section will always be named "Uninstall"
Section "Uninstall" secUninstall
	#SetShellVarContext all

	#DetailPrint "Exiting SoftMicroswitchFix..."
	#ExecWait "$\"$INSTDIR\${MAIN_EXE}$\" /quit"
 
	Delete "$INSTDIR\${UNINSTALLER}"	# Always delete uninstaller first
	
borip_delete:	
	Delete "$INSTDIR\${MAIN_EXE}"
	IfErrors borip_is_running
	Goto borip_continue
borip_is_running:
	MessageBox MB_YESNO|MB_ICONEXCLAMATION "Failed to delete BorIP.exe$\n$\nThis may be because it is still running.$\n$\nWould you like to try deleting it again?" IDYES borip_delete IDNO borip_continue
borip_continue:
	Delete "$INSTDIR\${MAIN_DLL}"
	
	Delete "$INSTDIR\libusb-1.0.dll"
	Delete "$INSTDIR\libusrp.dll"
	Delete "$INSTDIR\librtl2832++.dll"
	Delete "$INSTDIR\uhd.dll"
	RMDir /r "$INSTDIR\rev4"
	Delete "$INSTDIR\libusb0.dll"
	Delete "$INSTDIR\zadig.exe"
	
	#Delete "$INSTDIR\usrp1_fw.ihx"
	#Delete "$INSTDIR\usrp1_fpga.rbf"
	#Delete "$INSTDIR\usrp1_fpga_4rx.rbf"
	RMDir /r "$INSTDIR\bit"
	Delete "$INSTDIR\*.bin"
	Delete "$INSTDIR\*.ihx"
	Delete "$INSTDIR\*.rbf"
	Delete "$INSTDIR\*.tag"
	
	IfFileExists "${DOWNLOAD_LOCATION}" 0 continue
		MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the files the installer downloaded from:$\n$\n${DOWNLOAD_LOCATION}" IDYES true IDNO continue
true:
		RMDir /r "${DOWNLOAD_LOCATION}"
continue:
	RMDir "$INSTDIR"	# Silent failure (leave files that remain)
	
	!insertmacro MUI_STARTMENU_GETFOLDER MainShortcuts $StartMenuFolder
	Delete	"$SMPROGRAMS\$StartMenuFolder\${BORIP}.lnk"
	Delete	"$SMPROGRAMS\$StartMenuFolder\Zadig.lnk"
	Delete	"$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
	RMDir	"$SMPROGRAMS\$StartMenuFolder"	#/r

!ifdef MAIN_RUN_KEY_NAME
	DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${MAIN_RUN_KEY_NAME}"
!endif # MAIN_RUN_KEY_NAME

	DeleteRegKey HKLM "${MAIN_REG_UNINSTALL}"
	
/*	MessageBox MB_YESNO|MB_ICONQUESTION "Would you also like to remove your preferences?" IDYES remove_prefs IDNO finish
remove_prefs:
	DeleteRegKey HKCU "${MAIN_REG}\Settings"
finish:
*/	DeleteRegKey /ifempty HKCU "${MAIN_REG}"
SectionEnd

Function un.onInit
#	!insertmacro MUI_UNGETLANGUAGE
FunctionEnd