tThe Windows installer no longer hardcodes C:\Program Files, so should work wit… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 53f0a86cc9127b029d4d1933d4db6db256262d7e | |
parent 0e46ea041de2ddc184132b01bf9f5e6a0c526b8c | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 27 Sep 2004 05:35:18 +0000 | |
The Windows installer no longer hardcodes C:\Program Files, so should work | |
with non-English versions of Windows. | |
Diffstat: | |
M ChangeLog | 2 ++ | |
M win32/filelist | 2 +- | |
M win32/setup.c | 7 ++++++- | |
M win32/util.c | 29 +++++++++++++++++++++++++++++ | |
M win32/util.h | 2 ++ | |
5 files changed, 40 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/ChangeLog b/ChangeLog | |
t@@ -10,6 +10,8 @@ cvs | |
- Quique's Spanish translation is now available both in standard Spanish | |
(es.po) and es_ES.po, which uses drugs slang from Spain | |
- Fix for a trivial DOS of the server | |
+ - Windows installer no longer hardcodes 'C:\Program Files' so should | |
+ work with non-English versions of Windows | |
1.5.9 07-06-2003 | |
- The messages window in the curses client can now be scrolled with the | |
diff --git a/win32/filelist b/win32/filelist | |
t@@ -2,7 +2,7 @@ | |
dopewars-1.5.9 | |
[instdir] | |
-C:\Program Files\dopewars-1.5.9 | |
+dopewars-1.5.9 | |
[NT Service] | |
dopewars-server | |
diff --git a/win32/setup.c b/win32/setup.c | |
t@@ -333,6 +333,7 @@ InstData *ReadInstData() | |
InstFiles *lastinst = NULL, *lastextra = NULL, *lastkeep = NULL; | |
InstLink *lastmenu = NULL, *lastdesktop = NULL; | |
char *instdata, *pt, *filename, *line2, *line3, *line4; | |
+ bstr *idir; | |
DWORD filesize; | |
InstData *idata; | |
t@@ -351,7 +352,11 @@ InstData *ReadInstData() | |
idata->product = bstrdup(pt); | |
pt += strlen(pt) + 1; | |
- idata->installdir = bstrdup(pt); | |
+ idir = bstr_new(); | |
+ bstr_assign_progfilesdir(idir); | |
+ bstr_appendpath(idir, pt); | |
+ idata->installdir = idir->text; | |
+ bstr_free(idir, FALSE); | |
pt += strlen(pt) + 1; | |
idata->startmenudir = bstrdup(pt); | |
diff --git a/win32/util.c b/win32/util.c | |
t@@ -200,6 +200,35 @@ void bstr_assign_curdir(bstr *str) | |
bstr_append_curdir(str); | |
} | |
+void bstr_assign_progfilesdir(bstr *str) | |
+{ | |
+ bstr_setlength(str, 0); | |
+ bstr_append_progfilesdir(str); | |
+} | |
+ | |
+void bstr_append_progfilesdir(bstr *str) | |
+{ | |
+ HKEY key; | |
+ int len; | |
+ static const *subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion"; | |
+ static const *subval = "ProgramFilesDir"; | |
+ BOOL ok = FALSE; | |
+ | |
+ len = str->bufsiz - str->length; | |
+ if (RegGetValue(HKEY_LOCAL_MACHINE, subkey, subval, RRF_RT_REG_SZ, NULL, | |
+ NULL, &len) == ERROR_SUCCESS) { | |
+ len += 5; | |
+ bstr_expandby(str, len); | |
+ if (RegGetValue(HKEY_LOCAL_MACHINE, subkey, subval, RRF_RT_REG_SZ, NULL, | |
+ str->text + str->length, &len) == ERROR_SUCCESS) { | |
+ ok = TRUE; | |
+ } | |
+ } | |
+ if (!ok) { | |
+ bstr_append(str, "C:\\Program Files"); | |
+ } | |
+} | |
+ | |
void bstr_append_dir(bstr *str, BOOL windir) | |
{ | |
unsigned spaceleft; | |
diff --git a/win32/util.h b/win32/util.h | |
t@@ -87,6 +87,8 @@ void bstr_append_windir(bstr *str); | |
void bstr_append_curdir(bstr *str); | |
void bstr_assign_windir(bstr *str); | |
void bstr_assign_curdir(bstr *str); | |
+void bstr_assign_progfilesdir(bstr *str); | |
+void bstr_append_progfilesdir(bstr *str); | |
void DisplayError(const char *errtext, BOOL addsyserr, BOOL fatal); | |
void AddInstFiles(char *filename, DWORD filesize, InstFiles **lastpt, |