Вызов GetDirectories в MSI CustomAction выдает ТОЛЬКО исключение безопасности, когда все пользователи - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть пользовательское действие, которое я использую для развертывания некоторых файлов, которые находятся рядом с msi в пакете передачи обслуживания. Моему пользовательскому действию передается путь msi через параметр OriginalDatabase, и я проверяю, есть ли рядом с ним папка. Ничего слишком сумасшедшего, но это была боль в заднице, чтобы понять.

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

Строка, о которой идет речь, такова:

DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");

Пользовательское действие выполняется с SecurityAction.Demand, поэтому у меня должен быть весь доступ, который мне нужен.

Любой вклад, который может предоставить любой, приветствуется.

Спасибо, Кейси

1 Ответ

0 голосов
/ 29 сентября 2010

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

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

...