File:  [Public] / Amaya / amaya-wx_release.nsi
Revision 1.47: download - view: text, annotated - select for diffs
Tue Sep 8 10:57:28 2009 UTC (14 years, 9 months ago) by vatton
Branches: MAIN
CVS tags: HEAD
Remove unused function declarations
+ prepare the next release

Irene

;--------------------------------
;Include Modern UI

  !include "MUI.nsh"


;--------------------------------
;General

  ;Name and file
  !define VERSION "11.3"
  Name "Amaya"
  OutFile "amaya-WinXP-${VERSION}.exe"
  
  ;Use lzma to compress (better than zip)
  SetCompressor lzma

  ;Default installation folder
  InstallDir "$PROGRAMFILES\Amaya"
  
  ;Get installation folder from registry if available
  InstallDirRegKey HKCU "Software\Amaya" ""

;--------------------------------
;Variables


  Var STARTMENU_FOLDER
;--------------------------------
;Interface Settings

  !define MUI_ABORTWARNING

;--------------------------------
;Language Selection Dialog Settings

  ;Remember the installer language
  !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
  !define MUI_LANGDLL_REGISTRY_KEY "Software\Amaya" 
  !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"

;--------------------------------
;Pages

  !insertmacro MUI_PAGE_LICENSE "amaya\COPYRIGHT"
  !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\Amaya" 
  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
  !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER

  !insertmacro MUI_PAGE_INSTFILES
  
  !define MUI_FINISHPAGE_LINK "Visit the Amaya site for the latest news, FAQs and support"
  !define MUI_FINISHPAGE_LINK_LOCATION "http://www.w3.org/Amaya"

  !define MUI_FINISHPAGE_RUN "$INSTDIR\WindowsWX\bin\amaya.exe"
  !define MUI_FINISHPAGE_NOREBOOTSUPPORT
  
  !insertmacro MUI_PAGE_FINISH

  !insertmacro MUI_UNPAGE_CONFIRM
  !insertmacro MUI_UNPAGE_INSTFILES

;--------------------------------
;Languages

  !insertmacro MUI_LANGUAGE "English"
  !insertmacro MUI_LANGUAGE "French"
  !insertmacro MUI_LANGUAGE "German"
  !insertmacro MUI_LANGUAGE "Spanish"
  !insertmacro MUI_LANGUAGE "SimpChinese"
  !insertmacro MUI_LANGUAGE "TradChinese"
  !insertmacro MUI_LANGUAGE "Japanese"
;  !insertmacro MUI_LANGUAGE "Korean"
  !insertmacro MUI_LANGUAGE "Italian"
  !insertmacro MUI_LANGUAGE "Dutch"
;  !insertmacro MUI_LANGUAGE "Danish"
;  !insertmacro MUI_LANGUAGE "Swedish"
;  !insertmacro MUI_LANGUAGE "Norwegian"
  !insertmacro MUI_LANGUAGE "Finnish"
  !insertmacro MUI_LANGUAGE "Greek"
  !insertmacro MUI_LANGUAGE "Russian"
  !insertmacro MUI_LANGUAGE "Portuguese"
;  !insertmacro MUI_LANGUAGE "PortugueseBR"
;  !insertmacro MUI_LANGUAGE "Polish"
;  !insertmacro MUI_LANGUAGE "Ukrainian"
;  !insertmacro MUI_LANGUAGE "Czech"
;  !insertmacro MUI_LANGUAGE "Slovak"
;  !insertmacro MUI_LANGUAGE "Croatian"
;  !insertmacro MUI_LANGUAGE "Bulgarian"
  !insertmacro MUI_LANGUAGE "Hungarian"
;  !insertmacro MUI_LANGUAGE "Thai"
;  !insertmacro MUI_LANGUAGE "Romanian"
;  !insertmacro MUI_LANGUAGE "Latvian"
;  !insertmacro MUI_LANGUAGE "Macedonian"
;  !insertmacro MUI_LANGUAGE "Estonian"
  !insertmacro MUI_LANGUAGE "Turkish"
;  !insertmacro MUI_LANGUAGE "Lithuanian"
;  !insertmacro MUI_LANGUAGE "Catalan"
;  !insertmacro MUI_LANGUAGE "Slovenian"
;  !insertmacro MUI_LANGUAGE "Serbian"
;  !insertmacro MUI_LANGUAGE "SerbianLatin"
;  !insertmacro MUI_LANGUAGE "Arabic"
;  !insertmacro MUI_LANGUAGE "Farsi"
;  !insertmacro MUI_LANGUAGE "Hebrew"
;  !insertmacro MUI_LANGUAGE "Indonesian"
;  !insertmacro MUI_LANGUAGE "Mongolian"
;  !insertmacro MUI_LANGUAGE "Luxembourgish"
;  !insertmacro MUI_LANGUAGE "Albanian"

;--------------------------------
;Reserve Files
  
  ;These files should be inserted before other files in the data block
  ;Keep these lines before any File command
  ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
  
  !insertmacro MUI_RESERVEFILE_LANGDLL

;--------------------------------
;Installer Sections

Section "Amaya" SecAmaya


  SetDetailsPrint textonly
  DetailPrint "Testing supported OS..."
  SetDetailsPrint listonly

 ;XXXXXXXXXXXXXXXXXXXXXXXXXX
 ;Test the platform
 ;XXXXXXXXXXXXXXXXXXXXXXXXXX
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
   StrCmp $R0 "" lbl_notwinnt lbl_winnt
   
   ; we are not NT
   lbl_notwinnt:
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
 
    
   StrCpy $R1 $R0 3
 
   StrCmp $R1 '4.0' lbl_win32_95
   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
 
   lbl_win32_95:
     Abort "Win95 not supported"
 
   lbl_win32_98:
     Abort "Win98 not supported"
 
   lbl_win32_ME:
     Abort "WinME not supported"
 
   lbl_winnt:
     StrCpy $R1 $R0 3
     StrCpy $R0 'XP'
     Goto lbl_done
 

   lbl_done:
  ;XXXXXXXXXXXXXXXXXXXXXXXXXX

  ;This section is required : readonly mode
  SectionIn RO

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya binaries and wxWidgets DLL"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\WindowsWX\bin"
  File WindowsWX\bin\amaya.exe
  File WindowsWX\bin\wxmsw*u_xrc_vc_custom.dll
  File WindowsWX\bin\wxmsw*u_html_vc_custom.dll
  File WindowsWX\bin\wxmsw*u_core_vc_custom.dll
  File WindowsWX\bin\wxmsw*u_adv_vc_custom.dll
  File WindowsWX\bin\wxmsw*u_aui_vc_custom.dll
  File WindowsWX\bin\wxmsw*u_gl_vc_custom.dll
  File WindowsWX\bin\wxbase*u_vc_custom.dll
  File WindowsWX\bin\wxbase*u_net_vc_custom.dll
  File WindowsWX\bin\wxbase*u_xml_vc_custom.dll
  File WindowsWX\bin\thotprinter.dll

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya resources : icons, dialogues"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\resources\icons\misc"
  File resources\icons\misc\*.png
  File resources\icons\misc\*.gif
  File resources\icons\misc\*.ico
  SetOutPath "$INSTDIR\resources\icons\16x16"
  File resources\icons\16x16\*.png
  File resources\icons\16x16\*.ico
  SetOutPath "$INSTDIR\resources\icons\22x22"
  File resources\icons\22x22\*.png
  SetOutPath "$INSTDIR\resources\svg"
  File resources\svg\*.png
  File resources\svg\*.svg
  SetOutPath "$INSTDIR\resources\svg\balloons"
  File resources\svg\balloons\*.png
  File resources\svg\balloons\*.svg
  SetOutPath "$INSTDIR\resources\svg\block_arrows"
  File resources\svg\block_arrows\*.png
  File resources\svg\block_arrows\*.svg
  SetOutPath "$INSTDIR\resources\svg\chemistry"
  File resources\svg\chemistry\*.png
  File resources\svg\chemistry\*.svg
  SetOutPath "$INSTDIR\resources\svg\circuit_diagram"
  File resources\svg\circuit_diagram\*.png
  File resources\svg\circuit_diagram\*.svg
  SetOutPath "$INSTDIR\resources\svg\logic_gates"
  File resources\svg\logic_gates\*.png
  File resources\svg\logic_gates\*.svg
  SetOutPath "$INSTDIR\resources\svg\polygons_and_stars"
  File resources\svg\polygons_and_stars\*.png
  File resources\svg\polygons_and_stars\*.svg
  SetOutPath "$INSTDIR\resources\xrc"
  File resources\xrc\*.xrc

  
  SetOutPath "$INSTDIR\amaya\wxdialog"
  File amaya\wxdialog\appicon.ico
  File amaya\wxdialog\amaya.rc

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya schemas"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\amaya"
  File amaya\COPYRIGHT
  File amaya\*.png
  File amaya\*.gif
  File amaya\*.css
  File amaya\*.html*
  File amaya\*.PRS
  File amaya\*.STR
  File amaya\*.TRA
  File amaya\*.conf
  File amaya\*.en
  File amaya\*.trans*
  File amaya\*.ico
  File amaya\*.svg

  SetDetailsPrint textonly
  DetailPrint "Installing annotlib schemas"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\annotlib"
  File annotlib\*.png
  File annotlib\*.gif
  File annotlib\*.PRS
  File annotlib\*.STR
  File annotlib\*.TRA
  File annotlib\*.en

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya config files"
  SetDetailsPrint listonly


  SetOutPath "$INSTDIR\config"
  File config\*-amayadialogue
  File config\*-libdialogue
  File config\*-amayamsg
  File config\*-libdialogue
  File config\fonts.*
  File config\amaya.kb
  File config\amaya.profiles
  File config\*.rdf
  File config\*.css
  File config\annot.schemas
  File config\win-thot.rc
  File config\rdfa.dat
  File config\rdfa_list.dat

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya dictionnaries"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\dicopar"
  File dicopar\alphabet
  File dicopar\*.ptn
  File dicopar\clavier
  File dicopar\*.dic

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya documentation"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\doc\WX"
  File doc\WX\*
  SetOutPath "$INSTDIR\doc\WX\HTML-elements"
  File doc\WX\HTML-elements\*
  SetOutPath "$INSTDIR\doc\images"
  File doc\images\*

  SetDetailsPrint textonly
  DetailPrint "Installing Amaya ttf fonts"
  SetDetailsPrint listonly

  SetOutPath "$INSTDIR\fonts"
  File fonts\*

  SetDetailsPrint textonly
  DetailPrint "Writting registry keys"
  SetDetailsPrint listonly

  ;Store installation folder
  WriteRegStr HKCU "Software\Amaya" "" $INSTDIR 
  WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "UninstallString" '"$INSTDIR\Uninstall.exe"'
  WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "InstallLocation" "$INSTDIR"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "DisplayName" "Amaya"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "DisplayIcon" "$INSTDIR\WindowsWX\bin\amaya.exe"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "DisplayVersion" "${VERSION}"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya" "URLInfoAbout" "http://www.w3.org/Amaya"

  ; Associate files to amaya
  WriteRegStr HKCR "Amaya" "" "Amaya Files"
  WriteRegStr HKCR "Amaya\DefaultIcon" "" "$INSTDIR\WindowsWX\bin\amaya.exe"
  ReadRegStr $R0 HKCR "Amaya\shell\open\command" ""
  StrCmp $R0 "" 0 no_amayaopen
    WriteRegStr HKCR "Amaya\shell" "" "open"
    WriteRegStr HKCR "Amaya\shell\open\command" "" '"$INSTDIR\WindowsWX\bin\amaya.exe" "%1"'
  no_amayaopen:
  
  ;Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"

  ;Install Amaya for all users
  SetShellVarContext all

  ;Start Menu
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application   
    ;Create shortcuts
    CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Amaya.lnk" "$INSTDIR\WindowsWX\bin\amaya.exe"
  !insertmacro MUI_STARTMENU_WRITE_END

  ;Create desktop link
  CreateShortCut "$DESKTOP\Amaya.lnk" "$INSTDIR\WindowsWX\bin\amaya.exe"

  ;register extension files
  WriteRegStr HKCR ".xtd" "" "XTD"
  WriteRegStr HKCR ".xtl" "" "XTL"
  WriteRegStr HKCR ".svg" "" "SVG"
  WriteRegStr HKCR ".mml" "" "MML"
  WriteRegStr HKCR ".html" "" "HTML"
  WriteRegStr HKCR ".htm" "" "HTM"
  WriteRegStr HKCR "XTD\Shell\Action2" "" "edit"
  WriteRegStr HKCR "XTD\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
  WriteRegStr HKCR "XTL\Shell\Action2" "" "edit"
  WriteRegStr HKCR "XTL\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
  WriteRegStr HKCR "SVG\Shell\Action2" "" "edit"
  WriteRegStr HKCR "SVG\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
  WriteRegStr HKCR "MML\Shell\Action2" "" "edit"
  WriteRegStr HKCR "MML\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
  WriteRegStr HKCR "HTML\Shell\Action2" "" "edit"
  WriteRegStr HKCR "HTML\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
  WriteRegStr HKCR "HTM\Shell\Action2" "" "edit"
  WriteRegStr HKCR "HTM\Shell\Action2\command" "" '$INSTDIR\WindowsWX\bin\amaya.exe "%1"'
SectionEnd


SubSection "File association" SecFileAss

; --> .html
Section /o ".html (HyperText Markup Language)" SecAssHTML
  ReadRegStr $R0 HKCR ".html" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".html" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".html" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .htm
Section /o ".htm (HyperText Markup Language)" SecAssHTM
  ReadRegStr $R0 HKCR ".htm" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".htm" "AM_OLD_VALUE" $R0
    WriteRegStr HKCR ".htm" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .xml
Section /o ".xml (eXtensible Markup Language)" SecAssXML
  ReadRegStr $R0 HKCR ".xml" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".xml" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".xml" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .svg
Section /o ".svg (Scalable Vector Graphics)" SecAssSVG
  ReadRegStr $R0 HKCR ".svg" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".svg" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".svg" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .mml
Section /o ".mml (MathML)" SecAssMML
  ReadRegStr $R0 HKCR ".mml" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".mml" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".mml" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .css
Section /o ".css (Cascading Style Sheets)" SecAssCSS
  ReadRegStr $R0 HKCR ".css" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".css" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".css" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .xtd
Section /o ".xtd (XTiger Template)" SecAssXTD
  ReadRegStr $R0 HKCR ".xtd" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".xtd" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".xtd" "" "Amaya"
  allready_amaya:
SectionEnd

; --> .xtl
Section /o ".xtl (XTiger Library)" SecAssXTL
  ReadRegStr $R0 HKCR ".xtl" ""
  StrCmp $R0 "Amaya" allready_amaya no_amaya
  no_amaya:
    WriteRegStr HKCR ".xtl" "AM_OLD_VALUE" $R0
  WriteRegStr HKCR ".xtl" "" "Amaya"
  allready_amaya:
SectionEnd

SubSectionEnd

;--------------------------------
;Installer Functions

Function .onInit

  !insertmacro MUI_LANGDLL_DISPLAY

FunctionEnd

;--------------------------------
;Descriptions

  ;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGAUGE SPECIFIC

  ;Assign descriptions to sections
  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
    !insertmacro MUI_DESCRIPTION_TEXT ${SecAmaya} "Install main Amaya program (mandatory)."
    !insertmacro MUI_DESCRIPTION_TEXT ${SecFileAss} "Selects Amaya as the default application for files of these types."
  !insertmacro MUI_FUNCTION_DESCRIPTION_END

;--------------------------------
;Uninstaller Section

Section "Uninstall"

  SetDetailsPrint textonly
  DetailPrint "Uninstalling Amaya..."
  SetDetailsPrint listonly

  IfFileExists $INSTDIR\WindowsWX\bin\amaya.exe amaya_installed
    MessageBox MB_YESNO "It does not appear that Amaya is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES amaya_installed
    Abort "Uninstall aborted by user"
  amaya_installed:


  SetDetailsPrint textonly
  DetailPrint "Deleting Files..."
  SetDetailsPrint listonly
  ;Uninstall Amaya for all users
  SetShellVarContext all
  
  ReadRegStr $STARTMENU_FOLDER HKCU "Software\Amaya" "Start Menu Folder"
  IfFileExists "$SMPROGRAMS\$STARTMENU_FOLDER\Amaya.lnk" amaya_smp_installed
    Goto amaya_smp_notinstalled
  amaya_smp_installed:
  Delete "$SMPROGRAMS\$STARTMENU_FOLDER\Amaya.lnk"
  Delete "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk"
  RMDir "$SMPROGRAMS\$STARTMENU_FOLDER"
  Delete "$DESKTOP\Amaya.lnk"
  amaya_smp_notinstalled:

  RMDir /r "$INSTDIR"

  SetDetailsPrint textonly
  DetailPrint "Deleting Registry Keys..."
  SetDetailsPrint listonly

  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Amaya"
  DeleteRegKey HKLM "Software\Amaya"
  DeleteRegKey HKCR "Amaya"
  DeleteRegKey HKCU "Software\Amaya"
  ; uninstall files associations
  ; --> .html
  ReadRegStr $R0 HKCR ".html" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".html" "AM_OLD_VALUE"
    WriteRegStr HKCR ".html" "" $R0
  ; --> .htm
  ReadRegStr $R0 HKCR ".htm" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".htm" "AM_OLD_VALUE"
    WriteRegStr HKCR ".htm" "" $R0
  ; --> .css
  ReadRegStr $R0 HKCR ".css" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".css" "AM_OLD_VALUE"
    WriteRegStr HKCR ".css" "" $R0
  ; --> .svg
  ReadRegStr $R0 HKCR ".svg" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".svg" "AM_OLD_VALUE"
    WriteRegStr HKCR ".svg" "" $R0
  ; --> .mml
  ReadRegStr $R0 HKCR ".mml" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".mml" "AM_OLD_VALUE"
    WriteRegStr HKCR ".mml" "" $R0
  ; --> .xml
  ReadRegStr $R0 HKCR ".xml" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".xml" "AM_OLD_VALUE"
    WriteRegStr HKCR ".xml" "" $R0
  ; --> .xtd
  ReadRegStr $R0 HKCR ".xtd" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".xtd" "AM_OLD_VALUE"
    WriteRegStr HKCR ".xtd" "" $R0
  ; --> .xtl
  ReadRegStr $R0 HKCR ".xtl" ""
  StrCmp $R0 "Amaya" 0 +3
    ReadRegStr $R0 HKCR ".xtl" "AM_OLD_VALUE"
    WriteRegStr HKCR ".xtl" "" $R0

SectionEnd

;--------------------------------
;Uninstaller Functions

Function un.onInit

  !insertmacro MUI_UNGETLANGUAGE
  
FunctionEnd

Webmaster