MSI Установщик файлов / папок разрешений - PullRequest
9 голосов
/ 26 октября 2009

Я пытаюсь установить набор файлов в папке программных данных с помощью основного установщика MSI. Поскольку содержимое файлов является динамическим и создается в процессе установки, я создаю файлы в коде C # во время установки.

Файлы создаются в соответствующих папках, и все хорошо, кроме прав доступа к файлам. Как я понимаю, файлы должны наследовать свои разрешения от родительской папки (если она включена), но в этом случае этого не происходит. Файлы, которые я создаю, должны быть доступны для записи обычным пользователям, и я не хочу явно устанавливать разрешения для каждого созданного файла. Может ли быть проблема в том, что установщик работает с разными разрешениями, и поэтому файлы не наследуют разрешения от своих родительских папок?

Заранее спасибо за любую помощь.

Ответы [ 4 ]

3 голосов
/ 26 октября 2009

программа установки запускается с правами администратора, что позволяет ему изменять что-либо в программных файлах. Обычный пользователь имел бы доступ только для чтения к папке с программными файлами и папке ProgramData / Common Application Data.

Таблица разрешений блокировки MSI позволяет программе установки изменять разрешение папки после создания в ProgramData / Common Data Data. Проекты установки Visual Studio не поддерживают таблицу разрешений блокировки MSI, поэтому если вам нужно, чтобы созданная вами папка была доступна для записи обычным пользователям в проекте установки, вам нужно предоставить право в настраиваемом действии с помощью SetNamedSecurityInfo или изменить базу данных MSI как публикацию шаг строительства. Вы также можете найти авторское программное обеспечение MSI, которое может работать с таблицей разрешений блокировки MSI.

2 голосов
/ 14 декабря 2010

У меня была очень похожая проблема, и я смог ее решить, используя пример здесь .

1 голос
/ 16 мая 2013

У меня была похожая проблема здесь. Проблема в том, что MSI создавала файлы с помощью пользователя SYSTEM. И приложение во время выполнения использовало зарегистрированного пользователя (у которого не было разрешения на запись в этот файл). Что я сделал, это создал новый файл (если не существует) во время инициализации приложения с тем, который был создан установщиком. Тогда этот файл будет иметь разрешение на запись. Это плохая практика, но она решила мою проблему.

1 голос
/ 12 ноября 2009

Если вы устанавливаете разрешения для папок вручную с помощью настраиваемого действия, а также создаете и устанавливаете файлы с помощью другого настраиваемого действия, то проблема может быть вызвана порядком выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...