mcthesw / game-save-manager

一个简单的游戏存档管理器
https://help.sworld.club
GNU Affero General Public License v3.0
617 stars 21 forks source link

[功能/FEATURE]在Windows下提供一键修改备份路径 #17

Open mcthesw opened 1 year ago

mcthesw commented 1 year ago

新功能描述 Describe the feature 在Windows下提供一键修改备份路径 由于Windows下许多游戏的存档路径是在用户目录下的,可以通过简单替换用户名来实现多个电脑上的适配,为云存档功能提供了一个可用的工具 来源

iplanc commented 1 year ago

可以参考一下%appdata%用户变量,他的值就是C:\Users\[用户名]\AppData\Roming,可以直接调用%AppData%\..\Local,前往C:\Users\[用户名]\AppData\Local目录

wsygithub3237355287 commented 1 year ago

why not auto update path when using it?

iplanc commented 1 year ago

'cause %AppData% is exactly equally C:\Users\[user name]\AppData\Roming, and this environment variables designed to doing this

why not auto update path when using it?

mcthesw commented 1 year ago

可以参考一下%appdata%用户变量,他的值就是C:\Users\[用户名]\AppData\Roming,可以直接调用%AppData%\..\Local,前往C:\Users\[用户名]\AppData\Local目录

这样做可行吗:在添加游戏时识别一下路径的开头是否与%appdata%的位置相同,如果相同,就把前面的部分路径替换成%appdata%字符串,这样的话在不同的电脑上都可以使用?

iplanc commented 1 year ago

在我的电脑我的planc账户上,%appdata%的路径是C:\Users\planc\AppData\Roming 在我的电脑我的abc账户上,%appdata%的路径是C:\Users\abc\AppData\Roming 在别的电脑我的planc账户上,%appdata%的路径是C:\Users\planc\AppData\Roming 在别的电脑我的abc账户上,%appdata%的路径是C:\Users\abc\AppData\Roming


不过貌似我用python做测试时调用%appdata%需要管理员权限,但是直接调用路径不需要,也可以调用nodejs的方法,做拼接字符串

function getAppDataPath() {
    const os = require('os');
    try {
        var data = os.userInfo();
        return "C:\Users\" + data.username + "\AppData\Roming";
    } catch (err) {
        console.log(": error occurred" + err);
    }
}
mcthesw commented 1 year ago

参考: Tauri文档 微软文档

TelePuryang commented 11 months ago

用powershell命令是否可行?方便移动硬盘作为中介的多设备存档共用

#定义变量
$filePath = $args[0]
$newComputerUserName = $args[1]

#获取移动硬盘上备份存档文件的目录路径
$oldComputerUserName = $filePath.Substring(12)

#比较移动硬盘上该存档的备份文件的记录的目录路径中里的用户名和新电脑的用户名是否相匹配
if ($oldComputerUserName -eq $newComputerUserName) {
    ' 匹配,不往备份好的目录路径写入文件
} else {
    ' 不匹配,替换用户名并在新设备中写入该存档文件
    $destPath = $filePath -replace $oldComputerUserName, $newComputerUserName
    Copy-Item -Path $filePath -Destination $destPath
}

不匹配的话意味着是新设备,可以给用户提示是需要直接写入创建文件夹后导入已经备份的存档文件(方便在一个未游玩该游戏的新设备上使用),还是选择使用本地电脑存在的存档(不忘新电脑里写入存档文件)

但好像有一个新问题,不同设备的存档的文件夹数字编号好像不一样,不清楚游戏是否只认自己创建的存档文件夹,如果只认游戏自己创建的编号文件夹,那还需要解决存档文件要放在该数字编号文件夹下的问题。

mcthesw commented 11 months ago

@TelePuryang 你说的方法一定程度上是可行的,在程序内为win操作系统做类似的操作也是可以的,不过如你所说,需要考虑因素众多,可能需要做成一个单独的功能,并且给出足够的提示