tThe Windows installer no longer hardcodes C:\Program Files, so should work with non-English versions of Windows. - vaccinewars - be a doctor and try to vaccinate the world (HTM) git clone git://src.adamsgaard.dk/vaccinewars (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 53f0a86cc9127b029d4d1933d4db6db256262d7e (DIR) parent 0e46ea041de2ddc184132b01bf9f5e6a0c526b8c (HTM) Author: Ben Webb <ben@salilab.org> 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(-) --- (DIR) 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 (DIR) 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 (DIR) 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); (DIR) 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; (DIR) 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,