On Windows, also look for a local stratagus.exe
This commit is contained in:
parent
728edd2ba2
commit
e30548c5a9
1 changed files with 19 additions and 13 deletions
|
@ -268,26 +268,32 @@ int main(int argc, char * argv[]) {
|
||||||
if (data_path_length != 0 && data_path[data_path_length - 1] == '\\') {
|
if (data_path_length != 0 && data_path[data_path_length - 1] == '\\') {
|
||||||
data_path[data_path_length - 1] = '\0';
|
data_path[data_path_length - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
sprintf(scripts_path, "\"%s\"", data_path);
|
||||||
|
|
||||||
char stratagus_path[BUFF_SIZE];
|
char stratagus_path[BUFF_SIZE];
|
||||||
DWORD stratagus_path_size = sizeof(stratagus_path);
|
|
||||||
memset(stratagus_path, 0, stratagus_path_size);
|
|
||||||
HKEY key;
|
|
||||||
|
|
||||||
if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGKEY, 0, KEY_QUERY_VALUE, &key) == ERROR_SUCCESS ) {
|
// Try to use stratagus.exe from data (install) directory first
|
||||||
if ( RegQueryValueEx(key, "InstallLocation", NULL, NULL, (LPBYTE) stratagus_path, &stratagus_path_size) == ERROR_SUCCESS ) {
|
sprintf(stratagus_bin, "%s\\stratagus.exe", data_path);
|
||||||
if ( stratagus_path_size == 0 || strlen(stratagus_path) == 0 ) {
|
if (stat(stratagus_bin, &st) != 0) {
|
||||||
error(TITLE, STRATAGUS_NOT_FOUND);
|
// If no local stratagus.exe is present, look for a globally installed version
|
||||||
|
DWORD stratagus_path_size = sizeof(stratagus_path);
|
||||||
|
memset(stratagus_path, 0, stratagus_path_size);
|
||||||
|
HKEY key;
|
||||||
|
|
||||||
|
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGKEY, 0, KEY_QUERY_VALUE, &key) == ERROR_SUCCESS) {
|
||||||
|
if (RegQueryValueEx(key, "InstallLocation", NULL, NULL, (LPBYTE)stratagus_path, &stratagus_path_size) == ERROR_SUCCESS) {
|
||||||
|
if (stratagus_path_size == 0 || strlen(stratagus_path) == 0) {
|
||||||
|
error(TITLE, STRATAGUS_NOT_FOUND);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
RegCloseKey(key);
|
||||||
}
|
}
|
||||||
RegCloseKey(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( chdir(stratagus_path) != 0 ) {
|
if (chdir(stratagus_path) != 0) {
|
||||||
error(TITLE, STRATAGUS_NOT_FOUND);
|
error(TITLE, STRATAGUS_NOT_FOUND);
|
||||||
|
}
|
||||||
|
sprintf(stratagus_bin, "%s\\stratagus.exe", stratagus_path);
|
||||||
}
|
}
|
||||||
sprintf(scripts_path, "\"%s\"", data_path);
|
|
||||||
sprintf(stratagus_bin, "%s\\stratagus.exe", stratagus_path);
|
|
||||||
#else
|
#else
|
||||||
strcpy(data_path, DATA_PATH);
|
strcpy(data_path, DATA_PATH);
|
||||||
strcpy(scripts_path, SCRIPTS_PATH);
|
strcpy(scripts_path, SCRIPTS_PATH);
|
||||||
|
|
Loading…
Reference in a new issue