Mod 类型 
每款游戏的Mod安装方法都各有不同,不同的类型也有不同的安装方法,
为了能方便大家更好的适配更多种类型, 我设计之初就分成了各种类型.
接口 
ts
interface IType {
    id: number
    name: string
    installPath?: string
    advanced?: {
        name: string
        icon: string
        item: IAdvancedItem[]
    }
    install: (mod: IModInfo) => Promise<IState[] | boolean>
    uninstall: (mod: IModInfo) => Promise<IState[] | boolean>
}- id: - 类型的唯一标识符
 
- name: - 在管理界面显示的名称
 
- installPath: - 安装路径
 
- install: - 安装时执行的方法
 
- uninstall: - 卸载时执行的方法
 
- advanced: - 高级选项, 如果该类型需要用户进行自定义配置, 则可可以使用这个配置项,
- 我在 GTA5.ts 里面有写过相关的类型, 可供各位参考
 
游戏目录和Mod目录 
你可以通过下面这种方法来获取这两个配置项 https://github.com/GlossMod/gmm-api/blob/master/test/src/Manager.ts#L294
ts
export class Config {
    // Mod储存目录
    public static modStorage = (() => {
        let config = this.getConfig()
        return join(config.modStorageLocation, config.managerGame?.gameName ?? "")
    })()
    // 游戏储存目录
    public static gameStorage = (() => {
        let config = this.getConfig()
        return config.managerGame?.gamePath ?? ""
    })()
    public static configFolder() {
        let ConfigFolder = join(homedir(), 'My Documents', 'Gloss Mod Manager')
        if (!FileHandler.fileExists(join(homedir(), 'My Documents'))) {
            ConfigFolder = join("C:", 'Gloss Mod Manager')
        }
        return ConfigFolder
    }
    // 配置文件路径
    public static configFile() {
        const configPath = join(this.configFolder(), 'config.json')
        FileHandler.ensureDirectoryExistence(configPath, '{}')
        return configPath
    }
    // 读取配置文件
    public static getConfig(): ISettings {
        let config = readFileSync(this.configFile(), 'utf-8')
        let settings: ISettings = JSON.parse(config)
        return settings
    }
}使用:
ts
// 获取 Mod所在目录
let modStorage = join(Config.modStorage, mod.id.toString())
// 游戏目录
let gameStorage = Config.gameStorage