2006-07-26 Steve Hall <digitect@mindspring.org>
* windows/nsis/gramps-build.bat: Add windows building scripts. * windows/nsis/gramps.nsi: Add windows building scripts. * windows/nsis/gcheck.py: Add windows building scripts. * windows/nsis/ped24.ico: Add windows icon. svn: r7082
This commit is contained in:
431
gramps2/windows/nsis/gramps.nsi
Normal file
431
gramps2/windows/nsis/gramps.nsi
Normal file
@@ -0,0 +1,431 @@
|
||||
#
|
||||
# Filename: gramps.nsi
|
||||
#
|
||||
# Description: Nullsoft Installer (NSIS) file to build Windows installer:
|
||||
# Updated: 2006-07-26 13:12:28-0400
|
||||
# Author: Steve Hall [ digitect dancingpaper com ]
|
||||
#
|
||||
# Requires: NSIS version 2.0 or later.
|
||||
# Notes:
|
||||
# o WARNING: if you make changes to this script, look out for $INSTDIR
|
||||
# to be valid, because this line is very dangerous: RMDir /r $INSTDIR
|
||||
# o WARNING: Except the uninstaller. That re-paths for some reason.
|
||||
#
|
||||
|
||||
# Installer Attributes
|
||||
# 0. Base Settings {{{1
|
||||
|
||||
# version numbers
|
||||
!define GRAMPS_VER_MAJOR $%VERSION%
|
||||
!define GRAMPS_VER_MINOR $%VERSIONSUB%
|
||||
!define GRAMPS_VER_POINT $%VERSIONPT%
|
||||
|
||||
# adds Native Language Support
|
||||
!define HAVE_NLS
|
||||
|
||||
# output file
|
||||
Name "GRAMPS"
|
||||
OutFile gramps-${GRAMPS_VER_MAJOR}.${GRAMPS_VER_MINOR}.${GRAMPS_VER_POINT}.exe
|
||||
|
||||
# self ensure we don't have a corrupted file
|
||||
CRCCheck on
|
||||
|
||||
# compression
|
||||
SetCompress auto
|
||||
# zlib good, bzip2 better, lzma best (and slowest, whew.)
|
||||
SetCompressor lzma
|
||||
# reference existing store if possible
|
||||
SetDatablockOptimize on
|
||||
# UPX
|
||||
# comment next line if you don't have UPX (http://upx.sourceforge.net)
|
||||
!packhdr temp.dat "upx --best --compress-icons=0 temp.dat"
|
||||
|
||||
# don't allow installation into C:\
|
||||
AllowRootDirInstall false
|
||||
|
||||
# install details color scheme
|
||||
InstallColors /windows
|
||||
# background
|
||||
BGGradient off
|
||||
|
||||
# adds an XP manifest
|
||||
XPStyle on
|
||||
|
||||
# default install path
|
||||
InstallDir $PROGRAMFILES\gramps
|
||||
|
||||
# Remember install folder
|
||||
InstallDirRegKey HKCU "Software\${MUI_PRODUCT}" ""
|
||||
|
||||
# Remember the installer language
|
||||
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_LANGDLL_REGISTRY_KEY "Software\${MUI_PRODUCT}"
|
||||
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
|
||||
|
||||
# types of installs we can perform
|
||||
InstType Typical
|
||||
InstType Minimal
|
||||
InstType Full
|
||||
|
||||
SilentInstall normal
|
||||
|
||||
# 1. Header file (Begin Modern User Interface) {{{1
|
||||
!include "MUI.nsh"
|
||||
|
||||
|
||||
# 2. Interface Configuration {{{1
|
||||
|
||||
# installer/uninstaller icons (these must match in size!)
|
||||
#!define MUI_ICON "classic-install.ico"
|
||||
#!define MUI_UNICON "classic-uninstall.ico"
|
||||
|
||||
# splash, header graphics (same for both!)
|
||||
!define MUI_HEADERIMAGE
|
||||
#!define MUI_HEADERIMAGE_BITMAP "win.bmp"
|
||||
#!define MUI_WELCOMEFINISHPAGE_BITMAP "nsis-splash.bmp"
|
||||
|
||||
!define MUI_LICENSEPAGE_BUTTON $(^AgreeBtn)
|
||||
!define MUI_LICENSEPAGE_RADIOBUTTONS
|
||||
!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT $(^AcceptBtn)
|
||||
!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE $(^DontAcceptBtn)
|
||||
|
||||
#!define MUI_COMPONENTSPAGE_CHECKBITMAP "nsis-checkboxes.bmp"
|
||||
# use small description box below components (not adjacent)
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
|
||||
!define MUI_DIRECTORYPAGE_TEXT_TOP $(^DirText)
|
||||
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION $(^DirBrowseText)
|
||||
!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
|
||||
|
||||
!define MUI_FINISHPAGE_RUN "python"
|
||||
!define MUI_FINISHPAGE_RUN_PARAMETERS "$\"$INSTDIR\gramps.py$\""
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
# 3. Pages {{{1
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
|
||||
!insertmacro MUI_PAGE_LICENSE "..\COPYING"
|
||||
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
|
||||
# Uninstaller
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
# 4. Custom functions {{{1
|
||||
|
||||
# 5. Language files {{{1
|
||||
|
||||
# Languages
|
||||
# TODO: These are pretty badly broken at the moment.
|
||||
# Note: This appears to be due to building on Win95 which does not
|
||||
# support Unicode:
|
||||
# (http://nsis.sf.net/archive/nsisweb.php?page=247&instances=0,235)
|
||||
#
|
||||
# So what happens if we use only ASCII?
|
||||
#
|
||||
#!insertmacro MUI_LANGUAGE "Arabic"
|
||||
#!insertmacro MUI_LANGUAGE "Bulgarian"
|
||||
#!insertmacro MUI_LANGUAGE "Catalan"
|
||||
#!insertmacro MUI_LANGUAGE "Croatian"
|
||||
#!insertmacro MUI_LANGUAGE "Czech"
|
||||
!insertmacro MUI_LANGUAGE "Danish"
|
||||
#!insertmacro MUI_LANGUAGE "Default"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
#!insertmacro MUI_LANGUAGE "Estonian"
|
||||
#!insertmacro MUI_LANGUAGE "Farsi"
|
||||
#!insertmacro MUI_LANGUAGE "Finnish"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
#!insertmacro MUI_LANGUAGE "Greek"
|
||||
#!insertmacro MUI_LANGUAGE "Hebrew"
|
||||
#!insertmacro MUI_LANGUAGE "Hungarian"
|
||||
#!insertmacro MUI_LANGUAGE "Indonesian"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
#!insertmacro MUI_LANGUAGE "Japanese"
|
||||
#!insertmacro MUI_LANGUAGE "Korean"
|
||||
#!insertmacro MUI_LANGUAGE "Latvian"
|
||||
#!insertmacro MUI_LANGUAGE "Lithuanian"
|
||||
#!insertmacro MUI_LANGUAGE "Macedonian"
|
||||
#!insertmacro MUI_LANGUAGE "Norwegian"
|
||||
#!insertmacro MUI_LANGUAGE "Polish"
|
||||
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||
#!insertmacro MUI_LANGUAGE "Romanian"
|
||||
#!insertmacro MUI_LANGUAGE "Russian"
|
||||
#!insertmacro MUI_LANGUAGE "Serbian"
|
||||
#!insertmacro MUI_LANGUAGE "SerbianLatin"
|
||||
#!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||
#!insertmacro MUI_LANGUAGE "Slovak"
|
||||
#!insertmacro MUI_LANGUAGE "Slovenian"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
#!insertmacro MUI_LANGUAGE "Swedish"
|
||||
#!insertmacro MUI_LANGUAGE "Thai"
|
||||
#!insertmacro MUI_LANGUAGE "TradChinese"
|
||||
#!insertmacro MUI_LANGUAGE "Turkish"
|
||||
#!insertmacro MUI_LANGUAGE "Ukrainian"
|
||||
|
||||
# 6. Reserve Files {{{1
|
||||
|
||||
# 1}}}
|
||||
# 7a. Sections
|
||||
# Program Files {{{1
|
||||
######################################################################
|
||||
|
||||
Section "Program files (required)" Main
|
||||
SectionIn 1 2 3 RO
|
||||
|
||||
Call WarnDirExists
|
||||
|
||||
SetOutPath $INSTDIR
|
||||
File /r ..\src\*.*
|
||||
#File /r ..\nsis\gramps.ico
|
||||
|
||||
SectionEnd
|
||||
|
||||
# Icons, menus and shortcuts {{{1
|
||||
|
||||
SubSection "Icons, menus and shortcuts" MenusAndIcons
|
||||
|
||||
Section "Add GRAMPS to the Start Menu" MenuStart
|
||||
SectionIn 1 3
|
||||
# determines "Start In" location for shortcuts
|
||||
SetOutPath $INSTDIR
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\GRAMPS\"
|
||||
CreateShortCut "$SMPROGRAMS\GRAMPS\GRAMPS.lnk" "$3" "$\"$INSTDIR\gramps.py$\"" "$INSTDIR\images\ped24.ico" "0" "" "" "GRAMPS"
|
||||
WriteINIStr "$SMPROGRAMS\GRAMPS\GRAMPS Website.url" "InternetShortcut" "URL" "http://www.gramps-project.org/"
|
||||
CreateShortCut "$SMPROGRAMS\GRAMPS\Uninstall GRAMPS.lnk" "$\"$INSTDIR\uninstall.exe$\"" "" "" "0" "" "" "Uninstall GRAMPS"
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Add Desktop icon" Desktop
|
||||
#SectionIn 1 3
|
||||
# determines "Start In" location for shortcuts
|
||||
SetOutPath $INSTDIR
|
||||
CreateShortCut "$DESKTOP\GRAMPS.lnk" "$3" "$\"$INSTDIR\gramps.py$\"" "$INSTDIR\images\ped24.ico" "0" "" "" "GRAMPS"
|
||||
SectionEnd
|
||||
|
||||
SubSectionEnd
|
||||
|
||||
# Uninstall {{{1
|
||||
######################################################################
|
||||
|
||||
Section Uninstall
|
||||
|
||||
# ask first
|
||||
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 \
|
||||
"Completely remove installation? $\n\
|
||||
(Delete folder $INSTDIR ) " \
|
||||
IDNO unQuit IDYES unContinue
|
||||
|
||||
unQuit:
|
||||
Abort
|
||||
|
||||
unContinue:
|
||||
ClearErrors
|
||||
RMDir /r $INSTDIR
|
||||
Call un.StartMenu
|
||||
Call un.Desktop
|
||||
|
||||
unEnd:
|
||||
|
||||
SectionEnd
|
||||
|
||||
# 1}}}
|
||||
# 7b. Functions
|
||||
# Installer {{{1
|
||||
#####################################################################
|
||||
|
||||
Function .onInit
|
||||
|
||||
; test for dependencies
|
||||
MessageBox MB_OK "Testing dependencies..."
|
||||
|
||||
; look for python.exe
|
||||
; NOTE: This is set to $3 if it exists.
|
||||
|
||||
; on path
|
||||
SearchPath $3 python.exe
|
||||
#MessageBox MB_OK "DEBUG: Testing python.exe on path...$\n$\nFound: $\"$3$\""
|
||||
IfFileExists $3 HavePython 0
|
||||
|
||||
; registry keys (these are confirmed possibilities)
|
||||
; reg key
|
||||
ReadRegStr $3 HKCR 'Applications\python.exe\shell\open\command' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKLM 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKLM 'SOFTWARE\Python\PythonCore\2.4' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKLM 'SOFTWARE\Python\PythonCore\2.4\InstallPath' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCR 'Python.File\shell\open\command' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCU 'Software\Classes\Python.File\shell\open\command' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCU 'Software\Microsoft\Windows\Current version\App Paths\Python.exe' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCU 'Software\Microsoft\Windows\ShellNoRoam\MUICache (data:python)' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCU 'Software\Python\PythonCore\2.4\InstallPath' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
; reg key
|
||||
ReadRegStr $3 HKCU 'Software\Python\PythonCore\2.4\PythonPath' ""
|
||||
StrCpy $3 "$3python.exe" ; append "python.exe"
|
||||
IfFileExists $3 HavePython 0
|
||||
|
||||
|
||||
; TODO: request path from user/browse (can NSIS do this?)
|
||||
MessageBox MB_OK "Python not found, unable to continue."
|
||||
Abort
|
||||
HavePython:
|
||||
|
||||
; extract gcheck
|
||||
SetOutPath $TEMP
|
||||
#MessageBox MB_OK "DEBUG: $$TEMP location found:$\n$\n $TEMP"
|
||||
File gcheck.py
|
||||
; set INI output location ($1)
|
||||
StrCpy $1 "$TEMP\gramps-install.ini"
|
||||
#MessageBox MB_OK "DEBUG: Attempting to run:$\n$\n $\"$3$\" $TEMP\gcheck.py $1"
|
||||
; run gcheck
|
||||
Exec '"$3" $TEMP\gcheck.py $1'
|
||||
|
||||
; Note The Exec above is a fork, meaning the following file test
|
||||
; will fail because it happens faster than the Exec can run
|
||||
; to create it!
|
||||
DetailPrint "pausing..."
|
||||
Sleep 1000
|
||||
|
||||
|
||||
; verify INI created
|
||||
IfFileExists $1 YesINI 0
|
||||
MessageBox MB_OK "Dependency test INI creation failed, unable to continue."
|
||||
Abort
|
||||
YesINI:
|
||||
|
||||
; verify environment test results
|
||||
; GTK+
|
||||
ReadINIStr $0 $1 tests gtk
|
||||
StrCmp $0 "yes" HaveGTK 0
|
||||
MessageBox MB_OK "GTK+ not installed, unable to continue."
|
||||
Abort
|
||||
HaveGTK:
|
||||
; pygtk
|
||||
ReadINIStr $0 $1 tests pygtk
|
||||
StrCmp $0 "yes" Havepygtk 0
|
||||
MessageBox MB_OK "pygtk not installed, unable to continue."
|
||||
Abort
|
||||
Havepygtk:
|
||||
; glade
|
||||
ReadINIStr $0 $1 tests glade
|
||||
StrCmp $0 "yes" Haveglade 0
|
||||
MessageBox MB_OK "glade not installed, unable to continue."
|
||||
Abort
|
||||
Haveglade:
|
||||
; pycairo
|
||||
ReadINIStr $0 $1 tests pycairo
|
||||
StrCmp $0 "yes" Havepycairo 0
|
||||
MessageBox MB_OK "pycairo not installed, unable to continue."
|
||||
Abort
|
||||
Havepycairo:
|
||||
|
||||
#!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
# default install directory ($INSTDIR)
|
||||
StrCpy $INSTDIR $PROGRAMFILES\gramps
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstSuccess
|
||||
# write uninstaller
|
||||
WriteUninstaller $INSTDIR\uninstall.exe
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstFailed
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "Installation failed."
|
||||
FunctionEnd
|
||||
|
||||
Function WarnDirExists
|
||||
# warn if dir already exists
|
||||
IfFileExists $INSTDIR\*.* DirExists DirExistsOK
|
||||
DirExists:
|
||||
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 \
|
||||
"Install over existing?" \
|
||||
IDYES DirExistsOK
|
||||
Quit
|
||||
DirExistsOK:
|
||||
FunctionEnd
|
||||
|
||||
|
||||
# Uninstaller {{{1
|
||||
#####################################################################
|
||||
|
||||
Function un.onUnInstSuccess
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function un.StartMenu
|
||||
|
||||
IfFileExists "$SMPROGRAMS\GRAMPS" 0 unStartMenuFine
|
||||
RMDir /r "$SMPROGRAMS\GRAMPS\"
|
||||
unStartMenuFine:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function un.Desktop
|
||||
|
||||
IfFileExists "$DESKTOP\GRAMPS.lnk" 0 unNoDesktop
|
||||
Delete "$DESKTOP\GRAMPS.lnk"
|
||||
unNoDesktop:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
# 1}}}
|
||||
# 8. Section Descriptions {{{1
|
||||
######################################################################
|
||||
# (must be last)
|
||||
|
||||
LangString DESC_Main ${LANG_ENGLISH} "Main program files (required)."
|
||||
LangString DESC_MenusAndIcons ${LANG_ENGLISH} "General Desktop and Start Menu shortcut options."
|
||||
LangString DESC_Desktop ${LANG_ENGLISH} "Add icon to the Desktop."
|
||||
LangString DESC_MenuStart ${LANG_ENGLISH} "Add icons to the Start Menu."
|
||||
LangString DESC_Prog ${LANG_ENGLISH} "GRAMPS..."
|
||||
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${Main} $(DESC_Main)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${MenusAndIcons} $(DESC_MenusAndIcons)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${Desktop} $(DESC_Desktop)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${MenuStart} $(DESC_MenuStart)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${Prog} $(DESC_Prog)
|
||||
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
# 1}}}
|
||||
# vim:foldmethod=marker:noexpandtab
|
Reference in New Issue
Block a user