]> git.street.me.uk Git - andy/viking.git/blob - win32/installer.bat
9df95e03af8c4dbf077b94b30884b3288be26a9a
[andy/viking.git] / win32 / installer.bat
1 @echo OFF\r
2 :: License: CC0\r
3 ::\r
4 :: TODO return an error code when not completed as expected\r
5 ::\r
6 echo STARTING INSTALLER PROCESS...\r
7 \r
8 :: For strip\r
9 set PATH=%PATH%;%SystemDrive%\MinGW\bin\r
10 \r
11 echo Remove debugging symbols\r
12 pushd ..\src\r
13 strip.exe -g viking.exe\r
14 popd\r
15 \r
16 set MYCOPY=copy /y\r
17 set DESTINATION=installer\bin\r
18 echo Copying locale files into layout required by NSIS\r
19 dir ..\po\*.gmo /B > gmolist.txt\r
20 :: Create directories like de\LC_MESSAGES\r
21 for /f %%i in (gmolist.txt) do mkdir %DESTINATION%\locale\%%~ni\LC_MESSAGES\r
22 for /f %%i in (gmolist.txt) do %MYCOPY% ..\po\%%i %DESTINATION%\locale\%%~ni\LC_MESSAGES\viking.mo\r
23 del gmolist.txt\r
24 \r
25 echo Copying Viking\r
26 %MYCOPY% ..\src\viking.exe %DESTINATION%\r
27 %MYCOPY% installer\pixmaps\viking_icon.ico %DESTINATION%\r
28 %MYCOPY% ..\COPYING %DESTINATION%\COPYING_GPL.txt\r
29 %MYCOPY% ..\AUTHORS %DESTINATION%\AUTHORS.txt\r
30 %MYCOPY% ..\NEWS %DESTINATION%\NEWS.txt\r
31 %MYCOPY% ..\README %DESTINATION%\README.txt\r
32 :: ATM this relies on being generated by an external system\r
33 %MYCOPY% cache\ChangeLog.txt %DESTINATION%\r
34 :: ATM this relies on being generated by an external system\r
35 %MYCOPY% ..\help\C\viking.pdf %DESTINATION%\r
36 :: Python cache converter tool\r
37 %MYCOPY% ..\tools\viking-cache.py %DESTINATION%\r
38 \r
39 echo Copying Extension Configuration Data\r
40 mkdir %DESTINATION%\data\r
41 %MYCOPY% ..\data\*.xml %DESTINATION%\data\r
42 %MYCOPY% ..\data\latlontz.txt %DESTINATION%\data\r
43 \r
44 echo Copying Libraries\r
45 set MINGW=%SystemDrive%\MinGW
46 if not exist "%MINGW%" (\r
47         echo Required %MINGW% does not exist\r
48         goto Tidy\r
49 )\r
50 \r
51 set MINGW_BIN=%MINGW%\Bin\r
52 \r
53 REM Curl 7.17+ has quite a few dependencies for SSL support
54 set LIBCURL=%MINGW_BIN%\libcurl.dll\r
55 if exist "%LIBCURL%" (\r
56         %MYCOPY% "%LIBCURL%" %DESTINATION%\r
57         %MYCOPY% "%MINGW_BIN%\libeay32.dll" %DESTINATION%
58         %MYCOPY% "%MINGW_BIN%\librtmp.dll" %DESTINATION%
59         %MYCOPY% "%MINGW_BIN%\libssh2.dll" %DESTINATION%
60         %MYCOPY% "%MINGW_BIN%\libidn-11.dll" %DESTINATION%
61         %MYCOPY% "%MINGW_BIN%\ssleay32.dll" %DESTINATION%
62 ::      %MYCOPY% "%MINGW_BIN%\zlib1.dll" %DESTINATION%
63         %MYCOPY% "%MINGW%\COPYING_curl.txt" %DESTINATION%\r
64 ) else (\r
65         echo %LIBCURL% does not exist\r
66         goto Tidy\r
67 )\r
68 set LIBEXIF=%MINGW_BIN%\libexif-12.dll\r
69 if exist "%LIBEXIF%" (\r
70         %MYCOPY% "%LIBEXIF%" %DESTINATION%\r
71 ) else (\r
72         echo Required %LIBEXIF% does not exist\r
73         goto Tidy\r
74 )\r
75 set LIBBZ2=%MINGW_BIN%\libbz2-2.dll\r
76 if exist "%LIBBZ2%" (\r
77         %MYCOPY% "%LIBBZ2%" %DESTINATION%\r
78         %MYCOPY% "%MINGW_BIN%\libgcc_s_dw2-1.dll" %DESTINATION%\r
79 ) else (\r
80         echo Required %LIBBZ2% does not exist\r
81         goto Tidy\r
82 )\r
83 set LIBMAGIC=%MINGW_BIN%\magic1.dll\r
84 if exist "%LIBMAGIC%" (\r
85         %MYCOPY% "%LIBMAGIC%" %DESTINATION%\r
86         %MYCOPY% "%MINGW_BIN%\regex2.dll" %DESTINATION%\r
87         %MYCOPY% "%MINGW%\share\misc\magic.mgc" %DESTINATION%\r
88 ) else (\r
89         echo Required %LIBMAGIC% does not exist\r
90         goto Tidy\r
91 )\r
92 set LIBSQL3=%MINGW_BIN%\sqlite3.dll\r
93 if exist "%LIBSQL3%" (\r
94         %MYCOPY% "%LIBSQL3%" %DESTINATION%\r
95 ) else (\r
96         echo Required %LIBSQL3% does not exist\r
97         goto Tidy\r
98 )\r
99 set LIBZIP=%MINGW_BIN%\libzip.dll\r
100 if exist "%LIBZIP%" (\r
101         %MYCOPY% "%LIBZIP%" %DESTINATION%\r
102 ) else (\r
103         echo Required %LIBZIP% does not exist\r
104         goto Tidy\r
105 )\r
106 \r
107 :: TODO Maybe embed http://gtk-win.sourceforge.net/home/index.php/Main/EmbeddingGTK directly in NSIS?\r
108 :: Best to use the same GTK version as we built against in prepare.bat!!\r
109 echo =+=+=\r
110 echo Checking gtk runtime\r
111 echo =+=+=\r
112 set GTK_RUNTIME=gtk2-runtime-2.24.10-2012-10-10-ash.exe\r
113 pushd cache\r
114 if not exist %GTK_RUNTIME% (\r
115         set PATH=%PATH%;%ProgramFiles%\GnuWin32\bin\r
116         wget http://downloads.sourceforge.net/gtk-win/%GTK_RUNTIME%\r
117 )\r
118 if not exist %GTK_RUNTIME% (\r
119         echo Required GTK Runtime does not exist\r
120         goto Tidy\r
121 )\r
122 :: Install GTK into temporary location so we can repackage it\r
123 :: Destination path appears to have to be an absolute kind\r
124 popd\r
125 cd > tmp.tmp\r
126 set /p PWD=<tmp.tmp\r
127 del tmp.tmp\r
128 cache\%GTK_RUNTIME% /sideeffects=no /setpath=no /dllpath=root /translations=no /compatdlls=yes /S /D=%PWD%\%DESTINATION%\r
129 \r
130 echo Copying GPSBabel Installer
131 mkdir %DESTINATION%\Optional
132 %MYCOPY% cache\GPSBabel-1.5.2-Setup.exe %DESTINATION%\Optional
133 if ERRORLEVEL 1 goto Error
134
135 ::\r
136 echo Copying Translations\r
137 %MYCOPY% installer\translations\*nsh %DESTINATION%\r
138 if ERRORLEVEL 1 goto Error
139 \r
140 echo Running NSIS (command line version)\r
141 pushd installer\r
142 if exist "%ProgramFiles%\NSIS" (\r
143         "%ProgramFiles%\NSIS\makensis.exe" /X"SetCompressor /SOLID lzma" viking-installer.nsi\r
144 ) else (\r
145         echo NSIS Not installed in known location\r
146 )\r
147 popd\r
148 \r
149 goto Tidy
150
151 :Error
152 echo Exitting due to error: %ERRORLEVEL%
153
154 :Tidy\r
155 echo Tidy Up
156 rmdir /S /Q %DESTINATION%\r