mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Merge branch 'windows-fixes' of git://git.hohndel.org/subsurface
* 'windows-fixes' of git://git.hohndel.org/subsurface: Add more typecasts for Windows` Fix the Windows preferences support Update the Windows installer creation script
This commit is contained in:
commit
19356de246
3 changed files with 75 additions and 52 deletions
12
packaging/windows/mingw-make.sh
Executable file
12
packaging/windows/mingw-make.sh
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# just a small shell script that is used to invoke make with the right
|
||||
# parameters to cross compile a binary for Windows
|
||||
#
|
||||
# the paths work for the default mingw32 install on OpenSUSE - adjust as
|
||||
# necessary
|
||||
|
||||
make CC=i686-w64-mingw32-gcc \
|
||||
PKGCONFIG=i686-w64-mingw32-pkg-config \
|
||||
PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/i686-w64-mingw32/lib/pkgconfig/ \
|
||||
XML2CONFIG=/usr/i686-w64-mingw32/sys-root/mingw/bin/xml2-config NAME=subsurface.exe
|
|
@ -1,18 +1,30 @@
|
|||
|
||||
# this installer creator needs to be run with
|
||||
# makensis subsurface.nsi
|
||||
#
|
||||
# it assumes that packaging/windows/dll is a symlink to
|
||||
# the directory in which the required Windows DLLs are installed
|
||||
# (in my case that's /usr/i686-w64-mingw32/sys-root/mingw/bin)
|
||||
#
|
||||
# define the name of the installer
|
||||
outfile "subsurface-installer.exe"
|
||||
Name subsurface
|
||||
|
||||
VIProductVersion "1.1.0.0"
|
||||
# some data for the package to identify itself
|
||||
VIProductVersion "1.1.9.0"
|
||||
VIAddVersionKey ProductName subsurface
|
||||
VIAddVersionKey FileDescription "subsurface diving log program"
|
||||
VIAddVersionKey LegalCopyright "GPL v.2"
|
||||
VIAddVersionKey ProductVersion "1.1"
|
||||
VIAddVersionKey FileVersion "1.1"
|
||||
|
||||
Icon ..\share\subsurface.ico
|
||||
|
||||
# icon to use for the installer
|
||||
Icon .\subsurface.ico
|
||||
|
||||
# the installer needs to be run with admin privileges
|
||||
RequestExecutionLevel admin
|
||||
|
||||
# pop up a little dialog that tells the user that we're about to
|
||||
# install subsurface
|
||||
Function .onInit
|
||||
MessageBox MB_YESNO "This will install subsurface. Do you wish to continue?" IDYES gogogo
|
||||
Abort
|
||||
|
@ -42,39 +54,36 @@ writeUninstaller "$INSTDIR\subsurface-uninstall.exe"
|
|||
createShortCut "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk" "$INSTDIR\subsurface-uninstall.exe"
|
||||
|
||||
# define what to install and place it in the output path
|
||||
file subsurface.exe
|
||||
file libatk-1.0-0.dll
|
||||
file libcairo-2.dll
|
||||
file libdivecomputer-0.dll
|
||||
file libffi-5.dll
|
||||
file libfontconfig-1.dll
|
||||
file libfreetype-6.dll
|
||||
file libgdk_pixbuf-2.0-0.dll
|
||||
file libgdk-win32-2.0-0.dll
|
||||
file libgio-2.0-0.dll
|
||||
file libglib-2.0-0.dll
|
||||
file libgmodule-2.0-0.dll
|
||||
file libgobject-2.0-0.dll
|
||||
file libgthread-2.0-0.dll
|
||||
file libgtk-win32-2.0-0.dll
|
||||
file libintl-8.dll
|
||||
file libjasper-1.dll
|
||||
file libjpeg-8.dll
|
||||
file libpango-1.0-0.dll
|
||||
file libpangocairo-1.0-0.dll
|
||||
file libpangoft2-1.0-0.dll
|
||||
file libpangowin32-1.0-0.dll
|
||||
file libpixman-1-0.dll
|
||||
file libpng15-15.dll
|
||||
file libtiff-3.dll
|
||||
file libxml2-2.dll
|
||||
file pthreadGC2.dll
|
||||
file zlib1.dll
|
||||
file /oname=subsurface.ico ..\\share\\subsurface.ico
|
||||
file /oname=subsurface.bmp ..\\share\\subsurface.bmp
|
||||
file /oname=subsurface.svg ..\\share\\subsurface.svg
|
||||
|
||||
|
||||
file /oname=subsurface.exe ../../subsurface.exe
|
||||
file /oname=subsurface.ico subsurface.ico
|
||||
file /oname=subsurface.svg ../../subsurface.svg
|
||||
file /oname=libatk-1.0-0.dll dll/libatk-1.0-0.dll
|
||||
file /oname=libcairo-2.dll dll/libcairo-2.dll
|
||||
file /oname=libdivecomputer-0.dll dll\libdivecomputer-0.dll
|
||||
file /oname=libffi-5.dll dll\libffi-5.dll
|
||||
file /oname=libfontconfig-1.dll dll\libfontconfig-1.dll
|
||||
file /oname=libfreetype-6.dll dll\libfreetype-6.dll
|
||||
file /oname=libgdk_pixbuf-2.0-0.dll dll\libgdk_pixbuf-2.0-0.dll
|
||||
file /oname=libgdk-win32-2.0-0.dll dll\libgdk-win32-2.0-0.dll
|
||||
file /oname=libgio-2.0-0.dll dll\libgio-2.0-0.dll
|
||||
file /oname=libglib-2.0-0.dll dll\libglib-2.0-0.dll
|
||||
file /oname=libgmodule-2.0-0.dll dll\libgmodule-2.0-0.dll
|
||||
file /oname=libgobject-2.0-0.dll dll\libgobject-2.0-0.dll
|
||||
file /oname=libgthread-2.0-0.dll dll\libgthread-2.0-0.dll
|
||||
file /oname=libgtk-win32-2.0-0.dll dll\libgtk-win32-2.0-0.dll
|
||||
file /oname=libintl-8.dll dll\libintl-8.dll
|
||||
file /oname=libjasper-1.dll dll\libjasper-1.dll
|
||||
file /oname=libjpeg-8.dll dll\libjpeg-8.dll
|
||||
file /oname=libpango-1.0-0.dll dll\libpango-1.0-0.dll
|
||||
file /oname=libpangocairo-1.0-0.dll dll\libpangocairo-1.0-0.dll
|
||||
file /oname=libpangoft2-1.0-0.dll dll\libpangoft2-1.0-0.dll
|
||||
file /oname=libpangowin32-1.0-0.dll dll\libpangowin32-1.0-0.dll
|
||||
file /oname=libpixman-1-0.dll dll\libpixman-1-0.dll
|
||||
file /oname=libpng15-15.dll dll\libpng15-15.dll
|
||||
file /oname=libtiff-3.dll dll\libtiff-3.dll
|
||||
file /oname=libxml2-2.dll dll\libxml2-2.dll
|
||||
file /oname=pthreadGC2.dll dll\pthreadGC2.dll
|
||||
file /oname=zlib1.dll dll\zlib1.dll
|
||||
sectionEnd
|
||||
|
||||
section "uninstall"
|
||||
|
@ -86,7 +95,7 @@ section "uninstall"
|
|||
delete "$SMPROGRAMS\subsurface\subsurface.lnk"
|
||||
RMDir "$SMPROGRAMS\subsurface"
|
||||
|
||||
MessageBox MB_YESNO "Do you wish to store subsurface's settings?" IDYES end
|
||||
MessageBox MB_YESNO "Do you wish to keep subsurface's registry settings?" IDYES end
|
||||
DeleteRegKey HKCU "SOFTWARE\subsurface"
|
||||
end:
|
||||
sectionEnd
|
||||
|
|
30
windows.c
30
windows.c
|
@ -11,8 +11,8 @@ static int get_from_registry(HKEY hkey, const char *key)
|
|||
DWORD len = 4;
|
||||
LONG success;
|
||||
|
||||
success = RegQueryValueEx(hkey, TEXT(key), NULL, NULL,
|
||||
(LPBYTE) &value, &len );
|
||||
success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(key), NULL, NULL,
|
||||
(LPBYTE) &value, (LPDWORD)&len );
|
||||
if (success != ERROR_SUCCESS)
|
||||
return FALSE; /* that's what happens the first time we start */
|
||||
return value;
|
||||
|
@ -22,26 +22,28 @@ void subsurface_open_conf(void)
|
|||
{
|
||||
LONG success;
|
||||
|
||||
success = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"), 0,
|
||||
KEY_QUERY_VALUE, &hkey);
|
||||
if (success != ERROR_SUCCESS) {
|
||||
success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
|
||||
0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||
NULL, &hkey, NULL);
|
||||
if (success != ERROR_SUCCESS)
|
||||
printf("CreateKey Software\\subsurface failed %ld\n", success);
|
||||
}
|
||||
success = RegCreateKeyEx(HKEY_CURRENT_USER, (LPCTSTR)TEXT("Software\\subsurface"),
|
||||
0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||
NULL, &hkey, NULL);
|
||||
if (success != ERROR_SUCCESS)
|
||||
printf("CreateKey Software\\subsurface failed %ld\n", success);
|
||||
}
|
||||
|
||||
void subsurface_set_conf(char *name, pref_type_t type, const void *value)
|
||||
{
|
||||
/* since we are using the pointer 'value' as both an actual
|
||||
* pointer to the string setting and as a way to pass the
|
||||
* numbers 0 and 1 to this function for booleans, one of the
|
||||
* calls to RegSetValueEx needs to pass &value (when we want
|
||||
* to pass the boolean value), the other one passes value (the
|
||||
* address of the string. */
|
||||
switch (type) {
|
||||
case PREF_BOOL:
|
||||
/* we simply store the value as DWORD */
|
||||
RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, value, 4);
|
||||
RegSetValueEx(hkey, (LPCTSTR)TEXT(name), 0, REG_DWORD, (const BYTE *)&value, 4);
|
||||
break;
|
||||
case PREF_STRING:
|
||||
RegSetValueEx(hkey, TEXT(name), 0, REG_SZ, value, strlen(value));
|
||||
RegSetValueEx(hkey, (LPCTSTR)TEXT(name), 0, REG_SZ, (const BYTE *)value, strlen(value));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +59,7 @@ const void *subsurface_get_conf(char *name, pref_type_t type)
|
|||
case PREF_STRING:
|
||||
string = malloc(80);
|
||||
len = 80;
|
||||
success = RegQueryValueEx(hkey, TEXT(name), NULL, NULL,
|
||||
success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(name), NULL, NULL,
|
||||
(LPBYTE) string, (LPDWORD)&len );
|
||||
if (success != ERROR_SUCCESS) {
|
||||
/* that's what happens the first time we start - just return NULL */
|
||||
|
|
Loading…
Add table
Reference in a new issue