Установщик Nullsoft, как сделать подпапку ProgramData доступной для записи - PullRequest
8 голосов
/ 16 сентября 2011

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

Ответы [ 2 ]

7 голосов
/ 19 сентября 2011

Я не знаю, является ли это поведение функцией или ошибкой, но я нашел обходной путь. Требуется плагин 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 эквивалентно всем пользователям , поэтому этот код предоставит полный доступ к указанной папке и всем файлам внутри всем пользователям.

1 голос
/ 15 декабря 2011

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

...