OBS的配置文件路径现在是在C:\Users\Administrator\AppData\Roaming\obs-studio这种目录里面;
如果生成了exe,想要去掉“设置”按钮,让我们事先设置好配置用户不需要关心设置里面繁杂的内容,那么就要改变这个路径;
最好的方案就是将该路径设置为当前exe所在的目录;通过阅读代码,发现只要修改一下几个函数,就可以将配置文件整个路径
修改到exe中:
GetProgramDataPath
GetProgramDataPathPtr
GetConfigPath
GetConfigPathPtr
GetConfigPath修改如下:
int my_os_get_config_path(char *path, size_t size, const char *name)
{
QString qsPath;
QDir dir;
qsPath = dir.currentPath();
std::string sPath = TOOL::QStr2Str(qsPath);
strcpy(path, sPath.c_str());
if (!name || !*name) {
return strlen(path);
}
if (strcat_s(path, size, "\\") == 0) {
if (strcat_s(path, size, name) == 0) {
return (int)strlen(path);
}
}
return 0;
}
int GetConfigPath(char *path, size_t size, const char *name)
{
if (!OBS_UNIX_STRUCTURE && portable_mode) {
if (name && *name) {
return snprintf(path, size, CONFIG_PATH "/%s", name);
} else {
return snprintf(path, size, CONFIG_PATH);
}
} else {
//int iRet = os_get_config_path(path, size, name);
return my_os_get_config_path(path, size, name);
}
}
//GetConfigPathPtr修改如下:
char *my_os_get_config_path_ptr(const char *name)
{
char *ptr;
wchar_t path_utf16[MAX_PATH];
struct dstr path;
QString qsPath;
QDir dir;
qsPath = dir.currentPath();
std::string sPath = TOOL::QStr2Str(qsPath);
dstr_init_copy(&path, sPath.c_str());
dstr_cat(&path, "\\");
dstr_cat(&path, name);
return path.array;
}
char *GetConfigPathPtr(const char *name)
{
if (!OBS_UNIX_STRUCTURE && portable_mode) {
char path[512];
if (snprintf(path, sizeof(path), CONFIG_PATH "/%s", name) > 0) {
return bstrdup(path);
} else {
return NULL;
}
} else {
return my_os_get_config_path_ptr(name);
//return os_get_config_path_ptr(name);
}
}
另外两个:
int GetProgramDataPath(char *path, size_t size, const char *name)
{
return my_os_get_config_path(path, size, name);
//return os_get_program_data_path(path, size, name);//jiang
}
char *GetProgramDataPathPtr(const char *name)
{
return my_os_get_config_path_ptr(name);
//return os_get_program_data_path_ptr(name);
}
把c盘的配置文件删除,这样就大功告成,试试运行exe,是不是在exe当前目录会自动生成obs-studio目录,并且c盘路径下不再生成obs-studio目录了。