From de982b4d3e9c7e6b6f100e383d647f0edc9321a3 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 12 Aug 2012 21:50:36 +0100 Subject: fix windows build format specifiers add install target for windows - creates installer rather than actually installing --- windows/Makefile.target | 12 ++++ windows/NetSurfInstaller.nsi | 94 ------------------------------ windows/main.c | 2 +- windows/res/installer.nsi | 133 +++++++++++++++++++++++++++++++++++++++++++ windows/res/internal.css | 1 + windows/res/netsurf.png | 1 + windows/res/welcome.html | 1 + 7 files changed, 149 insertions(+), 95 deletions(-) delete mode 100644 windows/NetSurfInstaller.nsi create mode 100644 windows/res/installer.nsi create mode 120000 windows/res/internal.css create mode 120000 windows/res/netsurf.png create mode 120000 windows/res/welcome.html (limited to 'windows') diff --git a/windows/Makefile.target b/windows/Makefile.target index e9922660f..f19d3ac68 100644 --- a/windows/Makefile.target +++ b/windows/Makefile.target @@ -71,3 +71,15 @@ S_WINDOWS := $(addprefix windows/,$(S_WINDOWS)) # are not yet available SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_WINDOWS) $(S_RESOURCES) EXETARGET := NetSurf.exe + +# ---------------------------------------------------------------------------- +# Install target +# ---------------------------------------------------------------------------- + +install-windows: netsurf-installer.exe + +WIN_RES_OBJ := installer.nsi NetSurf.ico netsurf.png welcome.html default.css messages +WIN_RES_INS_OBJ := $(addprefix windows/res/,$(WIN_RES_OBJ)) + +netsurf-installer.exe: $(EXETARGET) $(WIN_RES_INS_OBJ) + makensis -V4 -NOCD windows/res/installer.nsi diff --git a/windows/NetSurfInstaller.nsi b/windows/NetSurfInstaller.nsi deleted file mode 100644 index c52b5c4e9..000000000 --- a/windows/NetSurfInstaller.nsi +++ /dev/null @@ -1,94 +0,0 @@ -; install script for nullsoft msi installer creation -; debian package name nsis -; paths may need adapting according to local settings -; for release, would really need to compile source tree too -Page license -Page directory -Page instfiles -; install directory $INSTDIR = $PROGRAMFILES\NetSurf -; install resources $PROGRAMFILES\NetSurf\res -; install dlls $SYSDIR=%SystemRoot%\System[32] -SetCompressor lzma -InstallDir "$PROGRAMFILES\NetSurf" -LicenseData ../COPYING ; \n -> \r\n -Name NetSurf -OutFile NetSurfInstall.exe -Icon ../windows/res/NetSurf32.ico -XPStyle on -Section - SetShellVarContext all - SetOutPath $SYSDIR - File /usr/local/mingw/bin/libeay32.dll - File /usr/local/mingw/bin/libcurl-4.dll - File /usr/local/mingw/bin/libiconv-2.dll - File /usr/local/mingw/bin/ssleay32.dll - File /usr/local/mingw/bin/libgnurx-0.dll - File /usr/local/mingw/bin/libxml2-2.dll - File /usr/local/mingw/bin/libpng12.dll - File /usr/local/mingw/bin/libjpeg.dll - IfFileExists "$INSTDIR\*.*" +2 - CreateDirectory "$INSTDIR" - SetOutPath $INSTDIR - File ../NetSurf.exe - IfFileExists "$INSTDIR\res\*.*" +2 - CreateDirectory "$INSTDIR\res" - SetOutPath $INSTDIR\res - File ../windows/res/default.css - File ../windows/res/quirks.css - File ../windows/res/messages - File ../windows/res/preferences - File ../windows/res/*.bmp - File ../windows/res/*.ico - File ../windows/res/throbber.avi - IfFileExists $SMPROGRAMS\NetSurf\NetSurf.lnk +2 - CreateDirectory "$SMPROGRAMS\NetSurf" - CreateShortCut "$SMPROGRAMS\NetSurf\NetSurf.lnk" "$INSTDIR\NetSurf.exe" "" "$INSTDIR\res\NetSurf32.ico" - IfFileExists "$INSTDIR\src\*.*" +2 - CreateDirectory "$INSTDIR\src" - SetOutPath "$INSTDIR\src" - File ../Makefile - File ../Makefile.config - File ../Makefile.config.example - File ../Makefile.defaults - File ../Makefile.sources - File ../Makefile.resources - IfFileExists "$INSTDIR\src\content\*.*" +2 - CreateDirectory "$INSTDIR\src\content" - SetOutPath "$INSTDIR\src\content" - File /r /x .svn ../content/*.c - File /r /x .svn ../content/*.h - IfFileExists "$INSTDIR\src\css\*.*" +2 - CreateDirectory "$INSTDIR\src\css" - SetOutPath "$INSTDIR\src\css" - File /r /x .svn ../css/*.c - File /r /x .svn ../css/*.h - IfFileExists "$INSTDIR\src\desktop\*.*" +2 - CreateDirectory "$INSTDIR\src\desktop" - SetOutPath "$INSTDIR\src\desktop" - File /r /x .svn ../desktop/*.c - File /r /x .svn ../desktop/*.h - IfFileExists "$INSTDIR\src\image\*.*" +2 - CreateDirectory "$INSTDIR\src\image" - SetOutPath "$INSTDIR\src\image" - File /r /x .svn ../image/*.c - File /r /x .svn ../image/*.h - IfFileExists "$INSTDIR\src\render\*.*" +2 - CreateDirectory "$INSTDIR\src\render" - SetOutPath "$INSTDIR\src\render" - File /r /x .svn ../render/*.c - File /r /x .svn ../render/*.h - IfFileExists "$INSTDIR\src\utils\*.*" +2 - CreateDirectory "$INSTDIR\src\utils" - SetOutPath "$INSTDIR\src\utils" - File /r /x .svn ../utils/*.c - File /r /x .svn ../utils/*.h - IfFileExists "$INSTDIR\src\windows\*.*" +2 - CreateDirectory "$INSTDIR\src\windows" - SetOutPath "$INSTDIR\src\windows" - File /r /x .svn ../windows/*.c - File /r /x .svn ../windows/*.h - IfFileExists "$INSTDIR\src\Docs\*.*" +2 - CreateDirectory "$INSTDIR\src\Docs" - SetOutPath "$INSTDIR\src\Docs" - File /r /x .svn ../Docs/*.* -SectionEnd diff --git a/windows/main.c b/windows/main.c index 6d2179a9e..6fbf40174 100644 --- a/windows/main.c +++ b/windows/main.c @@ -119,7 +119,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd) argctemp++; } - respaths = nsws_init_resource("${APPDATA}\\NetSurf:${HOME}\\.netsurf:${NETSURFRES}:${PROGRAMFILES}\\NetSurf\\res:"NETSURF_WINDOWS_RESPATH); + respaths = nsws_init_resource("${APPDATA}\\NetSurf:${HOME}\\.netsurf:${NETSURFRES}:${PROGRAMFILES}\\NetSurf\\NetSurf\\:"NETSURF_WINDOWS_RESPATH); messages = filepath_find(respaths, "messages"); diff --git a/windows/res/installer.nsi b/windows/res/installer.nsi new file mode 100644 index 000000000..9f146873a --- /dev/null +++ b/windows/res/installer.nsi @@ -0,0 +1,133 @@ +# This installs NetSurf execuatables and resources, creates a start menu shortcut, builds an uninstaller, and +# adds uninstall information to the registry for Add/Remove Programs + +# show up in a few places. +# All the other settings can be tweaked by editing the !defines at the top of this script +!define APPNAME "NetSurf" +!define COMPANYNAME "NetSurf" +!define DESCRIPTION "Web Browser" +# These three must be integers +!define VERSIONMAJOR 3 +!define VERSIONMINOR 0 +!define VERSIONBUILD 1 +# These will be displayed by the "Click here for support information" link in "Add/Remove Programs" +# It is possible to use "mailto:" links in here to open the email client +!define HELPURL "http://www.netsurf-browser.org/" # "Support Information" link +!define UPDATEURL "http://www.netsurf-browser.org/" # "Product Updates" link +!define ABOUTURL "http://www.netsurf-browser.org/" # "Publisher" link +# This is the size (in kB) of all the files copied into "Program Files" +!define INSTALLSIZE 9000 + +RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) + +InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}" + +# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n) +LicenseData "COPYING" +# This will be in the installer/uninstaller's title bar +Name "${COMPANYNAME} - ${APPNAME}" +Icon "windows\res\NetSurf.ico" +outFile "netsurf-installer.exe" +BrandingText "${COMPANYNAME}" + +!include LogicLib.nsh + +# Just three pages - license agreement, install location, and installation +page license +page directory +Page instfiles + +!macro VerifyUserIsAdmin +UserInfo::GetAccountType +pop $0 +${If} $0 != "admin" ;Require admin rights on NT4+ + messageBox mb_iconstop "Administrator rights required!" + setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED + quit +${EndIf} +!macroend + +function .onInit + setShellVarContext all + !insertmacro VerifyUserIsAdmin +functionEnd + +section "install" + # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file) + setOutPath $INSTDIR + # Files added here should be removed by the uninstaller (see section "uninstall") + file "NetSurf.exe" + file /oname=NetSurf.ico "windows\res\NetSurf.ico" + file /oname=libcares-2.dll "/opt/netsurf/i686-w64-mingw32/env/bin/libcares-2.dll" + file /oname=libgnurx-0.dll "/opt/netsurf/i686-w64-mingw32/env/bin/libgnurx-0.dll" + file /oname=default.css "windows\res\default.css" + file /oname=welcome.html "windows\res\welcome.html" + file /oname=netsurf.png "windows\res\netsurf.png" + file /oname=messages "windows\res\messages" + # Add any other files for the install directory (license files, app data, etc) here + + # Uninstaller - See function un.onInit and section "uninstall" for configuration + writeUninstaller "$INSTDIR\uninstall.exe" + + # Start Menu + createDirectory "$SMPROGRAMS\${COMPANYNAME}" + createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\NetSurf.exe" "" "$INSTDIR\NetSurf.ico" + + # Registry information for add/remove programs + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\NetSurf.ico$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "HelpLink" "$\"${HELPURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\"" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR} + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR} + # There is no option for modifying or repairing the install + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1 + # Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" ${INSTALLSIZE} +sectionEnd + +# Uninstaller + +function un.onInit + SetShellVarContext all + + #Verify the uninstaller - last chance to back out + MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next + Abort + next: + !insertmacro VerifyUserIsAdmin +functionEnd + +section "uninstall" + + # Remove Start Menu launcher + delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" + # Try to remove the Start Menu folder - this will only happen if it is empty + rmDir "$SMPROGRAMS\${COMPANYNAME}" + + # Remove files + delete $INSTDIR\NetSurf.exe + delete $INSTDIR\NetSurf.ico + delete $INSTDIR\libcares-2.dll + delete $INSTDIR\libgnurx-0.dll + delete $INSTDIR\default.css + delete $INSTDIR\welcome.html + delete $INSTDIR\netsurf.png + delete $INSTDIR\messages + + # Always delete uninstaller as the last action + delete $INSTDIR\uninstall.exe + + # Try to remove the install directory - this will only happen if it is empty + rmDir $INSTDIR + + # Remove uninstaller information from the registry + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" +sectionEnd diff --git a/windows/res/internal.css b/windows/res/internal.css new file mode 120000 index 000000000..e777d8ae1 --- /dev/null +++ b/windows/res/internal.css @@ -0,0 +1 @@ +../../!NetSurf/Resources/internal.css,f79 \ No newline at end of file diff --git a/windows/res/netsurf.png b/windows/res/netsurf.png new file mode 120000 index 000000000..0fbf42709 --- /dev/null +++ b/windows/res/netsurf.png @@ -0,0 +1 @@ +../../!NetSurf/Resources/netsurf.png,b60 \ No newline at end of file diff --git a/windows/res/welcome.html b/windows/res/welcome.html new file mode 120000 index 000000000..5b394445b --- /dev/null +++ b/windows/res/welcome.html @@ -0,0 +1 @@ +../../!NetSurf/Resources/en/welcome.html,faf \ No newline at end of file -- cgit v1.2.3