aboutsummaryrefslogtreecommitdiff
path: root/system/python/spyce/spyce.nsi.in
diff options
context:
space:
mode:
Diffstat (limited to 'system/python/spyce/spyce.nsi.in')
-rw-r--r--system/python/spyce/spyce.nsi.in208
1 files changed, 208 insertions, 0 deletions
diff --git a/system/python/spyce/spyce.nsi.in b/system/python/spyce/spyce.nsi.in
new file mode 100644
index 0000000000..1005f7a59e
--- /dev/null
+++ b/system/python/spyce/spyce.nsi.in
@@ -0,0 +1,208 @@
+; spyce.nsi
+; Spyce Installer (NSIS script)
+
+;#####################################
+;VERSION
+
+!define VERSION __VERSION__
+!define RELEASE __RELEASE__
+
+;#####################################
+;DEFINES
+
+!define NAME Spyce
+!define NAME_SMALL spyce
+!define Desc "Spyce - Python Server Pages"
+!define REG_PROG "SOFTWARE\${NAME}"
+!define REG_UNINST "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}"
+!define PYTHON "python.exe"
+!define REG_PYTHONLOC "${REG_PROG}"
+
+!define COMPILE 1
+
+;#####################################
+;OPTIONS
+
+OutFile "${NAME_SMALL}-${VERSION}.exe"
+InstallDir $PROGRAMFILES\${NAME_SMALL}
+InstallDirRegKey HKLM ${REG_PROG} "location"
+
+Name "${NAME}"
+Caption "${NAME} Windows Installer"
+UninstallCaption "${NAME} Windows Uninstaller"
+DirText "${NAME} Windows Installer"
+ComponentText "${NAME} Windows Installer"
+CompletedText "${NAME} Windows Installer is finished"
+UninstallText "${NAME} Windows Uninstaller"
+BrandingText " "
+
+CRCCheck on
+AutoCloseWindow true
+EnabledBitmap misc/one-check.bmp
+DisabledBitmap misc/one-nocheck.bmp
+ShowInstDetails show
+ShowUninstDetails show
+;BGGradient
+SilentUnInstall silent
+Icon misc\pics\spyce-border.ico ; MUST contain a 32x32x16 color icon
+UninstallIcon misc\pics\spyce-border.ico
+WindowIcon on
+SetOverwrite on
+SetCompress auto
+SetDatablockOptimize on
+SetDateSave off
+
+;#####################################
+;SECTIONS
+
+Section "${NAME} engine"
+ ReadRegStr $9 HKLM ${REG_PYTHONLOC} "python"
+ SetOutPath $INSTDIR
+ ; create and register uninstaller
+ WriteUninstaller "uninstall.exe"
+ WriteRegStr HKLM ${REG_PROG} "location" "$INSTDIR"
+ WriteRegStr HKLM "${REG_UNINST}" "DisplayName" "${NAME}: ${DESC} (remove only)"
+ WriteRegStr HKLM "${REG_UNINST}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+
+ ; copy spyce engine files
+ File *.py
+ File CHANGES LICENCE README THANKS spyceApache.conf spyce.conf.eg misc\pics\spyce.ico spyce.mime
+ SetOutPath "$INSTDIR\modules"
+ File modules\*.py
+ SetOutPath "$INSTDIR\tags"
+ File tags\*.py
+ SetOutPath -
+ ; pre-compile the sources
+ !ifdef COMPILE
+ DetailPrint "Compile Spyce sources."
+ ExecWait `"$9" "$INSTDIR\spyceParser.py"`
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--py=$INSTDIR"`
+ ;ExecWait `"$9" -OO "$INSTDIR\installHelper.py" "--py=$INSTDIR"`
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--py=$INSTDIR\modules"`
+ ;ExecWait `"$9" -OO "$INSTDIR\installHelper.py" "--py=$INSTDIR\modules"`
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--py=$INSTDIR\tags"`
+ ;ExecWait `"$9" -OO "$INSTDIR\installHelper.py" "--py=$INSTDIR\tags"`
+ !endif
+SectionEnd
+
+Section "${NAME} documentation"
+ SectionIn RO
+ ReadRegStr $9 HKLM ${REG_PYTHONLOC} "python"
+ ; copy Spyce documentation files
+ SetOutPath "$INSTDIR\docs"
+ File docs\*.spy docs\*.gif
+ SetOutPath "$INSTDIR\docs\examples"
+ File docs\examples\*.spy docs\examples\*.spi docs\examples\*.tmpl docs\examples\*.py docs\examples\*.gif
+ SetOutPath "$INSTDIR\docs\inc"
+ File docs\inc\*.spi
+ SetOutPath -
+ ; compile documentation
+ !ifdef COMPILE
+ DetailPrint "Compile Spyce documentation."
+ ExecWait `"$9" "$INSTDIR\run_spyceCmd.py" "-O" "$INSTDIR\docs\*.spy"`
+ !endif
+SectionEnd
+
+SectionDivider "Options"
+
+Section "Create start menu shortcuts"
+ CreateDirectory "$SMPROGRAMS\${NAME}"
+ CreateShortCut "$SMPROGRAMS\${NAME}\Spyce Documentation.lnk" "$INSTDIR\docs\index.html" "" "$INSTDIR\spyce.ico"
+ CreateShortCut "$SMPROGRAMS\${NAME}\Spyce Documentation -- localhost.lnk" "http://localhost/spyce/" "" ""
+ CreateShortCut "$SMPROGRAMS\${NAME}\Spyce Online.lnk" "http://spyce.sf.net/" "" ""
+ CreateShortCut "$SMPROGRAMS\${NAME}\Spyce Examples.lnk" "$INSTDIR\docs\examples" "" "$INSTDIR\spyce.ico"
+ CreateShortCut "$SMPROGRAMS\${NAME}\Uninstall Spyce.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+SectionEnd
+
+Section "Create shell extensions"
+ WriteRegStr HKCR ".spy" "" "SpyceFile"
+ WriteRegStr HKCR "SpyceFile" "" "Spyce dynamic HTML file"
+ WriteRegStr HKCR "SpyceFile\DefaultIcon" "" $INSTDIR\spyce.ico,0
+ WriteRegStr HKCR "SpyceFile\shell\open\command" "" 'notepad.exe "%1"'
+ WriteRegStr HKCR "SpyceFile\shell\compile" "" "Compile Spyce"
+ WriteRegStr HKCR "SpyceFile\shell\compile\command" "" '"$9" "$INSTDIR\run_spyceCmd.py" -O "%1"'
+ WriteRegStr HKCR "SpyceFile\shell" "" "compile"
+SectionEnd
+
+Section "Configure Apache"
+ DetailPrint "Configuring Apache..."
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--apache=$INSTDIR"`
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--apacheRestart"`
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$\nApache reconfigured and restarted.$\nIf everything is ok, you should be able to browse to: http://localhost/spyce/$\nIf not, please check your httpd.conf file and/or restart Apache."
+
+SectionEnd
+
+
+Section "Uninstall"
+ ReadRegStr $9 HKLM ${REG_PYTHONLOC} "python"
+ DetailPrint "Unconfiguring Apache..."
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--apacheUN"`
+ ExecWait `"$9" "$INSTDIR\installHelper.py" "--apacheRestart"`
+ RMDir /r "$INSTDIR"
+ RMDir /r "$SMPROGRAMS\${NAME}"
+ DeleteRegKey HKLM ${REG_UNINST}
+ DeleteRegKey HKLM ${REG_PROG}
+ DeleteRegKey HKCR ".spy"
+ DeleteRegKey HKCR "SpyceFile"
+SectionEnd
+
+;#####################################
+;FUNCTIONS
+
+Function detectPython
+ ; see if there is any python interpreter
+ ClearErrors
+ ExecShell "open" "${PYTHON}" `-c "print 'Python is alive!'"` SW_SHOWMINIMIZED
+ IfErrors 0 NoAbort
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Unable to find Python interpreter. Please install Python first."
+ Abort
+ NoAbort:
+ ; find out where it is
+ GetTempFileName $9
+ GetTempFileName $8
+ FileOpen $7 $9 w
+ FileWrite $7 'import sys$\n'
+ FileWrite $7 "f=open(r'$8', 'w')$\n"
+ FileWrite $7 'f.write(sys.executable)$\n'
+ FileWrite $7 'f.close()$\n'
+ FileClose $7
+ ExecShell "open" "${PYTHON}" `"$9"` SW_SHOWMINIMIZED
+ IntOp $0 0 + 0
+ Loop:
+ FileOpen $7 $8 r
+ FileRead $7 $6
+ FileClose $7
+ StrCmp $6 "" 0 EndLoop
+ Sleep 100
+ IntOp $0 $0 + 1
+ IntCmp $0 50 EndLoop
+ Goto Loop
+ EndLoop:
+ Delete $9
+ StrCpy $9 "$6" ; put the python path in $9 -- GLOBAL
+ StrCmp $9 "" 0 NoAbort2
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Mechanism for discovering Python path via sys.executable did not work.$\nSorry, but automatic installation is unable to proceed. Please contact the author."
+ Abort
+ NoAbort2:
+ WriteRegStr HKLM ${REG_PYTHONLOC} "python" "$9"
+FunctionEnd
+
+Function .onInit
+ Call detectPython
+FunctionEnd
+
+Function .onInstSuccess
+ DetailPrint "Spyce successfully installed."
+ MessageBox MB_OK "Spyce successfully installed."
+ ExecShell "open" "$INSTDIR\docs\index.html" SW_SHOWMAXIMIZED
+FunctionEnd
+
+Function un.onInit
+ MessageBox MB_YESNO|MB_ICONQUESTION "Are you sure that you want to uninstall Spyce?" IDYES NoAbort
+ Abort
+ NoAbort:
+FunctionEnd
+
+Function un.onUninstSuccess
+ MessageBox MB_OK "Spyce successfully uninstalled."
+FunctionEnd