Scripts for generating a self-installer program under Windows using NSIS

This commit is contained in:
jjgarcia 2004-06-19 13:29:20 +00:00
parent 4d138ee755
commit e2f12299e9
3 changed files with 130 additions and 0 deletions

View file

@ -178,6 +178,12 @@ windows-dist: all
cd build; rm -rf $(TAR_DIR); mkdir $(TAR_DIR); \
$(MAKE) flatinstall prefix=`pwd`/$(TAR_DIR); \
zip -r $(TAR_DIR).zip $(TAR_DIR)
windows-nsi: all
cd build; rm -rf $(TAR_DIR); mkdir $(TAR_DIR); \
$(MAKE) flatinstall prefix=`pwd`/$(TAR_DIR)
`pwd`/src/util/ecl_nsi.sh `pwd`/src/util/ecl.nsi build/$(TAR_DIR)
makensis.exe build/$(TAR_DIR)/ecl.nsi
mv build/$(TAR_DIR)/Setup.exe ecl-$(VERSION).exe
dist:
cd dist; make-dist

103
src/util/ecl.nsi Normal file
View file

@ -0,0 +1,103 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "ECL"
!define PRODUCT_VERSION "0.9d"
!define PRODUCT_PUBLISHER "Juan Jose Garcia Ripoll"
!define PRODUCT_WEB_SITE "http://ecls.sourceforge.net"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\ecl.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define ECLDIR "@ECLDIR@"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "${ECLDIR}\doc\Copyright"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\ecl.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\ECL"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Section "Hauptgruppe" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "${ECLDIR}\ecl.exe"
CreateDirectory "$SMPROGRAMS\ECL"
CreateShortCut "$SMPROGRAMS\ECL\ECL.lnk" "$INSTDIR\ecl.exe"
CreateShortCut "$DESKTOP\ECL.lnk" "$INSTDIR\ecl.exe"
!@INSTALLFILES@
SectionEnd
Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\ECL\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\ECL\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\ecl.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\ecl.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) has been succesfully deinstalled."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you really want to deinstall $(^Name)?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
!@DELETEFILES@
Delete "$INSTDIR\ecl.exe"
Delete "$SMPROGRAMS\ECL\Uninstall.lnk"
Delete "$SMPROGRAMS\ECL\Website.lnk"
Delete "$DESKTOP\ECL.lnk"
Delete "$SMPROGRAMS\ECL\ECL.lnk"
RMDir "$SMPROGRAMS\ECL"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

21
src/util/ecl_nsi.sh Executable file
View file

@ -0,0 +1,21 @@
#!/bin/sh
source=$1
where=$2
cd $where
dest=ecl.nsi
where=`pwd -W`
echo $where
set -x
sed -e '/!@INSTALLFILES@/,$d' -e "s,@ECLDIR@,$where," $source > $dest
find . -type f -maxdepth 1 | sed -e '/^\.$/d;s,^./,,g;s,/,\\,g;'\
-e 's,^\(.*\)$, File "${ECLDIR}\\\1",g' >> $dest
find . -type d -maxdepth 1 | grep -v ecl.exe | grep -v ecl.nsi | \
sed -e '/^\.$/d;s,^./,,g;s,/,\\,g;' \
-e 's,^\(.*\)$, File /r "${ECLDIR}\\\1",g' >> $dest
sed '1,/!@INSTALLFILES@/d;/!@DELETEFILES@/,$d' $source >> $dest
find . -type f -maxdepth 1 | sed -e '/^\.$/d;s,^./,,g;s,/,\\,g;'\
-e 's,^\(.*\)$, Delete "$INSTDIR\\\1",g' >> $dest
find . -type d -maxdepth 1 | grep -v ecl.exe | grep -v ecl.nsi | \
sed -e '/^\.$/d;s,^./,,g;s,/,\\,g;' \
-e 's,^\(.*\)$, RMDir /r "$INSTDIR\\\1",g' >> $dest
sed '1,/!@DELETEFILES@/d' $source >> $dest