Я создал простой пользовательский установщик, как описано здесь . Мой новый установщик работает как положено. Он создает папку и добавляет путь в файл app.config.
Проблема в том, что для папки установлен флаг «только для чтения», а права на запись для пользователей, не являющихся администраторами, удалены.
Если я вручную создаю папку и устанавливаю разрешения, они сбрасываются при запуске программы установки.
Как я могу указать эти параметры из моего пользовательского установщика?
EDIT:
Я использую код, показанный ниже, чтобы установить разрешения безопасности для всех, и это работает нормально.
// Get the directory info for the existing folder
DirectoryInfo dirInfo = new DirectoryInfo(settingsFileDir);
// Now apply user access permissions to the folder
if (dirInfo != null)
{
DirectorySecurity security = dirInfo.GetAccessControl();
security.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
security.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
dirInfo.SetAccessControl(security);
}
Когда я пытаюсь установить атрибуты папки для удаления настройки только для чтения, никаких изменений не происходит. Я делаю это с:
dirInfo.Attributes = FileAttributes.Normal;