Установщик 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'