Scripts for generating a self-installer program under Windows using NSIS
This commit is contained in:
parent
4d138ee755
commit
e2f12299e9
3 changed files with 130 additions and 0 deletions
|
|
@ -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
103
src/util/ecl.nsi
Normal 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
21
src/util/ecl_nsi.sh
Executable 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
|
||||
Loading…
Add table
Reference in a new issue