Доступ к файлам (files API)
Требуется право FILE_ACCESS в манифесте. Прямой require('fs') недоступен (нужен ROOT). Используйте глобальный объект files: пользователь одобряет каждый путь; main process ограничивает область.
Исключение: у каждого аддона есть папка в temp ОС (ADDON_TMP_DIR). Пути внутри неё не требуют files.requestAccess.
Как это работает
- Укажите
"FILE_ACCESS"вmanifest.json. files.requestAccess(абсолютныйПуть, 'read' | 'manage')— нативный диалог согласия.- Доступ к папке включает все вложенные файлы и папки.
manageвключает чтение и метаданные.- Два отказа подряд блокируют запрос на 30 секунд.
- События
fileAccessGranted/fileAccessRevokedчерезevents.On. - Пользователь может отозвать доступ в настройках аддона.
Пример
const result = await files.requestAccess('C:\\Games\\GTAV', 'manage');
if (result.success) {
await files.writeFile('C:\\Games\\GTAV\\scripts\\mod.asi', '...');
}
events.On('fileAccessGranted', grant => console.log(grant.path));
events.On('fileAccessRevoked', grant => console.log('revoked', grant.path));
Методы
requestAccess, revokeAccess, hasAccess, listAccess, readFile, writeFile, appendFile, readdir, stat, exists, mkdir, unlink, rename, copyFile.
rename и copyFile
- Источник должен быть строго внутри выданной папки (не корень гранта).
- Саму выданную папку переименовать/скопировать нельзя.
- Путь назначения должен иметь manage-доступ (та же или другая одобренная папка).
Подробнее на английском: api-file-access.md.