Initial check-in of NSIS Winboard installer files.
[xboard.git] / installer / WinBoard-4.2.7 / RePackage / WinBoard-4.2.7_full.nsi
diff --git a/installer/WinBoard-4.2.7/RePackage/WinBoard-4.2.7_full.nsi b/installer/WinBoard-4.2.7/RePackage/WinBoard-4.2.7_full.nsi
new file mode 100644 (file)
index 0000000..c151275
--- /dev/null
@@ -0,0 +1,378 @@
+; WinBoard-4.2.7 MUI
+;
+;
+
+;--------------------------------
+;Include Modern UI
+
+  !include "MUI.nsh"
+
+;--------------------------------
+
+!define InstName "WinBoard"
+!define InstVersion "4.2.7"
+!define InstBaseDir "WinBoard-4.2.7"
+
+;--------------------------------
+; General
+;
+
+Name "${InstName} ${InstVersion}"
+Caption "WinBoard - Chessboard For Windows"
+OutFile "WinBoard-4.2.7_full.exe"
+InstallDir $PROGRAMFILES\${InstBaseDir}
+
+SetCompressor lzma
+SetDateSave on
+SetDatablockOptimize on
+CRCCheck on
+SilentInstall normal
+BGGradient 000000 4682b4 FFFFFF
+;XPStyle on
+
+;--------------------------------
+;Variables
+
+  Var INI_VALUE
+  Var START_MENU_FOLDER
+  Var MUI_TEMP
+
+;--------------------------------
+
+
+;!define MUI_ICON "knight.ico"
+;!define MUI_UNICON "wc_uninst.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome_chess.bmp"
+
+;--------------------------------
+;Interface Settings
+
+       !define MUI_ABORTWARNING
+       ;!define MUI_COMPONENTSPAGE_NODESC
+       !define MUI_COMPONENTSPAGE_SMALLDESC
+       !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${InstName} ${InstVersion}.\n\n\n\n\nClick Next to continue."
+       !define MUI_LICENSEPAGE_TEXT_BOTTOM "$\nPress Continue to proceed with the installation."
+       !define MUI_LICENSEPAGE_BUTTON "Continue"
+
+;--------------------------------
+
+;--------------------------------
+; Pages
+
+       ; Install Section
+       ;--------------------------------------------------------------------
+       !insertmacro MUI_PAGE_WELCOME
+       !insertmacro MUI_PAGE_LICENSE "..\READ_ME.txt"
+       !insertmacro MUI_PAGE_COMPONENTS
+       Page custom FileAssoc
+       !insertmacro MUI_PAGE_DIRECTORY
+       
+       ;Start Menu Folder Page Configuration
+        !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
+        !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\WinBoard"
+        !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+       !insertmacro MUI_PAGE_STARTMENU Application $START_MENU_FOLDER
+       
+       !insertmacro MUI_PAGE_INSTFILES
+       !insertmacro MUI_PAGE_FINISH
+       ;--------------------------------------------------------------------
+       
+       ; Uninstall Section
+       ;
+       ;!define MUI_WELCOMEPAGE_TEXT "WARNING! THIS UNINSTALLER WILL COMPLETELY DELETE THE INSTALLATION DIRECTORY\n\n$INSTDIR !!!\n\nIF THERE ARE ANY FILES YOU WISH TO SAVE, MOVE THEM FROM THE INSTALLATION DIRECTORY FIRST!\n\n\n\nPress Next to Continue."
+       !define MUI_WELCOMEPAGE_TEXT "This will uninstall WinBoard from directory:\n\n$INSTDIR\n\n\n\nPress Next to Continue."
+       !insertmacro MUI_UNPAGE_WELCOME
+       !insertmacro MUI_UNPAGE_CONFIRM
+       !insertmacro MUI_UNPAGE_INSTFILES
+       !insertmacro MUI_UNPAGE_FINISH
+
+;--------------------------------
+;Languages
+  !insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+
+;--------------------------------
+;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)
+  
+  ReserveFile "FA.ini"
+  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+;--------------------------------
+
+Section "WinBoard Core Components" Core
+
+SectionIn 1 RO
+
+       SetOutPath $INSTDIR
+
+       File ..\bughouse.bat
+       File ..\ChangeLog
+       File ..\COPYING
+       File ..\COPYRIGHT
+       File ..\cygncurses7.dll
+       File ..\cygreadline5.dll
+       File ..\cygwin1.dll
+       File ..\FAQ.html
+       File ..\kk13.pgn
+       File ..\NEWS
+       File ..\READ_ME.txt
+       File ..\RJF60.pgn
+       File ..\timeseal.exe
+       File ..\timestamp.exe
+       File ..\winboard.exe
+       File ..\winboard.hlp
+       File ..\zippy.lines
+       File ..\zippy.README
+       
+       ;Create uninstaller
+       WriteUninstaller "$INSTDIR\UnInstall.exe"
+       
+       !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+       CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer.lnk" "$INSTDIR\winboard.exe" "-ncp" "$INSTDIR\winboard.exe" 1
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer - Bobby Fischer.lnk" "$INSTDIR\winboard.exe" "-ncp -lgf RJF60.pgn" "$INSTDIR\winboard.exe" 1
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer - Karpov vs Kasparov.lnk" "$INSTDIR\winboard.exe" "-ncp -lgf kk13.pgn" "$INSTDIR\winboard.exe" 1
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard Help.lnk" "$INSTDIR\winboard.hlp"
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Frequently Asked Questions.lnk" "$INSTDIR\FAQ.html"
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard READ_ME.lnk" "$INSTDIR\READ_ME.txt"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard UnInstall.lnk" "$INSTDIR\UnInstall.exe"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - chessclub.com.lnk" "$INSTDIR\winboard.exe"  "-ics -icshost chessclub.com -icshelper timestamp" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - freechess.org.lnk" "$INSTDIR\winboard.exe"  "-ics -icshost freechess.org -icshelper timeseal" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - Other.lnk" "$INSTDIR\winboard.exe" "-ics" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard Startup Dialog.lnk" "$INSTDIR\winboard.exe" "" "$INSTDIR\winboard.exe" 2
+       
+        !insertmacro MUI_STARTMENU_WRITE_END
+
+SectionEnd
+
+SubSection /e "Chess Engines" Engines
+
+       Section "GNU Chess 5.0" GNUChess5
+
+               SetOutPath "$INSTDIR"
+
+               File ..\book.dat
+               File ..\GNUChes5.exe
+               File ..\gnuches5.txt
+               File ..\gnuchess.dat
+               File ..\gnuchess.lan
+               File ..\gnuchess.README
+               
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+
+                !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 5.0 Documentation.lnk" "$INSTDIR\gnuches5.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 5.0.lnk" "$INSTDIR\winboard.exe" "-cp -fcp 'GNUChes5 xboard' -scp 'GNUChes5 xboard'" "$INSTDIR\winboard.exe" 2
+               
+               !insertmacro MUI_STARTMENU_WRITE_END
+
+       SectionEnd
+       
+       Section "GNU Chess 4.0" GNUChess4
+       
+                SetOutPath "$INSTDIR"
+                
+                File ..\gnuchesr.exe
+               File ..\GNUChess.exe
+               File ..\gnuchess.txt
+
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+
+               !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 4.0 Documentation.lnk" "$INSTDIR\gnuchess.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 4.0.lnk" "$INSTDIR\winboard.exe" "-cp -fcp GNUChess -scp GNUChess" "$INSTDIR\winboard.exe" 2
+               
+               !insertmacro MUI_STARTMENU_WRITE_END
+               
+         SectionEnd
+
+       Section "Crafty 19.3" Crafty
+
+               SetOutPath "$INSTDIR\Crafty"
+
+               File ..\Crafty-WinBoard\wcrafty.exe
+               File ..\Crafty-WinBoard\book.bin
+               File ..\Crafty-WinBoard\books.bin
+               File ..\Crafty-WinBoard\Crafty.rc
+               File ..\Crafty-WinBoard\crafty.doc.txt
+               
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+               
+                !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\Crafty Documentation.lnk" "$INSTDIR\Crafty\crafty.doc.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\Crafty 19.3.lnk" "$INSTDIR\winboard.exe" "-cp -fcp Crafty\wcrafty.exe -fd Crafty -scp Crafty\wcrafty.exe -sd Crafty" "$INSTDIR\winboard.exe" 2
+
+               !insertmacro MUI_STARTMENU_WRITE_END
+
+
+       SectionEnd
+
+SubSectionEnd
+
+
+;--------------------------------
+;Installer Functions
+Function .onInit
+
+  ;Extract InstallOptions INI files
+  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "FA.ini"
+  
+FunctionEnd
+
+Function FileAssoc
+
+       !insertmacro MUI_HEADER_TEXT "Windows File Associations" "Do you want to use Winboard as your viewer for the following file types?"
+       !insertmacro MUI_INSTALLOPTIONS_DISPLAY "FA.ini"
+
+       
+       ;Read a value from an InstallOptions INI file
+
+       !insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE "FA.ini" "Field 2" "State"
+  
+       ;Display a messagebox if check box was checked
+       StrCmp $INI_VALUE "1" "" CheckFEN
+       WriteRegStr HKCR ".pgn" "" "WinBoard.PGN"
+       WriteRegStr HKCR ".pgn" "Content Type" "application/x-chess-pgn"
+       WriteRegStr HKCR "WinBoard.PGN" "" "Chess Game"
+       WriteRegStr HKCR "WinBoard.PGN\DefaultIcon" "" "$INSTDIR\WinBoard.exe,1"
+       WriteRegStr HKCR "WinBoard.PGN\Shell\Open" "" "Open"
+       WriteRegStr HKCR "WinBoard.PGN\Shell\Open\command" "" '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lgf "%1"'
+       
+       CheckFEN:
+       !insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE "FA.ini" "Field 3" "State"
+  
+       ;Display a messagebox if check box was checked
+       StrCmp $INI_VALUE "1" "" Continue
+       WriteRegStr HKCR ".fen" "" "WinBoard.FEN"
+       WriteRegStr HKCR ".fen" "Content Type" "application/x-chess-fen"
+       WriteRegStr HKCR "WinBoard.FEN" "" "Chess Position"
+       WriteRegStr HKCR "WinBoard.FEN\DefaultIcon" "" "$INSTDIR\WinBoard.exe,1"
+       WriteRegStr HKCR "WinBoard.FEN\Shell\Open" "" "Open"
+       WriteRegStr HKCR "WinBoard.FEN\Shell\Open\command" "" '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lpf "%1"'
+       
+       Continue:
+
+FunctionEnd
+
+;--------------------------------
+;Descriptions
+
+  ;Language strings
+
+       LangString DESC_Core ${LANG_ENGLISH} "Winboard Core Components - Executable and Help Files"
+       LangString DESC_Engines ${LANG_ENGLISH} "Chess Engines to play against using the WinBoard Interface"
+       LangString DESC_GNUChess5 ${LANG_ENGLISH} "GNU Chess 5.0 Engine"
+       LangString DESC_GNUChess4 ${LANG_ENGLISH} "GNU Chess 4.0 Engine"
+       LangString DESC_Crafty ${LANG_ENGLISH} "Crafty 19.3 Chess Engine, by Robert Hyatt"
+
+
+  ;Assign language strings to sections
+
+  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+       !insertmacro MUI_DESCRIPTION_TEXT ${Core} $(DESC_Core)
+       !insertmacro MUI_DESCRIPTION_TEXT ${Engines} $(DESC_Engines)
+       !insertmacro MUI_DESCRIPTION_TEXT ${GNUChess5} $(DESC_GNUChess5)
+       !insertmacro MUI_DESCRIPTION_TEXT ${GNUChess4} $(DESC_GNUChess4)
+       !insertmacro MUI_DESCRIPTION_TEXT ${Crafty} $(DESC_Crafty)
+  !insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+
+;--------------------------------
+;Uninstaller Section
+
+; Function to delete install directory if non-empty on user request
+Function un.ForceDirectoryDelete
+
+         MessageBox MB_YESNO "The uninstaller was unable to delete the directory '$INSTDIR'. This is usually$\r$\ndue to user-created files such as WinBoard.ini, or other configuration files. If$\r$\nyou wish to keep your old configuration files, select No.$\r$\n$\r$\nForce deletion of install directory and all files in it?" IDNO End
+         
+         RMDir /r "$INSTDIR"
+         
+         End:
+
+FunctionEnd
+
+
+Section "Uninstall"
+
+        Delete "$INSTDIR\bughouse.bat"
+       Delete "$INSTDIR\ChangeLog"
+       Delete "$INSTDIR\COPYING"
+       Delete "$INSTDIR\COPYRIGHT"
+       Delete "$INSTDIR\cygncurses7.dll"
+       Delete "$INSTDIR\cygreadline5.dll"
+       Delete "$INSTDIR\cygwin1.dll"
+       Delete "$INSTDIR\FAQ.html"
+       Delete "$INSTDIR\kk13.pgn"
+       Delete "$INSTDIR\NEWS"
+       Delete "$INSTDIR\READ_ME.txt"
+       Delete "$INSTDIR\RJF60.pgn"
+       Delete "$INSTDIR\timeseal.exe"
+       Delete "$INSTDIR\timestamp.exe"
+       Delete "$INSTDIR\winboard.exe"
+       Delete "$INSTDIR\winboard.hlp"
+       Delete "$INSTDIR\zippy.lines"
+       Delete "$INSTDIR\zippy.README"
+        Delete "$INSTDIR\book.dat"
+       Delete "$INSTDIR\GNUChes5.exe"
+       Delete "$INSTDIR\gnuches5.txt"
+       Delete "$INSTDIR\gnuchess.dat"
+       Delete "$INSTDIR\gnuchess.lan"
+       Delete "$INSTDIR\gnuchess.README"
+        Delete "$INSTDIR\gnuchesr.exe"
+       Delete "$INSTDIR\GNUChess.exe"
+       Delete "$INSTDIR\gnuchess.txt"
+       Delete "$INSTDIR\UnInstall.exe"
+       Delete "$INSTDIR\Crafty\wcrafty.exe"
+       Delete "$INSTDIR\Crafty\book.bin"
+       Delete "$INSTDIR\Crafty\books.bin"
+       Delete "$INSTDIR\Crafty\Crafty.rc"
+       Delete "$INSTDIR\Crafty\crafty.doc.txt"
+       RMDir "$INSTDIR\Crafty"
+       RMDir "$INSTDIR"
+
+       
+       !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+       
+       RMDir /r "$SMPROGRAMS\$MUI_TEMP"
+       
+       ReadRegStr $1 HKCR ".pgn" ""
+       StrCmp $1 "WinBoard.PGN" "" DelFEN
+       ReadRegStr $1 HKCR "WinBoard.PGN\Shell\Open\command" ""
+       StrCmp $1 '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lgf "%1"' "" DelFEN
+       DeleteRegKey HKCR ".pgn"
+       DeleteRegKey HKCR "WinBoard.PGN"
+       
+       DelFEN:
+       
+       ReadRegStr $1 HKCR ".fen" ""
+       StrCmp $1 "WinBoard.FEN" "" ContDelFEN
+       ReadRegStr $1 HKCR "WinBoard.FEN\Shell\Open\command" ""
+       StrCmp $1 '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lpf "%1"' "" ContDelFEN
+       DeleteRegKey HKCR ".fen"
+       DeleteRegKey HKCR "WinBoard.FEN"
+       
+       ContDelFEN:
+       
+       DeleteRegKey HKCU "Software\WinBoard"
+       
+       
+       IfFileExists "$INSTDIR\*.*" GoDirDel Continue
+
+       GoDirDel:
+       Call un.ForceDirectoryDelete
+
+       Continue:
+
+
+SectionEnd