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
|
# define the name of the installer
|
||||||
outfile "subsurface-installer.exe"
|
outfile "subsurface-installer.exe"
|
||||||
Name subsurface
|
Name subsurface
|
||||||
|
|
||||||
VIProductVersion "1.1.0.0"
|
# some data for the package to identify itself
|
||||||
|
VIProductVersion "1.1.9.0"
|
||||||
VIAddVersionKey ProductName subsurface
|
VIAddVersionKey ProductName subsurface
|
||||||
|
VIAddVersionKey FileDescription "subsurface diving log program"
|
||||||
|
VIAddVersionKey LegalCopyright "GPL v.2"
|
||||||
VIAddVersionKey ProductVersion "1.1"
|
VIAddVersionKey ProductVersion "1.1"
|
||||||
VIAddVersionKey FileVersion "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
|
RequestExecutionLevel admin
|
||||||
|
|
||||||
|
# pop up a little dialog that tells the user that we're about to
|
||||||
|
# install subsurface
|
||||||
Function .onInit
|
Function .onInit
|
||||||
MessageBox MB_YESNO "This will install subsurface. Do you wish to continue?" IDYES gogogo
|
MessageBox MB_YESNO "This will install subsurface. Do you wish to continue?" IDYES gogogo
|
||||||
Abort
|
Abort
|
||||||
|
@ -42,39 +54,36 @@ writeUninstaller "$INSTDIR\subsurface-uninstall.exe"
|
||||||
createShortCut "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk" "$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
|
# define what to install and place it in the output path
|
||||||
file subsurface.exe
|
file /oname=subsurface.exe ../../subsurface.exe
|
||||||
file libatk-1.0-0.dll
|
file /oname=subsurface.ico subsurface.ico
|
||||||
file libcairo-2.dll
|
file /oname=subsurface.svg ../../subsurface.svg
|
||||||
file libdivecomputer-0.dll
|
file /oname=libatk-1.0-0.dll dll/libatk-1.0-0.dll
|
||||||
file libffi-5.dll
|
file /oname=libcairo-2.dll dll/libcairo-2.dll
|
||||||
file libfontconfig-1.dll
|
file /oname=libdivecomputer-0.dll dll\libdivecomputer-0.dll
|
||||||
file libfreetype-6.dll
|
file /oname=libffi-5.dll dll\libffi-5.dll
|
||||||
file libgdk_pixbuf-2.0-0.dll
|
file /oname=libfontconfig-1.dll dll\libfontconfig-1.dll
|
||||||
file libgdk-win32-2.0-0.dll
|
file /oname=libfreetype-6.dll dll\libfreetype-6.dll
|
||||||
file libgio-2.0-0.dll
|
file /oname=libgdk_pixbuf-2.0-0.dll dll\libgdk_pixbuf-2.0-0.dll
|
||||||
file libglib-2.0-0.dll
|
file /oname=libgdk-win32-2.0-0.dll dll\libgdk-win32-2.0-0.dll
|
||||||
file libgmodule-2.0-0.dll
|
file /oname=libgio-2.0-0.dll dll\libgio-2.0-0.dll
|
||||||
file libgobject-2.0-0.dll
|
file /oname=libglib-2.0-0.dll dll\libglib-2.0-0.dll
|
||||||
file libgthread-2.0-0.dll
|
file /oname=libgmodule-2.0-0.dll dll\libgmodule-2.0-0.dll
|
||||||
file libgtk-win32-2.0-0.dll
|
file /oname=libgobject-2.0-0.dll dll\libgobject-2.0-0.dll
|
||||||
file libintl-8.dll
|
file /oname=libgthread-2.0-0.dll dll\libgthread-2.0-0.dll
|
||||||
file libjasper-1.dll
|
file /oname=libgtk-win32-2.0-0.dll dll\libgtk-win32-2.0-0.dll
|
||||||
file libjpeg-8.dll
|
file /oname=libintl-8.dll dll\libintl-8.dll
|
||||||
file libpango-1.0-0.dll
|
file /oname=libjasper-1.dll dll\libjasper-1.dll
|
||||||
file libpangocairo-1.0-0.dll
|
file /oname=libjpeg-8.dll dll\libjpeg-8.dll
|
||||||
file libpangoft2-1.0-0.dll
|
file /oname=libpango-1.0-0.dll dll\libpango-1.0-0.dll
|
||||||
file libpangowin32-1.0-0.dll
|
file /oname=libpangocairo-1.0-0.dll dll\libpangocairo-1.0-0.dll
|
||||||
file libpixman-1-0.dll
|
file /oname=libpangoft2-1.0-0.dll dll\libpangoft2-1.0-0.dll
|
||||||
file libpng15-15.dll
|
file /oname=libpangowin32-1.0-0.dll dll\libpangowin32-1.0-0.dll
|
||||||
file libtiff-3.dll
|
file /oname=libpixman-1-0.dll dll\libpixman-1-0.dll
|
||||||
file libxml2-2.dll
|
file /oname=libpng15-15.dll dll\libpng15-15.dll
|
||||||
file pthreadGC2.dll
|
file /oname=libtiff-3.dll dll\libtiff-3.dll
|
||||||
file zlib1.dll
|
file /oname=libxml2-2.dll dll\libxml2-2.dll
|
||||||
file /oname=subsurface.ico ..\\share\\subsurface.ico
|
file /oname=pthreadGC2.dll dll\pthreadGC2.dll
|
||||||
file /oname=subsurface.bmp ..\\share\\subsurface.bmp
|
file /oname=zlib1.dll dll\zlib1.dll
|
||||||
file /oname=subsurface.svg ..\\share\\subsurface.svg
|
|
||||||
|
|
||||||
|
|
||||||
sectionEnd
|
sectionEnd
|
||||||
|
|
||||||
section "uninstall"
|
section "uninstall"
|
||||||
|
@ -86,7 +95,7 @@ section "uninstall"
|
||||||
delete "$SMPROGRAMS\subsurface\subsurface.lnk"
|
delete "$SMPROGRAMS\subsurface\subsurface.lnk"
|
||||||
RMDir "$SMPROGRAMS\subsurface"
|
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"
|
DeleteRegKey HKCU "SOFTWARE\subsurface"
|
||||||
end:
|
end:
|
||||||
sectionEnd
|
sectionEnd
|
||||||
|
|
30
windows.c
30
windows.c
|
@ -11,8 +11,8 @@ static int get_from_registry(HKEY hkey, const char *key)
|
||||||
DWORD len = 4;
|
DWORD len = 4;
|
||||||
LONG success;
|
LONG success;
|
||||||
|
|
||||||
success = RegQueryValueEx(hkey, TEXT(key), NULL, NULL,
|
success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(key), NULL, NULL,
|
||||||
(LPBYTE) &value, &len );
|
(LPBYTE) &value, (LPDWORD)&len );
|
||||||
if (success != ERROR_SUCCESS)
|
if (success != ERROR_SUCCESS)
|
||||||
return FALSE; /* that's what happens the first time we start */
|
return FALSE; /* that's what happens the first time we start */
|
||||||
return value;
|
return value;
|
||||||
|
@ -22,26 +22,28 @@ void subsurface_open_conf(void)
|
||||||
{
|
{
|
||||||
LONG success;
|
LONG success;
|
||||||
|
|
||||||
success = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"), 0,
|
success = RegCreateKeyEx(HKEY_CURRENT_USER, (LPCTSTR)TEXT("Software\\subsurface"),
|
||||||
KEY_QUERY_VALUE, &hkey);
|
0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||||
if (success != ERROR_SUCCESS) {
|
NULL, &hkey, NULL);
|
||||||
success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
|
if (success != ERROR_SUCCESS)
|
||||||
0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
printf("CreateKey Software\\subsurface failed %ld\n", success);
|
||||||
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)
|
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) {
|
switch (type) {
|
||||||
case PREF_BOOL:
|
case PREF_BOOL:
|
||||||
/* we simply store the value as DWORD */
|
/* 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;
|
break;
|
||||||
case PREF_STRING:
|
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:
|
case PREF_STRING:
|
||||||
string = malloc(80);
|
string = malloc(80);
|
||||||
len = 80;
|
len = 80;
|
||||||
success = RegQueryValueEx(hkey, TEXT(name), NULL, NULL,
|
success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(name), NULL, NULL,
|
||||||
(LPBYTE) string, (LPDWORD)&len );
|
(LPBYTE) string, (LPDWORD)&len );
|
||||||
if (success != ERROR_SUCCESS) {
|
if (success != ERROR_SUCCESS) {
|
||||||
/* that's what happens the first time we start - just return NULL */
|
/* that's what happens the first time we start - just return NULL */
|
||||||
|
|
Loading…
Add table
Reference in a new issue