Установщик Nullsoft, как сделать подпапку ProgramData доступной для записи

Папка ProgramData - лучшее место для хранения доступных для записи файлов вашего приложения, которыми могут поделиться все пользователи. Но когда установщик Nsis запускается с правами администратора (что необходимо для записи в Program Files), папки и файлы, созданные в папке ProgramData, доступны только для всех пользователей, кроме администратора. Как это изменить и сделать доступными для записи файлы для всех пользователей в папке ProgramData?

2 ответа

Решение

Я не знаю, является ли это поведение функцией или ошибкой, но я нашел обходной путь. Требуется плагин AccessControl (скачайте и скопируйте папку плагинов Nsis). Внутри раздела "Установка" скрипта Nsis поместите что-то вроде этого:

; This is important to have $APPDATA variable
; point to ProgramData folder
; instead of current user's Roaming folder
SetShellVarContext all

; This sets us permissions
AccessControl::GrantOnFile "$APPDATA\Folder" "(S-1-5-32-545)" "FullAccess"
AccessControl::GrantOnFile "$APPDATA\Folder\*" "(S-1-5-32-545)" "FullAccess"

S-1-5-32-545 эквивалентен всем пользователям, поэтому этот код предоставит полный доступ к указанной папке и всем файлам внутри всем пользователям.

Или устанавливается через командную строку (только для Win7): ExecWait 'Icacls "$APPDATA\Folder" /grant Users:(OI)(CI)M'

Другие вопросы по тегам