fix windows build format specifiers

add install target for windows - creates installer rather than actually installing
This commit is contained in:
Vincent Sanders 2012-08-12 21:50:36 +01:00
parent 786a5186aa
commit de982b4d3e
12 changed files with 169 additions and 104 deletions

1
.gitignore vendored
View File

@ -19,6 +19,7 @@ nsmonkey
nsdebug
Makefile.config
NetSurf.exe
netsurf-installer.exe
NetSurf.app
NetSurf.dbg
NetSurf.dmg

View File

@ -280,7 +280,7 @@ static void fetch_data_poll(lwc_string *scheme)
if (c->aborted == false) {
snprintf(header, sizeof header,
"Content-Length: %zd",
"Content-Length: %"SSIZET_FMT,
c->datalen);
msg.type = FETCH_HEADER;
msg.data.header_or_data.buf =

View File

@ -266,7 +266,7 @@ static void fetch_file_process_plain(struct fetch_file_context *ctx,
return;
}
fd = open(ctx->path, O_RDONLY);
fd = open(ctx->path, O_RDONLY | O_BINARY);
if (fd < 0) {
/* process errors as appropriate */
fetch_file_process_error(ctx,
@ -304,7 +304,7 @@ static void fetch_file_process_plain(struct fetch_file_context *ctx,
goto fetch_file_process_aborted;
/* content length */
if (fetch_file_send_header(ctx, "Content-Length: %zd", fdstat->st_size))
if (fetch_file_send_header(ctx, "Content-Length: %"SSIZET_FMT, fdstat->st_size))
goto fetch_file_process_aborted;
/* create etag */

View File

@ -575,15 +575,15 @@ case chr : \
slen++;
break;
FMTCHR('a', "zd", params.limit);
FMTCHR('b', "zd", params.hysteresis);
FMTCHR('c', "zd", total_bitmap_size);
FMTCHR('a', SSIZET_FMT, params.limit);
FMTCHR('b', SSIZET_FMT, params.hysteresis);
FMTCHR('c', SSIZET_FMT, total_bitmap_size);
FMTCHR('d', "d", bitmap_count);
FMTCHR('e', "d", current_age / 1000);
FMTCHR('f', "zd", max_bitmap_size);
FMTCHR('f', SSIZET_FMT, max_bitmap_size);
FMTCHR('g', "d", max_bitmap_size_count);
FMTCHR('h', "d", max_bitmap_count);
FMTCHR('i', "zd", max_bitmap_count_size);
FMTCHR('i', SSIZET_FMT, max_bitmap_count_size);
case 'j':
@ -710,7 +710,7 @@ int image_cache_snentryf(char *string, size_t size, unsigned int entryn,
if (centry->bitmap != NULL) {
slen += snprintf(string + slen,
size - slen,
"%zd",
"%"SSIZET_FMT,
centry->bitmap_size);
} else {
slen += snprintf(string + slen,

View File

@ -116,13 +116,23 @@ char *realpath(const char *path, char *resolved_path);
#define WITH_MMAP
#endif
/* gtk */
#if defined(gtk)
#define WITH_THEME_INSTALL
#endif
/* amiga */
#if defined(__amigaos4__) || defined(__AMIGA__) || \
defined(nsatari)
#define NO_IPV6
#endif
/* windows */
#if (defined(_WIN32))
#define SSIZET_FMT "Iu"
#else
#define SSIZET_FMT "zd"
#define O_BINARY 0
#endif
#endif

View File

@ -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

View File

@ -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

View File

@ -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");

133
windows/res/installer.nsi Normal file
View File

@ -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

1
windows/res/internal.css Symbolic link
View File

@ -0,0 +1 @@
../../!NetSurf/Resources/internal.css,f79

1
windows/res/netsurf.png Symbolic link
View File

@ -0,0 +1 @@
../../!NetSurf/Resources/netsurf.png,b60

1
windows/res/welcome.html Symbolic link
View File

@ -0,0 +1 @@
../../!NetSurf/Resources/en/welcome.html,faf