summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-08-12 21:50:36 +0100
committerVincent Sanders <vince@kyllikki.org>2012-08-12 21:52:39 +0100
commitde982b4d3e9c7e6b6f100e383d647f0edc9321a3 (patch)
tree40ec7004a0df0b5c6d55d12b7c3bb20501ad21c8
parent786a5186aa38897170317d453bf49b55cf8e70a3 (diff)
downloadnetsurf-de982b4d3e9c7e6b6f100e383d647f0edc9321a3.tar.gz
fix windows build format specifiers
add install target for windows - creates installer rather than actually installing
-rw-r--r--.gitignore1
-rw-r--r--content/fetchers/data.c2
-rw-r--r--content/fetchers/file.c4
-rw-r--r--image/image_cache.c12
-rw-r--r--utils/config.h10
-rw-r--r--windows/Makefile.target12
-rw-r--r--windows/NetSurfInstaller.nsi94
-rw-r--r--windows/main.c2
-rw-r--r--windows/res/installer.nsi133
l---------windows/res/internal.css1
l---------windows/res/netsurf.png1
l---------windows/res/welcome.html1
12 files changed, 169 insertions, 104 deletions
diff --git a/.gitignore b/.gitignore
index 053a22050..20a059f86 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@ nsmonkey
nsdebug
Makefile.config
NetSurf.exe
+netsurf-installer.exe
NetSurf.app
NetSurf.dbg
NetSurf.dmg
diff --git a/content/fetchers/data.c b/content/fetchers/data.c
index 383e3c0c5..3f8989e8c 100644
--- a/content/fetchers/data.c
+++ b/content/fetchers/data.c
@@ -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 =
diff --git a/content/fetchers/file.c b/content/fetchers/file.c
index e3bb63ea8..4deb93248 100644
--- a/content/fetchers/file.c
+++ b/content/fetchers/file.c
@@ -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 */
diff --git a/image/image_cache.c b/image/image_cache.c
index 5e62fe0aa..50961b167 100644
--- a/image/image_cache.c
+++ b/image/image_cache.c
@@ -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,
diff --git a/utils/config.h b/utils/config.h
index cd64683d5..b8c2950dc 100644
--- a/utils/config.h
+++ b/utils/config.h
@@ -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
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